|
|
@ -1,23 +1,80 @@ |
|
|
|
package com.win.module.wms.service.transferreceiptRequest; |
|
|
|
|
|
|
|
import com.win.framework.common.exception.ServiceException; |
|
|
|
import com.win.framework.common.pojo.CustomConditions; |
|
|
|
import com.win.module.wms.controller.transferreceiptRequest.vo.TransferreceiptRequestMainCreateReqVO; |
|
|
|
import com.win.module.wms.controller.transferreceiptRequest.vo.TransferreceiptRequestMainExportReqVO; |
|
|
|
import com.win.module.wms.controller.transferreceiptRequest.vo.TransferreceiptRequestMainPageReqVO; |
|
|
|
import com.win.module.wms.controller.transferreceiptRequest.vo.TransferreceiptRequestMainUpdateReqVO; |
|
|
|
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.api.user.AdminUserApi; |
|
|
|
import com.win.module.system.api.user.dto.AdminUserRespDTO; |
|
|
|
import com.win.module.system.enums.serialNumber.RuleCodeEnum; |
|
|
|
import com.win.module.wms.controller.expectin.vo.ExpectinCreateReqVO; |
|
|
|
import com.win.module.wms.controller.transferissueRecord.vo.TransferissueRecordDetailCreateReqVO; |
|
|
|
import com.win.module.wms.controller.transferissueRecord.vo.TransferissueRecordMainCreateReqVO; |
|
|
|
import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestDetailCreateReqVO; |
|
|
|
import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestDetailUpdateReqVO; |
|
|
|
import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestMainBaseVO; |
|
|
|
import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestMainUpdateReqVO; |
|
|
|
import com.win.module.wms.controller.transferreceiptRecord.vo.TransferreceiptRecordDetailCreateReqVO; |
|
|
|
import com.win.module.wms.controller.transferreceiptRecord.vo.TransferreceiptRecordMainCreateReqVO; |
|
|
|
import com.win.module.wms.controller.transferreceiptRequest.vo.*; |
|
|
|
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.transferissueRequest.TransferissueRequestDetailConvert; |
|
|
|
import com.win.module.wms.convert.transferissueRequest.TransferissueRequestMainConvert; |
|
|
|
import com.win.module.wms.convert.transferreceiptJob.TransferreceiptJobDetailConvert; |
|
|
|
import com.win.module.wms.convert.transferreceiptJob.TransferreceiptJobMainConvert; |
|
|
|
import com.win.module.wms.convert.transferreceiptRecord.TransferreceiptRecordDetailConvert; |
|
|
|
import com.win.module.wms.convert.transferreceiptRecord.TransferreceiptRecordMainConvert; |
|
|
|
import com.win.module.wms.convert.transferreceiptRequest.TransferreceiptRequestDetailConvert; |
|
|
|
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.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.transferreceiptJob.TransferreceiptJobDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.transferreceiptJob.TransferreceiptJobMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.transferreceiptRecord.TransferreceiptRecordDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.transferreceiptRecord.TransferreceiptRecordMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.transferreceiptRequest.TransferreceiptRequestDetailDO; |
|
|
|
import com.win.module.wms.dal.mysql.transferreceiptJob.TransferreceiptJobDetailMapper; |
|
|
|
import com.win.module.wms.dal.mysql.transferreceiptJob.TransferreceiptJobMainMapper; |
|
|
|
import com.win.module.wms.dal.mysql.transferreceiptRecord.TransferreceiptRecordDetailMapper; |
|
|
|
import com.win.module.wms.dal.mysql.transferreceiptRecord.TransferreceiptRecordMainMapper; |
|
|
|
import com.win.module.wms.dal.mysql.transferreceiptRequest.TransferreceiptRequestDetailMapper; |
|
|
|
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 org.springframework.beans.BeanUtils; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import javax.annotation.Resource; |
|
|
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
import org.springframework.validation.annotation.Validated; |
|
|
|
|
|
|
|
import java.time.LocalDateTime; |
|
|
|
import java.util.*; |
|
|
|
|
|
|
|
import com.win.module.wms.dal.dataobject.transferreceiptRequest.TransferreceiptRequestMainDO; |
|
|
|
import com.win.framework.common.pojo.PageResult; |
|
|
|
|
|
|
|
import com.win.module.wms.convert.transferreceiptRequest.TransferreceiptRequestMainConvert; |
|
|
|
import com.win.module.wms.dal.mysql.transferreceiptRequest.TransferreceiptRequestMainMapper; |
|
|
|
|
|
|
|
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.*; |
|
|
|
|
|
|
|
/** |
|
|
@ -31,14 +88,270 @@ public class TransferreceiptRequestMainServiceImpl implements TransferreceiptReq |
|
|
|
|
|
|
|
@Resource |
|
|
|
private TransferreceiptRequestMainMapper transferreceiptRequestMainMapper; |
|
|
|
@Resource |
|
|
|
private RequestsettingService requestsettingService; |
|
|
|
@Resource |
|
|
|
private JobUtils jobUtils; |
|
|
|
@Resource |
|
|
|
private LocationService locationService; |
|
|
|
@Resource |
|
|
|
private ItembasicService itembasicService; |
|
|
|
@Resource |
|
|
|
private SerialNumberApi serialNumberApi; |
|
|
|
@Resource |
|
|
|
private AdminUserApi userApi; |
|
|
|
@Resource |
|
|
|
private TransferreceiptRequestDetailMapper transferreceiptRequestDetailMapper; |
|
|
|
@Resource |
|
|
|
private TrendsApi trendsApi; |
|
|
|
@Resource |
|
|
|
private TransferreceiptRecordMainMapper transferreceiptRecordMainMapper; |
|
|
|
@Resource |
|
|
|
private RecordsettingService recordsettingService; |
|
|
|
@Resource |
|
|
|
private TransferreceiptRecordDetailMapper transferreceiptRecordDetailMapper; |
|
|
|
@Resource |
|
|
|
private JobsettingService jobsettingService; |
|
|
|
@Resource |
|
|
|
private TransferreceiptJobMainMapper transferreceiptJobMainMapper; |
|
|
|
@Resource |
|
|
|
private TransferreceiptJobDetailMapper transferreceiptJobDetailMapper; |
|
|
|
@Resource |
|
|
|
private ExpectinService expectinService; |
|
|
|
|
|
|
|
@Override |
|
|
|
public Long createTransferreceiptRequestMain(TransferreceiptRequestMainCreateReqVO createReqVO) { |
|
|
|
// 插入
|
|
|
|
TransferreceiptRequestMainDO transferreceiptRequestMain = TransferreceiptRequestMainConvert.INSTANCE.convert(createReqVO); |
|
|
|
transferreceiptRequestMainMapper.insert(transferreceiptRequestMain); |
|
|
|
// 返回
|
|
|
|
return transferreceiptRequestMain.getId(); |
|
|
|
// Setting-----QReqs
|
|
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("TransferReceiptRequest"); |
|
|
|
TransferreceiptRequestMainDO transferreceiptRequestMainDO = validatorToCreate(createReqVO,requestsettingDO); |
|
|
|
//调用自动执行方法
|
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(transferreceiptRequestMainDO.getStatus())) { |
|
|
|
List<TransferreceiptRequestDetailDO> detailDOList = transferreceiptRequestDetailMapper.selectList(transferreceiptRequestMainDO.getId()); |
|
|
|
this.generateJob(transferreceiptRequestMainDO,detailDOList); |
|
|
|
} |
|
|
|
trendsApi.createTrends(requestsettingDO.getId(), "TransferReceiptRequest", "增加了调拨入库申请", TrendsTypeEnum.CREATE); |
|
|
|
return transferreceiptRequestMainDO.getId(); |
|
|
|
} |
|
|
|
|
|
|
|
private void generateJob(TransferreceiptRequestMainDO mainDO, List<TransferreceiptRequestDetailDO> detailDOList) { |
|
|
|
//跳过任务直接生成记录
|
|
|
|
if("TRUE".equals(mainDO.getDirectCreateRecord())) { |
|
|
|
TransferreceiptRecordMainCreateReqVO transferreceiptRecordMainCreateReqVO = new TransferreceiptRecordMainCreateReqVO(); |
|
|
|
BeanUtils.copyProperties(mainDO, transferreceiptRecordMainCreateReqVO); |
|
|
|
transferreceiptRecordMainCreateReqVO.setRequestNumber(mainDO.getNumber()); |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.TRANSFER_RECEIPT_RECORD.getCode()); |
|
|
|
transferreceiptRecordMainCreateReqVO.setNumber(number); |
|
|
|
//增加业务类型
|
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("TransferReceiptRecord"); |
|
|
|
transferreceiptRecordMainCreateReqVO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
transferreceiptRecordMainCreateReqVO.setOutTransactionType(businesstypeDO.getOutTransactionType()); |
|
|
|
transferreceiptRecordMainCreateReqVO.setInTransactionType(businesstypeDO.getInTransactionType()); |
|
|
|
String interFaceType = recordsettingService.selectRecordsettingExist("TransferReceiptRecord").getInterfaceType(); |
|
|
|
transferreceiptRecordMainCreateReqVO.setInterfaceType(interFaceType); |
|
|
|
transferreceiptRecordMainCreateReqVO.setExecuteTime(LocalDateTime.now()); |
|
|
|
transferreceiptRecordMainCreateReqVO.setActiveDate(LocalDateTime.now()); |
|
|
|
transferreceiptRecordMainCreateReqVO.setAvailable("TRUE"); |
|
|
|
transferreceiptRecordMainCreateReqVO.setDueTime(mainDO.getDueTime()); |
|
|
|
transferreceiptRecordMainCreateReqVO.setId(null); |
|
|
|
transferreceiptRecordMainCreateReqVO.setCreator(null); |
|
|
|
transferreceiptRecordMainCreateReqVO.setCreateTime(null); |
|
|
|
TransferreceiptRecordMainDO transferreceiptRecordMainDO = TransferreceiptRecordMainConvert.INSTANCE.convert(transferreceiptRecordMainCreateReqVO); |
|
|
|
transferreceiptRecordMainMapper.insert(transferreceiptRecordMainDO); |
|
|
|
for(TransferreceiptRequestDetailDO transferreceiptRequestDetailDO : detailDOList) { |
|
|
|
TransferreceiptRecordDetailCreateReqVO transferreceiptRecordDetailCreateReqVO = new TransferreceiptRecordDetailCreateReqVO(); |
|
|
|
BeanUtils.copyProperties(transferreceiptRequestDetailDO, transferreceiptRecordDetailCreateReqVO); |
|
|
|
transferreceiptRecordDetailCreateReqVO.setNumber(number); |
|
|
|
transferreceiptRecordDetailCreateReqVO.setMasterId(String.valueOf(transferreceiptRequestDetailDO.getId())); |
|
|
|
transferreceiptRecordDetailCreateReqVO.setFromPackingNumber(transferreceiptRequestDetailDO.getPackingNumber()); |
|
|
|
transferreceiptRecordDetailCreateReqVO.setToPackingNumber(transferreceiptRequestDetailDO.getPackingNumber()); |
|
|
|
transferreceiptRecordDetailCreateReqVO.setFromContainerNumber(transferreceiptRequestDetailDO.getContainerNumber()); |
|
|
|
transferreceiptRecordDetailCreateReqVO.setToContainerNumber(transferreceiptRequestDetailDO.getContainerNumber()); |
|
|
|
transferreceiptRecordDetailCreateReqVO.setFromBatch(transferreceiptRequestDetailDO.getBatch()); |
|
|
|
transferreceiptRecordDetailCreateReqVO.setToBatch(transferreceiptRequestDetailDO.getBatch()); |
|
|
|
transferreceiptRecordDetailCreateReqVO.setInventoryStatus(transferreceiptRequestDetailDO.getInventoryStatus()); |
|
|
|
transferreceiptRecordDetailCreateReqVO.setFromLocationGroupCode(transferreceiptRequestDetailDO.getFromLocationCode()); |
|
|
|
transferreceiptRecordDetailCreateReqVO.setFromAreaCode(transferreceiptRequestDetailDO.getFromLocationCode()); |
|
|
|
TransferreceiptRecordDetailDO transferreceiptRecordDetailDO = TransferreceiptRecordDetailConvert.INSTANCE.convert(transferreceiptRecordDetailCreateReqVO); |
|
|
|
transferreceiptRecordDetailMapper.insert(transferreceiptRecordDetailDO); |
|
|
|
} |
|
|
|
return; |
|
|
|
} |
|
|
|
// 任务 主表数据创建
|
|
|
|
TransferreceiptJobMainDO transferreceiptJobMainDO = TransferreceiptJobMainConvert.INSTANCE.convert(mainDO); |
|
|
|
BeanUtils.copyProperties(mainDO,transferreceiptJobMainDO); |
|
|
|
// DBT——>DBT3("TransferReceiptJob")
|
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("TransferReceiptJob"); |
|
|
|
transferreceiptJobMainDO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
// Setting——>QJobS("TransferReceiptJob")
|
|
|
|
JobsettingDO jobsettingDO = jobsettingService.selectJobsettingExist("TransferReceiptJob"); |
|
|
|
transferreceiptJobMainDO.setRequestNumber(mainDO.getNumber()); |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.TRANSFER_DELIVER_JOB.getCode()); |
|
|
|
transferreceiptJobMainDO.setRequestDueTime(mainDO.getDueTime()); |
|
|
|
transferreceiptJobMainDO.setNumber(number); |
|
|
|
transferreceiptJobMainDO.setId(null); |
|
|
|
transferreceiptJobMainDO.setCreateTime(null); |
|
|
|
transferreceiptJobMainDO.setCreator(userApi.getUser(getLoginUserId()).getId().toString()); |
|
|
|
transferreceiptJobMainDO.setUpdateTime(null); |
|
|
|
transferreceiptJobMainDO.setUpdater(null); |
|
|
|
transferreceiptJobMainDO.setAutoComplete(jobsettingDO.getAutoComplete()); |
|
|
|
transferreceiptJobMainDO.setAllowModifyLocation(jobsettingDO.getAllowModifyLocation()); |
|
|
|
transferreceiptJobMainDO.setAllowModifyQty(jobsettingDO.getAllowModifyQty()); |
|
|
|
transferreceiptJobMainDO.setAllowBiggerQty(jobsettingDO.getAllowBiggerQty()); |
|
|
|
transferreceiptJobMainDO.setAllowSmallerQty(jobsettingDO.getAllowSmallerQty()); |
|
|
|
transferreceiptJobMainDO.setAllowModifyInventoryStatus(jobsettingDO.getAllowModifyInventoryStatus()); |
|
|
|
transferreceiptJobMainDO.setAllowContinuousScanning(jobsettingDO.getAllowContinuousScanning()); |
|
|
|
transferreceiptJobMainDO.setAllowPartialComplete(jobsettingDO.getAllowPartialComplete()); |
|
|
|
transferreceiptJobMainDO.setAllowModifyPackingNumber(jobsettingDO.getAllowModifyPackingNumber()); |
|
|
|
transferreceiptJobMainDO.setAllowModifyBatch(jobsettingDO.getAllowModifyBach()); |
|
|
|
transferreceiptJobMainDO.setStatus(JobStatusEnum.PENDING.getCode()); |
|
|
|
transferreceiptJobMainDO.setInInventoryStatuses(businesstypeDO.getInInventoryStatuses());//入库库存状态范围
|
|
|
|
transferreceiptJobMainDO.setOutInventoryStatuses(businesstypeDO.getOutInventoryStatuses());//出库库存状态范围
|
|
|
|
transferreceiptJobMainMapper.insert(transferreceiptJobMainDO); |
|
|
|
|
|
|
|
// 任务 子表数据创建
|
|
|
|
List<ExpectinCreateReqVO> expectinCreateReqVOList = new ArrayList<>(); |
|
|
|
List<TransferreceiptJobDetailDO> transferreceiptJobDetailDOList = new ArrayList<>(); |
|
|
|
for(TransferreceiptRequestDetailDO transferreceiptRequestDetailDO:detailDOList){ |
|
|
|
TransferreceiptJobDetailDO transferreceiptJobDetailDO = TransferreceiptJobDetailConvert.INSTANCE.convert(transferreceiptRequestDetailDO); |
|
|
|
BeanUtils.copyProperties(transferreceiptRequestDetailDO, transferreceiptJobDetailDO); |
|
|
|
transferreceiptJobDetailDO.setId(null); |
|
|
|
transferreceiptJobDetailDO.setCreator(userApi.getUser(getLoginUserId()).getId().toString()); |
|
|
|
transferreceiptJobDetailDO.setCreateTime(null); |
|
|
|
transferreceiptJobDetailDO.setUpdater(null); |
|
|
|
transferreceiptJobDetailDO.setUpdateTime(null); |
|
|
|
transferreceiptJobDetailDO.setMasterId(transferreceiptJobMainDO.getId()); |
|
|
|
transferreceiptJobDetailDO.setNumber(number); |
|
|
|
transferreceiptJobDetailDOList.add(transferreceiptJobDetailDO); |
|
|
|
//预计出
|
|
|
|
ExpectinCreateReqVO expectinCreateReqVO = new ExpectinCreateReqVO(); |
|
|
|
BeanUtils.copyProperties(transferreceiptRequestDetailDO, expectinCreateReqVO); |
|
|
|
expectinCreateReqVO.setJobNumber(number); |
|
|
|
expectinCreateReqVO.setBusinessType(transferreceiptJobMainDO.getBusinessType()); |
|
|
|
expectinCreateReqVO.setLocationCode(transferreceiptRequestDetailDO.getFromLocationCode()); |
|
|
|
expectinCreateReqVO.setOwnerCode(transferreceiptRequestDetailDO.getFromOwnerCode()); |
|
|
|
expectinCreateReqVO.setQty(transferreceiptRequestDetailDO.getQty()); |
|
|
|
expectinCreateReqVOList.add(expectinCreateReqVO); |
|
|
|
} |
|
|
|
if(transferreceiptJobDetailDOList.size() > 0){ |
|
|
|
transferreceiptJobDetailMapper.insertBatch(transferreceiptJobDetailDOList); |
|
|
|
} |
|
|
|
//增加预计入
|
|
|
|
expectinService.createExpectin(expectinCreateReqVOList); |
|
|
|
trendsApi.createTrends(transferreceiptJobMainDO.getId(), "TransferReceiptJob", "调拨入库申请生成调拨入库任务", TrendsTypeEnum.CREATE); |
|
|
|
} |
|
|
|
|
|
|
|
private TransferreceiptRequestMainDO validatorToCreate(TransferreceiptRequestMainCreateReqVO createReqVO, RequestsettingDO requestsettingDO) { |
|
|
|
// DBT——>DBT3("TransferReceiptRequest")
|
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("TransferReceiptRequest"); |
|
|
|
|
|
|
|
TransferreceiptRequestMainDO transferreceiptRequestMainDO = validateMainMethod(createReqVO,businesstypeDO,requestsettingDO); |
|
|
|
List<TransferreceiptRequestDetailCreateReqVO> subList = createReqVO.getSubList(); |
|
|
|
List<TransferreceiptRequestDetailDO> subDOList = TransferreceiptRequestDetailConvert.INSTANCE.convertList03(subList); |
|
|
|
for(TransferreceiptRequestDetailDO transferreceiptRequestDetailDO: subDOList){ |
|
|
|
// 校验业务类型
|
|
|
|
validateDetailMethod(transferreceiptRequestDetailDO,businesstypeDO,transferreceiptRequestMainDO); |
|
|
|
} |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.TRANSFER_RECEIPT_REQUEST.getCode()); |
|
|
|
transferreceiptRequestMainDO.setNumber(number); |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(); |
|
|
|
requestStatusState.newObject(requestsettingDO.getAutoCommit(), requestsettingDO.getAutoAgree(), requestsettingDO.getAutoExecute()); |
|
|
|
transferreceiptRequestMainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
transferreceiptRequestMainDO.setAutoCommit(requestsettingDO.getAutoCommit()); |
|
|
|
transferreceiptRequestMainDO.setAutoAgree(requestsettingDO.getAutoAgree()); |
|
|
|
transferreceiptRequestMainDO.setAutoExecute(requestsettingDO.getAutoExecute()); |
|
|
|
transferreceiptRequestMainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); |
|
|
|
// 设置部门
|
|
|
|
Long userId = getLoginUserId(); |
|
|
|
AdminUserRespDTO userRespDTO = userApi.getUser(userId); |
|
|
|
transferreceiptRequestMainDO.setDepartmentCode(String.valueOf(userRespDTO.getDeptId())); |
|
|
|
transferreceiptRequestMainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
transferreceiptRequestMainMapper.insert(transferreceiptRequestMainDO); |
|
|
|
for(TransferreceiptRequestDetailDO transferreceiptRequestDetailDO: subDOList){ |
|
|
|
transferreceiptRequestDetailDO.setMasterId(transferreceiptRequestMainDO.getId()); |
|
|
|
transferreceiptRequestDetailDO.setNumber(transferreceiptRequestMainDO.getNumber()); |
|
|
|
} |
|
|
|
transferreceiptRequestDetailMapper.insertBatch(subDOList); |
|
|
|
return transferreceiptRequestMainDO; |
|
|
|
} |
|
|
|
|
|
|
|
private void validateDetailMethod(TransferreceiptRequestDetailDO transferreceiptRequestDetailDO, BusinesstypeDO businesstypeDO, TransferreceiptRequestMainDO transferreceiptRequestMainDO) { |
|
|
|
transferreceiptRequestDetailDO.setCreateTime(LocalDateTime.now()); |
|
|
|
// BQ——>QL 校验来源/目标库位基础信息
|
|
|
|
LocationDO tolocationDO = validatorLocation(transferreceiptRequestDetailDO.getToLocationCode()); |
|
|
|
if(tolocationDO == null){ |
|
|
|
throw exception(TRANSFERRECEIPT_REQUEST_DETAIL_LOCALTIONCODE_NOT_EXISTS, transferreceiptRequestDetailDO.getToLocationCode()); |
|
|
|
} |
|
|
|
LocationDO fromlocationDO = validatorLocation(transferreceiptRequestDetailDO.getFromLocationCode()); |
|
|
|
if(fromlocationDO == null){ |
|
|
|
throw exception(TRANSFERRECEIPT_REQUEST_DETAIL_LOCALTIONCODE_NOT_EXISTS, transferreceiptRequestDetailDO.getFromLocationCode()); |
|
|
|
} |
|
|
|
// BQ----QI 校验物品基础信息
|
|
|
|
ItembasicDO item = validatorItembasic(transferreceiptRequestDetailDO.getItemCode()); |
|
|
|
if(item == null){ |
|
|
|
throw exception(TRANSFERRECEIPT_REQUEST_DETAIL_ITEM_NOT_EXISTS, transferreceiptRequestDetailDO.getItemCode()); |
|
|
|
} |
|
|
|
transferreceiptRequestDetailDO.setItemDesc1(item.getDesc1()); |
|
|
|
transferreceiptRequestDetailDO.setItemDesc2(item.getDesc2()); |
|
|
|
transferreceiptRequestDetailDO.setItemName(item.getName()); |
|
|
|
transferreceiptRequestDetailDO.setUom(item.getUom()); |
|
|
|
transferreceiptRequestDetailDO.setProjectCode(item.getProject()); |
|
|
|
// DBT——>DBT2——>LO 校验来源库位
|
|
|
|
jobUtils.ifInToLocationType(transferreceiptRequestDetailDO.getFromLocationCode(), businesstypeDO); |
|
|
|
// DBT——>DBT2——>LO 校验目标库位
|
|
|
|
jobUtils.ifInToLocationType(transferreceiptRequestDetailDO.getToLocationCode(), businesstypeDO); |
|
|
|
// DBT——>DBT2——>SO 校验库存状态
|
|
|
|
jobUtils.ifOutInventoryStatuses(transferreceiptRequestDetailDO.getInventoryStatus(), businesstypeDO); |
|
|
|
// TB——>TB1 校验库存余额是否存在
|
|
|
|
List<BalanceDO> balance = validatebalance(transferreceiptRequestDetailDO); |
|
|
|
for(BalanceDO balancedo: balance ) { |
|
|
|
transferreceiptRequestMainDO.setFromWarehouseCode(balancedo.getWarehouseCode()); |
|
|
|
} |
|
|
|
transferreceiptRequestMainDO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
transferreceiptRequestMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); |
|
|
|
transferreceiptRequestMainDO.setToLocationTypes(businesstypeDO.getInLocationTypes()); |
|
|
|
transferreceiptRequestMainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); |
|
|
|
transferreceiptRequestMainDO.setToAreaCodes(businesstypeDO.getInAreaCodes()); |
|
|
|
} |
|
|
|
|
|
|
|
private List<BalanceDO> validatebalance(TransferreceiptRequestDetailDO detailDo) { |
|
|
|
List<String> inventoryStatus = new ArrayList<>(); |
|
|
|
inventoryStatus.add(detailDo.getInventoryStatus()); |
|
|
|
List<BalanceDO> balanceDO = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), detailDo.getBatch(), detailDo.getToLocationCode(), inventoryStatus); |
|
|
|
return balanceDO; |
|
|
|
} |
|
|
|
|
|
|
|
private LocationDO validatorLocation(String Location){ |
|
|
|
return locationService.selectLocation(Location); |
|
|
|
} |
|
|
|
|
|
|
|
private ItembasicDO validatorItembasic(String itemCode) { |
|
|
|
return itembasicService.selectItembasic(itemCode); |
|
|
|
} |
|
|
|
|
|
|
|
private TransferreceiptRequestMainDO validateMainMethod(TransferreceiptRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO) { |
|
|
|
TransferreceiptRequestMainDO transferreceiptRequestMainDO = TransferreceiptRequestMainConvert.INSTANCE.convert(baseVO); |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(); |
|
|
|
requestStatusState.newObject(transferreceiptRequestMainDO.getAutoCommit(), transferreceiptRequestMainDO.getAutoAgree(), transferreceiptRequestMainDO.getAutoExecute()); |
|
|
|
transferreceiptRequestMainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
transferreceiptRequestMainDO.setRequestTime(LocalDateTime.now()); |
|
|
|
transferreceiptRequestMainDO.setCreateTime(LocalDateTime.now()); |
|
|
|
// validordurtime(transferreceiptRequestMainDO.getDueTime());
|
|
|
|
transferreceiptRequestMainDO.setAutoAgree(requestsettingDO.getAutoAgree()); |
|
|
|
transferreceiptRequestMainDO.setAutoCommit(requestsettingDO.getAutoCommit()); |
|
|
|
transferreceiptRequestMainDO.setAutoExecute(requestsettingDO.getAutoExecute()); |
|
|
|
transferreceiptRequestMainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); |
|
|
|
transferreceiptRequestMainDO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
transferreceiptRequestMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); |
|
|
|
transferreceiptRequestMainDO.setToLocationTypes(businesstypeDO.getInLocationTypes()); |
|
|
|
transferreceiptRequestMainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); |
|
|
|
transferreceiptRequestMainDO.setToAreaCodes(businesstypeDO.getInAreaCodes()); |
|
|
|
return transferreceiptRequestMainDO; |
|
|
|
} |
|
|
|
|
|
|
|
private void validordurtime(LocalDateTime dueTime) { |
|
|
|
if(!dueTime.isAfter(LocalDateTime.now())){ |
|
|
|
throw exception(TIME_AFTER,LocalDateTime.now(),dueTime); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
@ -48,13 +361,34 @@ public class TransferreceiptRequestMainServiceImpl implements TransferreceiptReq |
|
|
|
|
|
|
|
@Override |
|
|
|
public void updateTransferreceiptRequestMain(TransferreceiptRequestMainUpdateReqVO updateReqVO) { |
|
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("TransferReceiptRequest"); |
|
|
|
// 校验存在
|
|
|
|
validateTransferreceiptRequestMainExists(updateReqVO.getId()); |
|
|
|
// 更新
|
|
|
|
TransferreceiptRequestMainDO updateObj = TransferreceiptRequestMainConvert.INSTANCE.convert(updateReqVO); |
|
|
|
transferreceiptRequestMainMapper.updateById(updateObj); |
|
|
|
TransferreceiptRequestMainDO transferreceiptRequestMainDO = validatorToUpdate(updateReqVO, requestsettingDO); |
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(transferreceiptRequestMainDO.getStatus())) { |
|
|
|
List<TransferreceiptRequestDetailDO> detailDOList = transferreceiptRequestDetailMapper.selectList(transferreceiptRequestMainDO.getId()); |
|
|
|
this.generateJob(transferreceiptRequestMainDO,detailDOList); |
|
|
|
} |
|
|
|
trendsApi.createTrends(requestsettingDO.getId(), "TransferReceiptRequest", "增加了调拨入库申请", TrendsTypeEnum.CREATE); |
|
|
|
} |
|
|
|
|
|
|
|
public TransferreceiptRequestMainDO validatorToUpdate(TransferreceiptRequestMainUpdateReqVO updateReqVO, RequestsettingDO requestsettingDO) { |
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("TransferReceiptRequest"); |
|
|
|
TransferreceiptRequestMainDO transferissueRequestMainDO = validateMainMethod(updateReqVO,businesstypeDO,requestsettingDO); |
|
|
|
//子表校验
|
|
|
|
List<TransferreceiptRequestDetailUpdateReqVO> subList = updateReqVO.getSubList(); |
|
|
|
if(!subList.isEmpty()) { |
|
|
|
List<TransferreceiptRequestDetailDO> subDOList = TransferreceiptRequestDetailConvert.INSTANCE.convertList05(subList); |
|
|
|
for (TransferreceiptRequestDetailDO transferreceiptRequestDetailDO : subDOList) { |
|
|
|
validateDetailMethod(transferreceiptRequestDetailDO, businesstypeDO, transferissueRequestMainDO); |
|
|
|
} |
|
|
|
transferreceiptRequestDetailMapper.updateBatch(subDOList); |
|
|
|
} |
|
|
|
transferreceiptRequestMainMapper.updateById(transferissueRequestMainDO); |
|
|
|
return transferissueRequestMainDO; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
public void deleteTransferreceiptRequestMain(Long id) { |
|
|
|
// 校验存在
|
|
|
@ -63,10 +397,12 @@ public class TransferreceiptRequestMainServiceImpl implements TransferreceiptReq |
|
|
|
transferreceiptRequestMainMapper.deleteById(id); |
|
|
|
} |
|
|
|
|
|
|
|
private void validateTransferreceiptRequestMainExists(Long id) { |
|
|
|
if (transferreceiptRequestMainMapper.selectById(id) == null) { |
|
|
|
private TransferreceiptRequestMainDO validateTransferreceiptRequestMainExists(Long id) { |
|
|
|
TransferreceiptRequestMainDO transferreceiptRequestMainDO = transferreceiptRequestMainMapper.selectById(id); |
|
|
|
if (transferreceiptRequestMainDO == null) { |
|
|
|
throw exception(TRANSFERRECEIPT_REQUEST_MAIN_NOT_EXISTS); |
|
|
|
} |
|
|
|
return transferreceiptRequestMainDO; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
@ -89,4 +425,113 @@ public class TransferreceiptRequestMainServiceImpl implements TransferreceiptReq |
|
|
|
return transferreceiptRequestMainMapper.selectList(exportReqVO); |
|
|
|
} |
|
|
|
|
|
|
|
@Transactional |
|
|
|
@Override |
|
|
|
public Integer closeTransferreceiptRequestMain(Long id) { |
|
|
|
// 校验存在存在下级单据
|
|
|
|
TransferreceiptRequestMainDO mainDO = validateTransferreceiptRequestMainExists(id); |
|
|
|
Long count = transferreceiptJobMainMapper.selectByRequestNumber(mainDO.getNumber()); |
|
|
|
if(count > 0) { |
|
|
|
throw new ServiceException(TRANSFERRECEIPT_JOB_MAIN_EXISTS); |
|
|
|
} |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
boolean flag = requestStatusState.close(); |
|
|
|
if(!flag) { |
|
|
|
throw new ServiceException(TRANSFERRECEIPT_REQUEST_CANNOT_CLOSE); |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录
|
|
|
|
trendsApi.createTrends(id, "TransferReceiptRequest", "关闭了调拨入库申请", TrendsTypeEnum.UPDATE); |
|
|
|
return transferreceiptRequestMainMapper.updateById(mainDO); |
|
|
|
} |
|
|
|
|
|
|
|
@Transactional |
|
|
|
@Override |
|
|
|
public Integer reAddTransferreceiptRequestMain(Long id) { |
|
|
|
// 校验存在存在下级单据
|
|
|
|
TransferreceiptRequestMainDO mainDO = validateTransferreceiptRequestMainExists(id); |
|
|
|
Long count = transferreceiptJobMainMapper.selectByRequestNumber(mainDO.getNumber()); |
|
|
|
if(count > 0) { |
|
|
|
throw new ServiceException(TRANSFERRECEIPT_JOB_MAIN_EXISTS); |
|
|
|
} |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
boolean flag = requestStatusState.reAdd(); |
|
|
|
if(!flag) { |
|
|
|
throw new ServiceException(TRANSFERRECEIPT_REQUEST_CANNOT_RE_ADD); |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录
|
|
|
|
trendsApi.createTrends(id, "TransferReceiptRequest", "打开了调拨入库申请", TrendsTypeEnum.UPDATE); |
|
|
|
return transferreceiptRequestMainMapper.updateById(mainDO); |
|
|
|
} |
|
|
|
|
|
|
|
@Transactional |
|
|
|
@Override |
|
|
|
public Integer submitTransferreceiptRequestMain(Long id) { |
|
|
|
TransferreceiptRequestMainDO mainDO = validateTransferreceiptRequestMainExists(id); |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
boolean flag = requestStatusState.submit(mainDO.getAutoAgree(), mainDO.getAutoExecute()); |
|
|
|
if(!flag) { |
|
|
|
throw new ServiceException(TRANSFERRECEIPT_REQUEST_CANNOT_SUBMIT); |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
//调用自动执行方法
|
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { |
|
|
|
List<TransferreceiptRequestDetailDO> detailDOList = transferreceiptRequestDetailMapper.selectList(mainDO.getId()); |
|
|
|
this.generateJob(mainDO, detailDOList); |
|
|
|
} |
|
|
|
trendsApi.createTrends(id, "TransferReceiptRequest", "提交了调拨入库申请", TrendsTypeEnum.UPDATE); |
|
|
|
return transferreceiptRequestMainMapper.updateById(mainDO); |
|
|
|
} |
|
|
|
|
|
|
|
@Transactional |
|
|
|
@Override |
|
|
|
public Integer abortTransferreceiptRequestMain(Long id) { |
|
|
|
// 校验存在
|
|
|
|
TransferreceiptRequestMainDO mainDO = validateTransferreceiptRequestMainExists(id); |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
boolean flag = requestStatusState.refused(); |
|
|
|
if(!flag) { |
|
|
|
throw new ServiceException(TRANSFERRECEIPT_REQUEST_CANNOT_ABORT); |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
trendsApi.createTrends(id, "TransferReceiptRequest", "审批拒绝了调拨入库申请", TrendsTypeEnum.UPDATE); |
|
|
|
return transferreceiptRequestMainMapper.updateById(mainDO); |
|
|
|
} |
|
|
|
|
|
|
|
@Transactional |
|
|
|
@Override |
|
|
|
public Integer agreeTransferreceiptRequestMain(Long id) { |
|
|
|
// 校验存在
|
|
|
|
TransferreceiptRequestMainDO mainDO = validateTransferreceiptRequestMainExists(id); |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
boolean flag = requestStatusState.agree(mainDO.getAutoAgree()); |
|
|
|
if(!flag) { |
|
|
|
throw new ServiceException(TRANSFERRECEIPT_REQUEST_CANNOT_AGREE); |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
//调用自动执行方法
|
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { |
|
|
|
List<TransferreceiptRequestDetailDO> detailDOList = transferreceiptRequestDetailMapper.selectList(mainDO.getId()); |
|
|
|
this.generateJob(mainDO, detailDOList); |
|
|
|
} |
|
|
|
trendsApi.createTrends(id, "TransferReceiptRequest", "审批同意了调拨入库申请", TrendsTypeEnum.UPDATE); |
|
|
|
return transferreceiptRequestMainMapper.updateById(mainDO); |
|
|
|
} |
|
|
|
|
|
|
|
@Transactional |
|
|
|
@Override |
|
|
|
public Integer handleTransferreceiptRequestMain(Long id) { |
|
|
|
// 校验存在
|
|
|
|
TransferreceiptRequestMainDO mainDO = validateTransferreceiptRequestMainExists(id); |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
boolean flag = requestStatusState.handle(); |
|
|
|
if(!flag) { |
|
|
|
throw new ServiceException(TRANSFERRECEIPT_REQUEST_CANNOT_HANDLE); |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
//调用执行方法
|
|
|
|
List<TransferreceiptRequestDetailDO> detailDOList = transferreceiptRequestDetailMapper.selectList(mainDO.getId()); |
|
|
|
this.generateJob(mainDO, detailDOList); |
|
|
|
trendsApi.createTrends(id, "TransferReceiptRequest", "执行了调拨入库申请", TrendsTypeEnum.UPDATE); |
|
|
|
return transferreceiptRequestMainMapper.updateById(mainDO); |
|
|
|
} |
|
|
|
} |
|
|
|