1.完成新增盘点单接口编写

feature-order-fix
x_z 2 years ago
parent 7f8cc54b32
commit dc85b6559e

@ -509,8 +509,12 @@ public class InvProductsController {
if (null == filterInvProductRequest || StrUtil.isBlank(filterInvProductRequest.getInvWarehouseCode())) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL);
}
//invProductDetailService.getMAInvProducts(filterInvProductRequest);
return ResultVOUtils.success();
List<MAInvProductResponse> list = invProductService.getMAInvProducts(filterInvProductRequest);
PageInfo<MAInvProductResponse> pageInfo = new PageInfo<>(list);
PageSimpleResponse<MAInvProductResponse> pageSimpleResponse = new PageSimpleResponse<>();
pageSimpleResponse.setTotal(pageInfo.getTotal());
pageSimpleResponse.setList(list);
return ResultVOUtils.success(pageSimpleResponse);
}
}

@ -0,0 +1,12 @@
package com.glxp.api.admin.dao.inventory;
import com.glxp.api.admin.entity.inventory.InvMaintenanceExplanationEntity;
/**
* Dao
*/
public interface InvMaintenanceExplanationDao {
InvMaintenanceExplanationEntity selectByStatus(Integer status);
}

@ -3,6 +3,7 @@ package com.glxp.api.admin.dao.inventory;
import com.glxp.api.admin.entity.inventory.InvProductEntity;
import com.glxp.api.admin.req.inventory.FilterInvProductRequest;
import com.glxp.api.admin.res.inventory.InvProductResponse;
import com.glxp.api.admin.res.inventory.MAInvProductResponse;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -56,8 +57,17 @@ public interface InvProductDao {
/**
*
*
* @param filterInvProductRequest
* @return
*/
List<InvProductResponse> getCountInvProduct(FilterInvProductRequest filterInvProductRequest);
/**
*
*
* @param filterInvProductRequest
* @return
*/
List<MAInvProductResponse> getMAInvProducts(FilterInvProductRequest filterInvProductRequest);
}

@ -0,0 +1,28 @@
package com.glxp.api.admin.entity.inventory;
import lombok.Data;
/**
*
*/
@Data
public class InvMaintenanceExplanationEntity {
private Integer id;
/**
*
*/
private String name;
/**
* 0 1
*/
private Integer status;
/**
*
*/
private String text;
}

@ -3,12 +3,12 @@ package com.glxp.api.admin.res.inventory;
import lombok.Data;
@Data
public class MAInvProductDetailResponse {
public class MAInvProductResponse {
/**
*
* id
*/
private String code;
private String id;
/**
*

@ -4,6 +4,7 @@ package com.glxp.api.admin.service.inventory;
import com.glxp.api.admin.entity.inventory.InvProductEntity;
import com.glxp.api.admin.req.inventory.FilterInvProductRequest;
import com.glxp.api.admin.res.inventory.InvProductResponse;
import com.glxp.api.admin.res.inventory.MAInvProductResponse;
import java.util.List;
@ -45,4 +46,11 @@ public interface InvProductService {
*/
List<InvProductResponse> getCountInvProduct(FilterInvProductRequest filterInvProductRequest);
/**
*
*
* @param filterInvProductRequest
* @return
*/
List<MAInvProductResponse> getMAInvProducts(FilterInvProductRequest filterInvProductRequest);
}

@ -3,13 +3,10 @@ package com.glxp.api.admin.service.inventory.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.github.pagehelper.PageHelper;
import com.glxp.api.admin.dao.inventory.InvMaintenanceOrderDao;
import com.glxp.api.admin.dao.inventory.InvMaintenanceOrderDetailDao;
import com.glxp.api.admin.dao.inventory.InvProductDetailDao;
import com.glxp.api.admin.constant.ConstantType;
import com.glxp.api.admin.dao.inventory.*;
import com.glxp.api.admin.entity.basic.UdiEntity;
import com.glxp.api.admin.entity.inventory.InvMaintenanceOrderDetailEntity;
import com.glxp.api.admin.entity.inventory.InvMaintenanceOrderEntity;
import com.glxp.api.admin.entity.inventory.InvProductDetailEntity;
import com.glxp.api.admin.entity.inventory.*;
import com.glxp.api.admin.req.inventory.AddMAOrderDetailRequest;
import com.glxp.api.admin.req.inventory.FilterInvMAOrderDetailRequest;
import com.glxp.api.admin.req.inventory.FilterInvProductDetailRequest;
@ -25,7 +22,10 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Slf4j
@Service
@ -38,6 +38,10 @@ public class InvMAOrderDetailServiceImpl implements InvMAOrderDetailService {
private InvMaintenanceOrderDao invMaintenanceOrderDao;
@Resource
private InvProductDetailDao invProductDetailDao;
@Resource
private InvMaintenanceExplanationDao invMaExplanationDao;
@Resource
private InvProductDao invProductDao;
@Override
public List<InvMAOrderDetailResponse> filterList(FilterInvMAOrderDetailRequest filterInvMAOrderDetailRequest) {
@ -56,6 +60,9 @@ public class InvMAOrderDetailServiceImpl implements InvMAOrderDetailService {
UdiEntity udi = FilterUdiUtils.getUdi(invMaintenanceOrderDetailEntity.getCode());
//查询此条码是否重复
InvMaintenanceOrderDetailEntity maintenanceOrderDetailEntity = invMAOrderDetailDao.selectByOrderIdAndCode(invMaintenanceOrderDetailEntity.getOrderIdFk(), invMaintenanceOrderDetailEntity.getCode());
//查询养护说明
InvMaintenanceExplanationEntity invMaintenanceExplanation = invMaExplanationDao.selectByStatus(1);
if (null != maintenanceOrderDetailEntity) {
if (StrUtil.isBlank(udi.getSerialNo()) || (StrUtil.isBlank(udi.getBatchNo()) && StrUtil.isBlank(udi.getSerialNo()))) {
maintenanceOrderDetailEntity.setCount(maintenanceOrderDetailEntity.getCount() + 1);
@ -87,6 +94,9 @@ public class InvMAOrderDetailServiceImpl implements InvMAOrderDetailService {
invMaintenanceOrderDetailEntity.setExpireDate(udi.getExpireDate());
invMaintenanceOrderDetailEntity.setNameCode(udi.getUdi());
invMaintenanceOrderDetailEntity.setProductId(invProductDetailEntities.get(0).getProductIdFk());
if (null != invMaintenanceExplanation) {
invMaintenanceOrderDetailEntity.setRemark(invMaintenanceExplanation.getText());
}
invMAOrderDetailDao.insert(invMaintenanceOrderDetailEntity);
} else {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "当前仓库中不存在此产品,无法进行养护!");
@ -110,25 +120,68 @@ public class InvMAOrderDetailServiceImpl implements InvMAOrderDetailService {
@Override
public BaseResponse batchAddDetail(AddMAOrderDetailRequest addMAOrderDetailRequest) {
for (String invProductId : addMAOrderDetailRequest.getInvProductIds()) {
//查询库存养护记录说明
InvMaintenanceExplanationEntity invMaintenanceExplanation = invMaExplanationDao.selectByStatus(1);
//遍历库存ID查找库存详情的条码信息生成库存养护记录详情
addMAOrderDetailRequest.getInvProductIds().forEach(invProductId -> {
//查询库存信息
InvProductEntity invProductEntity = invProductDao.selectById(invProductId);
//查询库存详情码信息
FilterInvProductDetailRequest detailRequest = new FilterInvProductDetailRequest();
detailRequest.setId(invProductId);
detailRequest.setProductIdFk(invProductEntity.getRelIdFk());
detailRequest.setBatchNo(invProductEntity.getBatchNo());
detailRequest.setInvStorageCode(invProductEntity.getInvStorageCode());
detailRequest.setInvWarehouseCode(invProductEntity.getInvWarehouseCode());
List<InvProductDetailEntity> invProductDetailEntities = invProductDetailDao.filterInvProductDetail(detailRequest);
InvProductDetailEntity invProductDetailEntity = invProductDetailEntities.get(0);
//生成库存养护记录详情
InvMaintenanceOrderDetailEntity maOrderDetail = new InvMaintenanceOrderDetailEntity();
maOrderDetail.setOrderIdFk(addMAOrderDetailRequest.getOrderIdFk());
maOrderDetail.setCode(invProductDetailEntity.getOriginCode());
maOrderDetail.setProductId(invProductDetailEntity.getProductIdFk());
UdiEntity udi = FilterUdiUtils.getUdi(invProductDetailEntity.getOriginCode());
maOrderDetail.setNameCode(udi.getUdi());
maOrderDetail.setProduceDate(invProductDetailEntity.getProductionDate());
maOrderDetail.setExpireDate(invProductDetailEntity.getExpireDate());
maOrderDetail.setCount(invProductDetailEntity.getCount());
maOrderDetail.setMaintenanceStatus(0);
maOrderDetail.setDeviceStatus(1);
invMAOrderDetailDao.insert(maOrderDetail);
}
//提取去重后的码集合
List<String> codeList = invProductDetailEntities.stream().map(InvProductDetailEntity::getOriginCode).distinct().collect(Collectors.toList());
//初始化码数量计算集合数据
Map<String, Integer> codeMap = new HashMap<>(codeList.size());
codeList.forEach(code -> codeMap.put(code, 0));
//计算当前在库存中的码明细
for (InvProductDetailEntity invProductDetailEntity : invProductDetailEntities) {
Integer count = codeMap.get(invProductDetailEntity.getOriginCode());
if (invProductDetailEntity.getMainAction().equals(ConstantType.TYPE_OUT)) {
//出库
count = count - 1;
} else {
//入库
count = count + 1;
}
codeMap.put(invProductDetailEntity.getOriginCode(), count);
}
//根据库存中的码明细,生成库存养护记录详情
for (String code : codeMap.keySet()) {
if (codeMap.get(code) > 0) {
//获取库存详情
InvProductDetailEntity invProductDetailEntity = null;
for (InvProductDetailEntity detailEntity : invProductDetailEntities) {
if (detailEntity.getOriginCode().equals(code)) {
invProductDetailEntity = detailEntity;
break;
}
}
//生成库存养护记录详情
InvMaintenanceOrderDetailEntity maOrderDetail = new InvMaintenanceOrderDetailEntity();
maOrderDetail.setOrderIdFk(addMAOrderDetailRequest.getOrderIdFk());
maOrderDetail.setCode(invProductDetailEntity.getOriginCode());
maOrderDetail.setProductId(invProductDetailEntity.getProductIdFk());
UdiEntity udi = FilterUdiUtils.getUdi(invProductDetailEntity.getOriginCode());
maOrderDetail.setNameCode(udi.getUdi());
maOrderDetail.setProduceDate(udi.getProduceDate());
maOrderDetail.setExpireDate(udi.getExpireDate());
maOrderDetail.setBatchNo(udi.getBatchNo());
maOrderDetail.setCount(codeMap.get(code));
maOrderDetail.setMaintenanceStatus(0);
maOrderDetail.setDeviceStatus(1);
if (null != invMaintenanceExplanation) {
maOrderDetail.setRemark(invMaintenanceExplanation.getText());
}
invMAOrderDetailDao.insert(maOrderDetail);
}
}
});
return ResultVOUtils.success("添加成功");
}

@ -100,6 +100,7 @@ public class InvMAOrderServiceImpl implements InvMAOrderService {
}
maintenanceOrder.setStatus(1);
maintenanceOrder.setUpdateTime(DateUtil.date().toString(DatePattern.NORM_DATETIME_PATTERN));
invMAOrderDao.updateByPrimaryKey(maintenanceOrder);
return ResultVOUtils.success("提交成功");
}

@ -7,6 +7,7 @@ import com.glxp.api.admin.dao.inventory.InvProductDao;
import com.glxp.api.admin.entity.inventory.InvProductEntity;
import com.glxp.api.admin.req.inventory.FilterInvProductRequest;
import com.glxp.api.admin.res.inventory.InvProductResponse;
import com.glxp.api.admin.res.inventory.MAInvProductResponse;
import com.glxp.api.admin.service.inventory.InvProductService;
import org.springframework.stereotype.Service;
@ -155,4 +156,15 @@ public class InvProductServiceImpl implements InvProductService {
return invProductDao.getCountInvProduct(filterInvProductRequest);
}
@Override
public List<MAInvProductResponse> getMAInvProducts(FilterInvProductRequest filterInvProductRequest) {
if (null == filterInvProductRequest) {
return Collections.emptyList();
}
if (null != filterInvProductRequest.getPage() && null != filterInvProductRequest.getLimit()) {
PageHelper.offsetPage((filterInvProductRequest.getPage() - 1) * filterInvProductRequest.getLimit(), filterInvProductRequest.getLimit());
}
return invProductDao.getMAInvProducts(filterInvProductRequest);
}
}

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.glxp.api.admin.dao.inventory.InvMaintenanceExplanationDao">
<select id="selectByStatus" resultType="com.glxp.api.admin.entity.inventory.InvMaintenanceExplanationEntity">
select *
from inv_maintenance_explanation
where status = #{status}
limit 1
</select>
</mapper>

@ -416,4 +416,33 @@
group by inv_product_detail.productIdFk, inv_product_detail.batchNo
</where>
</select>
<select id="getMAInvProducts" resultType="com.glxp.api.admin.res.inventory.MAInvProductResponse">
select ip.id, bp.nameCode, bp.cpmctymc, ip.ggxh, ip.batchNo, ip.productionDate, ip.expireDate
from inv_product ip
left join inv_product_detail ipd
on ip.relIdFk = ipd.productIdFk and
ifnull(ip.batchNo, 'empty') = ifnull(ipd.batchNo, 'empty')
left join basic_udirel bu on bu.id = ip.relIdFk
left join basic_products bp on bu.uuid = bp.uuid
<where>
(inCount - outCount) > 0
<if test="nameCode != null and nameCode != ''">
AND bp.nameCode like concat('%', #{nameCode}, '%')
</if>
<if test="cpmctymc != null and cpmctymc != ''">
AND bp.cpmctymc like concat('%', #{cpmctymc}, '%')
</if>
<if test="batchNo != null and batchNo != ''">
AND ip.batchNo like concat('%', #{batchNo}, '%')
</if>
<if test="invWarehouseCode != null and invWarehouseCode != ''">
AND ip.invWarehouseCode = #{invWarehouseCode}
</if>
<if test="invSpaceCode != null and invSpaceCode != ''">
AND ipd.invSpaceCode = #{invSpaceCode}
</if>
</where>
group by ip.id
</select>
</mapper>

@ -31,4 +31,16 @@ CREATE TABLE `inv_maintenance_order_detail` (
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '养护单据详情表' ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
SET FOREIGN_KEY_CHECKS = 1;
# 养护说明表
DROP TABLE IF EXISTS `inv_maintenance_explanation`;
CREATE TABLE `inv_maintenance_explanation` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '名称',
`status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '启用状态 0未启用 1启用',
`text` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '默认内容',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '养护说明表' ROW_FORMAT = Dynamic;
INSERT INTO `inv_maintenance_explanation` VALUES (1, '库存养护', '1', '正常');
Loading…
Cancel
Save