From 6b79f626e0010bdcc5bf24f3870f6b9cf6df4da6 Mon Sep 17 00:00:00 2001 From: liuchen864 <23082234@qq.com> Date: Mon, 4 Dec 2023 16:40:53 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9B=98=E7=82=B9=E7=94=B3=E8=AF=B7=E7=94=9F?= =?UTF-8?q?=E6=88=90=E7=9B=98=E7=82=B9=E4=BB=BB=E5=8A=A1=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../countJob/vo/CountJobMainCreateReqVO.java | 9 +- .../countJob/CountJobDetailConvert.java | 10 +- .../convert/countJob/CountJobMainConvert.java | 3 + .../countPlan/CountPlanMainServiceImpl.java | 4 +- .../CountRequestMainServiceImpl.java | 93 +++++++++++++++++-- 5 files changed, 106 insertions(+), 13 deletions(-) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countJob/vo/CountJobMainCreateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countJob/vo/CountJobMainCreateReqVO.java index a27d3546..74af8c45 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countJob/vo/CountJobMainCreateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countJob/vo/CountJobMainCreateReqVO.java @@ -1,7 +1,12 @@ package com.win.module.wms.controller.countJob.vo; -import lombok.*; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import javax.validation.Valid; +import java.util.List; @Schema(description = "管理后台 - 盘点任务主创建 Request VO") @Data @@ -9,4 +14,6 @@ import io.swagger.v3.oas.annotations.media.Schema; @ToString(callSuper = true) public class CountJobMainCreateReqVO extends CountJobMainBaseVO { + @Schema(description = "子表数据") + private List<@Valid CountJobDetailCreateReqVO> subList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/countJob/CountJobDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/countJob/CountJobDetailConvert.java index f718c906..e1698e00 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/countJob/CountJobDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/countJob/CountJobDetailConvert.java @@ -1,16 +1,16 @@ package com.win.module.wms.convert.countJob; -import java.util.*; - import com.win.framework.common.pojo.PageResult; - import com.win.module.wms.controller.countJob.vo.CountJobDetailCreateReqVO; import com.win.module.wms.controller.countJob.vo.CountJobDetailExcelVO; import com.win.module.wms.controller.countJob.vo.CountJobDetailRespVO; import com.win.module.wms.controller.countJob.vo.CountJobDetailUpdateReqVO; +import com.win.module.wms.dal.dataobject.countJob.CountJobDetailDO; +import com.win.module.wms.dal.dataobject.countRequest.CountRequestDetailDO; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; -import com.win.module.wms.dal.dataobject.countJob.CountJobDetailDO; + +import java.util.List; /** * 盘点任务子 Convert @@ -34,4 +34,6 @@ public interface CountJobDetailConvert { List convertList02(List list); + CountJobDetailDO convert(CountRequestDetailDO bean); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/countJob/CountJobMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/countJob/CountJobMainConvert.java index 1d3c5ffc..c62ea525 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/countJob/CountJobMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/countJob/CountJobMainConvert.java @@ -7,6 +7,7 @@ import com.win.module.wms.controller.countJob.vo.CountJobMainRespVO; import com.win.module.wms.controller.countJob.vo.CountJobMainUpdateReqVO; import com.win.module.wms.dal.dataobject.countJob.CountJobDetailDO; import com.win.module.wms.dal.dataobject.countJob.CountJobMainDO; +import com.win.module.wms.dal.dataobject.countRequest.CountRequestMainDO; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Mappings; @@ -48,4 +49,6 @@ public interface CountJobMainConvert { }) CountJobMainExcelVO convert(CountJobMainDO mainDO, CountJobDetailDO detailDO); + CountJobMainDO convert(CountRequestMainDO bean); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countPlan/CountPlanMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countPlan/CountPlanMainServiceImpl.java index 80ee8506..76087269 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countPlan/CountPlanMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countPlan/CountPlanMainServiceImpl.java @@ -293,13 +293,15 @@ public class CountPlanMainServiceImpl implements CountPlanMainService { countRequestMainCreateReqVO.setRequestTime(LocalDateTime.now()); countRequestMainCreateReqVO.setDueTime(LocalDateTime.now()); List subList = new ArrayList<>(); - for(BalanceDO balanceDO : balanceDOList) { + for (int i = 0; i< balanceDOList.size(); i++) { + BalanceDO balanceDO = balanceDOList.get(i); CountRequestDetailCreateReqVO countRequestDetailCreateReqVO = new CountRequestDetailCreateReqVO(); BeanUtils.copyProperties(balanceDO, countRequestDetailCreateReqVO); ItembasicDO itembasicDO = itembasicService.selectItembasic(balanceDO.getItemCode()); countRequestDetailCreateReqVO.setItemName(itembasicDO.getName()); countRequestDetailCreateReqVO.setItemDesc1(itembasicDO.getDesc1()); countRequestDetailCreateReqVO.setItemDesc2(itembasicDO.getDesc2()); + countRequestDetailCreateReqVO.setCountDetailNumber(String.valueOf(i + 1)); subList.add(countRequestDetailCreateReqVO); } countRequestMainCreateReqVO.setSubList(subList); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countRequest/CountRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countRequest/CountRequestMainServiceImpl.java index ba448651..020a2d92 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countRequest/CountRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countRequest/CountRequestMainServiceImpl.java @@ -2,6 +2,7 @@ package com.win.module.wms.service.countRequest; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.exceptions.UtilException; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; @@ -9,27 +10,38 @@ import com.win.module.infra.api.trends.TrendsApi; import com.win.module.infra.enums.TrendsTypeEnum; import com.win.module.system.api.serialnumber.SerialNumberApi; import com.win.module.system.enums.serialNumber.RuleCodeEnum; +import com.win.module.wms.controller.countJob.vo.CountJobMainCreateReqVO; import com.win.module.wms.controller.countRecord.vo.CountRecordDetailCreateReqVO; import com.win.module.wms.controller.countRecord.vo.CountRecordMainCreateReqVO; import com.win.module.wms.controller.countRequest.vo.*; +import com.win.module.wms.convert.countJob.CountJobDetailConvert; +import com.win.module.wms.convert.countJob.CountJobMainConvert; import com.win.module.wms.convert.countRecord.CountRecordDetailConvert; import com.win.module.wms.convert.countRecord.CountRecordMainConvert; import com.win.module.wms.convert.countRequest.CountRequestDetailConvert; import com.win.module.wms.convert.countRequest.CountRequestMainConvert; import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; +import com.win.module.wms.dal.dataobject.countJob.CountJobDetailDO; +import com.win.module.wms.dal.dataobject.countJob.CountJobMainDO; +import com.win.module.wms.dal.dataobject.countPlan.CountPlanDetailDO; +import com.win.module.wms.dal.dataobject.countPlan.CountPlanMainDO; import com.win.module.wms.dal.dataobject.countRequest.CountRequestDetailDO; import com.win.module.wms.dal.dataobject.countRequest.CountRequestMainDO; import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; +import com.win.module.wms.dal.dataobject.jobsetting.JobsettingDO; import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; +import com.win.module.wms.dal.mysql.countJob.CountJobDetailMapper; import com.win.module.wms.dal.mysql.countJob.CountJobMainMapper; +import com.win.module.wms.dal.mysql.countPlan.CountPlanDetailMapper; +import com.win.module.wms.dal.mysql.countPlan.CountPlanMainMapper; import com.win.module.wms.dal.mysql.countRecord.CountRecordDetailMapper; import com.win.module.wms.dal.mysql.countRecord.CountRecordMainMapper; import com.win.module.wms.dal.mysql.countRequest.CountRequestDetailMapper; import com.win.module.wms.dal.mysql.countRequest.CountRequestMainMapper; import com.win.module.wms.enums.request.RequestStatusEnum; import com.win.module.wms.enums.request.RequestStatusState; -import com.win.module.wms.service.countPlan.CountPlanMainService; import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.service.jobsetting.JobsettingService; import com.win.module.wms.service.location.LocationService; import com.win.module.wms.service.requestsetting.RequestsettingService; import com.win.module.wms.service.shift.ShiftService; @@ -42,9 +54,7 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; +import java.util.*; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.win.module.wms.enums.ErrorCodeConstants.*; @@ -62,6 +72,8 @@ public class CountRequestMainServiceImpl implements CountRequestMainService { @Resource private CountRequestDetailMapper countRequestDetailMapper; @Resource + private CountPlanDetailMapper countPlanDetailMapper; + @Resource private ShiftService shiftService; @Resource private ItembasicService itembasicService; @@ -72,7 +84,7 @@ public class CountRequestMainServiceImpl implements CountRequestMainService { @Resource private LocationService locationService; @Resource - private CountPlanMainService countPlanMainService; + private CountPlanMainMapper countPlanMainMapper; @Resource private RequestsettingService requestsettingService; @Resource @@ -85,13 +97,17 @@ public class CountRequestMainServiceImpl implements CountRequestMainService { private CountRecordMainMapper countRecordMainMapper; @Resource private CountRecordDetailMapper countRecordDetailMapper; + @Resource + private JobsettingService jobsettingService; + @Resource + private CountJobDetailMapper countJobDetailMapper; @Override @Transactional public Long createCountRequestMain(CountRequestMainCreateReqVO createReqVO) { // 插入 CountRequestMainDO mainDO = CountRequestMainConvert.INSTANCE.convert(createReqVO); - countPlanMainService.selectCountPlanExist(mainDO.getPlanNumber()); + this.selectCountPlanExist(mainDO.getPlanNumber()); List subDOList = CountRequestDetailConvert.INSTANCE.convertList03(createReqVO.getSubList()); for (CountRequestDetailDO detailDO : subDOList) { this.validateCountRequestDetailCreate(detailDO); @@ -345,6 +361,47 @@ public class CountRequestMainServiceImpl implements CountRequestMainService { } return; } + //按库位拆分任务 + Map> listMap = new HashMap<>(); + for(CountRequestDetailDO detailDO : detailDOList) { + List list = listMap.get(detailDO.getLocationCode()); + if(list == null) { + list = new ArrayList<>(); + } + //向list增加数据 + list.add(detailDO); + listMap.put(detailDO.getLocationCode(), list); + } + JobsettingDO jobsettingDO = jobsettingService.selectJobsettingExist("PurchaseReceiptJob"); + //组装任务数据 + for(String mapKey : listMap.keySet()) { + List countRequestDetailDOList = listMap.get(mapKey); + CountJobMainDO countJobMainDO = CountJobMainConvert.INSTANCE.convert(mainDO); + countJobMainDO.setRequestNumber(mainDO.getNumber()); + countJobMainDO.setAutoComplete(jobsettingDO.getAutoComplete()); + countJobMainDO.setAllowModifyLocation(jobsettingDO.getAllowModifyLocation()); + countJobMainDO.setAllowModifyQty(jobsettingDO.getAllowModifyQty()); + countJobMainDO.setAllowBiggerQty(jobsettingDO.getAllowBiggerQty()); + countJobMainDO.setAllowSmallerQty(jobsettingDO.getAllowSmallerQty()); + countJobMainDO.setAllowContinuousScanning(jobsettingDO.getAllowContinuousScanning()); + countJobMainDO.setAllowPartialComplete(jobsettingDO.getAllowPartialComplete()); + countJobMainDO.setAllowModifyPackingNumber(jobsettingDO.getAllowModifyPackingNumber()); + countJobMainDO.setAllowModifyBatch(jobsettingDO.getAllowModifyBach()); + //增加业务类型 + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CountJob"); + countJobMainDO.setBusinessType(businesstypeDO.getCode()); + countJobMainDO.setInInventoryStatuses(businesstypeDO.getInInventoryStatuses()); + countJobMainDO.setOutInventoryStatuses(businesstypeDO.getOutInventoryStatuses()); + countJobMainMapper.insert(countJobMainDO); + List countJobDetailDOList = new ArrayList<>(); + for (int i = 0; i< countRequestDetailDOList.size(); i++) { + CountRequestDetailDO countRequestDetailDO = countRequestDetailDOList.get(i); + CountJobDetailDO countJobDetailDO = CountJobDetailConvert.INSTANCE.convert(countRequestDetailDO); + countJobDetailDO.setCountDetailNumber(String.valueOf(i + 1)); + countJobDetailDOList.add(countJobDetailDO); + } + countJobDetailMapper.insertBatch(countJobDetailDOList); + } } /** @@ -355,7 +412,7 @@ public class CountRequestMainServiceImpl implements CountRequestMainService { private String validateCountRequestMainImport(CountRequestMainDO mainDO) { StringBuilder message = new StringBuilder(); try { - countPlanMainService.selectCountPlanExist(mainDO.getPlanNumber()); + this.selectCountPlanExist(mainDO.getPlanNumber()); } catch (ServiceException e) { message.append(e.getMessage()).append(","); } @@ -424,4 +481,26 @@ public class CountRequestMainServiceImpl implements CountRequestMainService { jobUtils.ifOutInventoryStatuses(detailDO.getInventoryStatus(), businesstypeDO); } + private CountPlanDetailDO selectCountPlanExist(String pnumber){ + QueryWrapper queryWrapperMain = new QueryWrapper<>(); + queryWrapperMain.eq("number",pnumber); + queryWrapperMain.eq("available","TRUE"); + CountPlanMainDO countPlanMainDO = countPlanMainMapper.selectOne(queryWrapperMain); + if(countPlanMainDO == null) { + throw new UtilException("盘点计划" + pnumber + "无效"); + } + if("ClOSE".equals(countPlanMainDO.getStatus())) { + throw new UtilException("盘点计划" + pnumber + "已关闭"); + } + QueryWrapper queryWrapperDetail = new QueryWrapper<>(); + queryWrapperDetail.eq("number", pnumber); + queryWrapperDetail.eq("available","TRUE"); + CountPlanDetailDO countPlanDetailDO = countPlanDetailMapper.selectOne(queryWrapperDetail); + if(countPlanDetailDO != null) { + return countPlanDetailDO; + } else { + throw new UtilException("盘点计划" + pnumber + "无效"); + } + } + }