@ -4,30 +4,60 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.exceptions.UtilException ;
import cn.hutool.core.exceptions.UtilException ;
import cn.hutool.json.JSONObject ;
import cn.hutool.json.JSONObject ;
import cn.hutool.json.JSONUtil ;
import cn.hutool.json.JSONUtil ;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper ;
import com.win.framework.common.exception.ServiceException ;
import com.win.framework.common.pojo.CustomConditions ;
import com.win.framework.common.pojo.CustomConditions ;
import com.win.framework.common.pojo.PageResult ;
import com.win.framework.common.pojo.PageResult ;
import com.win.framework.common.util.validation.ValidationUtils ;
import com.win.framework.common.util.validation.ValidationUtils ;
import com.win.framework.dict.core.util.DictFrameworkUtils ;
import com.win.framework.dict.core.util.DictFrameworkUtils ;
import com.win.module.infra.api.trends.TrendsApi ;
import com.win.module.infra.api.trends.TrendsApi ;
import com.win.module.infra.enums.TrendsTypeEnum ;
import com.win.module.infra.enums.TrendsTypeEnum ;
import com.win.module.system.api.dict.DictDataApi ;
import com.win.module.system.api.serialnumber.SerialNumberApi ;
import com.win.module.system.api.serialnumber.SerialNumberApi ;
import com.win.module.system.enums.serialNumber.RuleCodeEnum ;
import com.win.module.system.enums.serialNumber.RuleCodeEnum ;
import com.win.module.wms.controller.expectin.vo.ExpectinCreateReqVO ;
import com.win.module.wms.controller.expectout.vo.ExpectoutCreateReqVO ;
import com.win.module.wms.controller.issueRequest.vo.* ;
import com.win.module.wms.controller.issueRequest.vo.* ;
import com.win.module.wms.controller.purchasereceiptRecord.vo.PurchasereceiptRecordDetailCreateReqVO ;
import com.win.module.wms.controller.purchasereceiptRecord.vo.PurchasereceiptRecordMainCreateReqVO ;
import com.win.module.wms.controller.rule.vo.RuleRespVO ;
import com.win.module.wms.controller.rule.vo.RuleRespVO ;
import com.win.module.wms.convert.issueRequest.IssueRequestDetailConvert ;
import com.win.module.wms.convert.issueRequest.IssueRequestDetailConvert ;
import com.win.module.wms.convert.issueRequest.IssueRequestMainConvert ;
import com.win.module.wms.convert.issueRequest.IssueRequestMainConvert ;
import com.win.module.wms.convert.purchasereceiptRecord.PurchasereceiptRecordDetailConvert ;
import com.win.module.wms.convert.purchasereceiptRecord.PurchasereceiptRecordMainConvert ;
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.expectout.ExpectoutDO ;
import com.win.module.wms.dal.dataobject.issueJob.IssueJobDetailDO ;
import com.win.module.wms.dal.dataobject.issueJob.IssueJobMainDO ;
import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestDetailDO ;
import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestDetailDO ;
import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO ;
import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO ;
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.productionline.ProductionlineDO ;
import com.win.module.wms.dal.dataobject.productionline.ProductionlineDO ;
import com.win.module.wms.dal.dataobject.productionlineitem.ProductionlineitemDO ;
import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobDetailDO ;
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.requestsetting.RequestsettingDO ;
import com.win.module.wms.dal.dataobject.workstation.WorkstationDO ;
import com.win.module.wms.dal.dataobject.workstation.WorkstationDO ;
import com.win.module.wms.dal.mysql.balance.BalanceMapper ;
import com.win.module.wms.dal.mysql.expectout.ExpectoutMapper ;
import com.win.module.wms.dal.mysql.issueJob.IssueJobDetailMapper ;
import com.win.module.wms.dal.mysql.issueJob.IssueJobMainMapper ;
import com.win.module.wms.dal.mysql.issueRequest.IssueRequestDetailMapper ;
import com.win.module.wms.dal.mysql.issueRequest.IssueRequestDetailMapper ;
import com.win.module.wms.dal.mysql.issueRequest.IssueRequestMainMapper ;
import com.win.module.wms.dal.mysql.issueRequest.IssueRequestMainMapper ;
import com.win.module.wms.enums.DictTypeConstants ;
import com.win.module.wms.enums.DictTypeConstants ;
import com.win.module.wms.enums.job.JobStatusEnum ;
import com.win.module.wms.enums.job.JobStatusState ;
import com.win.module.wms.enums.request.RequestStatusEnum ;
import com.win.module.wms.enums.request.RequestStatusEnum ;
import com.win.module.wms.enums.request.RequestStatusState ;
import com.win.module.wms.service.balance.BalanceService ;
import com.win.module.wms.service.businesstype.BusinesstypeService ;
import com.win.module.wms.service.expectin.ExpectinService ;
import com.win.module.wms.service.expectout.ExpectoutService ;
import com.win.module.wms.service.itembasic.ItembasicService ;
import com.win.module.wms.service.itembasic.ItembasicService ;
import com.win.module.wms.service.jobsetting.JobsettingService ;
import com.win.module.wms.service.productionline.ProductionlineService ;
import com.win.module.wms.service.productionline.ProductionlineService ;
import com.win.module.wms.service.productionlineitem.ProductionlineitemService ;
import com.win.module.wms.service.productionlineitem.ProductionlineitemService ;
import com.win.module.wms.service.requestsetting.RequestsettingService ;
import com.win.module.wms.service.requestsetting.RequestsettingService ;
@ -35,12 +65,15 @@ import com.win.module.wms.service.rule.RuleService;
import com.win.module.wms.service.workshop.WorkshopService ;
import com.win.module.wms.service.workshop.WorkshopService ;
import com.win.module.wms.service.workstation.WorkstationService ;
import com.win.module.wms.service.workstation.WorkstationService ;
import com.win.module.wms.util.JobUtils ;
import com.win.module.wms.util.JobUtils ;
import org.springframework.beans.BeanUtils ;
import org.springframework.stereotype.Service ;
import org.springframework.stereotype.Service ;
import org.springframework.transaction.annotation.Transactional ;
import org.springframework.transaction.annotation.Transactional ;
import org.springframework.validation.annotation.Validated ;
import org.springframework.validation.annotation.Validated ;
import javax.annotation.Resource ;
import javax.annotation.Resource ;
import javax.validation.Validator ;
import javax.validation.Validator ;
import javax.xml.crypto.Data ;
import java.math.BigDecimal ;
import java.time.LocalDateTime ;
import java.time.LocalDateTime ;
import java.util.ArrayList ;
import java.util.ArrayList ;
import java.util.Collection ;
import java.util.Collection ;
@ -58,6 +91,24 @@ import static com.win.module.wms.enums.ErrorCodeConstants.*;
@Validated
@Validated
public class IssueRequestMainServiceImpl implements IssueRequestMainService {
public class IssueRequestMainServiceImpl implements IssueRequestMainService {
@Resource
private ExpectoutService expectoutService ;
@Resource
private ExpectinService expectinService ;
@Resource
private IssueJobDetailMapper issueJobDetailMapper ;
@Resource
private JobsettingService jobsettingService ;
@Resource
private ExpectoutMapper expectoutMapper ;
@Resource
private BalanceMapper balanceMapper ;
@Resource
private IssueJobMainMapper issueJobMainMapper ;
@Resource
private DictDataApi dictDataApi ;
@Resource
private BusinesstypeService businesstypeService ;
@Resource
@Resource
private IssueRequestMainMapper issueRequestMainMapper ;
private IssueRequestMainMapper issueRequestMainMapper ;
@Resource
@Resource
@ -86,27 +137,29 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
private TrendsApi trendsApi ;
private TrendsApi trendsApi ;
@Override
@Override
@Transactional
public Long createIssueRequestMain ( IssueRequestMainCreateReqVO createReqVO ) {
public Long createIssueRequestMain ( IssueRequestMainCreateReqVO createReqVO ) {
RequestsettingDO requestsettingDO = new RequestsettingDO ( ) ;
RequestsettingDO requestsettingDO = new RequestsettingDO ( ) ;
IssueRequestMainDO issueRequestMainDO = validatorToCreate ( createReqVO , requestsettingDO ) ;
IssueRequestMainDO issueRequestMainDO = validatorToCreate ( createReqVO , requestsettingDO ) ;
//调用自动执行方法
//调用自动执行方法
if ( RequestStatusEnum . HANDLING . getCode ( ) . equals ( issueRequestMainDO . getStatus ( ) ) ) {
if ( RequestStatusEnum . HANDLING . getCode ( ) . equals ( issueRequestMainDO . getStatus ( ) ) ) {
this . generateJob ( issueRequestMainDO , issueRequestDetailMapper . selectList ( issueRequestMainDO . getId ( ) ) ) ;
}
}
trendsApi . createTrends ( requestsetting DO. getId ( ) , "IssueRequest" , "增加了发料申请" , TrendsTypeEnum . CREATE ) ;
trendsApi . createTrends ( issueRequestMain DO. getId ( ) , "IssueRequest" , "增加了发料申请" , TrendsTypeEnum . CREATE ) ;
return issueRequestMainDO . getId ( ) ;
return issueRequestMainDO . getId ( ) ;
}
}
@Override
@Override
@Transactional
public void updateIssueRequestMain ( IssueRequestMainUpdateReqVO updateReqVO ) {
public void updateIssueRequestMain ( IssueRequestMainUpdateReqVO updateReqVO ) {
RequestsettingDO requestsettingDO = new RequestsettingDO ( ) ;
RequestsettingDO requestsettingDO = new RequestsettingDO ( ) ;
// 校验存在
// 校验存在
validateIssueRequestMainExists ( updateReqVO . getId ( ) ) ;
validateIssueRequestMainExists ( updateReqVO . getId ( ) ) ;
IssueRequestMainDO issueRequestMainDO = validatorToUpdate ( updateReqVO , requestsettingDO ) ;
IssueRequestMainDO issueRequestMainDO = validatorToUpdate ( updateReqVO , requestsettingDO ) ;
if ( RequestStatusEnum . HANDLING . getCode ( ) . equals ( issueRequestMainDO . getStatus ( ) ) ) {
if ( RequestStatusEnum . HANDLING . getCode ( ) . equals ( issueRequestMainDO . getStatus ( ) ) ) {
this . generateJob ( issueRequestMainDO , issueRequestDetailMapper . selectList ( issueRequestMainDO . getId ( ) ) ) ;
}
}
trendsApi . createTrends ( requestsetting DO. getId ( ) , "IssueRequest" , "增加 了发料申请" , TrendsTypeEnum . CRE ATE) ;
trendsApi . createTrends ( issueRequestMain DO. getId ( ) , "IssueRequest" , "更新 了发料申请" , TrendsTypeEnum . UPD ATE) ;
}
}
@Override
@Override
@ -117,10 +170,12 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
issueRequestMainMapper . deleteById ( id ) ;
issueRequestMainMapper . deleteById ( id ) ;
}
}
private void validateIssueRequestMainExists ( Long id ) {
private IssueRequestMainDO validateIssueRequestMainExists ( Long id ) {
if ( issueRequestMainMapper . selectById ( id ) = = null ) {
IssueRequestMainDO issueRequestMainDO = issueRequestMainMapper . selectById ( id ) ;
if ( issueRequestMainDO = = null ) {
throw exception ( ISSUE_REQUEST_MAIN_NOT_EXISTS ) ;
throw exception ( ISSUE_REQUEST_MAIN_NOT_EXISTS ) ;
}
}
return issueRequestMainDO ;
}
}
private void validateIssueRequestDetailExists ( Long id ) {
private void validateIssueRequestDetailExists ( Long id ) {
@ -180,9 +235,9 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
if ( CollUtil . isEmpty ( datas ) ) {
if ( CollUtil . isEmpty ( datas ) ) {
throw exception ( PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY ) ;
throw exception ( PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY ) ;
}
}
BusinesstypeDO businesstypeDO = jobUtils . selectDocumentSettingFromBusinessType ( "IssueRequest" ) ;
List < IssueRequestImportErrorVO > errorList = new ArrayList < > ( ) ;
List < IssueRequestImportErrorVO > errorList = new ArrayList < > ( ) ;
datas . forEach ( createReqVO - > {
datas . forEach ( createReqVO - > {
BusinesstypeDO businesstypeDO = new BusinesstypeDO ( ) ;
IssueRequestMainDO mainDo = IssueRequestMainConvert . INSTANCE . convert ( createReqVO ) ;
IssueRequestMainDO mainDo = IssueRequestMainConvert . INSTANCE . convert ( createReqVO ) ;
String messageMain = validateIssueRequestMainImport ( mainDo , businesstypeDO ) ;
String messageMain = validateIssueRequestMainImport ( mainDo , businesstypeDO ) ;
List < IssueRequestDetailCreateReqVO > subList = createReqVO . getSubList ( ) ;
List < IssueRequestDetailCreateReqVO > subList = createReqVO . getSubList ( ) ;
@ -191,7 +246,7 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
boolean flag = true ;
boolean flag = true ;
for ( IssueRequestDetailDO detailDO : subDOList ) {
for ( IssueRequestDetailDO detailDO : subDOList ) {
String messageDetail = validateIssueRequestDetailImport ( detailDO , mainDo , businesstypeDO ) ;
String messageDetail = validateIssueRequestDetailImport ( detailDO , mainDo , businesstypeDO ) ;
if ( ! messageMain . isEmpty ( ) | | messageDetail . isEmpty ( ) ) {
if ( ! messageMain . isEmpty ( ) | | ! messageDetail . isEmpty ( ) ) {
IssueRequestImportErrorVO importErrorVO = IssueRequestMainConvert . INSTANCE . convert ( createReqVO , detailDO ) ;
IssueRequestImportErrorVO importErrorVO = IssueRequestMainConvert . INSTANCE . convert ( createReqVO , detailDO ) ;
importErrorVO . setImportStatus ( "失败" ) ;
importErrorVO . setImportStatus ( "失败" ) ;
messageMain = messageMain + messageDetail ;
messageMain = messageMain + messageDetail ;
@ -216,6 +271,11 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
return errorList ;
return errorList ;
}
}
@Override
public List < IssueRequestMainDO > getIssueRequestMainList ( CustomConditions conditions ) {
return issueRequestMainMapper . selectSeniorList ( conditions ) ;
}
/ * *
/ * *
* 主表校验导入 , 并赋值一些参数
* 主表校验导入 , 并赋值一些参数
*
*
@ -268,8 +328,16 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
StringBuilder message = new StringBuilder ( ) ;
StringBuilder message = new StringBuilder ( ) ;
try {
try {
ItembasicDO itembasicDO = this . validatorItembasic ( detailDo . getItemCode ( ) ) ;
ItembasicDO itembasicDO = this . validatorItembasic ( detailDo . getItemCode ( ) ) ;
// 赋值物品相关信息
detailDo . setItemName ( itembasicDO . getName ( ) ) ;
detailDo . setItemDesc1 ( itembasicDO . getDesc1 ( ) ) ;
detailDo . setItemDesc2 ( itembasicDO . getDesc2 ( ) ) ;
detailDo . setProjectCode ( itembasicDO . getProject ( ) ) ;
try {
try {
this . validatorIfInType ( itembasicDO . getType ( ) , businesstypeDO ) ;
this . validatorIfInType ( itembasicDO . getType ( ) , businesstypeDO ) ;
if ( ! itembasicDO . getUom ( ) . equals ( detailDo . getUom ( ) ) ) {
message . append ( "计量单位【" ) . append ( dictDataApi . selectDictValue ( detailDo . getUom ( ) ) . getLabel ( ) ) . append ( "】错误,应该是【" ) . append ( dictDataApi . selectDictValue ( itembasicDO . getUom ( ) ) . getLabel ( ) ) . append ( "】" ) . append ( "," ) ;
}
} catch ( Exception ex ) {
} catch ( Exception ex ) {
message . append ( ex . getMessage ( ) ) . append ( "," ) ;
message . append ( ex . getMessage ( ) ) . append ( "," ) ;
}
}
@ -302,7 +370,7 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
if ( grounding = = null ) {
if ( grounding = = null ) {
message . append ( "未查找到该条上架策略" ) ;
message . append ( "未查找到该条上架策略" ) ;
} else {
} else {
JSONObject json = JSONUtil . parseObj ( grounding ) ;
JSONObject json = JSONUtil . parseObj ( grounding . getConfiguration ( ) ) ;
String locationCode = json . get ( "LocationCode" ) . toString ( ) ;
String locationCode = json . get ( "LocationCode" ) . toString ( ) ;
try {
try {
this . ifLocationCodeInRule ( detailDo . getItemCode ( ) , detailDo . getToLocationCode ( ) , locationCode ) ;
this . ifLocationCodeInRule ( detailDo . getItemCode ( ) , detailDo . getToLocationCode ( ) , locationCode ) ;
@ -320,7 +388,7 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
//新增方法(主和子)
//新增方法(主和子)
private IssueRequestMainDO validatorToCreate ( IssueRequestMainCreateReqVO createReqVO , RequestsettingDO requestsettingDO ) {
private IssueRequestMainDO validatorToCreate ( IssueRequestMainCreateReqVO createReqVO , RequestsettingDO requestsettingDO ) {
BusinesstypeDO businesstypeDO = new BusinesstypeDO ( ) ;
BusinesstypeDO businesstypeDO = jobUtils . selectDocumentSettingFromBusinessType ( "IssueRequest" ) ;
IssueRequestMainDO issueRequestMainDO = validateMainMethod ( createReqVO , businesstypeDO , requestsettingDO ) ;
IssueRequestMainDO issueRequestMainDO = validateMainMethod ( createReqVO , businesstypeDO , requestsettingDO ) ;
//子表校验
//子表校验
List < IssueRequestDetailCreateReqVO > subList = createReqVO . getSubList ( ) ;
List < IssueRequestDetailCreateReqVO > subList = createReqVO . getSubList ( ) ;
@ -334,23 +402,24 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
for ( IssueRequestDetailDO issueRequestDetailDO : subDOList ) {
for ( IssueRequestDetailDO issueRequestDetailDO : subDOList ) {
issueRequestDetailDO . setMasterId ( issueRequestMainDO . getId ( ) ) ;
issueRequestDetailDO . setMasterId ( issueRequestMainDO . getId ( ) ) ;
issueRequestDetailDO . setNumber ( issueRequestMainDO . getNumber ( ) ) ;
issueRequestDetailDO . setNumber ( issueRequestMainDO . getNumber ( ) ) ;
issueRequestDetailDO . setInventoryStatus ( businesstypeDO . getOutInventoryStatuses ( ) ) ;
}
}
issueRequestDetailMapper . insertBatch ( subDOList ) ;
issueRequestDetailMapper . insertBatch ( subDOList ) ;
return issueRequestMainDO ;
return issueRequestMainDO ;
}
}
//修改方法(主和子 )
//修改方法(主)
private IssueRequestMainDO validatorToUpdate ( IssueRequestMainUpdateReqVO updateReqVO , RequestsettingDO requestsettingDO ) {
private IssueRequestMainDO validatorToUpdate ( IssueRequestMainUpdateReqVO updateReqVO , RequestsettingDO requestsettingDO ) {
BusinesstypeDO businesstypeDO = new BusinesstypeDO ( ) ;
BusinesstypeDO businesstypeDO = jobUtils . selectDocumentSettingFromBusinessType ( "IssueRequest" ) ;
IssueRequestMainDO issueRequestMainDO = validateMainMethod ( updateReqVO , businesstypeDO , requestsettingDO ) ;
IssueRequestMainDO issueRequestMainDO = validateMainMethod ( updateReqVO , businesstypeDO , requestsettingDO ) ;
//子表校验
//子表校验
List < IssueRequestDetailUpdateReqVO > subList = updateReqVO . getSubList ( ) ;
// List<IssueRequestDetailUpdateReqVO> subList = updateReqVO.getSubList();
List < IssueRequestDetailDO > subDOList = IssueRequestDetailConvert . INSTANCE . convertList05 ( subList ) ;
// List<IssueRequestDetailDO> subDOList = IssueRequestDetailConvert.INSTANCE.convertList05(subList);
for ( IssueRequestDetailDO issueRequestDetailDO : subDOList ) {
// for (IssueRequestDetailDO issueRequestDetailDO : subDOList) {
validateDetailMethod ( issueRequestDetailDO , businesstypeDO , issueRequestMainDO ) ;
// validateDetailMethod(issueRequestDetailDO,businesstypeDO,issueRequestMainDO);
}
// }
issueRequestMainMapper . updateById ( issueRequestMainDO ) ;
issueRequestMainMapper . updateById ( issueRequestMainDO ) ;
issueRequestDetailMapper . updateBatch ( subDOList ) ;
// issueRequestDetailMapper.updateBatch(subDOList);
return issueRequestMainDO ;
return issueRequestMainDO ;
}
}
@ -376,21 +445,25 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
//校验子表公共方法(适用于新增/修改)
//校验子表公共方法(适用于新增/修改)
private void validateDetailMethod ( IssueRequestDetailDO issueRequestDetailDO , BusinesstypeDO businesstypeDO , IssueRequestMainDO issueRequestMainDO ) {
private void validateDetailMethod ( IssueRequestDetailDO issueRequestDetailDO , BusinesstypeDO businesstypeDO , IssueRequestMainDO issueRequestMainDO ) {
ItembasicDO itembasicDO = validatorItembasic ( issueRequestDetailDO . getItemCode ( ) ) ;
ItembasicDO itembasicDO = validatorItembasic ( issueRequestDetailDO . getItemCode ( ) ) ;
// 基础信息赋值
issueRequestDetailDO . setItemName ( itembasicDO . getName ( ) ) ;
issueRequestDetailDO . setItemDesc1 ( itembasicDO . getDesc1 ( ) ) ;
issueRequestDetailDO . setItemDesc2 ( itembasicDO . getDesc2 ( ) ) ;
issueRequestDetailDO . setProjectCode ( itembasicDO . getProject ( ) ) ;
this . validatorIfInType ( itembasicDO . getType ( ) , businesstypeDO ) ;
this . validatorIfInType ( itembasicDO . getType ( ) , businesstypeDO ) ;
this . ifUomSuccess ( itembasicDO . getUom ( ) , issueRequestDetailDO . getUom ( ) ) ;
this . ifUomSuccess ( itembasicDO . getUom ( ) , issueRequestDetailDO . getUom ( ) ) ;
ProductionlineDO productionlineDO = validatorProductionLineCode ( issueRequestDetailDO . getProductionLineCode ( ) ) ;
validatorProductionLineCode ( issueRequestDetailDO . getProductionLineCode ( ) ) ;
issueRequestDetailDO . setToLocationCode ( productionlineDO . getRawLocationCode ( ) ) ;
validatorWorkstation ( issueRequestDetailDO . getWorkStationCode ( ) , issueRequestMainDO . getWorkshopCode ( ) , issueRequestDetailDO . getProductionLineCode ( ) ) ;
WorkstationDO workstationDO = validatorWorkstation ( issueRequestDetailDO . getWorkStationCode ( ) , issueRequestMainDO . getWorkshopCode ( ) , issueRequestDetailDO . getProductionLineCode ( ) ) ;
ProductionlineitemDO productionlineitemDO = this . validatorProductionLineCodeAndpItemCodeExist ( issueRequestDetailDO . getProductionLineCode ( ) , issueRequestDetailDO . getItemCode ( ) ) ;
issueRequestDetailDO . setToLocationCode ( workstationDO . getRawLocationCode ( ) ) ;
issueRequestDetailDO . setToLocationCode ( productionlineitemDO . getRawLocationCode ( ) ) ;
this . validatorProductionLineCodeAndpItemCodeExist ( issueRequestDetailDO . getProductionLineCode ( ) , issueRequestDetailDO . getItemCode ( ) ) ;
// RuleRespVO grounding = ruleService.grounding(null, null, null, null, null, null, issueRequestDetailDO.getItemCode(), null, null, null, null, null, null);
RuleRespVO grounding = ruleService . grounding ( null , null , null , null , null , null , issueRequestDetailDO . getItemCode ( ) , null , null , null , null , null , null ) ;
// if (grounding == null) {
if ( grounding = = null ) {
// throw exception(555, "未查找到该条上架策略");
throw exception ( 555 , "未查找到该条上架策略" ) ;
// } else {
} else {
// JSONObject json = JSONUtil.parseObj(grounding.getConfiguration());
JSONObject json = JSONUtil . parseObj ( grounding ) ;
// String locationCode = json.get("LocationCode").toString();
String locationCode = json . get ( "LocationCode" ) . toString ( ) ;
// this.ifLocationCodeInRule(issueRequestDetailDO.getItemCode(), issueRequestDetailDO.getToLocationCode(), locationCode);
this . ifLocationCodeInRule ( issueRequestDetailDO . getItemCode ( ) , issueRequestDetailDO . getToLocationCode ( ) , locationCode ) ;
// }
}
}
}
private void validatorWorkshop ( String workshopCode ) {
private void validatorWorkshop ( String workshopCode ) {
@ -414,7 +487,359 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
return workstationService . selectWorkstationExist ( workStationCode , workshopCode , productionLineCode ) ;
return workstationService . selectWorkstationExist ( workStationCode , workshopCode , productionLineCode ) ;
}
}
private void validatorProductionLineCodeAndpItemCodeExist ( String productionLineCode , String itemCode ) {
private ProductionlineitemDO validatorProductionLineCodeAndpItemCodeExist ( String productionLineCode , String itemCode ) {
productionlineitemService . productionLineCodeAndpItemCodeExist ( productionLineCode , itemCode ) ;
return productionlineitemService . productionLineCodeAndpItemCodeExist ( productionLineCode , itemCode ) ;
}
@Override
@Transactional
public Integer closeIssueRequestMain ( Long id ) {
IssueRequestMainDO mainDO = validateIssueRequestMainExists ( id ) ;
// 校验存在存在下级单据
Long count = issueJobMainMapper . selectByRequestNumber ( mainDO . getNumber ( ) ) ;
if ( count > 0 ) {
throw new ServiceException ( ISSUE_REQUEST_JOB_EXISTS ) ;
}
RequestStatusState requestStatusState = new RequestStatusState ( mainDO . getStatus ( ) ) ;
boolean flag = requestStatusState . close ( ) ;
if ( ! flag ) {
throw new ServiceException ( ISSUE_REQUEST_MAIN_CANNOT_CLOSE ) ;
}
mainDO . setStatus ( requestStatusState . getState ( ) . getCode ( ) ) ;
//增加操作记录
trendsApi . createTrends ( id , "issueRequest" , "关闭了发料申请" , TrendsTypeEnum . UPDATE ) ;
return issueRequestMainMapper . updateById ( mainDO ) ;
}
@Override
@Transactional
public Integer reAddIssueRequestMain ( Long id ) {
IssueRequestMainDO mainDO = validateIssueRequestMainExists ( id ) ;
// 校验存在存在下级单据
Long count = issueJobMainMapper . selectByRequestNumber ( mainDO . getNumber ( ) ) ;
if ( count > 0 ) {
throw new ServiceException ( ISSUE_REQUEST_JOB_EXISTS ) ;
}
RequestStatusState requestStatusState = new RequestStatusState ( mainDO . getStatus ( ) ) ;
boolean flag = requestStatusState . reAdd ( ) ;
if ( ! flag ) {
throw new ServiceException ( ISSUE_REQUEST_MAIN_CANNOT_READD ) ;
}
mainDO . setStatus ( requestStatusState . getState ( ) . getCode ( ) ) ; //增加操作记录
trendsApi . createTrends ( id , "issueRequest" , "打开了发料申请" , TrendsTypeEnum . UPDATE ) ;
return issueRequestMainMapper . updateById ( mainDO ) ;
}
@Override
@Transactional
public Integer submitIssueRequestMain ( Long id ) {
IssueRequestMainDO mainDO = validateIssueRequestMainExists ( id ) ;
RequestStatusState requestStatusState = new RequestStatusState ( mainDO . getStatus ( ) ) ;
boolean flag = requestStatusState . submit ( mainDO . getAutoAgree ( ) , mainDO . getAutoExecute ( ) ) ;
if ( ! flag ) {
throw new ServiceException ( ISSUE_REQUEST_MAIN_CANNOT_SUBMIT ) ;
}
mainDO . setStatus ( requestStatusState . getState ( ) . getCode ( ) ) ;
//调用自动执行方法
if ( RequestStatusEnum . HANDLING . getCode ( ) . equals ( mainDO . getStatus ( ) ) ) {
this . generateJob ( mainDO , issueRequestDetailMapper . selectList ( mainDO . getId ( ) ) ) ;
}
trendsApi . createTrends ( id , "issueRequest" , "提交了发料申请" , TrendsTypeEnum . UPDATE ) ;
return issueRequestMainMapper . updateById ( mainDO ) ;
}
@Override
@Transactional
public Integer refusedIssueRequestMain ( Long id ) {
// 校验存在
IssueRequestMainDO mainDO = validateIssueRequestMainExists ( id ) ;
RequestStatusState requestStatusState = new RequestStatusState ( mainDO . getStatus ( ) ) ;
boolean flag = requestStatusState . refused ( ) ;
if ( ! flag ) {
throw new ServiceException ( ISSUE_REQUEST_MAIN_CANNOT_REFUSED ) ;
}
mainDO . setStatus ( requestStatusState . getState ( ) . getCode ( ) ) ;
trendsApi . createTrends ( id , "issueRequest" , "驳回了采购发料申请" , TrendsTypeEnum . UPDATE ) ;
return issueRequestMainMapper . updateById ( mainDO ) ;
}
@Override
@Transactional
public Integer agreeIssueRequestMain ( Long id ) {
// 校验存在
IssueRequestMainDO mainDO = validateIssueRequestMainExists ( id ) ;
RequestStatusState requestStatusState = new RequestStatusState ( mainDO . getStatus ( ) ) ;
boolean flag = requestStatusState . agree ( mainDO . getAutoExecute ( ) ) ;
if ( ! flag ) {
throw new ServiceException ( ISSUE_REQUEST_MAIN_CANNOT_AGREE ) ;
}
mainDO . setStatus ( requestStatusState . getState ( ) . getCode ( ) ) ;
//调用自动执行方法
if ( RequestStatusEnum . HANDLING . getCode ( ) . equals ( mainDO . getStatus ( ) ) ) {
this . generateJob ( mainDO , issueRequestDetailMapper . selectList ( mainDO . getId ( ) ) ) ;
}
trendsApi . createTrends ( id , "issueRequest" , "审批通过了发料申请" , TrendsTypeEnum . UPDATE ) ;
return issueRequestMainMapper . updateById ( mainDO ) ;
}
@Override
@Transactional
public Integer handleIssueRequestMain ( Long id ) {
// 校验存在
IssueRequestMainDO mainDO = validateIssueRequestMainExists ( id ) ;
RequestStatusState requestStatusState = new RequestStatusState ( mainDO . getStatus ( ) ) ;
boolean flag = requestStatusState . handle ( ) ;
if ( ! flag ) {
throw new ServiceException ( ISSUE_REQUEST_MAIN_CANNOT_HANDLE ) ;
}
mainDO . setStatus ( requestStatusState . getState ( ) . getCode ( ) ) ;
//调用执行方法
this . generateJob ( mainDO , issueRequestDetailMapper . selectList ( mainDO . getId ( ) ) ) ;
trendsApi . createTrends ( id , "issueRequest" , "执行了发料申请" , TrendsTypeEnum . UPDATE ) ;
return issueRequestMainMapper . updateById ( mainDO ) ;
}
/ * *
* 创建任务 OR 创建记录
* @param mainDO
* @param detailDO
* /
private void generateJob ( IssueRequestMainDO mainDO , List < IssueRequestDetailDO > detailDO ) {
//跳过任务直接生成记录
if ( "TRUE" . equals ( mainDO . getDirectCreateRecord ( ) ) ) {
// PurchasereceiptRecordMainCreateReqVO purchasereceiptRecordMainCreateReqVO = new PurchasereceiptRecordMainCreateReqVO();
// BeanUtils.copyProperties(mainDO, purchasereceiptRecordMainCreateReqVO);
// purchasereceiptRecordMainCreateReqVO.setRequestNumber(mainDO.getNumber());
// String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_RECORD.getCode());
// purchasereceiptRecordMainCreateReqVO.setNumber(number);
// //增加业务类型
// BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseReceiptRecord");
// purchasereceiptRecordMainCreateReqVO.setBusinessType(businesstypeDO.getCode());
// purchasereceiptRecordMainMapper.insert(PurchasereceiptRecordMainConvert.INSTANCE.convert(purchasereceiptRecordMainCreateReqVO));
// for(PurchasereceiptRequestDetailDO purchasereceiptRequestDetailDO : detailDOList) {
// PurchasereceiptRecordDetailCreateReqVO purchasereceiptRecordDetailCreateReqVO = new PurchasereceiptRecordDetailCreateReqVO();
// BeanUtils.copyProperties(purchasereceiptRequestDetailDO, purchasereceiptRecordDetailCreateReqVO);
// purchasereceiptRecordDetailCreateReqVO.setNumber(number);
// purchasereceiptRecordDetailMapper.insert(PurchasereceiptRecordDetailConvert.INSTANCE.convert(purchasereceiptRecordDetailCreateReqVO));
// }
// return;
}
// 任务主表信息
IssueJobMainDO issueJobMainDO = new IssueJobMainDO ( ) ;
issueJobMainDO . setRequestNumber ( mainDO . getNumber ( ) ) ;
issueJobMainDO . setWorkShopCode ( mainDO . getWorkshopCode ( ) ) ;
issueJobMainDO . setUseOnTheWayLocation ( mainDO . getUseOnTheWayLocation ( ) ) ;
issueJobMainDO . setFromWarehouseCode ( mainDO . getFromWarehouseCode ( ) ) ;
issueJobMainDO . setToWarehouseCode ( mainDO . getToWarehouseCode ( ) ) ;
issueJobMainDO . setRequestTime ( mainDO . getRequestTime ( ) ) ;
issueJobMainDO . setRequestDueTime ( mainDO . getDueTime ( ) ) ;
issueJobMainDO . setStatus ( JobStatusEnum . PENDING . getCode ( ) ) ;
issueJobMainDO . setDepartmentCode ( mainDO . getDepartmentCode ( ) ) ;
issueJobMainDO . setFromLocationTypes ( mainDO . getFromLocationTypes ( ) ) ;
issueJobMainDO . setToLocationTypes ( mainDO . getToLocationTypes ( ) ) ;
String number = serialNumberApi . generateCode ( RuleCodeEnum . ISSUE_JOB . getCode ( ) ) ;
issueJobMainDO . setNumber ( number ) ;
issueJobMainDO . setBusinessType ( mainDO . getBusinessType ( ) ) ;
issueJobMainDO . setCreateTime ( LocalDateTime . now ( ) ) ;
issueJobMainDO . setFromAreaCodes ( mainDO . getFromAreaCodes ( ) ) ;
issueJobMainDO . setToAreaCodes ( mainDO . getToAreaCodes ( ) ) ;
issueJobMainDO . setId ( null ) ;
// 获取任务单据设置
JobsettingDO jobsettingDO = jobsettingService . selectJobsettingExist ( "IssueJob" ) ;
issueJobMainDO . setAutoComplete ( jobsettingDO . getAutoComplete ( ) ) ;
issueJobMainDO . setAllowModifyLocation ( jobsettingDO . getAllowModifyLocation ( ) ) ;
issueJobMainDO . setAllowModifyQty ( jobsettingDO . getAllowModifyQty ( ) ) ;
issueJobMainDO . setAllowBiggerQty ( jobsettingDO . getAllowBiggerQty ( ) ) ;
issueJobMainDO . setAllowSmallerQty ( jobsettingDO . getAllowSmallerQty ( ) ) ;
issueJobMainDO . setAllowModifyInventoryStatus ( jobsettingDO . getAllowModifyInventoryStatus ( ) ) ;
issueJobMainDO . setAllowContinuousScanning ( jobsettingDO . getAllowContinuousScanning ( ) ) ;
issueJobMainDO . setAllowPartialComplete ( jobsettingDO . getAllowPartialComplete ( ) ) ;
issueJobMainDO . setAllowModifyPackingNumber ( jobsettingDO . getAllowModifyPackingNumber ( ) ) ;
issueJobMainDO . setAllowModifyBatch ( jobsettingDO . getAllowModifyBach ( ) ) ;
issueJobMainMapper . insert ( issueJobMainDO ) ;
List < IssueJobDetailDO > issueJobDetailDOList = new ArrayList < > ( ) ;
List < ExpectinCreateReqVO > expectinCreateReqVOList = new ArrayList < > ( ) ;
List < ExpectoutCreateReqVO > expectoutCreateReqVOList = new ArrayList < > ( ) ;
// 根据发料申请子表数据进行分析
detailDO . forEach ( item - > {
// 批次策略
RuleRespVO ruleRespVOBatch = ruleService . batch ( null , null , null , null , null , item . getProjectCode ( ) , item . getItemCode ( ) ) ;
JSONObject jsonObjectBatch = JSONUtil . parseObj ( ruleRespVOBatch . getConfiguration ( ) ) ;
// 下架策略
RuleRespVO ruleRespVOOffShelf = ruleService . offShelf ( null , null , null , null , null , item . getProjectCode ( ) , item . getItemCode ( ) , null , null , null ) ;
JSONObject jsonObjectOffShelf = JSONUtil . parseObj ( ruleRespVOOffShelf . getConfiguration ( ) ) ;
// 查询库存余额
QueryWrapper queryWrapper = new QueryWrapper ( ) ;
queryWrapper . select ( "item_code" , "batch" , "SUM(qty) as qty" , "packing_number" , "container_number" , "warehouse_code" , "area_code" , "location_group_code" , "location_code" , "produce_date" , "arrive_date" ) ;
queryWrapper . eq ( "item_code" , item . getItemCode ( ) ) ;
queryWrapper . eq ( "inventory_status" , item . getInventoryStatus ( ) ) ;
// 根据下架策略 作为查询库存余额条件
// 仓库
if ( jsonObjectOffShelf . get ( "WarehouseCode" ) ! = null & & ! jsonObjectOffShelf . get ( "WarehouseCode" ) . equals ( "" ) ) {
queryWrapper . eq ( "warehouse_code" , jsonObjectOffShelf . get ( "WarehouseCode" ) ) ;
}
// 库区
if ( jsonObjectOffShelf . get ( "AreaCode" ) ! = null & & ! jsonObjectOffShelf . get ( "AreaCode" ) . equals ( "" ) ) {
queryWrapper . eq ( "area_code" , jsonObjectOffShelf . get ( "AreaCode" ) ) ;
}
// 库位组
if ( jsonObjectOffShelf . get ( "LocationGroupCode" ) ! = null & & ! jsonObjectOffShelf . get ( "LocationGroupCode" ) . equals ( "" ) ) {
queryWrapper . eq ( "location_group_code" , jsonObjectOffShelf . get ( "LocationGroupCode" ) ) ;
}
// 库位
if ( jsonObjectOffShelf . get ( "LocationCode" ) ! = null & & ! jsonObjectOffShelf . get ( "LocationCode" ) . equals ( "" ) ) {
queryWrapper . eq ( "location_code" , jsonObjectOffShelf . get ( "LocationCode" ) ) ;
}
// 根据下架策略 作为查询库存余额分组
// 发料包装类型——按 包装
if ( jsonObjectOffShelf . get ( "IssueStorageType" ) ! = null & & jsonObjectOffShelf . get ( "IssueStorageType" ) . equals ( "1" ) ) {
queryWrapper . groupBy ( "packing_number" ) ;
}
// 发料包装类型——按 容器
if ( jsonObjectOffShelf . get ( "IssueStorageType" ) ! = null & & jsonObjectOffShelf . get ( "IssueStorageType" ) . equals ( "2" ) ) {
queryWrapper . groupBy ( "container_number" ) ;
}
// 发料包装类型——按 单件
if ( jsonObjectOffShelf . get ( "IssueStorageType" ) ! = null & & jsonObjectOffShelf . get ( "IssueStorageType" ) . equals ( "3" ) ) {
queryWrapper . groupBy ( "item_code" , "batch" , "qty" , "packing_number" , "container_number" , "warehouse_code" , "area_code" , "location_group_code" , "location_code" , "expire_date" , "produce_date" , "arrive_date" ) ;
}
// 根据批次策略 作为查询库存余额排序
// 批次类型——按 生产时间
if ( jsonObjectBatch . get ( "BatchType" ) ! = null & & jsonObjectBatch . get ( "BatchType" ) . equals ( "0" ) ) {
// ASC = 0,正向
if ( jsonObjectBatch . get ( "BatchDirection" ) ! = null & & jsonObjectBatch . get ( "BatchDirection" ) . equals ( "0" ) ) {
queryWrapper . orderByAsc ( "produce_date" ) ;
}
// DESC = 1,逆向
if ( jsonObjectBatch . get ( "BatchDirection" ) ! = null & & jsonObjectBatch . get ( "BatchDirection" ) . equals ( "1" ) ) {
queryWrapper . orderByDesc ( "produce_date" ) ;
}
}
// 批次类型——按 到货时间
if ( jsonObjectBatch . get ( "BatchType" ) ! = null & & jsonObjectBatch . get ( "BatchType" ) . equals ( "1" ) ) {
// ASC = 0,正向
if ( jsonObjectBatch . get ( "BatchDirection" ) ! = null & & jsonObjectBatch . get ( "BatchDirection" ) . equals ( "0" ) ) {
queryWrapper . orderByAsc ( "arrive_date" ) ;
}
// DESC = 1,逆向
if ( jsonObjectBatch . get ( "BatchDirection" ) ! = null & & jsonObjectBatch . get ( "BatchDirection" ) . equals ( "1" ) ) {
queryWrapper . orderByDesc ( "arrive_date" ) ;
}
}
// 批次类型——按 失效时间
if ( jsonObjectBatch . get ( "BatchType" ) ! = null & & jsonObjectBatch . get ( "BatchType" ) . equals ( "2" ) ) {
// ASC = 0,正向
if ( jsonObjectBatch . get ( "BatchDirection" ) ! = null & & jsonObjectBatch . get ( "BatchDirection" ) . equals ( "0" ) ) {
queryWrapper . orderByAsc ( "expire_date" ) ;
}
// DESC = 1,逆向
if ( jsonObjectBatch . get ( "BatchDirection" ) ! = null & & jsonObjectBatch . get ( "BatchDirection" ) . equals ( "1" ) ) {
queryWrapper . orderByDesc ( "expire_date" ) ;
}
}
// 批次类型——按 供应商批次
if ( jsonObjectBatch . get ( "BatchType" ) ! = null & & jsonObjectBatch . get ( "BatchType" ) . equals ( "3" ) ) {
// TODO: 供应商批次 ??? 不知道怎么搞了
}
// 批次类型——按 供应商优先级
if ( jsonObjectBatch . get ( "BatchType" ) ! = null & & jsonObjectBatch . get ( "BatchType" ) . equals ( "4" ) ) {
// TODO: 供应商优先级 ??? 不知道怎么搞了
}
// 批次类型——按 其它批次
if ( jsonObjectBatch . get ( "BatchType" ) ! = null & & jsonObjectBatch . get ( "BatchType" ) . equals ( "5" ) ) {
// ASC = 0,正向
if ( jsonObjectBatch . get ( "BatchDirection" ) ! = null & & jsonObjectBatch . get ( "BatchDirection" ) . equals ( "0" ) ) {
queryWrapper . orderByAsc ( "batch" ) ;
}
// DESC = 1,逆向
if ( jsonObjectBatch . get ( "BatchDirection" ) ! = null & & jsonObjectBatch . get ( "BatchDirection" ) . equals ( "1" ) ) {
queryWrapper . orderByDesc ( "batch" ) ;
}
}
// 数量排序方向 正向
if ( jsonObjectOffShelf . get ( "QtyOrderDirection" ) ! = null & & jsonObjectOffShelf . get ( "QtyOrderDirection" ) . equals ( "ASC" ) ) {
queryWrapper . orderByAsc ( "qty" ) ;
}
// 数量排序方向 逆向
if ( jsonObjectOffShelf . get ( "QtyOrderDirection" ) ! = null & & jsonObjectOffShelf . get ( "QtyOrderDirection" ) . equals ( "DESC" ) ) {
queryWrapper . orderByDesc ( "qty" ) ;
}
// 任务子表数据
List < BalanceDO > balanceDOListJob = new ArrayList < > ( ) ;
List < BalanceDO > balanceDOList = balanceMapper . selectList ( queryWrapper ) ;
BigDecimal countQty = new BigDecimal ( 0 . 000000 ) ;
for ( BalanceDO balanceDO : balanceDOList ) {
// 查询 预计出 求和 数量
// TODO: 后续完善 根据 管理精度查询
QueryWrapper queryWrapperExpectout = new QueryWrapper ( ) ;
queryWrapperExpectout . select ( "SUM(qty) as qty" ) ;
queryWrapperExpectout . eq ( "item_code" , balanceDO . getItemCode ( ) ) ;
if ( balanceDO . getPackingNumber ( ) ! = null & & ! balanceDO . getPackingNumber ( ) . equals ( "" ) ) queryWrapperExpectout . eq ( "packing_number" , balanceDO . getPackingNumber ( ) ) ;
if ( balanceDO . getBatch ( ) ! = null & & ! balanceDO . getBatch ( ) . equals ( "" ) ) queryWrapperExpectout . eq ( "batch" , balanceDO . getBatch ( ) ) ;
queryWrapperExpectout . groupBy ( "item_code" , "packing_number" , "batch" ) ;
ExpectoutDO expectoutDO = expectoutMapper . selectOne ( queryWrapperExpectout ) ;
BigDecimal countQtyExpectout = new BigDecimal ( 0 . 000000 ) ;
if ( expectoutDO ! = null ) {
countQtyExpectout = expectoutDO . getQty ( ) ;
}
// balanceDO.getQty().subtract(countQtyExpectout) 扣减预计出数量
countQty = countQty . add ( balanceDO . getQty ( ) . subtract ( countQtyExpectout ) ) ;
balanceDOListJob . add ( balanceDO ) ;
// 数据列表循环累加 直到总和大于等于当前物品的qty {countQty >= balanceDO.getQty()}
if ( countQty . compareTo ( item . getQty ( ) ) ! = - 1 ) {
break ;
}
}
// 根据 查询出所需数据 解析成 任务子表数据
balanceDOListJob . forEach ( balanceDOItem - > {
IssueJobDetailDO issueJobDetailDO = new IssueJobDetailDO ( ) ;
issueJobDetailDO . setId ( null ) ;
issueJobDetailDO . setProductionLineCode ( item . getProductionLineCode ( ) ) ;
issueJobDetailDO . setWorkStationCode ( item . getWorkStationCode ( ) ) ;
issueJobDetailDO . setOnTheWayLocationCode ( issueJobDetailDO . getOnTheWayLocationCode ( ) ) ;
issueJobDetailDO . setPackingNumber ( balanceDOItem . getPackingNumber ( ) ) ;
issueJobDetailDO . setContainerNumber ( balanceDOItem . getContainerNumber ( ) ) ;
issueJobDetailDO . setBatch ( balanceDOItem . getBatch ( ) ) ;
issueJobDetailDO . setFromLocationCode ( balanceDOItem . getLocationCode ( ) ) ;
issueJobDetailDO . setToLocationCode ( item . getToLocationCode ( ) ) ;
issueJobDetailDO . setItemCode ( item . getItemCode ( ) ) ;
issueJobDetailDO . setItemName ( item . getItemName ( ) ) ;
issueJobDetailDO . setItemDesc1 ( item . getItemDesc1 ( ) ) ;
issueJobDetailDO . setItemDesc2 ( item . getItemDesc2 ( ) ) ;
issueJobDetailDO . setProjectCode ( item . getProjectCode ( ) ) ;
issueJobDetailDO . setQty ( balanceDOItem . getQty ( ) ) ;
issueJobDetailDO . setUom ( item . getUom ( ) ) ;
issueJobDetailDO . setToOwnerCode ( item . getToOwnerCode ( ) ) ;
issueJobDetailDO . setFromOwnerCode ( item . getFromOwnerCode ( ) ) ;
issueJobDetailDO . setNumber ( issueJobMainDO . getNumber ( ) ) ;
issueJobDetailDO . setMasterId ( issueJobMainDO . getId ( ) ) ;
issueJobDetailDO . setInventoryStatus ( item . getInventoryStatus ( ) ) ;
issueJobDetailDOList . add ( issueJobDetailDO ) ;
//预计入
ExpectinCreateReqVO expectinCreateReqVO = new ExpectinCreateReqVO ( ) ;
BeanUtils . copyProperties ( issueJobDetailDO , expectinCreateReqVO ) ;
expectinCreateReqVO . setJobNumber ( number ) ;
expectinCreateReqVO . setBusinessType ( issueJobMainDO . getBusinessType ( ) ) ;
expectinCreateReqVO . setLocationCode ( issueJobDetailDO . getFromLocationCode ( ) ) ;
expectinCreateReqVO . setOwnerCode ( issueJobDetailDO . getFromOwnerCode ( ) ) ;
expectinCreateReqVOList . add ( expectinCreateReqVO ) ;
//预计出
ExpectoutCreateReqVO expectoutCreateReqVO = new ExpectoutCreateReqVO ( ) ;
BeanUtils . copyProperties ( issueJobDetailDO , expectoutCreateReqVO ) ;
expectoutCreateReqVO . setJobNumber ( number ) ;
expectoutCreateReqVO . setBusinessType ( issueJobMainDO . getBusinessType ( ) ) ;
expectoutCreateReqVO . setLocationCode ( issueJobDetailDO . getFromLocationCode ( ) ) ;
expectoutCreateReqVO . setOwnerCode ( issueJobDetailDO . getFromOwnerCode ( ) ) ;
expectoutCreateReqVOList . add ( expectoutCreateReqVO ) ;
} ) ;
} ) ;
issueJobDetailMapper . insertBatch ( issueJobDetailDOList ) ;
//增加预计入
expectinService . createExpectin ( expectinCreateReqVOList ) ;
//增加预计出
expectoutService . createExpectout ( expectoutCreateReqVOList ) ;
trendsApi . createTrends ( issueJobMainDO . getId ( ) , "issueJob" , "发料申请生成发料任务" , TrendsTypeEnum . CREATE ) ;
}
}
}
}