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

Loading…
Cancel
Save