From 79a4ccf059bb8efd1eadee883c94fe0914ede6d7 Mon Sep 17 00:00:00 2001 From: yejiaxing <591141169@qq.com> Date: Tue, 12 Dec 2023 09:01:52 +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 --- .../purchase/vo/PurchaseMainBaseVO.java | 1 - .../purchase/vo/PurchaseMainImportVO.java | 2 + .../PurchasePlanMainController.java | 12 +++-- .../vo/PurchasePlanMainBaseVO.java | 2 + .../vo/PurchasePlanMainImportVO.java | 4 ++ .../DemandforecastingMainServiceImpl.java | 1 - .../purchase/PurchaseMainServiceImpl.java | 18 +++++-- .../PurchasePlanMainServiceImpl.java | 53 +++++++++++++++++-- ...SupplierdeliverRequestMainServiceImpl.java | 2 - 9 files changed, 79 insertions(+), 16 deletions(-) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchase/vo/PurchaseMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchase/vo/PurchaseMainBaseVO.java index e43e2a5b..5371c1a6 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchase/vo/PurchaseMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchase/vo/PurchaseMainBaseVO.java @@ -21,7 +21,6 @@ public class PurchaseMainBaseVO { private Long id; @Schema(description = "供应商代码") - @OnlyOne private String supplierCode; @Schema(description = "单据号", requiredMode = Schema.RequiredMode.REQUIRED) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchase/vo/PurchaseMainImportVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchase/vo/PurchaseMainImportVO.java index 2bd3fd82..c483e805 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchase/vo/PurchaseMainImportVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchase/vo/PurchaseMainImportVO.java @@ -3,6 +3,7 @@ package com.win.module.wms.controller.purchase.vo; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.win.framework.excel.core.annotations.DictFormat; +import com.win.framework.excel.core.annotations.OnlyOne; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -27,6 +28,7 @@ public class PurchaseMainImportVO { @ExcelProperty("单据号") private String number; @ExcelProperty("供应商代码") + @OnlyOne private String supplierCode; //日程/离散 @ExcelProperty("订单类型") diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasePlan/PurchasePlanMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasePlan/PurchasePlanMainController.java index b4ebb6a6..5b32a7eb 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasePlan/PurchasePlanMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasePlan/PurchasePlanMainController.java @@ -3,14 +3,18 @@ package com.win.module.wms.controller.purchasePlan; import com.win.framework.common.pojo.CommonResult; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; +import com.win.framework.dict.core.util.DictFrameworkUtils; import com.win.framework.excel.core.util.ConvertUtil; import com.win.framework.excel.core.util.ExcelUtils; 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.purchase.vo.PurchaseMainCreateReqVO; +import com.win.module.wms.controller.purchase.vo.PurchaseMainImportVO; import com.win.module.wms.controller.purchasePlan.vo.*; import com.win.module.wms.convert.purchasePlan.PurchasePlanMainConvert; import com.win.module.wms.dal.dataobject.purchasePlan.PurchasePlanMainDO; +import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.service.purchasePlan.PurchasePlanMainService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -129,10 +133,8 @@ public class PurchasePlanMainController { // 手动创建导出 demo List list = new ArrayList<>(); Map mapDropDown = new HashMap<>(); -// String[] purchaseReturnReason = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.PURCHASE_RETURN_REASON); -// mapDropDown.put(16, purchaseReturnReason); -// String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); -// mapDropDown.put(25, uom); + String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); + mapDropDown.put(5, uom); // 输出 ExcelUtils.write(response, "要货计划信息导入模板.xlsx", "要货计划信息列表", PurchasePlanMainImportVO.class, list, mapDropDown); } @@ -152,6 +154,8 @@ public class PurchasePlanMainController { List list = ExcelUtils.read(file, PurchasePlanMainImportVO.class); ConvertUtil convertUtil = new ConvertUtil<>(PurchasePlanMainCreateReqVO.class); List createReqVOList = convertUtil.invoke(list).getDataList(); + + List errorList = purchasePlanMainService.importPurchasePlanMainList(createReqVOList, mode, updatePart); Map returnMap = new HashMap<>(); returnMap.put("errorCount", errorList.size()); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasePlan/vo/PurchasePlanMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasePlan/vo/PurchasePlanMainBaseVO.java index e4461390..e8ee6b75 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasePlan/vo/PurchasePlanMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasePlan/vo/PurchasePlanMainBaseVO.java @@ -1,5 +1,6 @@ package com.win.module.wms.controller.purchasePlan.vo; +import com.win.framework.excel.core.annotations.OnlyOne; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; @@ -21,6 +22,7 @@ public class PurchasePlanMainBaseVO { private Long id; @Schema(description = "供应商代码") + @OnlyOne private String supplierCode; @Schema(description = "时间窗口") diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasePlan/vo/PurchasePlanMainImportVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasePlan/vo/PurchasePlanMainImportVO.java index 34273419..933caeab 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasePlan/vo/PurchasePlanMainImportVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasePlan/vo/PurchasePlanMainImportVO.java @@ -1,6 +1,8 @@ package com.win.module.wms.controller.purchasePlan.vo; import com.alibaba.excel.annotation.ExcelProperty; +import com.win.framework.excel.core.annotations.DictFormat; +import com.win.framework.excel.core.annotations.OnlyOne; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -22,6 +24,7 @@ public class PurchasePlanMainImportVO { //主表数据 @ExcelProperty("供应商代码") + @OnlyOne private String supplierCode; //子表数据 @@ -34,5 +37,6 @@ public class PurchasePlanMainImportVO { @ExcelProperty("计划数量") private String planQty; @ExcelProperty("计量单位") + @DictFormat("uom") private String uom; } 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 e9c0ff09..a9a86ebb 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 @@ -93,7 +93,6 @@ public class DemandforecastingMainServiceImpl implements DemandforecastingMainSe validateDemandforecastingMainExists(updateReqVO.getId()); DemandforecastingMainDO demandforecastingMainDO = validatorToUpdate(updateReqVO); if(RequestStatusEnum.HANDLING.getCode().equals(demandforecastingMainDO.getStatus())) { - } trendsApi.createTrends(demandforecastingMainDO.getId(), "Demandforecasting", "修改了要货预测", TrendsTypeEnum.CREATE); } 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 401e802b..2ddb51c1 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 @@ -116,6 +116,8 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { @Resource private DictDataApi dictDataApi; + + @Override public Long createPurchaseMain(PurchaseMainCreateReqVO createReqVO) { // 插入主表 @@ -246,6 +248,10 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseOrder"); mainDo.setBusinessType(businesstypeDO.getCode()); mainDo.setAvailable("TRUE"); + DictDataRespDTO type = dictDataApi.selectDictTypeAndLabel(DictTypeConstants.PURCHASE_ORDER_TYPE,mainDo.getType()); + mainDo.setType(type.getValue()); + DictDataRespDTO isConsignment = dictDataApi.selectDictTypeAndLabel(DictTypeConstants.TRUE_FALSE,mainDo.getIsConsignment()); + mainDo.setIsConsignment(isConsignment.getValue()); purchaseMainMapper.insert(mainDo); for (PurchaseDetailDO detailDO : subDOList) { detailDO.setMasterId(mainDo.getId()); @@ -258,6 +264,8 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { detailDO.setErpLocationCode(null); detailDO.setAvailable("TRUE"); detailDO.setStatus(OrderStatusEnum.READY.getCode()); + DictDataRespDTO uom = dictDataApi.selectDictTypeAndLabel(DictTypeConstants.UOM,detailDO.getUom()); + detailDO.setUom(uom.getValue()); } purchaseDetailMapper.insertBatch(subDOList); } @@ -333,7 +341,7 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { } //新增校验 - private PurchaseMainDO validatorToCreate(PurchaseMainCreateReqVO createReqVO) { + private PurchaseMainDO validatorToCreate(PurchaseMainCreateReqVO createReqVO) { PurchaseMainDO purchaseMainDO = validatorMainMethod(createReqVO); //子表校验 List subList = createReqVO.getSubList(); @@ -415,9 +423,10 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { // 校验物品基础信息 try { ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode()); -// if (itembasicDO.getUom() != dictDataRespDTO.getValue()) { -// messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + detailDo.getUom() + ","; -// } + DictDataRespDTO dictDataRespDTO = dictDataApi.selectDictTypeAndLabel(DictTypeConstants.UOM,detailDo.getUom()); + if (!itembasicDO.getUom().equals(dictDataRespDTO.getValue())) { + messageDetail += "计量单位" + detailDo.getUom() + "错误,应该是" + itembasicDO.getUom() + ","; + } detailDo.setProjectCode(itembasicDO.getCode()); } catch (ServiceException ex) { messageDetail += ex.getMessage() + ","; @@ -542,6 +551,7 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { purchasePlanDetailDO.setPoLine(purchaseDetailDO.getLineNumber()); purchasePlanDetailDO.setItemCode(purchaseDetailDO.getItemCode()); purchasePlanDetailDO.setUom(purchaseDetailDO.getUom()); + purchasePlanDetailDO.setShippedQty(BigDecimal.ZERO); purchasePlanDetailDO.setAvailable("TRUE"); purchasePlanDetailDO.setTenantId(1L); purchasePlanDetailMapper.insert(purchasePlanDetailDO); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanMainServiceImpl.java index 4068f35f..6c7de1f2 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanMainServiceImpl.java @@ -9,6 +9,8 @@ import com.win.framework.common.pojo.PageResult; import com.win.framework.dict.core.util.DictFrameworkUtils; import com.win.module.infra.api.trends.TrendsApi; import com.win.module.infra.enums.TrendsTypeEnum; +import com.win.module.system.api.dict.DictDataApi; +import com.win.module.system.api.dict.dto.DictDataRespDTO; import com.win.module.system.api.serialnumber.SerialNumberApi; import com.win.module.system.enums.serialNumber.RuleCodeEnum; import com.win.module.wms.controller.purchasePlan.vo.*; @@ -16,12 +18,16 @@ import com.win.module.wms.convert.purchasePlan.PurchasePlanDetailConvert; import com.win.module.wms.convert.purchasePlan.PurchasePlanMainConvert; 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.purchase.PurchaseDetailDO; +import com.win.module.wms.dal.dataobject.purchase.PurchaseMainDO; import com.win.module.wms.dal.dataobject.purchasePlan.PurchasePlanDetailDO; import com.win.module.wms.dal.dataobject.purchasePlan.PurchasePlanMainDO; import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; import com.win.module.wms.dal.dataobject.shift.ShiftDO; import com.win.module.wms.dal.dataobject.supplier.SupplierDO; import com.win.module.wms.dal.dataobject.supplieritem.SupplieritemDO; +import com.win.module.wms.dal.mysql.purchase.PurchaseDetailMapper; +import com.win.module.wms.dal.mysql.purchase.PurchaseMainMapper; import com.win.module.wms.dal.mysql.purchasePlan.PurchasePlanDetailMapper; import com.win.module.wms.dal.mysql.purchasePlan.PurchasePlanMainMapper; import com.win.module.wms.enums.DictTypeConstants; @@ -29,6 +35,7 @@ import com.win.module.wms.enums.plan.PlanStatusEnum; import com.win.module.wms.enums.plan.PurchasePlanStatusEnum; import com.win.module.wms.enums.request.RequestStatusEnum; import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.service.purchase.PurchaseMainService; import com.win.module.wms.service.requestsetting.RequestsettingService; import com.win.module.wms.service.shift.ShiftService; import com.win.module.wms.service.supplier.SupplierService; @@ -77,6 +84,16 @@ public class PurchasePlanMainServiceImpl implements PurchasePlanMainService { private SupplierService supplierService; @Resource private RequestsettingService requestsettingService; + @Resource + private DictDataApi dictDataApi; + @Resource + private PurchaseMainService purchaseMainService; + + @Resource + private PurchaseMainMapper purchaseMainMapper; + @Resource + private PurchaseDetailMapper purchaseDetailMapper; + @Override public Long createPurchasePlanMain(PurchasePlanMainCreateReqVO createReqVO) { @@ -223,7 +240,7 @@ public class PurchasePlanMainServiceImpl implements PurchasePlanMainService { boolean flag = true; for (PurchasePlanDetailDO detailDO : subDOList) { String messageDetail = validatorPurchasePlanDetailImport(detailDO, mainDo); - if (!messageMain.isEmpty() || messageDetail.isEmpty()) { + if (!messageMain.isEmpty() || !messageDetail.isEmpty()) { PurchasePlanMainImportErrorVO importErrorVO = PurchasePlanDetailConvert.INSTANCE.convert(createReqVO, detailDO); importErrorVO.setImportStatus("失败"); messageMain = messageMain + messageDetail; @@ -235,10 +252,10 @@ public class PurchasePlanMainServiceImpl implements PurchasePlanMainService { //写入数据 if (flag) { mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); -// mainDo.setOrderDate(LocalDateTime.now()); -// mainDo.setTaxRate(BigDecimal.ZERO); - BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseOrder"); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchasePlan"); mainDo.setBusinessType(businesstypeDO.getCode()); + String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_PLAN.getCode()); + mainDo.setNumber(number); mainDo.setAvailable("TRUE"); purchasePlanMainMapper.insert(mainDo); for (PurchasePlanDetailDO detailDO : subDOList) { @@ -246,6 +263,21 @@ public class PurchasePlanMainServiceImpl implements PurchasePlanMainService { detailDO.setNumber(mainDo.getNumber()); detailDO.setShippedQty(BigDecimal.ZERO); detailDO.setAvailable("TRUE"); + DictDataRespDTO uom = dictDataApi.selectDictTypeAndLabel(DictTypeConstants.UOM,detailDO.getUom()); + detailDO.setUom(uom.getValue()); + //选择已发布状态下订单号、订单行、零件号 判断订单类型 + QueryWrapper purchaseDetailDOQueryWrapper = new QueryWrapper(); + purchaseDetailDOQueryWrapper.eq("number", detailDO.getPoNumber()); + purchaseDetailDOQueryWrapper.eq("item_code", detailDO.getItemCode()); + purchaseDetailDOQueryWrapper.eq("line_number ", detailDO.getPoLine()); + PurchaseDetailDO purchaseDetailDO = purchaseDetailMapper.selectOne(purchaseDetailDOQueryWrapper); + if(purchaseDetailDO!=null){ + PurchaseMainDO purchaseMainDO = purchaseMainService.getPurchaseMain(purchaseDetailDO.getMasterId()); + //如果是离散单 + if ("DISCRETE".equals(purchaseMainDO.getType())) { + detailDO.setPlanQty(purchaseDetailDO.getOrderQty().subtract(purchaseDetailDO.getPlannedQty())); + } + } } purchasePlanDetailMapper.insertBatch(subDOList); } @@ -300,6 +332,19 @@ public class PurchasePlanMainServiceImpl implements PurchasePlanMainService { purchasePlanMainMapper.insert(purchasePlanMainDO); for (PurchasePlanDetailDO purchasePlanDetailDO : subDOList) { validatorDetailMethod(purchasePlanDetailDO, purchasePlanMainDO); + //选择已发布状态下订单号、订单行、零件号 判断订单类型 + QueryWrapper purchaseDetailDOQueryWrapper = new QueryWrapper(); + purchaseDetailDOQueryWrapper.eq("number", purchasePlanDetailDO.getPoNumber()); + purchaseDetailDOQueryWrapper.eq("item_code", purchasePlanDetailDO.getItemCode()); + purchaseDetailDOQueryWrapper.eq("line_number ", purchasePlanDetailDO.getPoLine()); + PurchaseDetailDO purchaseDetailDO = purchaseDetailMapper.selectOne(purchaseDetailDOQueryWrapper); + if(purchaseDetailDO!=null){ + PurchaseMainDO purchaseMainDO = purchaseMainService.getPurchaseMain(purchaseDetailDO.getMasterId()); + //如果是离散单 + if ("DISCRETE".equals(purchaseMainDO.getType())) { + purchasePlanDetailDO.setPlanQty(purchaseDetailDO.getOrderQty().subtract(purchaseDetailDO.getPlannedQty())); + } + } purchasePlanDetailDO.setMasterId(purchasePlanMainDO.getId()); purchasePlanDetailDO.setNumber(purchasePlanMainDO.getNumber()); purchasePlanDetailDO.setShippedQty(BigDecimal.ZERO); 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 bd40a57f..41b124e0 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 @@ -142,8 +142,6 @@ public class SupplierdeliverRequestMainServiceImpl implements SupplierdeliverReq } trendsApi.createTrends(supplierdeliverRequestMainDO.getId(), "PurchaseOrder", "增加了采购订单", TrendsTypeEnum.CREATE); return supplierdeliverRequestMainDO.getId(); - - } @Override