|
|
@ -1,40 +1,78 @@ |
|
|
|
package com.win.module.wms.service.unplannedissueRequest; |
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil; |
|
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; |
|
|
|
import com.win.framework.common.exception.ServiceException; |
|
|
|
import com.win.framework.common.pojo.CustomConditions; |
|
|
|
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.api.user.AdminUserApi; |
|
|
|
import com.win.module.system.enums.serialNumber.RuleCodeEnum; |
|
|
|
import com.win.module.wms.controller.expectin.vo.ExpectinCreateReqVO; |
|
|
|
import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestDetailCreateReqVO; |
|
|
|
import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestMainCreateReqVO; |
|
|
|
import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestMainImportErrorVO; |
|
|
|
import com.win.module.wms.controller.transferissueRecord.vo.TransferissueRecordDetailCreateReqVO; |
|
|
|
import com.win.module.wms.controller.transferissueRecord.vo.TransferissueRecordMainCreateReqVO; |
|
|
|
import com.win.module.wms.controller.transferreceiptRequest.vo.TransferreceiptRequestDetailCreateReqVO; |
|
|
|
import com.win.module.wms.controller.transferreceiptRequest.vo.TransferreceiptRequestMainCreateReqVO; |
|
|
|
import com.win.module.wms.controller.unplannedissueRecord.vo.UnplannedissueRecordDetailCreateReqVO; |
|
|
|
import com.win.module.wms.controller.unplannedissueRecord.vo.UnplannedissueRecordMainCreateReqVO; |
|
|
|
import com.win.module.wms.controller.unplannedissueRequest.vo.*; |
|
|
|
import com.win.module.wms.controller.unplannedreceiptRequest.vo.*; |
|
|
|
import com.win.module.wms.convert.purchasereceiptRequest.PurchasereceiptRequestDetailConvert; |
|
|
|
import com.win.module.wms.convert.purchasereceiptRequest.PurchasereceiptRequestMainConvert; |
|
|
|
import com.win.module.wms.convert.transferissueJob.TransferissueJobDetailConvert; |
|
|
|
import com.win.module.wms.convert.transferissueJob.TransferissueJobMainConvert; |
|
|
|
import com.win.module.wms.convert.transferissueRecord.TransferissueRecordDetailConvert; |
|
|
|
import com.win.module.wms.convert.transferissueRecord.TransferissueRecordMainConvert; |
|
|
|
import com.win.module.wms.convert.unplannedissueJob.UnplannedissueJobDetailConvert; |
|
|
|
import com.win.module.wms.convert.unplannedissueJob.UnplannedissueJobMainConvert; |
|
|
|
import com.win.module.wms.convert.unplannedissueRecord.UnplannedissueRecordDetailConvert; |
|
|
|
import com.win.module.wms.convert.unplannedissueRecord.UnplannedissueRecordMainConvert; |
|
|
|
import com.win.module.wms.convert.unplannedissueRequest.UnplannedissueRequestDetailConvert; |
|
|
|
import com.win.module.wms.convert.unplannedreceiptRequest.UnplannedreceiptRequestDetailConvert; |
|
|
|
import com.win.module.wms.convert.unplannedreceiptRequest.UnplannedreceiptRequestMainConvert; |
|
|
|
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.itembasic.ItembasicDO; |
|
|
|
import com.win.module.wms.dal.dataobject.jobsetting.JobsettingDO; |
|
|
|
import com.win.module.wms.dal.dataobject.location.LocationDO; |
|
|
|
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; |
|
|
|
import com.win.module.wms.dal.dataobject.transferissueJob.TransferissueJobDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.transferissueJob.TransferissueJobMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.transferissueRecord.TransferissueRecordMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.transferissueRequest.TransferissueRequestDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.transferissueRequest.TransferissueRequestMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.unplannedissueJob.UnplannedissueJobDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.unplannedissueJob.UnplannedissueJobMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.unplannedissueRecord.UnplannedissueRecordDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.unplannedissueRecord.UnplannedissueRecordMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.unplannedissueRequest.UnplannedissueRequestDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.unplannedreceiptRequest.UnplannedreceiptRequestDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.unplannedreceiptRequest.UnplannedreceiptRequestMainDO; |
|
|
|
import com.win.module.wms.dal.mysql.unplannedissueJob.UnplannedissueJobDetailMapper; |
|
|
|
import com.win.module.wms.dal.mysql.unplannedissueJob.UnplannedissueJobMainMapper; |
|
|
|
import com.win.module.wms.dal.mysql.unplannedissueRecord.UnplannedissueRecordDetailMapper; |
|
|
|
import com.win.module.wms.dal.mysql.unplannedissueRecord.UnplannedissueRecordMainMapper; |
|
|
|
import com.win.module.wms.dal.mysql.unplannedissueRequest.UnplannedissueRequestDetailMapper; |
|
|
|
import com.win.module.wms.enums.job.JobStatusEnum; |
|
|
|
import com.win.module.wms.enums.request.RequestStatusEnum; |
|
|
|
import com.win.module.wms.enums.request.RequestStatusState; |
|
|
|
import com.win.module.wms.service.expectin.ExpectinService; |
|
|
|
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.recordsetting.RecordsettingService; |
|
|
|
import com.win.module.wms.service.requestsetting.RequestsettingService; |
|
|
|
import com.win.module.wms.util.JobUtils; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.springframework.beans.BeanUtils; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import javax.annotation.Resource; |
|
|
|
|
|
|
@ -51,6 +89,7 @@ import com.win.module.wms.convert.unplannedissueRequest.UnplannedissueRequestMai |
|
|
|
import com.win.module.wms.dal.mysql.unplannedissueRequest.UnplannedissueRequestMainMapper; |
|
|
|
|
|
|
|
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; |
|
|
|
import static com.win.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; |
|
|
|
import static com.win.module.wms.enums.ErrorCodeConstants.*; |
|
|
|
|
|
|
|
/** |
|
|
@ -58,48 +97,164 @@ import static com.win.module.wms.enums.ErrorCodeConstants.*; |
|
|
|
* |
|
|
|
* @author 超级管理员 |
|
|
|
*/ |
|
|
|
@Slf4j |
|
|
|
@Service |
|
|
|
@Validated |
|
|
|
public class UnplannedissueRequestMainServiceImpl implements UnplannedissueRequestMainService { |
|
|
|
|
|
|
|
@Resource |
|
|
|
private UnplannedissueRequestMainMapper unplannedissueRequestMainMapper; |
|
|
|
|
|
|
|
@Resource |
|
|
|
private UnplannedissueRequestDetailMapper unplannedissueRequestDetailMapper; |
|
|
|
@Resource |
|
|
|
private DictDataApi dictDataApi; |
|
|
|
|
|
|
|
@Resource |
|
|
|
private LocationService locationService; |
|
|
|
|
|
|
|
@Resource |
|
|
|
private RequestsettingService requestsettingService; |
|
|
|
|
|
|
|
@Resource |
|
|
|
private SerialNumberApi serialNumberApi; |
|
|
|
|
|
|
|
@Resource |
|
|
|
private ItembasicService itembasicService; |
|
|
|
@Resource |
|
|
|
private TrendsApi trendsApi; |
|
|
|
|
|
|
|
@Resource |
|
|
|
private JobUtils jobUtils; |
|
|
|
@Resource |
|
|
|
private RecordsettingService recordsettingService; |
|
|
|
@Resource |
|
|
|
private UnplannedissueRecordMainMapper unplannedissueRecordMainMapper; |
|
|
|
@Resource |
|
|
|
private UnplannedissueRecordDetailMapper unplannedissueRecordDetailMapper; |
|
|
|
@Resource |
|
|
|
private JobsettingService jobsettingService; |
|
|
|
@Resource |
|
|
|
private AdminUserApi userApi; |
|
|
|
@Resource |
|
|
|
private UnplannedissueJobMainMapper unplannedissueJobMainMapper; |
|
|
|
@Resource |
|
|
|
private ExpectinService expectinService; |
|
|
|
@Resource |
|
|
|
private UnplannedissueJobDetailMapper unplannedissueJobDetailMapper; |
|
|
|
|
|
|
|
|
|
|
|
@Transactional |
|
|
|
@Override |
|
|
|
public Long createUnplannedissueRequestMain(UnplannedissueRequestMainCreateReqVO createReqVO) { |
|
|
|
// Setting-----QReqs
|
|
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("UnplannedDeliverRequest"); |
|
|
|
UnplannedissueRequestMainDO unplannedissueRequestMainDO = validatorToCreate(createReqVO,requestsettingDO); |
|
|
|
//调用自动执行方法
|
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(unplannedissueRequestMainDO.getStatus())) { |
|
|
|
|
|
|
|
List<UnplannedissueRequestDetailDO> detailDOList = unplannedissueRequestDetailMapper.selectList(unplannedissueRequestMainDO.getId()); |
|
|
|
this.generateJob(unplannedissueRequestMainDO,detailDOList); |
|
|
|
} |
|
|
|
trendsApi.createTrends(requestsettingDO.getId(), "UnplannedDeliverRequest", "增加了计划外出库申请", TrendsTypeEnum.CREATE); |
|
|
|
return unplannedissueRequestMainDO.getId(); |
|
|
|
} |
|
|
|
|
|
|
|
private UnplannedissueRequestMainDO validatorToCreate(UnplannedissueRequestMainCreateReqVO createReqVO, RequestsettingDO requestsettingDO) { |
|
|
|
public void generateJob(UnplannedissueRequestMainDO mainDO, List<UnplannedissueRequestDetailDO> detailDOList) { |
|
|
|
//跳过任务直接生成记录
|
|
|
|
if("TRUE".equals(mainDO.getDirectCreateRecord())) { |
|
|
|
UnplannedissueRecordMainCreateReqVO unplannedissueRecordMainCreateReqVO = new UnplannedissueRecordMainCreateReqVO(); |
|
|
|
BeanUtils.copyProperties(mainDO, unplannedissueRecordMainCreateReqVO); |
|
|
|
unplannedissueRecordMainCreateReqVO.setRequestNumber(mainDO.getNumber()); |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.UNPLANNED_DELIVER_RECORD.getCode()); |
|
|
|
unplannedissueRecordMainCreateReqVO.setNumber(number); |
|
|
|
//增加业务类型
|
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("UnplannedDeliverRecord"); |
|
|
|
unplannedissueRecordMainCreateReqVO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
unplannedissueRecordMainCreateReqVO.setOutTransactionType(businesstypeDO.getOutTransactionType()); |
|
|
|
unplannedissueRecordMainCreateReqVO.setInTransactionType(businesstypeDO.getInTransactionType()); |
|
|
|
String interFaceType = recordsettingService.selectRecordsettingExist("UnplannedDeliverRecord").getInterfaceType(); |
|
|
|
unplannedissueRecordMainCreateReqVO.setInterfaceType(interFaceType); |
|
|
|
unplannedissueRecordMainCreateReqVO.setExecuteTime(LocalDateTime.now()); |
|
|
|
unplannedissueRecordMainCreateReqVO.setActiveDate(LocalDateTime.now()); |
|
|
|
unplannedissueRecordMainCreateReqVO.setAvailable("TRUE"); |
|
|
|
unplannedissueRecordMainCreateReqVO.setDueTime(mainDO.getDueTime()); |
|
|
|
unplannedissueRecordMainCreateReqVO.setId(null); |
|
|
|
unplannedissueRecordMainCreateReqVO.setCreator(null); |
|
|
|
unplannedissueRecordMainCreateReqVO.setCreateTime(null); |
|
|
|
UnplannedissueRecordMainDO transferissueRecordMainDO = UnplannedissueRecordMainConvert.INSTANCE.convert(unplannedissueRecordMainCreateReqVO); |
|
|
|
unplannedissueRecordMainMapper.insert(transferissueRecordMainDO); |
|
|
|
for(UnplannedissueRequestDetailDO unplannedissueRequestDetailDO : detailDOList) { |
|
|
|
UnplannedissueRecordDetailCreateReqVO unplannedissueRecordDetailCreateReqVO = new UnplannedissueRecordDetailCreateReqVO(); |
|
|
|
BeanUtils.copyProperties(unplannedissueRequestDetailDO, unplannedissueRecordDetailCreateReqVO); |
|
|
|
unplannedissueRecordDetailCreateReqVO.setNumber(number); |
|
|
|
unplannedissueRecordDetailCreateReqVO.setMasterId(String.valueOf(transferissueRecordMainDO.getId())); |
|
|
|
unplannedissueRecordDetailCreateReqVO.setInventoryStatus(unplannedissueRequestDetailDO.getInventoryStatus()); |
|
|
|
unplannedissueRecordDetailCreateReqVO.setFromLocationGroupCode(unplannedissueRequestDetailDO.getFromLocationCode()); |
|
|
|
unplannedissueRecordDetailCreateReqVO.setFromAreaCode(unplannedissueRequestDetailDO.getFromLocationCode()); |
|
|
|
UnplannedissueRecordDetailDO unplannedissueRecordDetailDO = UnplannedissueRecordDetailConvert.INSTANCE.convert(unplannedissueRecordDetailCreateReqVO); |
|
|
|
unplannedissueRecordDetailMapper.insert(unplannedissueRecordDetailDO); |
|
|
|
} |
|
|
|
return; |
|
|
|
} |
|
|
|
// 任务 主表数据创建
|
|
|
|
UnplannedissueJobMainDO unplannedissueJobMainDO = UnplannedissueJobMainConvert.INSTANCE.convert(mainDO); |
|
|
|
BeanUtils.copyProperties(mainDO,unplannedissueJobMainDO); |
|
|
|
// DBT——>DBT3("TransferDeliverJob")
|
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("UnplannedDeliverJob"); |
|
|
|
unplannedissueJobMainDO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
// Setting——>QJobS("TransferDeliverJob")
|
|
|
|
JobsettingDO jobsettingDO = jobsettingService.selectJobsettingExist("UnplannedDeliverJob"); |
|
|
|
unplannedissueJobMainDO.setRequestNumber(mainDO.getNumber()); |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.UNPLANNED_DELIVER_JOB.getCode()); |
|
|
|
unplannedissueJobMainDO.setRequestDueTime(mainDO.getDueTime()); |
|
|
|
unplannedissueJobMainDO.setNumber(number); |
|
|
|
unplannedissueJobMainDO.setId(null); |
|
|
|
unplannedissueJobMainDO.setCreateTime(null); |
|
|
|
unplannedissueJobMainDO.setCreator(userApi.getUser(getLoginUserId()).getId().toString()); |
|
|
|
unplannedissueJobMainDO.setUpdateTime(null); |
|
|
|
unplannedissueJobMainDO.setUpdater(null); |
|
|
|
unplannedissueJobMainDO.setAutoComplete(jobsettingDO.getAutoComplete()); |
|
|
|
unplannedissueJobMainDO.setAllowModifyLocation(jobsettingDO.getAllowModifyLocation()); |
|
|
|
unplannedissueJobMainDO.setAllowModifyQty(jobsettingDO.getAllowModifyQty()); |
|
|
|
unplannedissueJobMainDO.setAllowBiggerQty(jobsettingDO.getAllowBiggerQty()); |
|
|
|
unplannedissueJobMainDO.setAllowSmallerQty(jobsettingDO.getAllowSmallerQty()); |
|
|
|
unplannedissueJobMainDO.setAllowModifyInventoryStatus(jobsettingDO.getAllowModifyInventoryStatus()); |
|
|
|
unplannedissueJobMainDO.setAllowContinuousScanning(jobsettingDO.getAllowContinuousScanning()); |
|
|
|
unplannedissueJobMainDO.setAllowPartialComplete(jobsettingDO.getAllowPartialComplete()); |
|
|
|
unplannedissueJobMainDO.setAllowModifyPackingNumber(jobsettingDO.getAllowModifyPackingNumber()); |
|
|
|
unplannedissueJobMainDO.setAllowModifyBatch(jobsettingDO.getAllowModifyBach()); |
|
|
|
unplannedissueJobMainDO.setStatus(JobStatusEnum.PENDING.getCode()); |
|
|
|
unplannedissueJobMainDO.setInInventoryStatuses(businesstypeDO.getInInventoryStatuses());//入库库存状态范围
|
|
|
|
unplannedissueJobMainDO.setOutInventoryStatuses(businesstypeDO.getOutInventoryStatuses());//出库库存状态范围
|
|
|
|
unplannedissueJobMainMapper.insert(unplannedissueJobMainDO); |
|
|
|
|
|
|
|
// 任务 子表数据创建
|
|
|
|
List<ExpectinCreateReqVO> expectinCreateReqVOList = new ArrayList<>(); |
|
|
|
List<UnplannedissueJobDetailDO> transferissueJobDetailDOList = new ArrayList<>(); |
|
|
|
for(UnplannedissueRequestDetailDO unplannedissueRequestDetailDO:detailDOList){ |
|
|
|
UnplannedissueJobDetailDO unplannedissueJobDetailDO = UnplannedissueJobDetailConvert.INSTANCE.convert(unplannedissueRequestDetailDO); |
|
|
|
BeanUtils.copyProperties(unplannedissueRequestDetailDO, unplannedissueJobDetailDO); |
|
|
|
unplannedissueJobDetailDO.setId(null); |
|
|
|
unplannedissueJobDetailDO.setCreator(userApi.getUser(getLoginUserId()).getId().toString()); |
|
|
|
unplannedissueJobDetailDO.setCreateTime(null); |
|
|
|
unplannedissueJobDetailDO.setUpdater(null); |
|
|
|
unplannedissueJobDetailDO.setUpdateTime(null); |
|
|
|
unplannedissueJobDetailDO.setMasterId(unplannedissueJobMainDO.getId()); |
|
|
|
unplannedissueJobDetailDO.setNumber(number); |
|
|
|
transferissueJobDetailDOList.add(unplannedissueJobDetailDO); |
|
|
|
//预计出
|
|
|
|
ExpectinCreateReqVO expectinCreateReqVO = new ExpectinCreateReqVO(); |
|
|
|
BeanUtils.copyProperties(unplannedissueJobDetailDO, expectinCreateReqVO); |
|
|
|
expectinCreateReqVO.setJobNumber(number); |
|
|
|
expectinCreateReqVO.setBusinessType(unplannedissueJobMainDO.getBusinessType()); |
|
|
|
expectinCreateReqVO.setLocationCode(unplannedissueJobDetailDO.getFromLocationCode()); |
|
|
|
expectinCreateReqVO.setOwnerCode(unplannedissueJobDetailDO.getOwnerCode()); |
|
|
|
expectinCreateReqVO.setQty(unplannedissueJobDetailDO.getQty()); |
|
|
|
expectinCreateReqVOList.add(expectinCreateReqVO); |
|
|
|
} |
|
|
|
unplannedissueJobDetailMapper.insertBatch(transferissueJobDetailDOList); |
|
|
|
//增加预计入
|
|
|
|
expectinService.createExpectin(expectinCreateReqVOList); |
|
|
|
trendsApi.createTrends(unplannedissueJobMainDO.getId(), "UnplannedDeliverJob", "计划外出库申请生成计划外出库任务", TrendsTypeEnum.CREATE); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
public UnplannedissueRequestMainDO validatorToCreate(UnplannedissueRequestMainCreateReqVO createReqVO, RequestsettingDO requestsettingDO) { |
|
|
|
// DBT3
|
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("UnplannedDeliverRequest"); |
|
|
|
UnplannedissueRequestMainDO unplannedissueRequestMainDO = validateMainMethod(createReqVO,businesstypeDO,requestsettingDO); |
|
|
|
List<UnplannedissueRequestDetailCreateReqVO> subList = createReqVO.getSubList(); |
|
|
@ -111,8 +266,8 @@ public class UnplannedissueRequestMainServiceImpl implements UnplannedissueReque |
|
|
|
unplannedissueRequestMainDO.setNumber(number); |
|
|
|
unplannedissueRequestMainMapper.insert(unplannedissueRequestMainDO); |
|
|
|
for(UnplannedissueRequestDetailDO unplannedreceiptRequestDetailDO: subDOList){ |
|
|
|
unplannedreceiptRequestDetailDO.setMasterId(unplannedissueRequestMainDO.getId()); |
|
|
|
unplannedreceiptRequestDetailDO.setNumber(unplannedissueRequestMainDO.getNumber()); |
|
|
|
unplannedreceiptRequestDetailDO.setMasterId(unplannedissueRequestMainDO.getId()); // masterId
|
|
|
|
unplannedreceiptRequestDetailDO.setNumber(unplannedissueRequestMainDO.getNumber());// 单据号
|
|
|
|
} |
|
|
|
unplannedissueRequestDetailMapper.insertBatch(subDOList); |
|
|
|
return unplannedissueRequestMainDO; |
|
|
@ -120,29 +275,44 @@ public class UnplannedissueRequestMainServiceImpl implements UnplannedissueReque |
|
|
|
|
|
|
|
private void validateDetailMethod(UnplannedissueRequestDetailDO detailDo, BusinesstypeDO businesstypeDO, UnplannedissueRequestMainDO mainDo) { |
|
|
|
detailDo.setCreateTime(LocalDateTime.now()); |
|
|
|
// BQ-----QL 校验来源库位基础信息
|
|
|
|
LocationDO locationDO = validatorLocation(detailDo.getFromLocationCode()); |
|
|
|
if(locationDO == null){ |
|
|
|
throw exception(UNPLANNEDISSUE_REQUEST_DETAIL_LOCALTIONCODE_NOT_EXISTS, detailDo.getFromLocationCode()); |
|
|
|
} |
|
|
|
mainDo.setFromWarehouseCode(locationDO.getWarehouseCode()); |
|
|
|
mainDo.setFromAreaCodes(locationDO.getAreaCode()); |
|
|
|
mainDo.setFromLocationTypes(locationDO.getCode()); |
|
|
|
// BQ——>QI
|
|
|
|
ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode()); |
|
|
|
detailDo.setItemDesc1(itembasicDO.getDesc1()); |
|
|
|
detailDo.setItemDesc2(itembasicDO.getDesc2()); |
|
|
|
detailDo.setItemName(itembasicDO.getName()); |
|
|
|
detailDo.setProjectCode(itembasicDO.getProject()); |
|
|
|
detailDo.setUom(itembasicDO.getUom()); |
|
|
|
detailDo.setProjectCode(itembasicDO.getProject()); |
|
|
|
// DBT——>DBT2——>LO
|
|
|
|
jobUtils.ifInToLocationType(detailDo.getFromLocationCode(), businesstypeDO); |
|
|
|
// DBT——>DBT2——>SO
|
|
|
|
jobUtils.ifOutInventoryStatuses(detailDo.getInventoryStatus(), businesstypeDO); |
|
|
|
// TB——>TB1 校验库存余额是否存在
|
|
|
|
List<BalanceDO> balanceDOList = validateBlanceDO(detailDo); |
|
|
|
if(balanceDOList != null && balanceDOList.size() > 0){ |
|
|
|
// BalanceDO balanceDO = balanceDOList.get(0);
|
|
|
|
// 子表不存在赋值字段字段
|
|
|
|
}else { |
|
|
|
throw exception(UNPLANNEDISSUE_REQUEST_DETAIL_BALANCE_NOT_EXISTS); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
private List<BalanceDO> validateBlanceDO(UnplannedissueRequestDetailDO detailDo) { |
|
|
|
String INVENTORY = detailDo.getInventoryStatus(); |
|
|
|
String[] inventory = INVENTORY.split(","); |
|
|
|
List<String> inventorystatus = Arrays.asList(inventory); |
|
|
|
List<BalanceDO> balanceDO = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), detailDo.getBatch(), detailDo.getFromLocationCode(),inventorystatus); |
|
|
|
for(BalanceDO balance: balanceDO){ |
|
|
|
mainDo.setFromWarehouseCode(balance.getWarehouseCode()); |
|
|
|
} |
|
|
|
return balanceDO; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private UnplannedissueRequestMainDO validateMainMethod(UnplannedissueRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO){ |
|
|
|
UnplannedissueRequestMainDO mainDo = UnplannedissueRequestMainConvert.INSTANCE.convert(baseVO); |
|
|
|
mainDo.setRequestTime(LocalDateTime.now()); |
|
|
@ -157,6 +327,7 @@ public class UnplannedissueRequestMainServiceImpl implements UnplannedissueReque |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
@Transactional |
|
|
|
@Override |
|
|
|
public void updateUnplannedissueRequestMain(UnplannedissueRequestMainUpdateReqVO updateReqVO) { |
|
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("UnplannedDeliverRequest"); |
|
|
@ -165,10 +336,12 @@ public class UnplannedissueRequestMainServiceImpl implements UnplannedissueReque |
|
|
|
// 更新
|
|
|
|
UnplannedissueRequestMainDO unplannedissueRequestMainDO = validatorToUpdate(updateReqVO, requestsettingDO); |
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(unplannedissueRequestMainDO.getStatus())) { |
|
|
|
|
|
|
|
List<UnplannedissueRequestDetailDO> detailDOList = unplannedissueRequestDetailMapper.selectList(unplannedissueRequestMainDO.getId()); |
|
|
|
this.generateJob(unplannedissueRequestMainDO,detailDOList); |
|
|
|
} |
|
|
|
trendsApi.createTrends(requestsettingDO.getId(), "TransferDeliverRequest", "增加了计划外出库申请", TrendsTypeEnum.CREATE); |
|
|
|
trendsApi.createTrends(requestsettingDO.getId(), "UnplannedDeliverRequest", "增加了计划外出库申请", TrendsTypeEnum.CREATE); |
|
|
|
} |
|
|
|
|
|
|
|
private UnplannedissueRequestMainDO validatorToUpdate(UnplannedissueRequestMainUpdateReqVO updateReqVO, RequestsettingDO requestsettingDO) { |
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("UnplannedDeliverRequest"); |
|
|
|
UnplannedissueRequestMainDO unplannedissueRequestMainDO = validateMainMethod(updateReqVO,businesstypeDO,requestsettingDO); |
|
|
@ -199,10 +372,12 @@ public class UnplannedissueRequestMainServiceImpl implements UnplannedissueReque |
|
|
|
unplannedissueRequestMainMapper.deleteById(id); |
|
|
|
} |
|
|
|
|
|
|
|
private void validateUnplannedissueRequestMainExists(Long id) { |
|
|
|
if (unplannedissueRequestMainMapper.selectById(id) == null) { |
|
|
|
private UnplannedissueRequestMainDO validateUnplannedissueRequestMainExists(Long id) { |
|
|
|
UnplannedissueRequestMainDO unplannedissueRequestMainDO = unplannedissueRequestMainMapper.selectById(id); |
|
|
|
if (unplannedissueRequestMainDO == null) { |
|
|
|
throw exception(UNPLANNEDISSUE_REQUEST_MAIN_NOT_EXISTS); |
|
|
|
} |
|
|
|
return unplannedissueRequestMainDO; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
@ -235,6 +410,116 @@ public class UnplannedissueRequestMainServiceImpl implements UnplannedissueReque |
|
|
|
return unplannedissueRequestMainMapper.selectSeniorList(conditions); |
|
|
|
} |
|
|
|
|
|
|
|
@Transactional |
|
|
|
@Override |
|
|
|
public Integer closeUnplannedissueRequestMain(Long id) { |
|
|
|
// 校验存在存在下级单据
|
|
|
|
UnplannedissueRequestMainDO mainDO = this.validateUnplannedissueRequestMainExists(id); |
|
|
|
Long count = unplannedissueJobMainMapper.selectByRequestNumber(mainDO.getNumber()); |
|
|
|
if(count > 0) { |
|
|
|
throw new ServiceException(UNPLANNEDISSUE_JOB_MAIN_EXISTS); |
|
|
|
} |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
boolean flag = requestStatusState.close(); |
|
|
|
if(!flag) { |
|
|
|
throw new ServiceException(UNPLANNEDISSUE_REQUEST_CANNOT_CLOSE); |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录
|
|
|
|
trendsApi.createTrends(id, "UnplannedDeliverRequest", "关闭了计划外出库申请", TrendsTypeEnum.UPDATE); |
|
|
|
return unplannedissueRequestMainMapper.updateById(mainDO); |
|
|
|
} |
|
|
|
|
|
|
|
@Transactional |
|
|
|
@Override |
|
|
|
public Integer reAddUnplannedissueRequestMain(Long id) { |
|
|
|
// 校验存在存在下级单据
|
|
|
|
UnplannedissueRequestMainDO mainDO = this.validateUnplannedissueRequestMainExists(id); |
|
|
|
Long count = unplannedissueJobMainMapper.selectByRequestNumber(mainDO.getNumber()); |
|
|
|
if(count > 0) { |
|
|
|
throw new ServiceException(UNPLANNEDISSUE_JOB_MAIN_EXISTS); |
|
|
|
} |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
boolean flag = requestStatusState.reAdd(); |
|
|
|
if(!flag) { |
|
|
|
throw new ServiceException(UNPLANNEDISSUE_REQUEST_CANNOT_RE_ADD); |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录
|
|
|
|
trendsApi.createTrends(mainDO.getId(), "UnplannedDeliverRequest", "打开了计划外出库申请", TrendsTypeEnum.UPDATE); |
|
|
|
return unplannedissueRequestMainMapper.updateById(mainDO); |
|
|
|
} |
|
|
|
|
|
|
|
@Transactional |
|
|
|
@Override |
|
|
|
public Integer submitUnplannedissueRequestMain(Long id) { |
|
|
|
UnplannedissueRequestMainDO mainDO = this.validateUnplannedissueRequestMainExists(id); |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
boolean flag = requestStatusState.submit(mainDO.getAutoAgree(), mainDO.getAutoExecute()); |
|
|
|
if(!flag) { |
|
|
|
throw new ServiceException(UNPLANNEDISSUE_REQUEST_CANNOT_SUBMIT); |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
//调用自动执行方法
|
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { |
|
|
|
List<UnplannedissueRequestDetailDO> detailDOList = unplannedissueRequestDetailMapper.selectList(mainDO.getId()); |
|
|
|
this.generateJob(mainDO,detailDOList); |
|
|
|
} |
|
|
|
trendsApi.createTrends(id, "UnplannedDeliverRequest", "提交了计划外出库申请", TrendsTypeEnum.UPDATE); |
|
|
|
return unplannedissueRequestMainMapper.updateById(mainDO); |
|
|
|
} |
|
|
|
|
|
|
|
@Transactional |
|
|
|
@Override |
|
|
|
public Integer abortUnplannedissueRequestMain(Long id) { |
|
|
|
// 校验存在
|
|
|
|
UnplannedissueRequestMainDO mainDO = this.validateUnplannedissueRequestMainExists(id); |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
boolean flag = requestStatusState.refused(); |
|
|
|
if(!flag) { |
|
|
|
throw new ServiceException(UNPLANNEDISSUE_REQUEST_CANNOT_ABORT); |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
trendsApi.createTrends(id, "UnplannedDeliverRequest", "审批拒绝了计划外出库申请", TrendsTypeEnum.UPDATE); |
|
|
|
return unplannedissueRequestMainMapper.updateById(mainDO); |
|
|
|
} |
|
|
|
|
|
|
|
@Transactional |
|
|
|
@Override |
|
|
|
public Integer agreeUnplannedissueRequestMain(Long id) { |
|
|
|
// 校验存在
|
|
|
|
UnplannedissueRequestMainDO mainDO = this.validateUnplannedissueRequestMainExists(id); |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
boolean flag = requestStatusState.agree(mainDO.getAutoAgree()); |
|
|
|
if(!flag) { |
|
|
|
throw new ServiceException(UNPLANNEDISSUE_REQUEST_CANNOT_AGREE); |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
//调用自动执行方法
|
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { |
|
|
|
List<UnplannedissueRequestDetailDO> detailDOList = unplannedissueRequestDetailMapper.selectList(mainDO.getId()); |
|
|
|
this.generateJob(mainDO,detailDOList); |
|
|
|
} |
|
|
|
trendsApi.createTrends(mainDO.getId(), "UnplannedDeliverRequest", "审批同意了计划外出库申请", TrendsTypeEnum.UPDATE); |
|
|
|
return unplannedissueRequestMainMapper.updateById(mainDO); |
|
|
|
} |
|
|
|
|
|
|
|
@Transactional |
|
|
|
@Override |
|
|
|
public Integer handleUnplannedissueRequestMain(Long id) { |
|
|
|
// 校验存在
|
|
|
|
UnplannedissueRequestMainDO mainDO = this.validateUnplannedissueRequestMainExists(id); |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
boolean flag = requestStatusState.handle(); |
|
|
|
if(!flag) { |
|
|
|
throw new ServiceException(UNPLANNEDISSUE_REQUEST_CANNOT_HANDLE); |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
//调用执行方法
|
|
|
|
List<UnplannedissueRequestDetailDO> detailDOList = unplannedissueRequestDetailMapper.selectList(mainDO.getId()); |
|
|
|
this.generateJob(mainDO,detailDOList); |
|
|
|
trendsApi.createTrends(id, "UnplannedDeliverRequest", "执行了计划外出库申请", TrendsTypeEnum.UPDATE); |
|
|
|
return unplannedissueRequestMainMapper.updateById(mainDO); |
|
|
|
} |
|
|
|
|
|
|
|
private String validateUnplannedissueRequestMainImport(UnplannedissueRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { |
|
|
|
StringBuilder message = new StringBuilder(); |
|
|
|
mainDo.setRequestTime(LocalDateTime.now()); |
|
|
@ -316,10 +601,6 @@ public class UnplannedissueRequestMainServiceImpl implements UnplannedissueReque |
|
|
|
return message.toString(); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public List<UnplannedissueRequestMainImportErrorVO> importUnplannedissueRequestMainList(List<UnplannedissueRequestMainCreateReqVO> datas, Integer mode, boolean updatePart) { |
|
|
|