From 43ff12e03ada5dfe05481ef4d3de0e79a83bf8aa Mon Sep 17 00:00:00 2001 From: yejiaxing <591141169@qq.com> Date: Thu, 28 Dec 2023 14:05:28 +0800 Subject: [PATCH] =?UTF-8?q?BUG=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DemandforecastingMainServiceImpl.java | 20 ++++--- .../module/wms/service/dock/DockService.java | 14 ++++- .../wms/service/dock/DockServiceImpl.java | 60 ++++++++++++------- .../purchase/PurchaseMainServiceImpl.java | 8 +-- ...SupplierdeliverRequestMainServiceImpl.java | 14 ++++- 5 files changed, 76 insertions(+), 40 deletions(-) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/demandforecasting/DemandforecastingMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/demandforecasting/DemandforecastingMainServiceImpl.java index a9a86ebb..7ef3f82f 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/demandforecasting/DemandforecastingMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/demandforecasting/DemandforecastingMainServiceImpl.java @@ -70,18 +70,17 @@ public class DemandforecastingMainServiceImpl implements DemandforecastingMainSe private SupplieritemService supplieritemService; @Resource private SerialNumberApi serialNumberApi; + @Resource private TrendsApi trendsApi; @Override public Long createDemandforecastingMain(DemandforecastingMainCreateReqVO createReqVO) { - BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchasePrediction"); - createReqVO.setBusinessType(businesstypeDO.getCode()); String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_PREDICTION.getCode()); createReqVO.setNumber(number); createReqVO.setCreateTime(LocalDateTime.now()); DemandforecastingMainDO demandforecastingMainDO = validatorToCreate(createReqVO); //调用自动执行方法 - if(RequestStatusEnum.HANDLING.getCode().equals(demandforecastingMainDO.getStatus())) { + if (RequestStatusEnum.HANDLING.getCode().equals(demandforecastingMainDO.getStatus())) { } trendsApi.createTrends(demandforecastingMainDO.getId(), "Demandforecasting", "增加了要货预测", TrendsTypeEnum.CREATE); return demandforecastingMainDO.getId(); @@ -92,7 +91,7 @@ public class DemandforecastingMainServiceImpl implements DemandforecastingMainSe // 校验存在 validateDemandforecastingMainExists(updateReqVO.getId()); DemandforecastingMainDO demandforecastingMainDO = validatorToUpdate(updateReqVO); - if(RequestStatusEnum.HANDLING.getCode().equals(demandforecastingMainDO.getStatus())) { + if (RequestStatusEnum.HANDLING.getCode().equals(demandforecastingMainDO.getStatus())) { } trendsApi.createTrends(demandforecastingMainDO.getId(), "Demandforecasting", "修改了要货预测", TrendsTypeEnum.CREATE); } @@ -188,6 +187,7 @@ public class DemandforecastingMainServiceImpl implements DemandforecastingMainSe * @param mainDo * @return */ + private String validateDemandforecastingMainImport(DemandforecastingMainDO mainDo, BusinesstypeDO businesstypeDO) { // 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList String messageMain = ""; @@ -249,13 +249,14 @@ public class DemandforecastingMainServiceImpl implements DemandforecastingMainSe //新增方法(主和子) + @Transactional private DemandforecastingMainDO validatorToCreate(DemandforecastingMainCreateReqVO createReqVO) { DemandforecastingMainDO demandforecastingMainDO = validateMainMethod(createReqVO); //子表校验 List subList = createReqVO.getSubList(); List subDOList = DemandforecastingDetailConvert.INSTANCE.convertList03(subList); for (DemandforecastingDetailDO demandforecastingDetailDO : subDOList) { - validateDetailMethod(demandforecastingMainDO,demandforecastingDetailDO); + validateDetailMethod(demandforecastingMainDO, demandforecastingDetailDO); } String number = serialNumberApi.generateCode(RuleCodeEnum.SUPPLIER_DELIVER_REQUEST.getCode()); demandforecastingMainDO.setNumber(number); @@ -269,13 +270,14 @@ public class DemandforecastingMainServiceImpl implements DemandforecastingMainSe } //修改方法(主和子) + @Transactional private DemandforecastingMainDO validatorToUpdate(DemandforecastingMainUpdateReqVO updateReqVO) { DemandforecastingMainDO demandforecastingMainDO = validateMainMethod(updateReqVO); //子表校验 List subList = updateReqVO.getSubList(); List subDOList = DemandforecastingDetailConvert.INSTANCE.convertList05(subList); for (DemandforecastingDetailDO demandforecastingDetailDO : subDOList) { - validateDetailMethod(demandforecastingMainDO,demandforecastingDetailDO); + validateDetailMethod(demandforecastingMainDO, demandforecastingDetailDO); } demandforecastingMainMapper.updateById(demandforecastingMainDO); demandforecastingDetailMapper.updateBatch(subDOList); @@ -283,16 +285,16 @@ public class DemandforecastingMainServiceImpl implements DemandforecastingMainSe } //校验主表公共方法(适用于新增/修改) - private DemandforecastingMainDO validateMainMethod(DemandforecastingMainBaseVO baseVO){ + private DemandforecastingMainDO validateMainMethod(DemandforecastingMainBaseVO baseVO) { DemandforecastingMainDO demandforecastingMainDO = DemandforecastingMainConvert.INSTANCE.convert(baseVO); this.validatorSupplier(demandforecastingMainDO.getSupplierCode()); return demandforecastingMainDO; } //校验子表公共方法(适用于新增/修改) - private void validateDetailMethod(DemandforecastingMainDO demandforecastingMainDO,DemandforecastingDetailDO demandforecastingDetailDO) { + private void validateDetailMethod(DemandforecastingMainDO demandforecastingMainDO, DemandforecastingDetailDO demandforecastingDetailDO) { itembasicService.selectItembasic(demandforecastingDetailDO.getItemCode()); - purchaseMainService.selectPurchaseDetailDoExist(demandforecastingDetailDO.getNumber(), demandforecastingMainDO.getSupplierCode(), demandforecastingDetailDO.getItemCode(), demandforecastingDetailDO.getPoLine()); + purchaseMainService.selectPurchaseDetailDoExist(demandforecastingDetailDO.getPoNumber(), demandforecastingMainDO.getSupplierCode(), demandforecastingDetailDO.getItemCode(), demandforecastingDetailDO.getPoLine()); supplieritemService.selectSupplierItemExist(demandforecastingMainDO.getSupplierCode(), demandforecastingDetailDO.getItemCode()); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/dock/DockService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/dock/DockService.java index 0949d066..9a002c44 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/dock/DockService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/dock/DockService.java @@ -70,7 +70,7 @@ public interface DockService { */ PageResult getDockSenior(CustomConditions conditions); - + /** * 获得月台列表, 用于 Excel 导出 * @@ -83,9 +83,19 @@ public interface DockService { /** * 校验(客户地点 月台)收货口有效,状态正确 - * @author chenfang + * * @param code 代码 * @return 月台列表 + * @author chenfang */ DockDO DockExist(String code); + + /** + * 查询月台 + * + * @param code toWarehouseCode + * @return 月台列表 + * @author yejiaxing + */ + DockDO selectDockByTwoCode(String code, String toWarehouseCode); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/dock/DockServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/dock/DockServiceImpl.java index 023e289e..7b0f2cad 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/dock/DockServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/dock/DockServiceImpl.java @@ -40,9 +40,9 @@ public class DockServiceImpl implements DockService { @Override public Long createDock(DockCreateReqVO createReqVO) { - validateDockForCreateOrUpdate(createReqVO.getId(),createReqVO.getCode(),createReqVO.getType(),createReqVO.getWarehouseCode(),createReqVO.getDefaultLocationCode(),createReqVO.getAvailable()); + validateDockForCreateOrUpdate(createReqVO.getId(), createReqVO.getCode(), createReqVO.getType(), createReqVO.getWarehouseCode(), createReqVO.getDefaultLocationCode(), createReqVO.getAvailable()); - // 插入 + // 插入 DockDO dock = DockConvert.INSTANCE.convert(createReqVO); dockMapper.insert(dock); // 返回 @@ -52,8 +52,8 @@ public class DockServiceImpl implements DockService { @Override public void updateDock(DockUpdateReqVO updateReqVO) { // 校验存在 - validateDockForCreateOrUpdate(updateReqVO.getId(),updateReqVO.getCode(),updateReqVO.getType(),updateReqVO.getWarehouseCode(),updateReqVO.getDefaultLocationCode(),updateReqVO.getAvailable()); - // 更新 + validateDockForCreateOrUpdate(updateReqVO.getId(), updateReqVO.getCode(), updateReqVO.getType(), updateReqVO.getWarehouseCode(), updateReqVO.getDefaultLocationCode(), updateReqVO.getAvailable()); + // 更新 DockDO updateObj = DockConvert.INSTANCE.convert(updateReqVO); dockMapper.updateById(updateObj); } @@ -85,13 +85,13 @@ public class DockServiceImpl implements DockService { public PageResult getDockSenior(CustomConditions conditions) { return dockMapper.selectSenior(conditions); } - + @Override public List getDockList(DockExportReqVO exportReqVO) { return dockMapper.selectList(exportReqVO); } - public String valitedock(DockDO dock){ + public String valitedock(DockDO dock) { StringBuilder message = new StringBuilder(); try { validateDockExists(null); @@ -99,7 +99,7 @@ public class DockServiceImpl implements DockService { message.append(ex.getMessage()).append(","); } try { - validateCodeExists(null,dock.getCode()); + validateCodeExists(null, dock.getCode()); } catch (ServiceException ex) { message.append(ex.getMessage()).append(","); } @@ -136,20 +136,19 @@ public class DockServiceImpl implements DockService { DockDO dockDO = DockConvert.INSTANCE.convert(dock); String message = this.valitedock(dockDO); boolean flag = true; - if(!message.isEmpty()){ + if (!message.isEmpty()) { DockImportErrorVO importErrorVO = DockConvert.INSTANCE.convert2(dockDO); importErrorVO.setImportStatus("失败"); importErrorVO.setImportRemark(message.substring(0, message.length() - 1)); errorList.add(importErrorVO); flag = false; } - if(flag){ + if (flag) { // 判断如果不存在,在进行插入 - DockDO existAccountcalendar = dockMapper.selectByItemCode(dockDO.getCode()); - if (existAccountcalendar == null&& mode != 3) { + DockDO existAccountcalendar = dockMapper.selectByItemCode(dockDO.getCode()); + if (existAccountcalendar == null && mode != 3) { dockMapper.insert(DockConvert.INSTANCE.convert(dock)); - } - else if (existAccountcalendar != null && mode != 2) { + } else if (existAccountcalendar != null && mode != 2) { // 如果存在,判断是否允许更新 dockDO.setId(existAccountcalendar.getId()); dockMapper.updateById(dockDO); @@ -160,13 +159,12 @@ public class DockServiceImpl implements DockService { } - - private void validateDockForCreateOrUpdate(Long id, String code,String type, String warehouseCode, - String defaultLocationCode,String available) { + private void validateDockForCreateOrUpdate(Long id, String code, String type, String warehouseCode, + String defaultLocationCode, String available) { // 关闭数据权限,避免因为没有数据权限,查询不到数据,进而导致唯一校验不正确 DataPermissionUtils.executeIgnore(() -> { validateDockExists(id); - validateCodeExists(id,code); + validateCodeExists(id, code); // 校验code唯一 validateTypeExists(type); validateWareHouseCodeExists(warehouseCode); @@ -174,6 +172,7 @@ public class DockServiceImpl implements DockService { validateAvailableExists(available); }); } + @VisibleForTesting private void validateDockExists(Long id) { if (id == null) { @@ -184,8 +183,9 @@ public class DockServiceImpl implements DockService { throw exception(DOCK_NOT_EXISTS); } } + @VisibleForTesting - private void validateCodeExists(Long id,String code) { + private void validateCodeExists(Long id, String code) { if (code.isEmpty()) { throw exception(DOCK_CODE_NOT_EXISTS); } @@ -204,24 +204,28 @@ public class DockServiceImpl implements DockService { throw exception(DOCK_CODE_EXISTS); } } + @VisibleForTesting private void validateTypeExists(String type) { if (type.isEmpty()) { throw exception(DOCK_TYPE_NOT_EXISTS); } } + @VisibleForTesting private void validateWareHouseCodeExists(String warehouseCode) { if (warehouseCode.isEmpty()) { throw exception(DOCK_WARE_HOUSE_CODE_NOT_EXISTS); } } + @VisibleForTesting private void validateDefaultLocationCodeExists(String defaultLocationCode) { if (defaultLocationCode.isEmpty()) { throw exception(DOCK_DEFAULT_LOCATION_CODE_NOT_EXISTS); } } + @VisibleForTesting private void validateAvailableExists(String available) { if (available.isEmpty()) { @@ -232,11 +236,25 @@ public class DockServiceImpl implements DockService { @Override public DockDO DockExist(String code) { QueryWrapper queryWrapper = new QueryWrapper(); - queryWrapper.eq("code",code); + queryWrapper.eq("code", code); + DockDO dockDO = dockMapper.selectOne(queryWrapper); + if (dockDO != null && "TRUE".equals(dockDO.getAvailable())) { + return dockDO; + } else { + throw exception(DOCK_NOT_EXISTS); + } + } + + @Override + public DockDO selectDockByTwoCode(String code, String toWarehouseCode) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("code", code); + queryWrapper.eq("warehouse_code", toWarehouseCode); + queryWrapper.eq("available", "TRUE"); DockDO dockDO = dockMapper.selectOne(queryWrapper); - if(dockDO != null&& "TRUE".equals(dockDO.getAvailable())){ + if (dockDO != null && "TRUE".equals(dockDO.getAvailable())) { return dockDO; - }else { + } else { throw exception(DOCK_NOT_EXISTS); } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainServiceImpl.java index 3b25a5a9..5e1b4821 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainServiceImpl.java @@ -314,10 +314,7 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { // 校验物品基础信息 ItembasicDO itembasicDO = this.validatorItembasic(detailDo.getItemCode()); if (itembasicDO != null) { - if (itembasicDO.getUom() != detailDo.getUom()) { - throw exception(UOM_ERRORR, itembasicDO.getUom(), detailDo.getUom()); - } - if (itembasicDO.getUom() != detailDo.getUom()) { + if (!itembasicDO.getUom().equals( detailDo.getUom())) { throw exception(UOM_ERRORR, itembasicDO.getUom(), detailDo.getUom()); } if ("FALSE".equals(itembasicDO.getEnableBuy())) { @@ -325,7 +322,8 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { } }else { throw exception(SCRAP_REQUEST_ITEMCODE_INVALID); - } this.validatorItemPackagingExist(detailDo.getItemCode()); + } + this.validatorItemPackagingExist(detailDo.getItemCode()); ItempackagingDO itempackagingDO = itempackagingService.selectItemPackagingExist(detailDo.getItemCode()); if (itempackagingDO != null) { detailDo.setStdPackUnit(itempackagingDO.getStdPackUnit()); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRequest/SupplierdeliverRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRequest/SupplierdeliverRequestMainServiceImpl.java index 8f435ff4..e14bcf0d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRequest/SupplierdeliverRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRequest/SupplierdeliverRequestMainServiceImpl.java @@ -25,6 +25,7 @@ import com.win.module.wms.convert.supplierdeliverRecord.SupplierdeliverRecordMai import com.win.module.wms.convert.supplierdeliverRequest.SupplierdeliverRequestDetailConvert; import com.win.module.wms.convert.supplierdeliverRequest.SupplierdeliverRequestMainConvert; import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; +import com.win.module.wms.dal.dataobject.dock.DockDO; import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; import com.win.module.wms.dal.dataobject.itempackaging.ItempackagingDO; import com.win.module.wms.dal.dataobject.location.LocationDO; @@ -48,6 +49,7 @@ import com.win.module.wms.dal.mysql.supplierdeliverRequest.SupplierdeliverReques import com.win.module.wms.dal.mysql.supplierdeliverRequest.SupplierdeliverRequestMainMapper; import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.enums.request.RequestStatusEnum; +import com.win.module.wms.service.dock.DockService; import com.win.module.wms.service.itembasic.ItembasicService; import com.win.module.wms.service.itempackaging.ItempackagingService; import com.win.module.wms.service.location.LocationService; @@ -130,7 +132,10 @@ public class SupplierdeliverRequestMainServiceImpl implements SupplierdeliverReq @Resource private LocationService locationService; @Resource - PurchasereceiptRequestMainService purchasereceiptRequestMainService; + private PurchasereceiptRequestMainService purchasereceiptRequestMainService; + @Resource + private DockService dockService; + @Override @Transactional @@ -723,6 +728,9 @@ public class SupplierdeliverRequestMainServiceImpl implements SupplierdeliverReq } //生成采购收货申请 叶佳兴 PurchasereceiptRequestMainCreateReqVO purchasereceiptRequestMainCreateReqVO = new PurchasereceiptRequestMainCreateReqVO(); + //查询月台 + DockDO dockDO = dockService.selectDockByTwoCode(mainDO.getToDockCode(),mainDO.getToWarehouseCode()); + mainDO.setToWarehouseCode(dockDO.getWarehouseCode()); BeanUtils.copyProperties(mainDO, purchasereceiptRequestMainCreateReqVO); List purchasereceiptRequestDetailCreateReqVOList = new ArrayList<>(); for (SupplierdeliverRequestDetailDO detailDO : detailDOList) { @@ -752,8 +760,8 @@ public class SupplierdeliverRequestMainServiceImpl implements SupplierdeliverReq purchasereceiptRequestDetailCreateReqVO.setArriveDate(detailDO.getArriveDate()); purchasereceiptRequestDetailCreateReqVO.setPackingNumber(packageDO.getNumber()); purchasereceiptRequestDetailCreateReqVO.setInventoryStatus("INSP"); - SupplieritemDO supplieritemDO = supplieritemService.selectSupplierItemExist(mainDO.getSupplierCode(), detailDO.getItemCode()); - purchasereceiptRequestDetailCreateReqVO.setDefaultToLocationCode(supplieritemDO.getDefaultLocationCode()); + //查询月台后赋值 + purchasereceiptRequestDetailCreateReqVO.setDefaultToLocationCode(dockDO.getDefaultLocationCode()); purchasereceiptRequestDetailCreateReqVO.setId(null); purchasereceiptRequestDetailCreateReqVOList.add(purchasereceiptRequestDetailCreateReqVO); }