|
|
@ -1,24 +1,85 @@ |
|
|
|
package com.win.module.wms.service.productreceiptRequest; |
|
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil; |
|
|
|
import cn.hutool.core.collection.CollUtil; |
|
|
|
import cn.hutool.core.exceptions.UtilException; |
|
|
|
import cn.hutool.json.JSONObject; |
|
|
|
import cn.hutool.json.JSONUtil; |
|
|
|
import com.win.framework.common.exception.ServiceException; |
|
|
|
import com.win.framework.common.pojo.CustomConditions; |
|
|
|
import com.win.framework.common.pojo.PageResult; |
|
|
|
import com.win.module.wms.controller.productreceiptRequest.vo.ProductreceiptRequestMainCreateReqVO; |
|
|
|
import com.win.module.wms.controller.productreceiptRequest.vo.ProductreceiptRequestMainExportReqVO; |
|
|
|
import com.win.module.wms.controller.productreceiptRequest.vo.ProductreceiptRequestMainPageReqVO; |
|
|
|
import com.win.module.wms.controller.productreceiptRequest.vo.ProductreceiptRequestMainUpdateReqVO; |
|
|
|
import com.win.framework.common.util.validation.ValidationUtils; |
|
|
|
import com.win.framework.dict.core.util.DictFrameworkUtils; |
|
|
|
import com.win.module.infra.api.trends.TrendsApi; |
|
|
|
import com.win.module.infra.enums.TrendsTypeEnum; |
|
|
|
import com.win.module.system.api.dict.DictDataApi; |
|
|
|
import com.win.module.system.api.serialnumber.SerialNumberApi; |
|
|
|
import com.win.module.system.api.user.AdminUserApi; |
|
|
|
import com.win.module.system.enums.serialNumber.RuleCodeEnum; |
|
|
|
import com.win.module.wms.controller.expectin.vo.ExpectinCreateReqVO; |
|
|
|
import com.win.module.wms.controller.productreceiptRequest.vo.*; |
|
|
|
import com.win.module.wms.controller.rule.vo.RuleRespVO; |
|
|
|
import com.win.module.wms.convert.productreceiptRequest.ProductreceiptRequestDetailConvert; |
|
|
|
import com.win.module.wms.convert.productreceiptRequest.ProductreceiptRequestMainConvert; |
|
|
|
import com.win.module.wms.dal.dataobject.accountcalendar.AccountcalendarDO; |
|
|
|
import com.win.module.wms.dal.dataobject.backflushRequest.BackflushRequestDetailbDO; |
|
|
|
import com.win.module.wms.dal.dataobject.bom.BomDO; |
|
|
|
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; |
|
|
|
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.IssueRequestMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; |
|
|
|
import com.win.module.wms.dal.dataobject.itempackaging.ItempackagingDO; |
|
|
|
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.productreceiptJob.ProductreceiptJobDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.productreceiptJob.ProductreceiptJobMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.productreceiptRequest.ProductreceiptRequestDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.productreceiptRequest.ProductreceiptRequestMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; |
|
|
|
import com.win.module.wms.dal.dataobject.workstation.WorkstationDO; |
|
|
|
import com.win.module.wms.dal.mysql.backflushRequest.BackflushRequestDetailbMapper; |
|
|
|
import com.win.module.wms.dal.mysql.productreceiptJob.ProductreceiptJobDetailMapper; |
|
|
|
import com.win.module.wms.dal.mysql.productreceiptJob.ProductreceiptJobMainMapper; |
|
|
|
import com.win.module.wms.dal.mysql.productreceiptRequest.ProductreceiptRequestDetailMapper; |
|
|
|
import com.win.module.wms.dal.mysql.productreceiptRequest.ProductreceiptRequestMainMapper; |
|
|
|
import com.win.module.wms.dal.mysql.purchasereceiptJob.PurchasereceiptJobMainMapper; |
|
|
|
import com.win.module.wms.enums.DictTypeConstants; |
|
|
|
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.backflushRequest.BackflushRequestDetailbService; |
|
|
|
import com.win.module.wms.service.bom.BomService; |
|
|
|
import com.win.module.wms.service.expectin.ExpectinService; |
|
|
|
import com.win.module.wms.service.itembasic.ItembasicService; |
|
|
|
import com.win.module.wms.service.itempackaging.ItempackagingService; |
|
|
|
import com.win.module.wms.service.jobsetting.JobsettingService; |
|
|
|
import com.win.module.wms.service.productionline.ProductionlineService; |
|
|
|
import com.win.module.wms.service.productionlineitem.ProductionlineitemService; |
|
|
|
import com.win.module.wms.service.requestsetting.RequestsettingService; |
|
|
|
import com.win.module.wms.service.shift.ShiftService; |
|
|
|
import com.win.module.wms.service.team.TeamService; |
|
|
|
import com.win.module.wms.service.workshop.WorkshopService; |
|
|
|
import com.win.module.wms.service.workstation.WorkstationService; |
|
|
|
import com.win.module.wms.util.JobUtils; |
|
|
|
import org.springframework.beans.BeanUtils; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
import org.springframework.validation.annotation.Validated; |
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
|
import javax.validation.Validator; |
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.time.LocalDateTime; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.Collection; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Map; |
|
|
|
|
|
|
|
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; |
|
|
|
import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTRECEIPT_REQUEST_MAIN_NOT_EXISTS; |
|
|
|
import static com.win.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; |
|
|
|
import static com.win.module.wms.enums.ErrorCodeConstants.*; |
|
|
|
|
|
|
|
/** |
|
|
|
* 制品收货申请主 Service 实现类 |
|
|
@ -29,25 +90,189 @@ import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTRECEIPT_REQUEST |
|
|
|
@Validated |
|
|
|
public class ProductreceiptRequestMainServiceImpl implements ProductreceiptRequestMainService { |
|
|
|
|
|
|
|
@Resource |
|
|
|
private ProductreceiptJobDetailMapper productreceiptJobDetailMapper; |
|
|
|
@Resource |
|
|
|
private ExpectinService expectinService; |
|
|
|
@Resource |
|
|
|
private JobsettingService jobsettingService; |
|
|
|
@Resource |
|
|
|
private ProductreceiptJobMainMapper productreceiptJobMainMapper; |
|
|
|
@Resource |
|
|
|
private BackflushRequestDetailbService backflushRequestDetailbSerivce; |
|
|
|
@Resource |
|
|
|
private AdminUserApi userApi; |
|
|
|
@Resource |
|
|
|
private BackflushRequestDetailbMapper backflushRequestDetailbMapper; |
|
|
|
@Resource |
|
|
|
private BomService bomService; |
|
|
|
@Resource |
|
|
|
private ProductreceiptRequestDetailMapper productreceiptRequestDetailMapper; |
|
|
|
@Resource |
|
|
|
private WorkstationService workstationService; |
|
|
|
@Resource |
|
|
|
private ItempackagingService itempackagingService; |
|
|
|
@Resource |
|
|
|
private ProductionlineitemService productionlineitemService; |
|
|
|
@Resource |
|
|
|
private ProductionlineService productionlineService; |
|
|
|
@Resource |
|
|
|
private DictDataApi dictDataApi; |
|
|
|
@Resource |
|
|
|
private ItembasicService itembasicService; |
|
|
|
@Resource |
|
|
|
private Validator validator; |
|
|
|
@Resource |
|
|
|
private ShiftService shiftService; |
|
|
|
@Resource |
|
|
|
private TeamService teamService; |
|
|
|
@Resource |
|
|
|
private RequestsettingService requestsettingService; |
|
|
|
@Resource |
|
|
|
private WorkshopService workshopService; |
|
|
|
@Resource |
|
|
|
private TrendsApi trendsApi; |
|
|
|
@Resource |
|
|
|
private SerialNumberApi serialNumberApi; |
|
|
|
@Resource |
|
|
|
private JobUtils jobUtils; |
|
|
|
@Resource |
|
|
|
private ProductreceiptRequestMainMapper productreceiptRequestMainMapper; |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public Long createProductreceiptRequestMain(ProductreceiptRequestMainCreateReqVO createReqVO) { |
|
|
|
// 插入
|
|
|
|
ProductreceiptRequestMainDO productreceiptRequestMain = ProductreceiptRequestMainConvert.INSTANCE.convert(createReqVO); |
|
|
|
productreceiptRequestMainMapper.insert(productreceiptRequestMain); |
|
|
|
// 返回
|
|
|
|
return productreceiptRequestMain.getId(); |
|
|
|
ProductreceiptRequestMainDO productreceiptRequestMainDO = validatorToCreate(createReqVO); |
|
|
|
//调用自动执行方法
|
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(productreceiptRequestMainDO.getStatus())) { |
|
|
|
this.generateJob(productreceiptRequestMainDO, productreceiptRequestDetailMapper.selectList(productreceiptRequestMainDO.getId())); |
|
|
|
} |
|
|
|
trendsApi.createTrends(productreceiptRequestMainDO.getId(), "ProductreceiptRequest", "增加了制品收货申请", TrendsTypeEnum.CREATE); |
|
|
|
return productreceiptRequestMainDO.getId(); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public void updateProductreceiptRequestMain(ProductreceiptRequestMainUpdateReqVO updateReqVO) { |
|
|
|
// 校验存在
|
|
|
|
validateProductreceiptRequestMainExists(updateReqVO.getId()); |
|
|
|
// 更新
|
|
|
|
ProductreceiptRequestMainDO updateObj = ProductreceiptRequestMainConvert.INSTANCE.convert(updateReqVO); |
|
|
|
productreceiptRequestMainMapper.updateById(updateObj); |
|
|
|
ProductreceiptRequestMainDO productreceiptRequestMainDO = validatorToUpdate(updateReqVO); |
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(productreceiptRequestMainDO.getStatus())) { |
|
|
|
this.generateJob(productreceiptRequestMainDO, productreceiptRequestDetailMapper.selectList(productreceiptRequestMainDO.getId())); |
|
|
|
} |
|
|
|
trendsApi.createTrends(productreceiptRequestMainDO.getId(), "ProductreceiptRequest", "更新了制品收货申请", TrendsTypeEnum.UPDATE); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 创建 主子 数据 |
|
|
|
* @param createReqVO |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private ProductreceiptRequestMainDO validatorToCreate(ProductreceiptRequestMainCreateReqVO createReqVO) { |
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductReceiptRequest"); |
|
|
|
ProductreceiptRequestMainDO productreceiptRequestMainDO = validateMainMethod(createReqVO); |
|
|
|
//子表校验
|
|
|
|
List<ProductreceiptRequestDetailCreateReqVO> subList = createReqVO.getSubList(); |
|
|
|
List<ProductreceiptRequestDetailDO> subDOList = ProductreceiptRequestDetailConvert.INSTANCE.convertList03(subList); |
|
|
|
for (ProductreceiptRequestDetailDO productreceiptRequestDetailDO : subDOList) { |
|
|
|
validateDetailMethod(productreceiptRequestMainDO, productreceiptRequestDetailDO); |
|
|
|
} |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); |
|
|
|
productreceiptRequestMainDO.setNumber(number); |
|
|
|
productreceiptRequestMainDO.setDepartmentCode(userApi.getUser(getLoginUserId()).getDeptId().toString()); |
|
|
|
productreceiptRequestMainMapper.insert(productreceiptRequestMainDO); |
|
|
|
for (ProductreceiptRequestDetailDO productreceiptRequestDetailDO : subDOList) { |
|
|
|
productreceiptRequestDetailDO.setMasterId(productreceiptRequestMainDO.getId()); |
|
|
|
productreceiptRequestDetailDO.setNumber(productreceiptRequestMainDO.getNumber()); |
|
|
|
productreceiptRequestDetailDO.setInventoryStatus(businesstypeDO.getOutInventoryStatuses()); |
|
|
|
productreceiptRequestDetailMapper.insert(productreceiptRequestDetailDO); |
|
|
|
// 创建 制品收货申请第二子表 bom相关信息
|
|
|
|
generateBackflushRequest(productreceiptRequestDetailDO); |
|
|
|
} |
|
|
|
return productreceiptRequestMainDO; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 更新 主 数据 |
|
|
|
* @param updateReqVO |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private ProductreceiptRequestMainDO validatorToUpdate(ProductreceiptRequestMainUpdateReqVO updateReqVO) { |
|
|
|
ProductreceiptRequestMainDO productreceiptRequestMainDO = validateMainMethod(updateReqVO); |
|
|
|
productreceiptRequestMainDO.setDepartmentCode(userApi.getUser(getLoginUserId()).getDeptId().toString()); |
|
|
|
productreceiptRequestMainMapper.updateById(productreceiptRequestMainDO); |
|
|
|
return productreceiptRequestMainDO; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 校验 主表 数据 |
|
|
|
* @param baseVO |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private ProductreceiptRequestMainDO validateMainMethod(ProductreceiptRequestMainBaseVO baseVO){ |
|
|
|
ProductreceiptRequestMainDO mainDo = ProductreceiptRequestMainConvert.INSTANCE.convert(baseVO); |
|
|
|
// 赋值
|
|
|
|
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); |
|
|
|
mainDo.setRequestTime(LocalDateTime.now()); |
|
|
|
// 校验 车间
|
|
|
|
workshopService.selectWorkshopExist(mainDo.getWorkshopCode()); |
|
|
|
// 校验 班组
|
|
|
|
teamService.selectTeamExist(mainDo.getTeam()); |
|
|
|
// 校验 班次
|
|
|
|
shiftService.selectShiftExist(mainDo.getShift()); |
|
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ProductReceiptRequest"); |
|
|
|
if (requestsettingDO == null) { |
|
|
|
throw new UtilException("未查找到发料申请的相关申请设置"); |
|
|
|
} else { |
|
|
|
mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); |
|
|
|
mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); |
|
|
|
mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); |
|
|
|
mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); |
|
|
|
} |
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductReceiptRequest"); |
|
|
|
if (businesstypeDO == null) { |
|
|
|
throw new UtilException("根据单据设置未查找到发料申请的相关业务类型"); |
|
|
|
} else { |
|
|
|
mainDo.setBusinessType(businesstypeDO.getCode()); |
|
|
|
mainDo.setToLocationTypes(businesstypeDO.getInLocationTypes()); |
|
|
|
mainDo.setToAreaCodes(businesstypeDO.getInAreaCodes()); |
|
|
|
} |
|
|
|
return mainDo; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 校验 子表 数据 |
|
|
|
* @param detailDo |
|
|
|
*/ |
|
|
|
private void validateDetailMethod(ProductreceiptRequestMainDO mainDO, ProductreceiptRequestDetailDO detailDo) { |
|
|
|
// 校验 生产线
|
|
|
|
ProductionlineDO productionlineDO = productionlineService.productionLineCodeExist(detailDo.getProductionLineCode()); |
|
|
|
detailDo.setToLocationCode(productionlineDO.getRawLocationCode()); |
|
|
|
// 校验生产线和物品关系
|
|
|
|
productionlineitemService.productionLineCodeAndpItemCodeExist(detailDo.getProductionLineCode(), detailDo.getItemCode()); |
|
|
|
// 校验 物品
|
|
|
|
ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode()); |
|
|
|
// 赋值物品相关信息
|
|
|
|
detailDo.setItemName(itembasicDO.getName()); |
|
|
|
detailDo.setItemDesc1(itembasicDO.getDesc1()); |
|
|
|
detailDo.setItemDesc2(itembasicDO.getDesc2()); |
|
|
|
detailDo.setProjectCode(itembasicDO.getProject()); |
|
|
|
if (!itembasicDO.getUom().equals(detailDo.getUom())) { |
|
|
|
throw new UtilException("计量单位【" + detailDo.getUom() + "】错误,应该是" + itembasicDO.getUom()); |
|
|
|
} |
|
|
|
// 校验 物品包装
|
|
|
|
ItempackagingDO itempackagingDO = itempackagingService.selectItemPackagingExist(detailDo.getItemCode()); |
|
|
|
detailDo.setStdPackQty(itempackagingDO.getStdPackQty()); |
|
|
|
detailDo.setStdPackUnit(itempackagingDO.getStdPackUnit()); |
|
|
|
// 校验 工位
|
|
|
|
if (detailDo.getWorkStationCode() != null && !detailDo.getWorkStationCode().equals("")) { |
|
|
|
WorkstationDO workstationDO = workstationService.selectWorkstationExist(detailDo.getWorkStationCode(), mainDO.getWorkshopCode(), detailDo.getProductionLineCode()); |
|
|
|
detailDo.setToLocationCode(workstationDO.getFgLocationCode()); |
|
|
|
} |
|
|
|
// 校验 物品和bom关系
|
|
|
|
bomService.bomItemCodeAndVersionExist(detailDo.getItemCode(),detailDo.getBomVersion()); |
|
|
|
// 校验 成品库与物品关系 TODO:需要上架策略完善后 打开注释
|
|
|
|
//jobUtils.getItemCodeLocationCode(detailDo.getItemCode(), detailDo.getToLocationCode());
|
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
@ -58,10 +283,12 @@ public class ProductreceiptRequestMainServiceImpl implements ProductreceiptReque |
|
|
|
productreceiptRequestMainMapper.deleteById(id); |
|
|
|
} |
|
|
|
|
|
|
|
private void validateProductreceiptRequestMainExists(Long id) { |
|
|
|
if (productreceiptRequestMainMapper.selectById(id) == null) { |
|
|
|
private ProductreceiptRequestMainDO validateProductreceiptRequestMainExists(Long id) { |
|
|
|
ProductreceiptRequestMainDO productreceiptRequestMainDO = productreceiptRequestMainMapper.selectById(id); |
|
|
|
if (productreceiptRequestMainDO == null) { |
|
|
|
throw exception(PRODUCTRECEIPT_REQUEST_MAIN_NOT_EXISTS); |
|
|
|
} |
|
|
|
return productreceiptRequestMainDO; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
@ -88,4 +315,435 @@ public class ProductreceiptRequestMainServiceImpl implements ProductreceiptReque |
|
|
|
public PageResult<ProductreceiptRequestMainDO> getProductreceiptRequestMainSenior(CustomConditions conditions) { |
|
|
|
return productreceiptRequestMainMapper.selectSenior(conditions); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public List<ProductreceiptRequestMainDO> getProductreceiptRequestMainList(CustomConditions conditions) { |
|
|
|
return productreceiptRequestMainMapper.selectSeniorList(conditions); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 主表校验导入,并赋值一些参数 |
|
|
|
* |
|
|
|
* @param mainDo |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private String validateProductreceiptRequestMainImport(ProductreceiptRequestMainDO mainDo) { |
|
|
|
StringBuilder message = new StringBuilder(); |
|
|
|
// 赋值
|
|
|
|
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); |
|
|
|
mainDo.setRequestTime(LocalDateTime.now()); |
|
|
|
// 校验 车间
|
|
|
|
try { |
|
|
|
workshopService.selectWorkshopExist(mainDo.getWorkshopCode()); |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
// 校验 班组
|
|
|
|
try { |
|
|
|
teamService.selectTeamExist(mainDo.getTeam()); |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
// 校验 班次
|
|
|
|
try { |
|
|
|
shiftService.selectShiftExist(mainDo.getShift()); |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ProductReceiptRequest"); |
|
|
|
if (requestsettingDO == null) { |
|
|
|
message.append("未查找到发料申请的相关申请设置"); |
|
|
|
} else { |
|
|
|
mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); |
|
|
|
mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); |
|
|
|
mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); |
|
|
|
mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); |
|
|
|
} |
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductReceiptRequest"); |
|
|
|
if (businesstypeDO == null) { |
|
|
|
message.append("根据单据设置未查找到发料申请的相关业务类型"); |
|
|
|
} else { |
|
|
|
mainDo.setBusinessType(businesstypeDO.getCode()); |
|
|
|
mainDo.setToLocationTypes(businesstypeDO.getInLocationTypes()); |
|
|
|
mainDo.setToAreaCodes(businesstypeDO.getInAreaCodes()); |
|
|
|
} |
|
|
|
try { |
|
|
|
ValidationUtils.validate(validator, mainDo); |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
return message.toString(); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 子表校验导入,并赋值一些参数 |
|
|
|
* |
|
|
|
* @param detailDo |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private String validateProductreceiptRequestDetailImport(ProductreceiptRequestDetailDO detailDo, ProductreceiptRequestMainDO mainDo) { |
|
|
|
StringBuilder message = new StringBuilder(); |
|
|
|
// 校验 生产线
|
|
|
|
try { |
|
|
|
ProductionlineDO productionlineDO = productionlineService.productionLineCodeExist(detailDo.getProductionLineCode()); |
|
|
|
detailDo.setToLocationCode(productionlineDO.getRawLocationCode()); |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
// 校验生产线和物品关系
|
|
|
|
try { |
|
|
|
productionlineitemService.productionLineCodeAndpItemCodeExist(detailDo.getProductionLineCode(), detailDo.getItemCode()); |
|
|
|
} catch (Exception e) { |
|
|
|
message.append(e.getMessage()).append(","); |
|
|
|
} |
|
|
|
// 校验 物品
|
|
|
|
try { |
|
|
|
ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode()); |
|
|
|
// 赋值物品相关信息
|
|
|
|
detailDo.setItemName(itembasicDO.getName()); |
|
|
|
detailDo.setItemDesc1(itembasicDO.getDesc1()); |
|
|
|
detailDo.setItemDesc2(itembasicDO.getDesc2()); |
|
|
|
detailDo.setProjectCode(itembasicDO.getProject()); |
|
|
|
try { |
|
|
|
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) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
// 校验 物品包装
|
|
|
|
try { |
|
|
|
ItempackagingDO itempackagingDO = itempackagingService.selectItemPackagingExist(detailDo.getItemCode()); |
|
|
|
detailDo.setStdPackQty(itempackagingDO.getStdPackQty()); |
|
|
|
detailDo.setStdPackUnit(itempackagingDO.getStdPackUnit()); |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
// 校验 工位
|
|
|
|
try { |
|
|
|
if (detailDo.getWorkStationCode() != null && !detailDo.getWorkStationCode().equals("")) { |
|
|
|
WorkstationDO workstationDO = workstationService.selectWorkstationExist(detailDo.getWorkStationCode(), mainDo.getWorkshopCode(), detailDo.getProductionLineCode()); |
|
|
|
detailDo.setToLocationCode(workstationDO.getFgLocationCode()); |
|
|
|
} |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
// 校验 物品和bom关系
|
|
|
|
try { |
|
|
|
bomService.bomItemCodeAndVersionExist(detailDo.getItemCode(),detailDo.getBomVersion()); |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
// 校验 成品库与物品关系 TODO:需要上架策略完善后 打开注释
|
|
|
|
// try {
|
|
|
|
// jobUtils.getItemCodeLocationCode(detailDo.getItemCode(), detailDo.getToLocationCode());
|
|
|
|
// } catch (Exception ex) {
|
|
|
|
// message.append(ex.getMessage()).append(",");
|
|
|
|
// }
|
|
|
|
try { |
|
|
|
ValidationUtils.validate(validator, detailDo); |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
return message.toString(); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public List<ProductreceiptRequestImportErrorVO> importProductreceiptRequestList(List<ProductreceiptRequestMainCreateReqVO> datas, Integer mode, Boolean updatePart) { |
|
|
|
if (CollUtil.isEmpty(datas)) { |
|
|
|
throw exception(PRODUCTRECEIPT_REQUEST_IMPORT_LIST_IS_EMPTY); |
|
|
|
} |
|
|
|
List<ProductreceiptRequestImportErrorVO> errorList = new ArrayList<>(); |
|
|
|
datas.forEach(createReqVO -> { |
|
|
|
ProductreceiptRequestMainDO mainDo = ProductreceiptRequestMainConvert.INSTANCE.convert(createReqVO); |
|
|
|
String messageMain = validateProductreceiptRequestMainImport(mainDo); |
|
|
|
List<ProductreceiptRequestDetailCreateReqVO> subList = createReqVO.getSubList(); |
|
|
|
List<ProductreceiptRequestDetailDO> subDOList = ProductreceiptRequestDetailConvert.INSTANCE.convertList03(subList); |
|
|
|
// 是否有错误数据
|
|
|
|
boolean flag = true; |
|
|
|
for (ProductreceiptRequestDetailDO detailDO : subDOList) { |
|
|
|
String messageDetail = validateProductreceiptRequestDetailImport(detailDO, mainDo); |
|
|
|
if (!messageMain.isEmpty() || !messageDetail.isEmpty()) { |
|
|
|
ProductreceiptRequestImportErrorVO importErrorVO = ProductreceiptRequestMainConvert.INSTANCE.convert(createReqVO, detailDO); |
|
|
|
importErrorVO.setImportStatus("失败"); |
|
|
|
messageMain = messageMain + messageDetail; |
|
|
|
importErrorVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); |
|
|
|
errorList.add(importErrorVO); |
|
|
|
flag = false; |
|
|
|
} |
|
|
|
} |
|
|
|
//写入数据
|
|
|
|
if (flag) { |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCT_RECEIPT_REQUEST.getCode()); |
|
|
|
mainDo.setNumber(number); |
|
|
|
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); |
|
|
|
productreceiptRequestMainMapper.insert(mainDo); |
|
|
|
for (ProductreceiptRequestDetailDO detailDO : subDOList) { |
|
|
|
detailDO.setMasterId(mainDo.getId()); |
|
|
|
detailDO.setNumber(number); |
|
|
|
productreceiptRequestDetailMapper.insert(detailDO); |
|
|
|
// 创建 制品收货申请第二子表 bom相关信息
|
|
|
|
generateBackflushRequest(detailDO); |
|
|
|
} |
|
|
|
//调用自动执行方法
|
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(mainDo.getStatus())) { |
|
|
|
generateJob(mainDo, subDOList); |
|
|
|
} |
|
|
|
//增加操作记录
|
|
|
|
trendsApi.createTrends(mainDo.getId(), "ProductreceiptRequestMain", "导入了制品收货申请", TrendsTypeEnum.CREATE); |
|
|
|
} |
|
|
|
}); |
|
|
|
return errorList; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 创建 制品收货申请第二子表(bom相关) |
|
|
|
* @param detailbDO |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public void generateBackflushRequest(ProductreceiptRequestDetailDO detailbDO) { |
|
|
|
// 删除旧数据 重新添加
|
|
|
|
backflushRequestDetailbSerivce.deleteBackflushRequestDetailbByMasterId(detailbDO.getId()); |
|
|
|
List<BackflushRequestDetailbDO> backflushRequestDetailbDOList = new ArrayList<>(); |
|
|
|
List<Map<String,Object>> list = jobUtils.bomDismantleList(detailbDO.getItemCode(), detailbDO.getBomVersion()); |
|
|
|
if (list == null || list.size() == 0) { |
|
|
|
throw new UtilException("没有找到bom拆解信息"); |
|
|
|
} |
|
|
|
list.forEach(itemBom -> { |
|
|
|
BackflushRequestDetailbDO backflushRequestDetailbDO = new BackflushRequestDetailbDO(); |
|
|
|
backflushRequestDetailbDO.setProcessCode(detailbDO.getProcessCode()); |
|
|
|
backflushRequestDetailbDO.setBomVersion(itemBom.get("version")==null?"":itemBom.get("version").toString()); |
|
|
|
backflushRequestDetailbDO.setItemCode(itemBom.get("itemCode")==null?"":itemBom.get("itemCode").toString()); |
|
|
|
backflushRequestDetailbDO.setMasterId(detailbDO.getId()); |
|
|
|
backflushRequestDetailbDO.setNumber(detailbDO.getNumber()); |
|
|
|
backflushRequestDetailbDO.setQty(new BigDecimal(itemBom.get("qty").toString())); |
|
|
|
backflushRequestDetailbDO.setUom(itemBom.get("uom")==null?"":itemBom.get("uom").toString()); |
|
|
|
// 赋值物品相关信息
|
|
|
|
ItembasicDO itembasicDO = itembasicService.selectItembasic(itemBom.get("itemCode")==null?"":itemBom.get("itemCode").toString()); |
|
|
|
backflushRequestDetailbDO.setItemName(itembasicDO.getName()); |
|
|
|
backflushRequestDetailbDO.setItemDesc1(itembasicDO.getDesc1()); |
|
|
|
backflushRequestDetailbDO.setItemDesc2(itembasicDO.getDesc2()); |
|
|
|
backflushRequestDetailbDO.setProjectCode(itembasicDO.getProject()); |
|
|
|
backflushRequestDetailbDOList.add(backflushRequestDetailbDO); |
|
|
|
}); |
|
|
|
backflushRequestDetailbMapper.insertBatch(backflushRequestDetailbDOList); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public Integer closeProductreceiptRequestMain(Long id) { |
|
|
|
ProductreceiptRequestMainDO mainDO = validateProductreceiptRequestMainExists(id); |
|
|
|
// 校验存在存在下级单据
|
|
|
|
Long count = productreceiptJobMainMapper.selectByRequestNumber(mainDO.getNumber()); |
|
|
|
if(count > 0) { |
|
|
|
throw new ServiceException(PRODUCTRECEIPT_REQUEST_JOB_EXISTS); |
|
|
|
} |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
boolean flag = requestStatusState.close(); |
|
|
|
if(!flag) { |
|
|
|
throw new ServiceException(PRODUCTRECEIPT_REQUEST_MAIN_STATUS_ERROR); |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
//增加操作记录
|
|
|
|
trendsApi.createTrends(id, "productreceiptRequest", "关闭了制品收货申请", TrendsTypeEnum.UPDATE); |
|
|
|
return productreceiptRequestMainMapper.updateById(mainDO); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public Integer reAddProductreceiptRequestMain(Long id) { |
|
|
|
ProductreceiptRequestMainDO mainDO = validateProductreceiptRequestMainExists(id); |
|
|
|
// 校验存在存在下级单据
|
|
|
|
Long count = productreceiptJobMainMapper.selectByRequestNumber(mainDO.getNumber()); |
|
|
|
if(count > 0) { |
|
|
|
throw new ServiceException(PRODUCTRECEIPT_REQUEST_JOB_EXISTS); |
|
|
|
} |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
boolean flag = requestStatusState.reAdd(); |
|
|
|
if(!flag) { |
|
|
|
throw new ServiceException(PRODUCTRECEIPT_REQUEST_MAIN_STATUS_ERROR); |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录
|
|
|
|
trendsApi.createTrends(id, "productreceiptRequest", "打开了制品收货申请", TrendsTypeEnum.UPDATE); |
|
|
|
return productreceiptRequestMainMapper.updateById(mainDO); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public Integer submitProductreceiptRequestMain(Long id) { |
|
|
|
ProductreceiptRequestMainDO mainDO = validateProductreceiptRequestMainExists(id); |
|
|
|
// 校验存在存在下级单据
|
|
|
|
Long count = productreceiptJobMainMapper.selectByRequestNumber(mainDO.getNumber()); |
|
|
|
if(count > 0) { |
|
|
|
throw new ServiceException(PRODUCTRECEIPT_REQUEST_JOB_EXISTS); |
|
|
|
} |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
boolean flag = requestStatusState.submit(mainDO.getAutoAgree(), mainDO.getAutoExecute()); |
|
|
|
if(!flag) { |
|
|
|
throw new ServiceException(PRODUCTRECEIPT_REQUEST_MAIN_STATUS_ERROR); |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
//调用自动执行方法
|
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { |
|
|
|
this.generateJob(mainDO, productreceiptRequestDetailMapper.selectList(mainDO.getId())); |
|
|
|
} |
|
|
|
trendsApi.createTrends(id, "productreceiptRequest", "提交了制品收货申请", TrendsTypeEnum.UPDATE); |
|
|
|
return productreceiptRequestMainMapper.updateById(mainDO); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public Integer refusedProductreceiptRequestMain(Long id) { |
|
|
|
ProductreceiptRequestMainDO mainDO = validateProductreceiptRequestMainExists(id); |
|
|
|
// 校验存在存在下级单据
|
|
|
|
Long count = productreceiptJobMainMapper.selectByRequestNumber(mainDO.getNumber()); |
|
|
|
if(count > 0) { |
|
|
|
throw new ServiceException(PRODUCTRECEIPT_REQUEST_JOB_EXISTS); |
|
|
|
} |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
boolean flag = requestStatusState.refused(); |
|
|
|
if(!flag) { |
|
|
|
throw new ServiceException(PRODUCTRECEIPT_REQUEST_MAIN_STATUS_ERROR); |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
trendsApi.createTrends(id, "productreceiptRequest", "驳回了制品收货申请", TrendsTypeEnum.UPDATE); |
|
|
|
return productreceiptRequestMainMapper.updateById(mainDO); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public Integer agreeProductreceiptRequestMain(Long id) { |
|
|
|
ProductreceiptRequestMainDO mainDO = validateProductreceiptRequestMainExists(id); |
|
|
|
// 校验存在存在下级单据
|
|
|
|
Long count = productreceiptJobMainMapper.selectByRequestNumber(mainDO.getNumber()); |
|
|
|
if(count > 0) { |
|
|
|
throw new ServiceException(PRODUCTRECEIPT_REQUEST_JOB_EXISTS); |
|
|
|
} |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
boolean flag = requestStatusState.agree(mainDO.getAutoAgree()); |
|
|
|
if(!flag) { |
|
|
|
throw new ServiceException(PRODUCTRECEIPT_REQUEST_MAIN_STATUS_ERROR); |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
//调用自动执行方法
|
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { |
|
|
|
this.generateJob(mainDO, productreceiptRequestDetailMapper.selectList(mainDO.getId())); |
|
|
|
} |
|
|
|
trendsApi.createTrends(id, "productreceiptRequest", "审批通过了制品收货申请", TrendsTypeEnum.UPDATE); |
|
|
|
return productreceiptRequestMainMapper.updateById(mainDO); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public Integer handleProductreceiptRequestMain(Long id) { |
|
|
|
ProductreceiptRequestMainDO mainDO = validateProductreceiptRequestMainExists(id); |
|
|
|
// 校验存在存在下级单据
|
|
|
|
Long count = productreceiptJobMainMapper.selectByRequestNumber(mainDO.getNumber()); |
|
|
|
if(count > 0) { |
|
|
|
throw new ServiceException(PRODUCTRECEIPT_REQUEST_JOB_EXISTS); |
|
|
|
} |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
boolean flag = requestStatusState.handle(); |
|
|
|
if(!flag) { |
|
|
|
throw new ServiceException(PRODUCTRECEIPT_REQUEST_MAIN_STATUS_ERROR); |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
//调用执行方法
|
|
|
|
this.generateJob(mainDO, productreceiptRequestDetailMapper.selectList(mainDO.getId())); |
|
|
|
trendsApi.createTrends(id, "productreceiptRequest", "执行了制品收货申请", TrendsTypeEnum.UPDATE); |
|
|
|
return productreceiptRequestMainMapper.updateById(mainDO); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 创建 制品收货任务 |
|
|
|
* @param mainDO |
|
|
|
* @param detailDOList |
|
|
|
*/ |
|
|
|
private void generateJob(ProductreceiptRequestMainDO mainDO, List<ProductreceiptRequestDetailDO> detailDOList) { |
|
|
|
//跳过任务直接生成记录
|
|
|
|
if("TRUE".equals(mainDO.getDirectCreateRecord())) { |
|
|
|
// TODO: 制品收货申请 跳过任务直接生成记录 未做!!
|
|
|
|
// 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;
|
|
|
|
} |
|
|
|
// 任务主表信息
|
|
|
|
ProductreceiptJobMainDO productreceiptJobMainDO = new ProductreceiptJobMainDO(); |
|
|
|
BeanUtil.copyProperties(mainDO, productreceiptJobMainDO); |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCT_RECEIPT_JOB.getCode()); |
|
|
|
productreceiptJobMainDO.setNumber(number); |
|
|
|
productreceiptJobMainDO.setRequestNumber(mainDO.getNumber()); |
|
|
|
productreceiptJobMainDO.setWorkShopCode(mainDO.getWorkshopCode()); |
|
|
|
productreceiptJobMainDO.setRequestDueTime(mainDO.getDueTime()); |
|
|
|
productreceiptJobMainDO.setStatus(JobStatusEnum.PENDING.getCode()); |
|
|
|
productreceiptJobMainDO.setId(null); |
|
|
|
productreceiptJobMainDO.setCreateTime(null); |
|
|
|
productreceiptJobMainDO.setCreator(null); |
|
|
|
productreceiptJobMainDO.setUpdateTime(null); |
|
|
|
productreceiptJobMainDO.setUpdater(null); |
|
|
|
productreceiptJobMainDO.setDepartmentCode(userApi.getUser(getLoginUserId()).getDeptId().toString()); |
|
|
|
// 获取任务单据设置
|
|
|
|
JobsettingDO jobsettingDO = jobsettingService.selectJobsettingExist("ProductReceiptJob"); |
|
|
|
productreceiptJobMainDO.setAutoComplete(jobsettingDO.getAutoComplete()); |
|
|
|
productreceiptJobMainDO.setAllowModifyLocation(jobsettingDO.getAllowModifyLocation()); |
|
|
|
productreceiptJobMainDO.setAllowModifyQty(jobsettingDO.getAllowModifyQty()); |
|
|
|
productreceiptJobMainDO.setAllowBiggerQty(jobsettingDO.getAllowBiggerQty()); |
|
|
|
productreceiptJobMainDO.setAllowSmallerQty(jobsettingDO.getAllowSmallerQty()); |
|
|
|
productreceiptJobMainDO.setAllowModifyInventoryStatus(jobsettingDO.getAllowModifyInventoryStatus()); |
|
|
|
productreceiptJobMainDO.setAllowContinuousScanning(jobsettingDO.getAllowContinuousScanning()); |
|
|
|
productreceiptJobMainDO.setAllowPartialComplete(jobsettingDO.getAllowPartialComplete()); |
|
|
|
productreceiptJobMainDO.setAllowModifyPackingNumber(jobsettingDO.getAllowModifyPackingNumber()); |
|
|
|
productreceiptJobMainDO.setAllowModifyBatch(jobsettingDO.getAllowModifyBach()); |
|
|
|
//增加业务类型
|
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductReceiptJob"); |
|
|
|
productreceiptJobMainDO.setInInventoryStatuses(businesstypeDO.getInInventoryStatuses()); |
|
|
|
productreceiptJobMainDO.setOutInventoryStatuses(businesstypeDO.getOutInventoryStatuses()); |
|
|
|
productreceiptJobMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); |
|
|
|
productreceiptJobMainDO.setToLocationTypes(businesstypeDO.getInLocationTypes()); |
|
|
|
productreceiptJobMainDO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
productreceiptJobMainMapper.insert(productreceiptJobMainDO); |
|
|
|
List<ProductreceiptJobDetailDO> productreceiptJobDetailDOList = new ArrayList<>(); |
|
|
|
List<ExpectinCreateReqVO> expectinCreateReqVOList = new ArrayList<>(); |
|
|
|
for(ProductreceiptRequestDetailDO detailDO: detailDOList) { |
|
|
|
ProductreceiptJobDetailDO productreceiptJobDetailDO = new ProductreceiptJobDetailDO(); |
|
|
|
BeanUtil.copyProperties(detailDO, productreceiptJobDetailDO); |
|
|
|
productreceiptJobDetailDO.setMasterId(productreceiptJobMainDO.getId()); |
|
|
|
productreceiptJobDetailDO.setNumber(number); |
|
|
|
productreceiptJobDetailDO.setId(null); |
|
|
|
productreceiptJobDetailDO.setCreateTime(null); |
|
|
|
productreceiptJobDetailDO.setCreator(null); |
|
|
|
productreceiptJobDetailDO.setUpdateTime(null); |
|
|
|
productreceiptJobDetailDO.setUpdater(null); |
|
|
|
productreceiptJobDetailDOList.add(productreceiptJobDetailDO); |
|
|
|
//预计入
|
|
|
|
ExpectinCreateReqVO expectinCreateReqVO = new ExpectinCreateReqVO(); |
|
|
|
BeanUtils.copyProperties(productreceiptJobDetailDO, expectinCreateReqVO); |
|
|
|
expectinCreateReqVO.setJobNumber(number); |
|
|
|
expectinCreateReqVO.setBusinessType(productreceiptJobMainDO.getBusinessType()); |
|
|
|
expectinCreateReqVO.setLocationCode(detailDO.getToLocationCode()); |
|
|
|
expectinCreateReqVO.setOwnerCode(detailDO.getToOwnerCode()); |
|
|
|
expectinCreateReqVOList.add(expectinCreateReqVO); |
|
|
|
} |
|
|
|
productreceiptJobDetailMapper.insertBatch(productreceiptJobDetailDOList); |
|
|
|
//增加预计入
|
|
|
|
expectinService.createExpectin(expectinCreateReqVOList); |
|
|
|
trendsApi.createTrends(productreceiptJobMainDO.getId(), "productreceiptJob", "制品收货申请生成制品收货任务", TrendsTypeEnum.CREATE); |
|
|
|
} |
|
|
|
} |
|
|
|