Browse Source

发货申请 导入/新增/修改 校验模板

master
chenfang 2 years ago
parent
commit
501692c27b
  1. 1
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRequest/IssueRequestMainConvert.java
  2. 155
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainServiceImpl.java

1
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRequest/IssueRequestMainConvert.java

@ -26,6 +26,7 @@ public interface IssueRequestMainConvert {
IssueRequestMainConvert INSTANCE = Mappers.getMapper(IssueRequestMainConvert.class);
IssueRequestMainDO convert(IssueRequestMainCreateReqVO bean);
IssueRequestMainDO convert(IssueRequestMainBaseVO bean);
IssueRequestMainDO convert(IssueRequestMainUpdateReqVO bean);

155
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainServiceImpl.java

@ -2,12 +2,13 @@ package com.win.module.wms.service.issueRequest;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.exceptions.UtilException;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.win.framework.common.pojo.CustomConditions;
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.serialnumber.SerialNumberApi;
import com.win.module.system.enums.serialNumber.RuleCodeEnum;
import com.win.module.wms.controller.issueRequest.vo.*;
@ -21,6 +22,7 @@ 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.issueRequest.IssueRequestDetailMapper;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.enums.request.RequestStatusEnum;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.productionline.ProductionlineService;
import com.win.module.wms.service.productionlineitem.ProductionlineitemService;
@ -82,23 +84,31 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
private RuleService ruleService;
@Resource
private RequestsettingService requestsettingService;
@Resource
private TrendsApi trendsApi;
@Override
public Long createIssueRequestMain(IssueRequestMainCreateReqVO createReqVO) {
// 插入
IssueRequestMainDO issueRequestMain = IssueRequestMainConvert.INSTANCE.convert(createReqVO);
issueRequestMainMapper.insert(issueRequestMain);
// 返回
return issueRequestMain.getId();
RequestsettingDO requestsettingDO = new RequestsettingDO();
IssueRequestMainDO issueRequestMainDO = validatorToCreate(createReqVO,requestsettingDO);
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(issueRequestMainDO.getStatus())) {
}
trendsApi.createTrends(requestsettingDO.getId(), "IssueRequest", "增加了发料申请", TrendsTypeEnum.CREATE);
return issueRequestMainDO.getId();
}
@Override
public void updateIssueRequestMain(IssueRequestMainUpdateReqVO updateReqVO) {
RequestsettingDO requestsettingDO = new RequestsettingDO();
// 校验存在
validateIssueRequestMainExists(updateReqVO.getId());
// 更新
IssueRequestMainDO updateObj = IssueRequestMainConvert.INSTANCE.convert(updateReqVO);
issueRequestMainMapper.updateById(updateObj);
IssueRequestMainDO issueRequestMainDO = validatorToUpdate(updateReqVO, requestsettingDO);
if(RequestStatusEnum.HANDLING.getCode().equals(issueRequestMainDO.getStatus())) {
}
trendsApi.createTrends(requestsettingDO.getId(), "IssueRequest", "增加了发料申请", TrendsTypeEnum.CREATE);
}
@Override
@ -233,101 +243,78 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
}
//新增校验
private void validatorToCreate(IssueRequestMainCreateReqVO createReqVO) {
IssueRequestMainDO issueRequestMainDO = IssueRequestMainConvert.INSTANCE.convert(createReqVO);
//主表校验
this.validatorWorkshop(issueRequestMainDO.getWorkshopCode());
issueRequestMainDO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
issueRequestMainDO.setRequestTime(LocalDateTime.now());
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("IssueRequest");
issueRequestMainDO.setAutoAgree(requestsettingDO.getAutoAgree());
issueRequestMainDO.setAutoCommit(requestsettingDO.getAutoCommit());
issueRequestMainDO.setAutoExecute(requestsettingDO.getAutoExecute());
issueRequestMainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("IssueRequest");
issueRequestMainDO.setBusinessType(businesstypeDO.getCode());
issueRequestMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes());
issueRequestMainDO.setToLocationTypes(businesstypeDO.getInLocationTypes());
issueRequestMainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes());
issueRequestMainDO.setToAreaCodes(businesstypeDO.getInAreaCodes());
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode());
issueRequestMainDO.setNumber(number);
issueRequestMainMapper.insert(issueRequestMainDO);
private IssueRequestMainDO validatorToCreate(IssueRequestMainCreateReqVO createReqVO,RequestsettingDO requestsettingDO) {
BusinesstypeDO businesstypeDO = new BusinesstypeDO();
IssueRequestMainDO issueRequestMainDO = validateMainMethod(createReqVO,businesstypeDO,requestsettingDO);
//子表校验
List<IssueRequestDetailCreateReqVO> subList = createReqVO.getSubList();
List<IssueRequestDetailDO> subDOList = IssueRequestDetailConvert.INSTANCE.convertList03(subList);
for (IssueRequestDetailDO issueRequestDetailDO : subDOList) {
ItembasicDO itembasicDO = validatorItembasic(issueRequestDetailDO.getItemCode());
this.validatorIfInType(itembasicDO.getType(), businesstypeDO);
this.ifUomSuccess(itembasicDO.getUom(), issueRequestDetailDO.getUom());
ProductionlineDO productionlineDO = validatorProductionLineCode(issueRequestDetailDO.getProductionLineCode());
issueRequestDetailDO.setToLocationCode(productionlineDO.getRawLocationCode());
WorkstationDO workstationDO = validatorWorkstation(issueRequestDetailDO.getWorkStationCode(), issueRequestMainDO.getWorkshopCode(), issueRequestDetailDO.getProductionLineCode());
issueRequestDetailDO.setToLocationCode(workstationDO.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);
if (grounding == null) {
throw exception(555, "未查找到该条上架策略");
} else {
JSONObject json = JSONUtil.parseObj(grounding);
String locationCode = json.get("LocationCode").toString();
this.ifLocationCodeInRule(issueRequestDetailDO.getItemCode(), issueRequestDetailDO.getToLocationCode(), locationCode);
}
issueRequestDetailDO.setMasterId(issueRequestMainDO.getId());
issueRequestDetailDO.setNumber(number);
issueRequestDetailMapper.insertBatch(subDOList);
validateDetailMethod(issueRequestDetailDO,businesstypeDO,issueRequestMainDO);
}
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode());
issueRequestMainDO.setNumber(number);
issueRequestMainMapper.insert(issueRequestMainDO);
issueRequestDetailMapper.insertBatch(subDOList);
return issueRequestMainDO;
}
//修改校验
private void validatorToUpdate(IssueRequestMainUpdateReqVO updateReqVO) {
IssueRequestMainDO issueRequestMainDO = IssueRequestMainConvert.INSTANCE.convert(updateReqVO);
//主表校验
validateIssueRequestMainExists(updateReqVO.getId());
private IssueRequestMainDO validatorToUpdate(IssueRequestMainUpdateReqVO updateReqVO,RequestsettingDO requestsettingDO) {
BusinesstypeDO businesstypeDO = new BusinesstypeDO();
IssueRequestMainDO issueRequestMainDO = validateMainMethod(updateReqVO,businesstypeDO,requestsettingDO);
//子表校验
List<IssueRequestDetailCreateReqVO> subList = updateReqVO.getSubList();
List<IssueRequestDetailDO> subDOList = IssueRequestDetailConvert.INSTANCE.convertList03(subList);
for (IssueRequestDetailDO issueRequestDetailDO : subDOList) {
validateDetailMethod(issueRequestDetailDO,businesstypeDO,issueRequestMainDO);
}
issueRequestMainMapper.updateById(issueRequestMainDO);
issueRequestDetailMapper.updateBatch(subDOList);
return issueRequestMainDO;
}
//校验主表公共方法(适用于新增/修改)
private IssueRequestMainDO validateMainMethod(IssueRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO,RequestsettingDO requestsettingDO){
IssueRequestMainDO issueRequestMainDO = IssueRequestMainConvert.INSTANCE.convert(baseVO);
validateIssueRequestMainExists(baseVO.getId());
this.validatorWorkshop(issueRequestMainDO.getWorkshopCode());
issueRequestMainDO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
issueRequestMainDO.setRequestTime(LocalDateTime.now());
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("IssueRequest");
requestsettingDO = requestsettingService.selectRequestsettingExist("IssueRequest");
issueRequestMainDO.setAutoAgree(requestsettingDO.getAutoAgree());
issueRequestMainDO.setAutoCommit(requestsettingDO.getAutoCommit());
issueRequestMainDO.setAutoExecute(requestsettingDO.getAutoExecute());
issueRequestMainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("IssueRequest");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("IssueRequest");
issueRequestMainDO.setBusinessType(businesstypeDO.getCode());
issueRequestMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes());
issueRequestMainDO.setToLocationTypes(businesstypeDO.getInLocationTypes());
issueRequestMainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes());
issueRequestMainDO.setToAreaCodes(businesstypeDO.getInAreaCodes());
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode());
issueRequestMainDO.setNumber(number);
issueRequestMainMapper.insert(issueRequestMainDO);
//子表校验
List<IssueRequestDetailCreateReqVO> subList = updateReqVO.getSubList();
List<IssueRequestDetailDO> subDOList = IssueRequestDetailConvert.INSTANCE.convertList03(subList);
for (IssueRequestDetailDO issueRequestDetailDO : subDOList) {
validateIssueRequestDetailExists(issueRequestDetailDO.getId());
ItembasicDO itembasicDO = validatorItembasic(issueRequestDetailDO.getItemCode());
this.validatorIfInType(itembasicDO.getType(), businesstypeDO);
this.ifUomSuccess(itembasicDO.getUom(), issueRequestDetailDO.getUom());
ProductionlineDO productionlineDO = validatorProductionLineCode(issueRequestDetailDO.getProductionLineCode());
issueRequestDetailDO.setToLocationCode(productionlineDO.getRawLocationCode());
WorkstationDO workstationDO = validatorWorkstation(issueRequestDetailDO.getWorkStationCode(), issueRequestMainDO.getWorkshopCode(), issueRequestDetailDO.getProductionLineCode());
issueRequestDetailDO.setToLocationCode(workstationDO.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);
if (grounding == null) {
throw exception(555, "未查找到该条上架策略");
} else {
JSONObject json = JSONUtil.parseObj(grounding);
String locationCode = json.get("LocationCode").toString();
this.ifLocationCodeInRule(issueRequestDetailDO.getItemCode(), issueRequestDetailDO.getToLocationCode(), locationCode);
}
issueRequestDetailDO.setMasterId(issueRequestMainDO.getId());
issueRequestDetailDO.setNumber(number);
issueRequestDetailMapper.insertBatch(subDOList);
return issueRequestMainDO;
}
//校验子表公共方法(适用于新增/修改)
private void validateDetailMethod(IssueRequestDetailDO issueRequestDetailDO,BusinesstypeDO businesstypeDO,IssueRequestMainDO issueRequestMainDO) {
validateIssueRequestDetailExists(issueRequestDetailDO.getId());
ItembasicDO itembasicDO = validatorItembasic(issueRequestDetailDO.getItemCode());
this.validatorIfInType(itembasicDO.getType(), businesstypeDO);
this.ifUomSuccess(itembasicDO.getUom(), issueRequestDetailDO.getUom());
ProductionlineDO productionlineDO = validatorProductionLineCode(issueRequestDetailDO.getProductionLineCode());
issueRequestDetailDO.setToLocationCode(productionlineDO.getRawLocationCode());
WorkstationDO workstationDO = validatorWorkstation(issueRequestDetailDO.getWorkStationCode(), issueRequestMainDO.getWorkshopCode(), issueRequestDetailDO.getProductionLineCode());
issueRequestDetailDO.setToLocationCode(workstationDO.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);
if (grounding == null) {
throw exception(555, "未查找到该条上架策略");
} else {
JSONObject json = JSONUtil.parseObj(grounding);
String locationCode = json.get("LocationCode").toString();
this.ifLocationCodeInRule(issueRequestDetailDO.getItemCode(), issueRequestDetailDO.getToLocationCode(), locationCode);
}
issueRequestDetailDO.setMasterId(issueRequestMainDO.getId());
issueRequestDetailDO.setNumber(issueRequestMainDO.getNumber());
}
/**
* 校验导入并赋值一些参数
*
@ -394,13 +381,13 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
message.append(ex.getMessage()).append(",");
}
try {
ProductionlineDO productionlineDO = validatorProductionLineCode(detailDo.getProductionLineCode());
ProductionlineDO productionlineDO = this.validatorProductionLineCode(detailDo.getProductionLineCode());
detailDo.setToLocationCode(productionlineDO.getRawLocationCode());
} catch (Exception ex) {
message.append(ex.getMessage()).append(",");
}
try {
WorkstationDO workstationDO = validatorWorkstation(detailDo.getWorkStationCode(), mainDo.getWorkshopCode(), detailDo.getProductionLineCode());
WorkstationDO workstationDO = this.validatorWorkstation(detailDo.getWorkStationCode(), mainDo.getWorkshopCode(), detailDo.getProductionLineCode());
detailDo.setToLocationCode(workstationDO.getRawLocationCode());
} catch (Exception ex) {
message.append(ex.getMessage()).append(",");

Loading…
Cancel
Save