|
|
@ -1,33 +1,70 @@ |
|
|
|
package com.win.module.wms.service.scrapRequest; |
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil; |
|
|
|
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.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.productscrapRequest.vo.*; |
|
|
|
import com.win.module.wms.controller.scrapRecord.vo.ScrapRecordDetailCreateReqVO; |
|
|
|
import com.win.module.wms.controller.scrapRecord.vo.ScrapRecordMainCreateReqVO; |
|
|
|
import com.win.module.wms.controller.scrapRequest.vo.*; |
|
|
|
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.convert.productscrapRequest.ProductscrapRequestDetailConvert; |
|
|
|
import com.win.module.wms.convert.productscrapRequest.ProductscrapRequestMainConvert; |
|
|
|
import com.win.module.wms.convert.scrapJob.ScrapJobDetailConvert; |
|
|
|
import com.win.module.wms.convert.scrapJob.ScrapJobMainConvert; |
|
|
|
import com.win.module.wms.convert.scrapRecord.ScrapRecordDetailConvert; |
|
|
|
import com.win.module.wms.convert.scrapRecord.ScrapRecordMainConvert; |
|
|
|
import com.win.module.wms.convert.scrapRequest.ScrapRequestDetailConvert; |
|
|
|
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.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.productscrapRequest.ProductscrapRequestDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; |
|
|
|
import com.win.module.wms.dal.dataobject.scrapJob.ScrapJobDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.scrapJob.ScrapJobMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.scrapRecord.ScrapRecordDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.scrapRecord.ScrapRecordMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.scrapRequest.ScrapRequestDetailDO; |
|
|
|
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.unplannedissueRequest.UnplannedissueRequestDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.unplannedreceiptRequest.UnplannedreceiptRequestMainDO; |
|
|
|
import com.win.module.wms.dal.mysql.scrapJob.ScrapJobDetailMapper; |
|
|
|
import com.win.module.wms.dal.mysql.scrapJob.ScrapJobMainMapper; |
|
|
|
import com.win.module.wms.dal.mysql.scrapRecord.ScrapRecordDetailMapper; |
|
|
|
import com.win.module.wms.dal.mysql.scrapRecord.ScrapRecordMainMapper; |
|
|
|
import com.win.module.wms.dal.mysql.scrapRequest.ScrapRequestDetailMapper; |
|
|
|
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.validation.annotation.Validated; |
|
|
@ -42,6 +79,7 @@ import com.win.module.wms.convert.scrapRequest.ScrapRequestMainConvert; |
|
|
|
import com.win.module.wms.dal.mysql.scrapRequest.ScrapRequestMainMapper; |
|
|
|
|
|
|
|
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.*; |
|
|
|
|
|
|
|
/** |
|
|
@ -55,42 +93,157 @@ public class ScrapRequestMainServiceImpl implements ScrapRequestMainService { |
|
|
|
|
|
|
|
@Resource |
|
|
|
private ScrapRequestMainMapper scrapRequestMainMapper; |
|
|
|
|
|
|
|
@Resource |
|
|
|
private ScrapRequestDetailMapper scrapRequestDetailMapper; |
|
|
|
|
|
|
|
@Resource |
|
|
|
private SerialNumberApi serialNumberApi; |
|
|
|
|
|
|
|
@Resource |
|
|
|
private LocationService locationService; |
|
|
|
|
|
|
|
@Resource |
|
|
|
private JobUtils jobUtils; |
|
|
|
|
|
|
|
@Resource |
|
|
|
private ItembasicService itembasicService; |
|
|
|
|
|
|
|
@Resource |
|
|
|
private TrendsApi trendsApi; |
|
|
|
|
|
|
|
@Resource |
|
|
|
private RequestsettingService requestsettingService; |
|
|
|
@Resource |
|
|
|
private AdminUserApi userApi; |
|
|
|
@Resource |
|
|
|
private RecordsettingService recordsettingService; |
|
|
|
@Resource |
|
|
|
private ScrapRecordMainMapper scrapRecordMainMapper; |
|
|
|
@Resource |
|
|
|
private ScrapRecordDetailMapper scrapRecordDetailMapper; |
|
|
|
@Resource |
|
|
|
private JobsettingService jobsettingService; |
|
|
|
@Resource |
|
|
|
private ScrapJobMainMapper scrapJobMainMapper; |
|
|
|
@Resource |
|
|
|
private ScrapJobDetailMapper scrapJobDetailMapper; |
|
|
|
@Resource |
|
|
|
private ExpectinService expectinService; |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
public Long createScrapRequestMain(ScrapRequestMainCreateReqVO createReqVO) { |
|
|
|
// Setting——>QReqS("ScrapRequest")
|
|
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ScrapRequest"); |
|
|
|
// 插入
|
|
|
|
ScrapRequestMainDO scrapRequestMain = validatorToCreate(createReqVO,requestsettingDO); |
|
|
|
//调用自动执行方法
|
|
|
|
if (RequestStatusEnum.HANDLING.getCode().equals(scrapRequestMain.getStatus())) { |
|
|
|
|
|
|
|
List<ScrapRequestDetailDO> detailDOList = scrapRequestDetailMapper.selectList(scrapRequestMain.getId()); |
|
|
|
this.generateJob(scrapRequestMain,detailDOList); |
|
|
|
} |
|
|
|
trendsApi.createTrends(requestsettingDO.getId(), "ScrapRequest", "增加了报废出库申请", TrendsTypeEnum.CREATE); |
|
|
|
return scrapRequestMain.getId(); |
|
|
|
} |
|
|
|
|
|
|
|
private void generateJob(ScrapRequestMainDO mainDO, List<ScrapRequestDetailDO> detailDOList) { |
|
|
|
//跳过任务直接生成记录
|
|
|
|
if("TRUE".equals(mainDO.getDirectCreateRecord())) { |
|
|
|
ScrapRecordMainCreateReqVO scrapRecordMainCreateReqVO = new ScrapRecordMainCreateReqVO(); |
|
|
|
BeanUtils.copyProperties(mainDO, scrapRecordMainCreateReqVO); |
|
|
|
scrapRecordMainCreateReqVO.setRequestNumber(mainDO.getNumber()); |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.SCRAP_RECORD.getCode()); |
|
|
|
scrapRecordMainCreateReqVO.setNumber(number); |
|
|
|
//增加业务类型
|
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ScrapRecord"); |
|
|
|
scrapRecordMainCreateReqVO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
scrapRecordMainCreateReqVO.setOutTransactionType(businesstypeDO.getOutTransactionType()); |
|
|
|
scrapRecordMainCreateReqVO.setInTransactionType(businesstypeDO.getInTransactionType()); |
|
|
|
String interFaceType = recordsettingService.selectRecordsettingExist("ScrapRecord").getInterfaceType(); |
|
|
|
scrapRecordMainCreateReqVO.setInterfaceType(interFaceType); |
|
|
|
scrapRecordMainCreateReqVO.setExecuteTime(LocalDateTime.now()); |
|
|
|
scrapRecordMainCreateReqVO.setActiveDate(LocalDateTime.now()); |
|
|
|
scrapRecordMainCreateReqVO.setAvailable("TRUE"); |
|
|
|
scrapRecordMainCreateReqVO.setDueTime(mainDO.getDueTime()); |
|
|
|
scrapRecordMainCreateReqVO.setId(null); |
|
|
|
scrapRecordMainCreateReqVO.setCreator(null); |
|
|
|
scrapRecordMainCreateReqVO.setCreateTime(null); |
|
|
|
ScrapRecordMainDO scrapRecordMainDO = ScrapRecordMainConvert.INSTANCE.convert(scrapRecordMainCreateReqVO); |
|
|
|
scrapRecordMainMapper.insert(scrapRecordMainDO); |
|
|
|
|
|
|
|
for(ScrapRequestDetailDO scrapRequestDetailDO : detailDOList) { |
|
|
|
ScrapRecordDetailCreateReqVO scrapRecordDetailCreateReqVO = new ScrapRecordDetailCreateReqVO(); |
|
|
|
BeanUtils.copyProperties(scrapRequestDetailDO, scrapRecordDetailCreateReqVO); |
|
|
|
scrapRecordDetailCreateReqVO.setNumber(number); |
|
|
|
scrapRecordDetailCreateReqVO.setMasterId(String.valueOf(scrapRequestDetailDO.getId())); |
|
|
|
scrapRecordDetailCreateReqVO.setInventoryStatus(scrapRequestDetailDO.getInventoryStatus()); |
|
|
|
scrapRecordDetailCreateReqVO.setFromLocationGroupCode(scrapRequestDetailDO.getFromLocationCode()); |
|
|
|
scrapRecordDetailCreateReqVO.setFromAreaCode(scrapRequestDetailDO.getFromLocationCode()); |
|
|
|
ScrapRecordDetailDO scrapRecordDetailDO = ScrapRecordDetailConvert.INSTANCE.convert(scrapRecordDetailCreateReqVO); |
|
|
|
scrapRecordDetailMapper.insert(scrapRecordDetailDO); |
|
|
|
} |
|
|
|
return; |
|
|
|
} |
|
|
|
// 任务 主表数据创建
|
|
|
|
ScrapJobMainDO scrapJobMainDO = ScrapJobMainConvert.INSTANCE.convert(mainDO); |
|
|
|
BeanUtils.copyProperties(mainDO,scrapJobMainDO); |
|
|
|
// DBT——>DBT3("ScrapJob")
|
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ScrapJob"); |
|
|
|
scrapJobMainDO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
// Setting——>QJobS("ScrapJob")
|
|
|
|
JobsettingDO jobsettingDO = jobsettingService.selectJobsettingExist("ScrapJob"); |
|
|
|
scrapJobMainDO.setRequestNumber(mainDO.getNumber()); |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.TRANSFER_DELIVER_JOB.getCode()); |
|
|
|
scrapJobMainDO.setRequestDueTime(mainDO.getDueTime()); |
|
|
|
scrapJobMainDO.setNumber(number); |
|
|
|
scrapJobMainDO.setId(null); |
|
|
|
scrapJobMainDO.setCreateTime(null); |
|
|
|
scrapJobMainDO.setCreator(userApi.getUser(getLoginUserId()).getId().toString()); |
|
|
|
scrapJobMainDO.setUpdateTime(null); |
|
|
|
scrapJobMainDO.setUpdater(null); |
|
|
|
scrapJobMainDO.setAutoComplete(jobsettingDO.getAutoComplete()); |
|
|
|
scrapJobMainDO.setAllowModifyLocation(jobsettingDO.getAllowModifyLocation()); |
|
|
|
scrapJobMainDO.setAllowModifyQty(jobsettingDO.getAllowModifyQty()); |
|
|
|
scrapJobMainDO.setAllowBiggerQty(jobsettingDO.getAllowBiggerQty()); |
|
|
|
scrapJobMainDO.setAllowSmallerQty(jobsettingDO.getAllowSmallerQty()); |
|
|
|
scrapJobMainDO.setAllowModifyInventoryStatus(jobsettingDO.getAllowModifyInventoryStatus()); |
|
|
|
scrapJobMainDO.setAllowContinuousScanning(jobsettingDO.getAllowContinuousScanning()); |
|
|
|
scrapJobMainDO.setAllowPartialComplete(jobsettingDO.getAllowPartialComplete()); |
|
|
|
scrapJobMainDO.setAllowModifyPackingNumber(jobsettingDO.getAllowModifyPackingNumber()); |
|
|
|
scrapJobMainDO.setAllowModifyBatch(jobsettingDO.getAllowModifyBach()); |
|
|
|
scrapJobMainDO.setStatus(JobStatusEnum.PENDING.getCode()); |
|
|
|
scrapJobMainDO.setInInventoryStatuses(businesstypeDO.getInInventoryStatuses());//入库库存状态范围
|
|
|
|
scrapJobMainDO.setOutInventoryStatuses(businesstypeDO.getOutInventoryStatuses());//出库库存状态范围
|
|
|
|
scrapJobMainMapper.insert(scrapJobMainDO); |
|
|
|
|
|
|
|
// 任务 子表数据创建
|
|
|
|
List<ExpectinCreateReqVO> expectinCreateReqVOList = new ArrayList<>(); |
|
|
|
List<ScrapJobDetailDO> scrapJobDetailDOList = new ArrayList<>(); |
|
|
|
for(ScrapRequestDetailDO scrapRequestDetailDO:detailDOList){ |
|
|
|
ScrapJobDetailDO scrapJobDetailDO = ScrapJobDetailConvert.INSTANCE.convert(scrapRequestDetailDO); |
|
|
|
BeanUtils.copyProperties(scrapRequestDetailDO, scrapJobDetailDO); |
|
|
|
scrapJobDetailDO.setId(null); |
|
|
|
scrapJobDetailDO.setCreator(userApi.getUser(getLoginUserId()).getId().toString()); |
|
|
|
scrapJobDetailDO.setCreateTime(null); |
|
|
|
scrapJobDetailDO.setUpdater(null); |
|
|
|
scrapJobDetailDO.setUpdateTime(null); |
|
|
|
scrapJobDetailDO.setMasterId(scrapJobMainDO.getId()); |
|
|
|
scrapJobDetailDO.setNumber(number); |
|
|
|
scrapJobDetailDOList.add(scrapJobDetailDO); |
|
|
|
|
|
|
|
//预计出
|
|
|
|
ExpectinCreateReqVO expectinCreateReqVO = new ExpectinCreateReqVO(); |
|
|
|
BeanUtils.copyProperties(scrapRequestDetailDO, expectinCreateReqVO); |
|
|
|
expectinCreateReqVO.setJobNumber(number); |
|
|
|
expectinCreateReqVO.setBusinessType(scrapJobMainDO.getBusinessType()); |
|
|
|
expectinCreateReqVO.setLocationCode(scrapRequestDetailDO.getFromLocationCode()); |
|
|
|
expectinCreateReqVO.setOwnerCode(scrapRequestDetailDO.getFromOwnerCode()); |
|
|
|
expectinCreateReqVO.setQty(scrapRequestDetailDO.getQty()); |
|
|
|
expectinCreateReqVOList.add(expectinCreateReqVO); |
|
|
|
} |
|
|
|
scrapJobDetailMapper.insertBatch(scrapJobDetailDOList); |
|
|
|
//增加预计入
|
|
|
|
expectinService.createExpectin(expectinCreateReqVOList); |
|
|
|
trendsApi.createTrends(scrapJobMainDO.getId(), "ScrapJob", "报废出库申请生成报废出库任务", TrendsTypeEnum.CREATE); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
private ScrapRequestMainDO validatorToCreate(ScrapRequestMainCreateReqVO createReqVO,RequestsettingDO requestsettingDO) { |
|
|
|
// DBT——>DBT3("ScrapRequest")
|
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ScrapRequest"); |
|
|
|
ScrapRequestMainDO scrapRequestMainDO = validateMainMethod(createReqVO, businesstypeDO, requestsettingDO); |
|
|
|
List<ScrapRequestDetailCreateReqVO> subList = createReqVO.getSubList(); |
|
|
@ -100,6 +253,10 @@ public class ScrapRequestMainServiceImpl implements ScrapRequestMainService { |
|
|
|
} |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); |
|
|
|
scrapRequestMainDO.setNumber(number); |
|
|
|
AdminUserRespDTO adminUserRespDTO = userApi.getUser(getLoginUserId()); |
|
|
|
scrapRequestMainDO.setDepartmentCode(String.valueOf(adminUserRespDTO.getDeptId())); |
|
|
|
scrapRequestMainDO.setInInventoryStatuses(businesstypeDO.getInInventoryStatuses()); |
|
|
|
scrapRequestMainDO.setOutInventoryStatuses(businesstypeDO.getOutInventoryStatuses()); |
|
|
|
scrapRequestMainMapper.insert(scrapRequestMainDO); |
|
|
|
for(ScrapRequestDetailDO detailDo : subDOList){ |
|
|
|
detailDo.setMasterId(scrapRequestMainDO.getId()); |
|
|
@ -111,22 +268,34 @@ public class ScrapRequestMainServiceImpl implements ScrapRequestMainService { |
|
|
|
|
|
|
|
|
|
|
|
private void validateDetailMethod(ScrapRequestDetailDO detailDo, BusinesstypeDO businesstypeDO, ScrapRequestMainDO mainDo) { |
|
|
|
// BQ——>QL
|
|
|
|
LocationDO locationDO = validatorLocation(detailDo.getFromLocationCode()); |
|
|
|
if(locationDO == null){ |
|
|
|
//提示:库位【location_code】无效
|
|
|
|
throw exception(SCRAP_REQUEST_LOCATIONCODE_INVALID); |
|
|
|
} |
|
|
|
if(!locationDO.getWarehouseCode().equals(mainDo.getFromWarehouseCode())){ |
|
|
|
// 仓库【from_warehouse_code】与库位【from_location_code】关系错误
|
|
|
|
throw exception(SCRAP_REQUEST_WAREHOSECODE_VALIDATE); |
|
|
|
} |
|
|
|
// BQ——>QI
|
|
|
|
ItembasicDO itembasic = validatorItembasic(detailDo.getItemCode()); |
|
|
|
if(itembasic == null){ |
|
|
|
// 物品【item_code】无效
|
|
|
|
throw exception(SCRAP_REQUEST_ITEMCODE_INVALID); |
|
|
|
} |
|
|
|
detailDo.setItemDesc1(itembasic.getDesc1()); |
|
|
|
detailDo.setItemDesc2(itembasic.getDesc2()); |
|
|
|
detailDo.setItemName(itembasic.getName()); |
|
|
|
detailDo.setUom(itembasic.getUom()); |
|
|
|
detailDo.setProjectCode(itembasic.getProject()); |
|
|
|
LocationDO locationDO = validatorLocation(detailDo.getFromLocationCode()); |
|
|
|
mainDo.setFromAreaCodes(locationDO.getAreaCode()); |
|
|
|
mainDo.setFromLocationTypes(locationDO.getCode()); |
|
|
|
// DBT——>DBT1——>LO
|
|
|
|
jobUtils.ifInToLocationType(detailDo.getFromLocationCode(),businesstypeDO); |
|
|
|
mainDo.setBusinessType(businesstypeDO.getCode()); |
|
|
|
mainDo.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); |
|
|
|
mainDo.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); |
|
|
|
// TB——>TB1
|
|
|
|
detailDo.setInventoryStatus("SCRAP"); |
|
|
|
String INVENTORY = detailDo.getInventoryStatus(); |
|
|
|
String[] inventory = INVENTORY.split(","); |
|
|
|
List<String> inventorystatus = Arrays.asList(inventory); |
|
|
|
String inventoryStatus = detailDo.getInventoryStatus(); |
|
|
|
String[] inventoryArray = inventoryStatus.split(","); |
|
|
|
List<String> inventorystatus = Arrays.asList(inventoryArray); |
|
|
|
List<BalanceDO> balanceDO = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(),detailDo.getPackingNumber(),detailDo.getBatch(), detailDo.getFromLocationCode(),inventorystatus); |
|
|
|
for(BalanceDO balance: balanceDO){ |
|
|
|
mainDo.setFromWarehouseCode(balance.getWarehouseCode()); |
|
|
@ -142,8 +311,8 @@ public class ScrapRequestMainServiceImpl implements ScrapRequestMainService { |
|
|
|
mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); |
|
|
|
mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); |
|
|
|
mainDo.setBusinessType(businesstypeDO.getCode()); |
|
|
|
mainDo.setFromLocationTypes(businesstypeDO.getInLocationTypes()); |
|
|
|
mainDo.setFromAreaCodes(businesstypeDO.getInAreaCodes()); |
|
|
|
mainDo.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); |
|
|
|
mainDo.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); |
|
|
|
return mainDo; |
|
|
|
} |
|
|
|
private ScrapRequestMainDO validatorToUpdate(ScrapRequestMainUpdateReqVO updateReqVO, RequestsettingDO requestsettingDO) { |
|
|
@ -163,9 +332,6 @@ public class ScrapRequestMainServiceImpl implements ScrapRequestMainService { |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
public void updateScrapRequestMain(ScrapRequestMainUpdateReqVO updateReqVO) { |
|
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ScrapRequest"); |
|
|
@ -174,7 +340,8 @@ public class ScrapRequestMainServiceImpl implements ScrapRequestMainService { |
|
|
|
// 更新
|
|
|
|
ScrapRequestMainDO scrapRequestMainDO = validatorToUpdate(updateReqVO, requestsettingDO); |
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(scrapRequestMainDO.getStatus())) { |
|
|
|
|
|
|
|
List<ScrapRequestDetailDO> detailDOList = scrapRequestDetailMapper.selectList(scrapRequestMainDO.getId()); |
|
|
|
this.generateJob(scrapRequestMainDO,detailDOList); |
|
|
|
} |
|
|
|
trendsApi.createTrends(requestsettingDO.getId(), "ScrapRequest", "增加了报废出库申请", TrendsTypeEnum.CREATE); |
|
|
|
} |
|
|
@ -190,10 +357,12 @@ public class ScrapRequestMainServiceImpl implements ScrapRequestMainService { |
|
|
|
scrapRequestMainMapper.deleteById(id); |
|
|
|
} |
|
|
|
|
|
|
|
private void validateScrapRequestMainExists(Long id) { |
|
|
|
if (scrapRequestMainMapper.selectById(id) == null) { |
|
|
|
private ScrapRequestMainDO validateScrapRequestMainExists(Long id) { |
|
|
|
ScrapRequestMainDO scrapRequestMainDO = scrapRequestMainMapper.selectById(id); |
|
|
|
if (scrapRequestMainDO == null) { |
|
|
|
throw exception(SCRAP_REQUEST_MAIN_NOT_EXISTS); |
|
|
|
} |
|
|
|
return scrapRequestMainDO; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
@ -346,6 +515,109 @@ public class ScrapRequestMainServiceImpl implements ScrapRequestMainService { |
|
|
|
return scrapRequestMainMapper.selectSeniorList(conditions); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public Integer closeScrapRequestMain(Long id) { |
|
|
|
// 校验存在存在下级单据
|
|
|
|
ScrapRequestMainDO mainDO = this.validateScrapRequestMainExists(id); |
|
|
|
Long count = scrapJobMainMapper.selectByRequestNumber(mainDO.getNumber()); |
|
|
|
if(count > 0) { |
|
|
|
throw new ServiceException(SCRAP_JOB_MAIN_EXISTS); |
|
|
|
} |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
boolean flag = requestStatusState.close(); |
|
|
|
if(!flag) { |
|
|
|
throw new ServiceException(SCRAP_REQUEST_CANNOT_CLOSE); |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录
|
|
|
|
trendsApi.createTrends(id, "ScrapRequest", "关闭了报废出库申请", TrendsTypeEnum.UPDATE); |
|
|
|
return scrapRequestMainMapper.updateById(mainDO); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public Integer reAddScrapRequestMain(Long id) { |
|
|
|
// 校验存在存在下级单据
|
|
|
|
ScrapRequestMainDO mainDO = this.validateScrapRequestMainExists(id); |
|
|
|
Long count = scrapJobMainMapper.selectByRequestNumber(mainDO.getNumber()); |
|
|
|
if(count > 0) { |
|
|
|
throw new ServiceException(SCRAP_JOB_MAIN_EXISTS); |
|
|
|
} |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
boolean flag = requestStatusState.reAdd(); |
|
|
|
if(!flag) { |
|
|
|
throw new ServiceException(SCRAP_REQUEST_CANNOT_RE_ADD); |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录
|
|
|
|
trendsApi.createTrends(id, "ScrapRequest", "打开了报废出库申请", TrendsTypeEnum.UPDATE); |
|
|
|
return scrapRequestMainMapper.updateById(mainDO); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public Integer submitScrapRequestMain(Long id) { |
|
|
|
ScrapRequestMainDO mainDO = this.validateScrapRequestMainExists(id); |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
boolean flag = requestStatusState.submit(mainDO.getAutoAgree(), mainDO.getAutoExecute()); |
|
|
|
if(!flag) { |
|
|
|
throw new ServiceException(SCRAP_REQUEST_CANNOT_SUBMIT); |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
//调用自动执行方法
|
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { |
|
|
|
List<ScrapRequestDetailDO> detailDOList = scrapRequestDetailMapper.selectList(mainDO.getId()); |
|
|
|
this.generateJob(mainDO,detailDOList); |
|
|
|
} |
|
|
|
trendsApi.createTrends(id, "ScrapRequest", "提交了报废出库申请", TrendsTypeEnum.UPDATE); |
|
|
|
return scrapRequestMainMapper.updateById(mainDO); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public Integer abortScrapRequestMain(Long id) { |
|
|
|
// 校验存在
|
|
|
|
ScrapRequestMainDO mainDO = this.validateScrapRequestMainExists(id); |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
boolean flag = requestStatusState.refused(); |
|
|
|
if(!flag) { |
|
|
|
throw new ServiceException(SCRAP_REQUEST_CANNOT_ABORT); |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
trendsApi.createTrends(id, "ScrapRequest", "审批拒绝了报废出库申请", TrendsTypeEnum.UPDATE); |
|
|
|
return scrapRequestMainMapper.updateById(mainDO); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public Integer agreeScrapRequestMain(Long id) { |
|
|
|
// 校验存在
|
|
|
|
ScrapRequestMainDO mainDO = this.validateScrapRequestMainExists(id); |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
boolean flag = requestStatusState.agree(mainDO.getAutoAgree()); |
|
|
|
if(!flag) { |
|
|
|
throw new ServiceException(SCRAP_REQUEST_CANNOT_AGREE); |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
//调用自动执行方法
|
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { |
|
|
|
List<ScrapRequestDetailDO> detailDOList = scrapRequestDetailMapper.selectList(mainDO.getId()); |
|
|
|
this.generateJob(mainDO,detailDOList); |
|
|
|
} |
|
|
|
trendsApi.createTrends(id, "ScrapRequest", "审批同意了报废出库申请", TrendsTypeEnum.UPDATE); |
|
|
|
return scrapRequestMainMapper.updateById(mainDO); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public Integer handleScrapRequestMain(Long id) { |
|
|
|
// 校验存在
|
|
|
|
ScrapRequestMainDO mainDO = this.validateScrapRequestMainExists(id); |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
boolean flag = requestStatusState.handle(); |
|
|
|
if(!flag) { |
|
|
|
throw new ServiceException(SCRAP_REQUEST_CANNOT_HANDLE); |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
//调用执行方法
|
|
|
|
List<ScrapRequestDetailDO> detailDOList = scrapRequestDetailMapper.selectList(mainDO.getId()); |
|
|
|
this.generateJob(mainDO,detailDOList); |
|
|
|
trendsApi.createTrends(id, "ScrapRequest", "执行了报废出库申请", TrendsTypeEnum.UPDATE); |
|
|
|
return scrapRequestMainMapper.updateById(mainDO); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|