From dc85b6559e96b4e50dc6722efb93c50f7a639952 Mon Sep 17 00:00:00 2001 From: x_z Date: Mon, 28 Nov 2022 18:13:20 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=AE=8C=E6=88=90=E6=96=B0=E5=A2=9E=E7=9B=98?= =?UTF-8?q?=E7=82=B9=E5=8D=95=E6=8E=A5=E5=8F=A3=E7=BC=96=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inventory/InvProductsController.java | 8 +- .../InvMaintenanceExplanationDao.java | 12 +++ .../admin/dao/inventory/InvProductDao.java | 10 ++ .../InvMaintenanceExplanationEntity.java | 28 ++++++ ...esponse.java => MAInvProductResponse.java} | 6 +- .../service/inventory/InvProductService.java | 8 ++ .../impl/InvMAOrderDetailServiceImpl.java | 99 ++++++++++++++----- .../inventory/impl/InvMAOrderServiceImpl.java | 1 + .../inventory/impl/InvProductServiceImpl.java | 12 +++ .../InvMaintenanceExplanationDao.xml | 10 ++ .../mapper/inventory/InvProductDao.xml | 29 ++++++ scripts/库存养护功能表.sql | 14 ++- 12 files changed, 208 insertions(+), 29 deletions(-) create mode 100644 api-admin/src/main/java/com/glxp/api/admin/dao/inventory/InvMaintenanceExplanationDao.java create mode 100644 api-admin/src/main/java/com/glxp/api/admin/entity/inventory/InvMaintenanceExplanationEntity.java rename api-admin/src/main/java/com/glxp/api/admin/res/inventory/{MAInvProductDetailResponse.java => MAInvProductResponse.java} (85%) create mode 100644 api-admin/src/main/resources/mybatis/mapper/inventory/InvMaintenanceExplanationDao.xml diff --git a/api-admin/src/main/java/com/glxp/api/admin/controller/inventory/InvProductsController.java b/api-admin/src/main/java/com/glxp/api/admin/controller/inventory/InvProductsController.java index dbff7054..9e1240d5 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/controller/inventory/InvProductsController.java +++ b/api-admin/src/main/java/com/glxp/api/admin/controller/inventory/InvProductsController.java @@ -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 list = invProductService.getMAInvProducts(filterInvProductRequest); + PageInfo pageInfo = new PageInfo<>(list); + PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); + pageSimpleResponse.setTotal(pageInfo.getTotal()); + pageSimpleResponse.setList(list); + return ResultVOUtils.success(pageSimpleResponse); } } diff --git a/api-admin/src/main/java/com/glxp/api/admin/dao/inventory/InvMaintenanceExplanationDao.java b/api-admin/src/main/java/com/glxp/api/admin/dao/inventory/InvMaintenanceExplanationDao.java new file mode 100644 index 00000000..ac5821b7 --- /dev/null +++ b/api-admin/src/main/java/com/glxp/api/admin/dao/inventory/InvMaintenanceExplanationDao.java @@ -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); + +} diff --git a/api-admin/src/main/java/com/glxp/api/admin/dao/inventory/InvProductDao.java b/api-admin/src/main/java/com/glxp/api/admin/dao/inventory/InvProductDao.java index a56ef2fe..2355a52b 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/dao/inventory/InvProductDao.java +++ b/api-admin/src/main/java/com/glxp/api/admin/dao/inventory/InvProductDao.java @@ -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 getCountInvProduct(FilterInvProductRequest filterInvProductRequest); + + /** + * 库存养护功能查询库存数据 + * + * @param filterInvProductRequest + * @return + */ + List getMAInvProducts(FilterInvProductRequest filterInvProductRequest); } diff --git a/api-admin/src/main/java/com/glxp/api/admin/entity/inventory/InvMaintenanceExplanationEntity.java b/api-admin/src/main/java/com/glxp/api/admin/entity/inventory/InvMaintenanceExplanationEntity.java new file mode 100644 index 00000000..61c14c66 --- /dev/null +++ b/api-admin/src/main/java/com/glxp/api/admin/entity/inventory/InvMaintenanceExplanationEntity.java @@ -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; + +} diff --git a/api-admin/src/main/java/com/glxp/api/admin/res/inventory/MAInvProductDetailResponse.java b/api-admin/src/main/java/com/glxp/api/admin/res/inventory/MAInvProductResponse.java similarity index 85% rename from api-admin/src/main/java/com/glxp/api/admin/res/inventory/MAInvProductDetailResponse.java rename to api-admin/src/main/java/com/glxp/api/admin/res/inventory/MAInvProductResponse.java index 731e920f..efdc6cc9 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/res/inventory/MAInvProductDetailResponse.java +++ b/api-admin/src/main/java/com/glxp/api/admin/res/inventory/MAInvProductResponse.java @@ -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; /** * 产品标识 diff --git a/api-admin/src/main/java/com/glxp/api/admin/service/inventory/InvProductService.java b/api-admin/src/main/java/com/glxp/api/admin/service/inventory/InvProductService.java index e495d100..688deb1f 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/service/inventory/InvProductService.java +++ b/api-admin/src/main/java/com/glxp/api/admin/service/inventory/InvProductService.java @@ -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 getCountInvProduct(FilterInvProductRequest filterInvProductRequest); + /** + * 库存养护功能查询库存 + * + * @param filterInvProductRequest + * @return + */ + List getMAInvProducts(FilterInvProductRequest filterInvProductRequest); } diff --git a/api-admin/src/main/java/com/glxp/api/admin/service/inventory/impl/InvMAOrderDetailServiceImpl.java b/api-admin/src/main/java/com/glxp/api/admin/service/inventory/impl/InvMAOrderDetailServiceImpl.java index 08d4e42e..f2c43f8b 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/service/inventory/impl/InvMAOrderDetailServiceImpl.java +++ b/api-admin/src/main/java/com/glxp/api/admin/service/inventory/impl/InvMAOrderDetailServiceImpl.java @@ -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 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 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 codeList = invProductDetailEntities.stream().map(InvProductDetailEntity::getOriginCode).distinct().collect(Collectors.toList()); + //初始化码数量计算集合数据 + Map 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("添加成功"); } diff --git a/api-admin/src/main/java/com/glxp/api/admin/service/inventory/impl/InvMAOrderServiceImpl.java b/api-admin/src/main/java/com/glxp/api/admin/service/inventory/impl/InvMAOrderServiceImpl.java index cbd3cbc3..a5818722 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/service/inventory/impl/InvMAOrderServiceImpl.java +++ b/api-admin/src/main/java/com/glxp/api/admin/service/inventory/impl/InvMAOrderServiceImpl.java @@ -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("提交成功"); } diff --git a/api-admin/src/main/java/com/glxp/api/admin/service/inventory/impl/InvProductServiceImpl.java b/api-admin/src/main/java/com/glxp/api/admin/service/inventory/impl/InvProductServiceImpl.java index ca8cfd2a..dd8e1e12 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/service/inventory/impl/InvProductServiceImpl.java +++ b/api-admin/src/main/java/com/glxp/api/admin/service/inventory/impl/InvProductServiceImpl.java @@ -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 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); + } + } diff --git a/api-admin/src/main/resources/mybatis/mapper/inventory/InvMaintenanceExplanationDao.xml b/api-admin/src/main/resources/mybatis/mapper/inventory/InvMaintenanceExplanationDao.xml new file mode 100644 index 00000000..0e8b4b55 --- /dev/null +++ b/api-admin/src/main/resources/mybatis/mapper/inventory/InvMaintenanceExplanationDao.xml @@ -0,0 +1,10 @@ + + + + + \ No newline at end of file diff --git a/api-admin/src/main/resources/mybatis/mapper/inventory/InvProductDao.xml b/api-admin/src/main/resources/mybatis/mapper/inventory/InvProductDao.xml index 0aa3d69f..85e399ac 100644 --- a/api-admin/src/main/resources/mybatis/mapper/inventory/InvProductDao.xml +++ b/api-admin/src/main/resources/mybatis/mapper/inventory/InvProductDao.xml @@ -416,4 +416,33 @@ group by inv_product_detail.productIdFk, inv_product_detail.batchNo + + \ No newline at end of file diff --git a/scripts/库存养护功能表.sql b/scripts/库存养护功能表.sql index b85a106a..11c14de1 100644 --- a/scripts/库存养护功能表.sql +++ b/scripts/库存养护功能表.sql @@ -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; \ No newline at end of file +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', '正常'); \ No newline at end of file