Browse Source

补料申请创建任务 根据tolocation 拆分任务

master
陈薪名 2 years ago
parent
commit
67b4038655
  1. 210
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/repleinshRequest/RepleinshRequestMainServiceImpl.java

210
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/repleinshRequest/RepleinshRequestMainServiceImpl.java

@ -17,6 +17,7 @@ import com.win.module.wms.convert.repleinshRequest.RepleinshRequestDetailConvert
import com.win.module.wms.convert.repleinshRequest.RepleinshRequestMainConvert; import com.win.module.wms.convert.repleinshRequest.RepleinshRequestMainConvert;
import com.win.module.wms.dal.dataobject.balance.BalanceDO; 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.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestDetailDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; 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.jobsetting.JobsettingDO;
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO; import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO;
@ -53,9 +54,7 @@ import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.validation.Validator; import javax.validation.Validator;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.*;
import java.util.Collection;
import java.util.List;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.module.wms.enums.ErrorCodeConstants.*; import static com.win.module.wms.enums.ErrorCodeConstants.*;
@ -500,105 +499,118 @@ public class RepleinshRequestMainServiceImpl implements RepleinshRequestMainServ
if("TRUE".equals(mainDO.getDirectCreateRecord())) { if("TRUE".equals(mainDO.getDirectCreateRecord())) {
// TODO: 发料申请 跳过任务直接生成记录 未做!! // TODO: 发料申请 跳过任务直接生成记录 未做!!
} }
// 任务主表信息 // 根据 子表 toLocationCode 拆分任务
RepleinshJobMainDO repleinshJobMainDO = new RepleinshJobMainDO(); Map<String, List<RepleinshRequestDetailDO>> listMap = new HashMap<>();
repleinshJobMainDO.setRequestNumber(mainDO.getNumber()); for(RepleinshRequestDetailDO detailItem : detailDO) {
repleinshJobMainDO.setFromWarehouseCode(mainDO.getFomWarehouseCode()); List<RepleinshRequestDetailDO> list = listMap.get(detailItem.getToLocationCode());
repleinshJobMainDO.setToWarehouseCode(mainDO.getToWarehouseCode()); if(list == null) {
repleinshJobMainDO.setRequestTime(mainDO.getRequestTime()); list = new ArrayList<>();
repleinshJobMainDO.setRequestDueTime(mainDO.getDueTime()); }
repleinshJobMainDO.setStatus(JobStatusEnum.PENDING.getCode()); //向list增加数据
repleinshJobMainDO.setDepartmentCode(mainDO.getDepartmentCode()); list.add(detailItem);
repleinshJobMainDO.setFromLocationTypes(mainDO.getFromLocationTypes()); listMap.put(detailItem.getToLocationCode(), list);
repleinshJobMainDO.setToLocationTypes(mainDO.getToLocationTypes()); }
String number = serialNumberApi.generateCode(RuleCodeEnum.REPLEINMENT_JOB.getCode()); for(String mapKey : listMap.keySet()) {
repleinshJobMainDO.setNumber(number); // 任务主表信息
RepleinshJobMainDO repleinshJobMainDO = new RepleinshJobMainDO();
repleinshJobMainDO.setRequestNumber(mainDO.getNumber());
repleinshJobMainDO.setFromWarehouseCode(mainDO.getFomWarehouseCode());
repleinshJobMainDO.setToWarehouseCode(mainDO.getToWarehouseCode());
repleinshJobMainDO.setRequestTime(mainDO.getRequestTime());
repleinshJobMainDO.setRequestDueTime(mainDO.getDueTime());
repleinshJobMainDO.setStatus(JobStatusEnum.PENDING.getCode());
repleinshJobMainDO.setDepartmentCode(mainDO.getDepartmentCode());
repleinshJobMainDO.setFromLocationTypes(mainDO.getFromLocationTypes());
repleinshJobMainDO.setToLocationTypes(mainDO.getToLocationTypes());
String number = serialNumberApi.generateCode(RuleCodeEnum.REPLEINMENT_JOB.getCode());
repleinshJobMainDO.setNumber(number);
// repleinshJobMainDO.setBusinessType(mainDO.getBusinessType()); // repleinshJobMainDO.setBusinessType(mainDO.getBusinessType());
repleinshJobMainDO.setCreateTime(LocalDateTime.now()); repleinshJobMainDO.setCreateTime(LocalDateTime.now());
repleinshJobMainDO.setFromAreaCodes(mainDO.getFromAreaCodes()); repleinshJobMainDO.setFromAreaCodes(mainDO.getFromAreaCodes());
repleinshJobMainDO.setToAreaCodes(mainDO.getToAreaCodes()); repleinshJobMainDO.setToAreaCodes(mainDO.getToAreaCodes());
repleinshJobMainDO.setId(null); repleinshJobMainDO.setId(null);
repleinshJobMainDO.setCreateTime(null); repleinshJobMainDO.setCreateTime(null);
repleinshJobMainDO.setCreator(null); repleinshJobMainDO.setCreator(null);
repleinshJobMainDO.setUpdateTime(null); repleinshJobMainDO.setUpdateTime(null);
repleinshJobMainDO.setUpdater(null); repleinshJobMainDO.setUpdater(null);
// 获取任务单据设置 // 获取任务单据设置
JobsettingDO jobsettingDO = jobsettingService.selectJobsettingExist("RepleinmentJob"); JobsettingDO jobsettingDO = jobsettingService.selectJobsettingExist("RepleinmentJob");
repleinshJobMainDO.setAutoComplete(jobsettingDO.getAutoComplete()); repleinshJobMainDO.setAutoComplete(jobsettingDO.getAutoComplete());
repleinshJobMainDO.setAllowModifyLocation(jobsettingDO.getAllowModifyLocation()); repleinshJobMainDO.setAllowModifyLocation(jobsettingDO.getAllowModifyLocation());
repleinshJobMainDO.setAllowModifyQty(jobsettingDO.getAllowModifyQty()); repleinshJobMainDO.setAllowModifyQty(jobsettingDO.getAllowModifyQty());
repleinshJobMainDO.setAllowBiggerQty(jobsettingDO.getAllowBiggerQty()); repleinshJobMainDO.setAllowBiggerQty(jobsettingDO.getAllowBiggerQty());
repleinshJobMainDO.setAllowSmallerQty(jobsettingDO.getAllowSmallerQty()); repleinshJobMainDO.setAllowSmallerQty(jobsettingDO.getAllowSmallerQty());
repleinshJobMainDO.setAllowModifyInventoryStatus(jobsettingDO.getAllowModifyInventoryStatus()); repleinshJobMainDO.setAllowModifyInventoryStatus(jobsettingDO.getAllowModifyInventoryStatus());
repleinshJobMainDO.setAllowContinuousScanning(jobsettingDO.getAllowContinuousScanning()); repleinshJobMainDO.setAllowContinuousScanning(jobsettingDO.getAllowContinuousScanning());
repleinshJobMainDO.setAllowPartialComplete(jobsettingDO.getAllowPartialComplete()); repleinshJobMainDO.setAllowPartialComplete(jobsettingDO.getAllowPartialComplete());
repleinshJobMainDO.setAllowModifyPackingNumber(jobsettingDO.getAllowModifyPackingNumber()); repleinshJobMainDO.setAllowModifyPackingNumber(jobsettingDO.getAllowModifyPackingNumber());
repleinshJobMainDO.setAllowModifyBatch(jobsettingDO.getAllowModifyBach()); repleinshJobMainDO.setAllowModifyBatch(jobsettingDO.getAllowModifyBach());
//增加业务类型 //增加业务类型
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("RepleinmentJob"); BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("RepleinmentJob");
repleinshJobMainDO.setBusinessType(businesstypeDO.getCode()); repleinshJobMainDO.setBusinessType(businesstypeDO.getCode());
repleinshJobMainDO.setOutInventoryStatuses(businesstypeDO.getOutInventoryStatuses()); repleinshJobMainDO.setOutInventoryStatuses(businesstypeDO.getOutInventoryStatuses());
repleinshJobMainDO.setInInventoryStatuses(businesstypeDO.getInInventoryStatuses()); repleinshJobMainDO.setInInventoryStatuses(businesstypeDO.getInInventoryStatuses());
repleinshJobMainMapper.insert(repleinshJobMainDO); repleinshJobMainMapper.insert(repleinshJobMainDO);
List<RepleinshJobDetailDO> repleinshJobDetailDOList = new ArrayList<>(); List<RepleinshJobDetailDO> repleinshJobDetailDOList = new ArrayList<>();
List<ExpectinCreateReqVO> expectinCreateReqVOList = new ArrayList<>(); List<ExpectinCreateReqVO> expectinCreateReqVOList = new ArrayList<>();
List<ExpectoutCreateReqVO> expectoutCreateReqVOList = new ArrayList<>(); List<ExpectoutCreateReqVO> expectoutCreateReqVOList = new ArrayList<>();
// 根据发料申请子表数据进行分析 // 根据发料申请子表数据进行分析
detailDO.forEach(item -> { listMap.get(mapKey).forEach(item -> {
// 根据批次策略/下架策略 返回 库存余额DO // 根据批次策略/下架策略 返回 库存余额DO
// TODO: 任务 会多生成数据 查下原因 List<BalanceDO> balanceDOListJob = jobUtils.getBalanceByBatchOffShelf(item.getItemCode(),item.getInventoryStatus(),item.getProjectCode(),item.getQty(),mainDO.getFromLocationTypes());
List<BalanceDO> balanceDOListJob = jobUtils.getBalanceByBatchOffShelf(item.getItemCode(),item.getInventoryStatus(),item.getProjectCode(),item.getQty(),mainDO.getFromLocationTypes()); // 根据 查询出所需数据 解析成 任务子表数据
// 根据 查询出所需数据 解析成 任务子表数据 balanceDOListJob.forEach(balanceDOItem -> {
balanceDOListJob.forEach(balanceDOItem -> { RepleinshJobDetailDO repleinshJobDetailDO = new RepleinshJobDetailDO();
RepleinshJobDetailDO repleinshJobDetailDO = new RepleinshJobDetailDO(); repleinshJobDetailDO.setId(null);
repleinshJobDetailDO.setId(null); repleinshJobDetailDO.setCreateTime(null);
repleinshJobDetailDO.setCreateTime(null); repleinshJobDetailDO.setCreator(null);
repleinshJobDetailDO.setCreator(null); repleinshJobDetailDO.setUpdateTime(null);
repleinshJobDetailDO.setUpdateTime(null); repleinshJobDetailDO.setUpdater(null);
repleinshJobDetailDO.setUpdater(null); repleinshJobDetailDO.setPackingNumber(balanceDOItem.getPackingNumber());
repleinshJobDetailDO.setPackingNumber(balanceDOItem.getPackingNumber()); repleinshJobDetailDO.setContainerNumber(balanceDOItem.getContainerNumber());
repleinshJobDetailDO.setContainerNumber(balanceDOItem.getContainerNumber()); repleinshJobDetailDO.setBatch(balanceDOItem.getBatch());
repleinshJobDetailDO.setBatch(balanceDOItem.getBatch()); repleinshJobDetailDO.setFromLocationCode(balanceDOItem.getLocationCode());
repleinshJobDetailDO.setFromLocationCode(balanceDOItem.getLocationCode()); repleinshJobDetailDO.setToLocationCode(item.getToLocationCode());
repleinshJobDetailDO.setToLocationCode(item.getToLocationCode()); repleinshJobDetailDO.setItemCode(item.getItemCode());
repleinshJobDetailDO.setItemCode(item.getItemCode()); repleinshJobDetailDO.setItemName(item.getItemName());
repleinshJobDetailDO.setItemName(item.getItemName()); repleinshJobDetailDO.setItemDesc1(item.getItemDesc1());
repleinshJobDetailDO.setItemDesc1(item.getItemDesc1()); repleinshJobDetailDO.setItemDesc2(item.getItemDesc2());
repleinshJobDetailDO.setItemDesc2(item.getItemDesc2()); repleinshJobDetailDO.setProjectCode(item.getProjectCode());
repleinshJobDetailDO.setProjectCode(item.getProjectCode()); repleinshJobDetailDO.setQty(item.getQty());
repleinshJobDetailDO.setQty(item.getQty()); repleinshJobDetailDO.setUom(item.getUom());
repleinshJobDetailDO.setUom(item.getUom()); repleinshJobDetailDO.setToOwnerCode(item.getToOwnerCode());
repleinshJobDetailDO.setToOwnerCode(item.getToOwnerCode()); repleinshJobDetailDO.setFromOwnerCode(item.getFromOwnerCode());
repleinshJobDetailDO.setFromOwnerCode(item.getFromOwnerCode()); repleinshJobDetailDO.setNumber(repleinshJobMainDO.getNumber());
repleinshJobDetailDO.setNumber(repleinshJobMainDO.getNumber()); repleinshJobDetailDO.setMasterId(repleinshJobMainDO.getId());
repleinshJobDetailDO.setMasterId(repleinshJobMainDO.getId()); repleinshJobDetailDO.setInventoryStatus(item.getInventoryStatus());
repleinshJobDetailDO.setInventoryStatus(item.getInventoryStatus()); repleinshJobDetailDOList.add(repleinshJobDetailDO);
repleinshJobDetailDOList.add(repleinshJobDetailDO); //预计入
//预计入 ExpectinCreateReqVO expectinCreateReqVO = new ExpectinCreateReqVO();
ExpectinCreateReqVO expectinCreateReqVO = new ExpectinCreateReqVO(); BeanUtils.copyProperties(repleinshJobDetailDO, expectinCreateReqVO);
BeanUtils.copyProperties(repleinshJobDetailDO, expectinCreateReqVO); expectinCreateReqVO.setJobNumber(number);
expectinCreateReqVO.setJobNumber(number); expectinCreateReqVO.setBusinessType(repleinshJobMainDO.getBusinessType());
expectinCreateReqVO.setBusinessType(repleinshJobMainDO.getBusinessType()); expectinCreateReqVO.setLocationCode(repleinshJobDetailDO.getFromLocationCode());
expectinCreateReqVO.setLocationCode(repleinshJobDetailDO.getFromLocationCode()); expectinCreateReqVO.setOwnerCode(repleinshJobDetailDO.getFromOwnerCode());
expectinCreateReqVO.setOwnerCode(repleinshJobDetailDO.getFromOwnerCode()); expectinCreateReqVOList.add(expectinCreateReqVO);
expectinCreateReqVOList.add(expectinCreateReqVO); //预计出
//预计出 ExpectoutCreateReqVO expectoutCreateReqVO = new ExpectoutCreateReqVO();
ExpectoutCreateReqVO expectoutCreateReqVO = new ExpectoutCreateReqVO(); BeanUtils.copyProperties(repleinshJobDetailDO, expectoutCreateReqVO);
BeanUtils.copyProperties(repleinshJobDetailDO, expectoutCreateReqVO); expectoutCreateReqVO.setJobNumber(number);
expectoutCreateReqVO.setJobNumber(number); expectoutCreateReqVO.setBusinessType(repleinshJobMainDO.getBusinessType());
expectoutCreateReqVO.setBusinessType(repleinshJobMainDO.getBusinessType()); expectoutCreateReqVO.setLocationCode(repleinshJobDetailDO.getFromLocationCode());
expectoutCreateReqVO.setLocationCode(repleinshJobDetailDO.getFromLocationCode()); expectoutCreateReqVO.setOwnerCode(repleinshJobDetailDO.getFromOwnerCode());
expectoutCreateReqVO.setOwnerCode(repleinshJobDetailDO.getFromOwnerCode()); expectoutCreateReqVOList.add(expectoutCreateReqVO);
expectoutCreateReqVOList.add(expectoutCreateReqVO); });
}); });
}); repleinshJobDetailMapper.insertBatch(repleinshJobDetailDOList);
repleinshJobDetailMapper.insertBatch(repleinshJobDetailDOList); //增加预计入
//增加预计入 expectinService.createExpectin(expectinCreateReqVOList);
expectinService.createExpectin(expectinCreateReqVOList); //增加预计出
//增加预计出 expectoutService.createExpectout(expectoutCreateReqVOList);
expectoutService.createExpectout(expectoutCreateReqVOList); trendsApi.createTrends(repleinshJobMainDO.getId(), "repleinshJob", "补料申请生成补料任务", TrendsTypeEnum.CREATE);
trendsApi.createTrends(repleinshJobMainDO.getId(), "repleinshJob", "补料申请生成补料任务", TrendsTypeEnum.CREATE); }
} }
} }

Loading…
Cancel
Save