From bbd1e82de1d540d1c645a07542d27e5d8db99780 Mon Sep 17 00:00:00 2001 From: zhaoxuebing <1291173720@qq.com> Date: Mon, 18 Dec 2023 14:45:00 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=B6=E5=93=81=E6=8B=86=E8=A7=A3=E5=AD=90?= =?UTF-8?q?=E8=A1=A8=E6=96=B0=E5=A2=9E=E4=B8=8EBom=E6=8B=86=E8=A7=A3?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProductrepairRequestMainController.java | 9 ++ .../vo/ProductrepairRequestDetailaBaseVO.java | 4 +- .../ProductrepairRequestDetailaService.java | 15 ++- ...roductrepairRequestDetailaServiceImpl.java | 91 ++++++++++++++++++- .../ProductrepairRequestMainService.java | 7 ++ .../ProductrepairRequestMainServiceImpl.java | 75 +++++---------- 6 files changed, 139 insertions(+), 62 deletions(-) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productrepairRequest/ProductrepairRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productrepairRequest/ProductrepairRequestMainController.java index 8f2f7287..57d09808 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productrepairRequest/ProductrepairRequestMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productrepairRequest/ProductrepairRequestMainController.java @@ -10,6 +10,7 @@ import com.win.framework.operatelog.core.annotations.OperateLog; import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; import com.win.module.wms.controller.productrepairRequest.vo.*; +import com.win.module.wms.controller.productscrapRequest.vo.RawscrapRequestDetailUpdateReqVO; import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestMainCreateReqVO; import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestMainImportErrorVO; import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestMainImportVO; @@ -240,4 +241,12 @@ public class ProductrepairRequestMainController { return success(pageResult); } + @PostMapping("/updateBom") + @Operation(summary = "更新制品返修申请二级子表") + @PreAuthorize("@ss.hasPermission('wms:productrepair-request-main:update')") + public CommonResult updateProductrepairDetailRequestBom(@RequestParam("id") Long id, @RequestBody List updateReqVOList) { + productrepairRequestMainService.updateProductrepairDetailRequestBom(id, updateReqVOList); + return success(true); + } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productrepairRequest/vo/ProductrepairRequestDetailaBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productrepairRequest/vo/ProductrepairRequestDetailaBaseVO.java index a90331f9..d45fa9f6 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productrepairRequest/vo/ProductrepairRequestDetailaBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productrepairRequest/vo/ProductrepairRequestDetailaBaseVO.java @@ -64,7 +64,6 @@ public class ProductrepairRequestDetailaBaseVO { private String remark; @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "创建时间不能为空") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime createTime; @@ -99,4 +98,7 @@ public class ProductrepairRequestDetailaBaseVO { @Schema(description = "BOM版本") private String bomVersion; + @Schema(description = "主键ID") + private Long masterId; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productrepairRequest/ProductrepairRequestDetailaService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productrepairRequest/ProductrepairRequestDetailaService.java index af5e46a2..22cc4757 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productrepairRequest/ProductrepairRequestDetailaService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productrepairRequest/ProductrepairRequestDetailaService.java @@ -2,11 +2,10 @@ package com.win.module.wms.service.productrepairRequest; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.productrepairRequest.vo.ProductrepairRequestDetailaCreateReqVO; -import com.win.module.wms.controller.productrepairRequest.vo.ProductrepairRequestDetailaExportReqVO; -import com.win.module.wms.controller.productrepairRequest.vo.ProductrepairRequestDetailaPageReqVO; -import com.win.module.wms.controller.productrepairRequest.vo.ProductrepairRequestDetailaUpdateReqVO; +import com.win.module.wms.controller.productrepairRequest.vo.*; +import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; import com.win.module.wms.dal.dataobject.productrepairRequest.ProductrepairRequestDetailaDO; +import com.win.module.wms.dal.dataobject.productrepairRequest.ProductrepairRequestMainDO; import javax.validation.Valid; import java.util.Collection; @@ -80,4 +79,12 @@ public interface ProductrepairRequestDetailaService { * @return 分页列表 */ PageResult getProductrepairRequestDetailaSenior(CustomConditions conditions); + + /** + * 校验数据 + * @param mainDO + * @param detailDo + * @param businesstypeDO + */ + void validateDetailMethod(ProductrepairRequestMainDO mainDO, ProductrepairRequestDetailaBaseVO detailDo, BusinesstypeDO businesstypeDO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productrepairRequest/ProductrepairRequestDetailaServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productrepairRequest/ProductrepairRequestDetailaServiceImpl.java index 4ea5c7e0..e6faa050 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productrepairRequest/ProductrepairRequestDetailaServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productrepairRequest/ProductrepairRequestDetailaServiceImpl.java @@ -2,23 +2,34 @@ package com.win.module.wms.service.productrepairRequest; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.productrepairRequest.vo.ProductrepairRequestDetailaCreateReqVO; -import com.win.module.wms.controller.productrepairRequest.vo.ProductrepairRequestDetailaExportReqVO; -import com.win.module.wms.controller.productrepairRequest.vo.ProductrepairRequestDetailaPageReqVO; -import com.win.module.wms.controller.productrepairRequest.vo.ProductrepairRequestDetailaUpdateReqVO; +import com.win.module.wms.controller.productrepairRequest.vo.*; import com.win.module.wms.convert.productrepairRequest.ProductrepairRequestDetailaConvert; import com.win.module.wms.dal.dataobject.accountcalendar.AccountcalendarDO; +import com.win.module.wms.dal.dataobject.balance.BalanceDO; +import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; +import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; +import com.win.module.wms.dal.dataobject.productionline.ProductionlineDO; import com.win.module.wms.dal.dataobject.productrepairRequest.ProductrepairRequestDetailaDO; +import com.win.module.wms.dal.dataobject.productrepairRequest.ProductrepairRequestMainDO; +import com.win.module.wms.dal.dataobject.workstation.WorkstationDO; import com.win.module.wms.dal.mysql.productrepairRequest.ProductrepairRequestDetailaMapper; +import com.win.module.wms.dal.mysql.productrepairRequest.ProductrepairRequestMainMapper; +import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.service.productionline.ProductionlineService; +import com.win.module.wms.service.workstation.WorkstationService; +import com.win.module.wms.util.JobUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.util.Arrays; import java.util.Collection; import java.util.List; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTREPAIR_REQUEST_DETAILA_NOT_EXISTS; +import static com.win.module.wms.enums.ErrorCodeConstants.*; +import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTREPAIR_REQUEST_DETAILA_BALANCE_ERROR; /** * 制品返修申请子 Service 实现类 @@ -31,11 +42,27 @@ public class ProductrepairRequestDetailaServiceImpl implements ProductrepairRequ @Resource private ProductrepairRequestDetailaMapper productrepairRequestDetailaMapper; + @Resource + private ProductionlineService productionlineService; + @Resource + private ItembasicService itembasicService; + @Resource + private WorkstationService workstationService; + @Resource + private JobUtils jobUtils; + @Resource + private ProductrepairRequestMainMapper productrepairRequestMainMapper; @Override public Long createProductrepairRequestDetaila(ProductrepairRequestDetailaCreateReqVO createReqVO) { + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductRepairRequest"); + ProductrepairRequestMainDO mainDO = productrepairRequestMainMapper.selectById(createReqVO.getMasterId()); + // 校验数据 + validateDetailMethod(mainDO, createReqVO,businesstypeDO); // 插入 ProductrepairRequestDetailaDO productrepairRequestDetaila = ProductrepairRequestDetailaConvert.INSTANCE.convert(createReqVO); + productrepairRequestDetaila.setMasterId(mainDO.getId()); + productrepairRequestDetaila.setNumber(mainDO.getNumber()); productrepairRequestDetailaMapper.insert(productrepairRequestDetaila); // 返回 return productrepairRequestDetaila.getId(); @@ -45,11 +72,65 @@ public class ProductrepairRequestDetailaServiceImpl implements ProductrepairRequ public void updateProductrepairRequestDetaila(ProductrepairRequestDetailaUpdateReqVO updateReqVO) { // 校验存在 validateProductrepairRequestDetailaExists(updateReqVO.getId()); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductRepairRequest"); + ProductrepairRequestMainDO mainDO = productrepairRequestMainMapper.selectById(updateReqVO.getMasterId()); + // 校验数据 + validateDetailMethod(mainDO, updateReqVO,businesstypeDO); // 更新 ProductrepairRequestDetailaDO updateObj = ProductrepairRequestDetailaConvert.INSTANCE.convert(updateReqVO); + updateObj.setMasterId(mainDO.getId()); + updateObj.setNumber(mainDO.getNumber()); productrepairRequestDetailaMapper.updateById(updateObj); } + public void validateDetailMethod(ProductrepairRequestMainDO mainDO, ProductrepairRequestDetailaBaseVO detailDo, BusinesstypeDO businesstypeDO) { + // 校验--生产线基本信息 + ProductionlineDO productionlineDO = productionlineService.productionLineCodeExist(detailDo.getProductionLineCode()); + detailDo.setFromLocationCode(productionlineDO.getRawLocationCode()); + // 校验--物品基本信息 + ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode()); + // 赋值物品Item相关信息 + detailDo.setItemDesc1(itembasicDO.getDesc1()); + detailDo.setItemDesc2(itembasicDO.getDesc2()); + detailDo.setItemName(itembasicDO.getName()); + detailDo.setProjectCode(itembasicDO.getProject()); + if (!itembasicDO.getUom().equals(detailDo.getUom())) { + // 提示:记量单位【uom】错误,应该是【item.uom】 + throw exception(PRODUCTREPAIR_REQUEST_DETAILA_UOM_ERROR,detailDo.getUom(),itembasicDO.getUom()); + } + // 校验--工位基础信息 + if(StringUtils.isNotEmpty(detailDo.getWorkStationCode())){ + WorkstationDO workstationDO = workstationService.selectWorkstationExist(detailDo.getWorkStationCode(), mainDO.getWorkshopCode(), detailDo.getProductionLineCode()); + detailDo.setFromLocationCode(workstationDO.getRawLocationCode()); + } + // 校验--库存余额 TB——>TB1 + validateBalance(detailDo,mainDO); + // 校验--物品类型 DBT——>DBT2——>IT + jobUtils.ifInType(itembasicDO.getType(),businesstypeDO); + // 校验--来源库位 DBT——>DBT2——>LO + jobUtils.ifInToLocationType(detailDo.getFromLocationCode(), businesstypeDO); + // 校验--库存状态 DBT——>DBT2——>ISO + jobUtils.ifOutInventoryStatuses(detailDo.getInventoryStatus(),businesstypeDO); + } + + public void validateBalance(ProductrepairRequestDetailaBaseVO detailDo,ProductrepairRequestMainDO mainDO) { + String inventoryStatus = detailDo.getInventoryStatus(); + String[] inventoryArray = inventoryStatus.split(","); + List inventorystatus = Arrays.asList(inventoryArray); + List list = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), detailDo.getBatch(), detailDo.getFromLocationCode(),inventorystatus); + if(list != null && list.size() > 0){ + BalanceDO balanceDO = list.get(0); + mainDO.setFromWarehouseCode(balanceDO.getWarehouseCode()); + if(balanceDO.getQty().compareTo(detailDo.getQty()) < 0){ + // 返修数量【qty】不能大于库存数量【banlance.qty】 + throw exception(PRODUCTREPAIR_REQUEST_DETAILA_QTY_ERROR,detailDo.getQty(),balanceDO.getQty()); + } + }else { + // 余额校验异常 + throw exception(PRODUCTREPAIR_REQUEST_DETAILA_BALANCE_ERROR); + } + } + @Override public void deleteProductrepairRequestDetaila(Long id) { // 校验存在 diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productrepairRequest/ProductrepairRequestMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productrepairRequest/ProductrepairRequestMainService.java index 1c0cf2f7..e7ea1205 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productrepairRequest/ProductrepairRequestMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productrepairRequest/ProductrepairRequestMainService.java @@ -136,4 +136,11 @@ public interface ProductrepairRequestMainService { * @return */ List importProductrepairRequestMainList(List createReqVOList, Integer mode, Boolean updatePart); + + /** + * 更新BOM二级子表数据 + * @param id + * @param updateReqVOList + */ + void updateProductrepairDetailRequestBom(Long id, List updateReqVOList); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productrepairRequest/ProductrepairRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productrepairRequest/ProductrepairRequestMainServiceImpl.java index 25922c02..344ba3d6 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productrepairRequest/ProductrepairRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productrepairRequest/ProductrepairRequestMainServiceImpl.java @@ -1,6 +1,7 @@ package com.win.module.wms.service.productrepairRequest; import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; @@ -92,12 +93,8 @@ public class ProductrepairRequestMainServiceImpl implements ProductrepairRequest @Resource private ShiftService shiftService; @Resource - private ProductionlineService productionlineService; - @Resource private ItembasicService itembasicService; @Resource - private WorkstationService workstationService; - @Resource private SerialNumberApi serialNumberApi; @Resource private AdminUserApi userApi; @@ -117,6 +114,8 @@ public class ProductrepairRequestMainServiceImpl implements ProductrepairRequest private TrendsApi trendsApi; @Resource private TransactionService transactionService; + @Resource + private ProductrepairRequestDetailaService productrepairRequestDetailaService; @Transactional @Override @@ -204,7 +203,7 @@ public class ProductrepairRequestMainServiceImpl implements ProductrepairRequest // 子表处理逻辑 ProductrepairRequestDetailaDO List subList = createReqVO.getSubList(); for(ProductrepairRequestDetailaCreateReqVO productrepairRequestDetailaCreateReqVO:subList){ - validateDetailMethod(mainBo, productrepairRequestDetailaCreateReqVO,businesstypeDO); + productrepairRequestDetailaService.validateDetailMethod(mainBo, productrepairRequestDetailaCreateReqVO,businesstypeDO); } String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCT_REPAIR_REQUEST.getCode()); mainBo.setNumber(number); @@ -252,53 +251,6 @@ public class ProductrepairRequestMainServiceImpl implements ProductrepairRequest detailbDO.setCreator(null); } - private void validateDetailMethod(ProductrepairRequestMainDO mainDO, ProductrepairRequestDetailaBaseVO detailDo,BusinesstypeDO businesstypeDO) { - // 校验--生产线基本信息 - ProductionlineDO productionlineDO = productionlineService.productionLineCodeExist(detailDo.getProductionLineCode()); - detailDo.setFromLocationCode(productionlineDO.getRawLocationCode()); - // 校验--物品基本信息 - ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode()); - // 赋值物品Item相关信息 - detailDo.setItemDesc1(itembasicDO.getDesc1()); - detailDo.setItemDesc2(itembasicDO.getDesc2()); - detailDo.setItemName(itembasicDO.getName()); - detailDo.setProjectCode(itembasicDO.getProject()); - if (!itembasicDO.getUom().equals(detailDo.getUom())) { - // 提示:记量单位【uom】错误,应该是【item.uom】 - throw exception(PRODUCTREPAIR_REQUEST_DETAILA_UOM_ERROR,detailDo.getUom(),itembasicDO.getUom()); - } - // 校验--工位基础信息 - if(StringUtils.isNotEmpty(detailDo.getWorkStationCode())){ - WorkstationDO workstationDO = workstationService.selectWorkstationExist(detailDo.getWorkStationCode(), mainDO.getWorkshopCode(), detailDo.getProductionLineCode()); - detailDo.setFromLocationCode(workstationDO.getRawLocationCode()); - } - // 校验--库存余额 TB——>TB1 - validateBalance(detailDo,mainDO); - // 校验--物品类型 DBT——>DBT2——>IT - jobUtils.ifInType(itembasicDO.getType(),businesstypeDO); - // 校验--来源库位 DBT——>DBT2——>LO - jobUtils.ifInToLocationType(detailDo.getFromLocationCode(), businesstypeDO); - // 校验--库存状态 DBT——>DBT2——>ISO - jobUtils.ifOutInventoryStatuses(detailDo.getInventoryStatus(),businesstypeDO); - } - - private void validateBalance(ProductrepairRequestDetailaBaseVO detailDo,ProductrepairRequestMainDO mainDO) { - String inventoryStatus = detailDo.getInventoryStatus(); - String[] inventoryArray = inventoryStatus.split(","); - List inventorystatus = Arrays.asList(inventoryArray); - List list = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), detailDo.getBatch(), detailDo.getFromLocationCode(),inventorystatus); - if(list != null && list.size() > 0){ - BalanceDO balanceDO = list.get(0); - mainDO.setFromWarehouseCode(balanceDO.getWarehouseCode()); - if(balanceDO.getQty().compareTo(detailDo.getQty()) < 0){ - // 返修数量【qty】不能大于库存数量【banlance.qty】 - throw exception(PRODUCTREPAIR_REQUEST_DETAILA_QTY_ERROR,detailDo.getQty(),balanceDO.getQty()); - } - }else { - // 余额校验异常 - throw exception(PRODUCTREPAIR_REQUEST_DETAILA_BALANCE_ERROR); - } - } private ProductrepairRequestMainDO validateMainMethod(ProductrepairRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO) { ProductrepairRequestMainDO productrepairRequestMainDO = ProductrepairRequestMainConvert.INSTANCE.convert(baseVO); @@ -554,5 +506,24 @@ public class ProductrepairRequestMainServiceImpl implements ProductrepairRequest return errorList; } + @Transactional + @Override + public void updateProductrepairDetailRequestBom(Long id, List updateReqVOList) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(ProductrepairRequestDetailbDO::getMasterId,id); + productrepairRequestDetailbMapper.delete(lambdaQueryWrapper); + ProductrepairRequestDetailaDO detailaDO = productrepairRequestDetailaMapper.selectById(id); + ProductrepairRequestMainDO mainBo = productrepairRequestMainMapper.selectById(detailaDO.getMasterId()); + List childList = new ArrayList<>(); + for(ProductrepairRequestDetailbUpdateReqVO productrepairRequestDetailbUpdateReqVO:updateReqVOList){ + ProductrepairRequestDetailbDO detailbDO = ProductrepairRequestDetailbConvert.INSTANCE.convert(productrepairRequestDetailbUpdateReqVO); + detailbDO.setMasterId(detailaDO.getId()); + detailbDO.setNumber(detailaDO.getNumber()); + validateDetailbBom(detailbDO,detailaDO,mainBo); // 创建二级子表数据 + detailbDO.setId(null); + childList.add(detailbDO); + } + productrepairRequestDetailbMapper.insertBatch(childList); + } }