|
@ -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); |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|