Browse Source

发货计划 新增修改接口修改

master
叶佳兴 2 years ago
parent
commit
716b09407b
  1. 10
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverPlan/vo/DeliverPlanMainUpdateReqVO.java
  2. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverPlan/DeliverPlanDetailConvert.java
  3. 25
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverPlan/DeliverPlanMainConvert.java
  4. 289
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverPlan/DeliverPlanMainServiceImpl.java
  5. 223
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainServiceImpl.java

10
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverPlan/vo/DeliverPlanMainUpdateReqVO.java

@ -1,12 +1,20 @@
package com.win.module.wms.controller.deliverPlan.vo;
import com.win.framework.excel.core.annotations.SubObject;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import java.util.List;
@Schema(description = "管理后台 - 发货计划主更新 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class DeliverPlanMainUpdateReqVO extends DeliverPlanMainBaseVO {
@SubObject
@Schema(description = "子表数据")
private List<DeliverPlanDetailUpdateReqVO> subList;
}

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverPlan/DeliverPlanDetailConvert.java

@ -35,6 +35,8 @@ public interface DeliverPlanDetailConvert {
List<DeliverPlanDetailDO> convertList03(List<DeliverPlanDetailCreateReqVO> list);
List<DeliverPlanDetailDO> convertList05(List<DeliverPlanDetailUpdateReqVO> list);
DeliverPlanDetailCreateReqVO convert1(DeliverPlanDetailDO bean);
@Mappings({

25
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverPlan/DeliverPlanMainConvert.java

@ -1,16 +1,15 @@
package com.win.module.wms.convert.deliverPlan;
import java.util.*;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.deliverPlan.vo.DeliverPlanMainCreateReqVO;
import com.win.module.wms.controller.deliverPlan.vo.DeliverPlanMainExcelVO;
import com.win.module.wms.controller.deliverPlan.vo.DeliverPlanMainRespVO;
import com.win.module.wms.controller.deliverPlan.vo.DeliverPlanMainUpdateReqVO;
import com.win.module.wms.controller.deliverPlan.vo.*;
import com.win.module.wms.dal.dataobject.deliverPlan.DeliverPlanDetailDO;
import com.win.module.wms.dal.dataobject.deliverPlan.DeliverPlanMainDO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
import com.win.module.wms.dal.dataobject.deliverPlan.DeliverPlanMainDO;
import java.util.List;
/**
* 发货计划主 Convert
@ -24,6 +23,8 @@ public interface DeliverPlanMainConvert {
DeliverPlanMainDO convert(DeliverPlanMainCreateReqVO bean);
DeliverPlanMainDO convert(DeliverPlanMainBaseVO bean);
DeliverPlanMainDO convert(DeliverPlanMainUpdateReqVO bean);
DeliverPlanMainRespVO convert(DeliverPlanMainDO bean);
@ -34,4 +35,12 @@ public interface DeliverPlanMainConvert {
List<DeliverPlanMainExcelVO> convertList02(List<DeliverPlanMainDO> list);
DeliverPlanMainCreateReqVO convert1(DeliverPlanMainCreateReqVO createReqVO);
@Mappings({
@Mapping(source = "mainVo.number", target = "number"),
})
DeliverPlanMainImportErrorVO convert(DeliverPlanMainCreateReqVO mainVo, DeliverPlanDetailDO detailDo);
}

289
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverPlan/DeliverPlanMainServiceImpl.java

@ -5,6 +5,8 @@ import com.win.framework.common.exception.ServiceException;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
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.deliverPlan.vo.*;
@ -15,10 +17,12 @@ import com.win.module.wms.dal.dataobject.customer.CustomerDO;
import com.win.module.wms.dal.dataobject.deliverPlan.DeliverPlanDetailDO;
import com.win.module.wms.dal.dataobject.deliverPlan.DeliverPlanMainDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO;
import com.win.module.wms.dal.dataobject.sale.SaleDetailDO;
import com.win.module.wms.dal.mysql.deliverPlan.DeliverPlanDetailMapper;
import com.win.module.wms.dal.mysql.deliverPlan.DeliverPlanMainMapper;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.enums.request.RequestStatusEnum;
import com.win.module.wms.service.businesstype.BusinesstypeService;
import com.win.module.wms.service.customer.CustomerService;
import com.win.module.wms.service.deliverJob.DeliverJobMainService;
@ -28,7 +32,6 @@ import com.win.module.wms.service.shift.ShiftService;
import com.win.module.wms.service.supplieritem.SupplieritemService;
import com.win.module.wms.util.JobUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
@ -37,8 +40,7 @@ import java.util.Collection;
import java.util.List;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.module.wms.enums.ErrorCodeConstants.DELIVER_PLAN_MAIN_NOT_EXISTS;
import static com.win.module.wms.enums.ErrorCodeConstants.PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY;
import static com.win.module.wms.enums.ErrorCodeConstants.*;
/**
* 发货计划主 Service 实现类
@ -71,25 +73,34 @@ public class DeliverPlanMainServiceImpl implements DeliverPlanMainService {
private DeliverJobMainService deliverJobMainService;
@Resource
private SerialNumberApi serialNumberApi;
@Resource
private TrendsApi trendsApi;
@Override
public Long createDeliverPlanMain(DeliverPlanMainCreateReqVO createReqVO) {
// 插入
DeliverPlanMainDO deliverPlanMain = DeliverPlanMainConvert.INSTANCE.convert(createReqVO);
deliverPlanMainMapper.insert(deliverPlanMain);
// 返回
return deliverPlanMain.getId();
RequestsettingDO requestsettingDO = new RequestsettingDO();
DeliverPlanMainDO deliverPlanMainDO = validatorToCreate(createReqVO);
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(deliverPlanMainDO.getStatus())) {
}
trendsApi.createTrends(requestsettingDO.getId(), "DeliverPlan", "增加了发货计划", TrendsTypeEnum.CREATE);
return deliverPlanMainDO.getId();
}
@Override
public void updateDeliverPlanMain(DeliverPlanMainUpdateReqVO updateReqVO) {
RequestsettingDO requestsettingDO = new RequestsettingDO();
// 校验存在
validateDeliverPlanMainExists(updateReqVO.getId());
// 更新
DeliverPlanMainDO updateObj = DeliverPlanMainConvert.INSTANCE.convert(updateReqVO);
deliverPlanMainMapper.updateById(updateObj);
DeliverPlanMainDO deliverPlanMainDO = validatorToUpdate(updateReqVO);
if(RequestStatusEnum.HANDLING.getCode().equals(deliverPlanMainDO.getStatus())) {
}
trendsApi.createTrends(requestsettingDO.getId(), "DeliverPlan", "增加了发货计划", TrendsTypeEnum.CREATE);
}
@Override
@ -134,125 +145,173 @@ public class DeliverPlanMainServiceImpl implements DeliverPlanMainService {
@Override
public List<DeliverPlanMainImportErrorVO> importDeliverPlanMainList(List<DeliverPlanMainCreateReqVO> datas, Integer mode, boolean updatePart) {
if (CollUtil.isEmpty(datas)) {
//TODO
throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY);
}
List<DeliverPlanMainImportErrorVO> errorList = new ArrayList<>();
datas.forEach(createReqVO -> {
// 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList
String messageMain = "";
//主表的验证
//校验客户代码
try {
CustomerDO customerDO = customerService.selectCustomerExist(createReqVO.getCustomerCode());
if (customerDO == null) {
messageMain += "客户代码" + createReqVO.getCustomerCode() + "无效" + ",";
BusinesstypeDO businesstypeDO = new BusinesstypeDO();
DeliverPlanMainDO mainDo = DeliverPlanMainConvert.INSTANCE.convert(createReqVO);
String messageMain = validateDeliverPlanMainImport(mainDo, businesstypeDO);
List<DeliverPlanDetailCreateReqVO> subList = createReqVO.getSubList();
List<DeliverPlanDetailDO> subDOList = DeliverPlanDetailConvert.INSTANCE.convertList03(subList);
// 是否有错误数据
boolean flag = true;
for (DeliverPlanDetailDO detailDO : subDOList) {
String messageDetail = validateDeliverPlanDetailImport(detailDO, mainDo, businesstypeDO);
if (!messageMain.isEmpty() || messageDetail.isEmpty()) {
DeliverPlanMainImportErrorVO importErrorVO = DeliverPlanMainConvert.INSTANCE.convert(createReqVO, detailDO);
importErrorVO.setImportStatus("失败");
messageMain = messageMain + messageDetail;
importErrorVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1));
errorList.add(importErrorVO);
flag = false;
}
} catch (ServiceException ex) {
messageMain += ex.getMessage() + ",";
}
//校验业务类型相关属性
try {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverPlan");
//写入数据
if (flag) {
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverRequestRequest");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
mainDo.setBusinessType(businesstypeDO.getCode());
}
String number = serialNumberApi.generateCode(RuleCodeEnum.SUPPLIER_DELIVER_REQUEST.getCode());
mainDo.setNumber(number);
deliverPlanMainMapper.insert(mainDo);
for (DeliverPlanDetailDO detailDO : subDOList) {
detailDO.setNumber(mainDo.getNumber());
detailDO.setMasterId(mainDo.getId());
detailDO.setCustomerDockCode(null);
}
// createReqVO.setFromLocationTypes(businesstypeDO.getOutLocationTypes());
// createReqVO.setToLocationTypes(businesstypeDO.getInLocationTypes());
// createReqVO.setFromAreaCodes(businesstypeDO.getOutAreaCodes());
// createReqVO.setToAreaCodes(businesstypeDO.getInAreaCodes());
} catch (ServiceException ex) {
messageMain += ex.getMessage() + ",";
deliverPlanDetailMapper.insertBatch(subDOList);
}
});
return errorList;
}
//子表的验证
List<DeliverPlanDetailCreateReqVO> subList = createReqVO.getSubList();
List<DeliverPlanDetailDO> subDOList = DeliverPlanDetailConvert.INSTANCE.convertList03(subList);
for (DeliverPlanDetailDO purchaseDetailDO : subDOList) {
String messageDetail = "";
// 校验物品基础信息
try {
ItembasicDO itembasicDO = itembasicService.selectItembasic(purchaseDetailDO.getItemCode());
if (itembasicDO.getUom() != purchaseDetailDO.getUom()) {
messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchaseDetailDO.getUom() + ",";
} else {
// purchaseDetailDO.setItemDesc1(itembasicDO.getDesc1());
// purchaseDetailDO.setItemDesc2(itembasicDO.getDesc2());
// purchaseDetailDO.setItemName(itembasicDO.getName());
purchaseDetailDO.setProject(itembasicDO.getProject());
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
/**
* 主表校验导入并赋值一些参数
*
* @param mainDo
* @return
*/
private String validateDeliverPlanMainImport(DeliverPlanMainDO mainDo, BusinesstypeDO businesstypeDO) {
// 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList
String messageMain = "";
//主表的验证
//校验客户代码
try {
CustomerDO customerDO = customerService.selectCustomerExist(mainDo.getCustomerCode());
if (customerDO == null) {
messageMain += "客户代码" + mainDo.getCustomerCode() + "无效" + ",";
}
} catch (ServiceException ex) {
messageMain += ex.getMessage() + ",";
}
//校验业务类型相关属性
try {
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverPlan");
if (businesstypeDO != null) {
mainDo.setBusinessType(businesstypeDO.getCode());
}
} catch (ServiceException ex) {
messageMain += ex.getMessage() + ",";
}
return messageMain;
}
// 校验物品标包信息
try {
SaleDetailDO saleDetailDO = deliverJobMainService.saleDetailExist(purchaseDetailDO.getSoNumber(), purchaseDetailDO.getSoLine(), purchaseDetailDO.getItemCode());
if (saleDetailDO != null) {
// createReqVO.setBusinessType(saleDetailDO.getCode());
}
// jobUtils.ifInToLocationType(from_location_code,saleDetailDO);
// createReqVO.setFromLocationTypes(saleDetailDO.getOutLocationTypes());
// createReqVO.setToLocationTypes(saleDetailDO.getInLocationTypes());
// createReqVO.setFromAreaCodes(saleDetailDO.getOutAreaCodes());
// createReqVO.setToAreaCodes(saleDetailDO.getInAreaCodes());
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
/**
* 子表校验导入并赋值一些参数
*
* @param detailDo
* @return
*/
private String validateDeliverPlanDetailImport(DeliverPlanDetailDO detailDo, DeliverPlanMainDO mainDo, BusinesstypeDO businesstypeDO) {
String messageDetail = "";
// 校验物品基础信息
try {
ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode());
if ( !detailDo.getUom().equals(itembasicDO.getUom())) {
messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + detailDo.getUom() + ",";
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
// 校验物品标包信息
try {
SaleDetailDO saleDetailDO = deliverJobMainService.saleDetailExist(detailDo.getSoNumber(), detailDo.getSoLine(), detailDo.getItemCode());
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
return messageDetail;
}
DeliverPlanDetailCreateReqVO purchaseDetailCreateReqVO = DeliverPlanDetailConvert.INSTANCE.convert1(purchaseDetailDO);
DeliverPlanMainImportErrorVO importVO = DeliverPlanDetailConvert.INSTANCE.convert(createReqVO, purchaseDetailCreateReqVO);
//进行子表的错误统计
//主表没有错误 写入库里
if (!messageMain.equals("") || !messageDetail.equals("")) {
importVO.setImportStatus("失败");
messageMain = messageMain + messageDetail;
importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1));
errorList.add(importVO);
} else {
purchaseDetailDO.setNumber(createReqVO.getNumber());
purchaseDetailDO.setMasterId(createReqVO.getId());
purchaseDetailDO.setCustomerDockCode(null);
purchaseDetailDO.setNumber(createReqVO.getNumber());
}
}
//新增方法(主和子)
private DeliverPlanMainDO validatorToCreate(DeliverPlanMainCreateReqVO createReqVO) {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverPlan");
DeliverPlanMainDO deliverPlanMainDO = validateMainMethod(createReqVO,businesstypeDO);
//子表校验
List<DeliverPlanDetailCreateReqVO> subList = createReqVO.getSubList();
List<DeliverPlanDetailDO> subDOList = DeliverPlanDetailConvert.INSTANCE.convertList03(subList);
for (DeliverPlanDetailDO DeliverPlanDetailDO : subDOList) {
validateDetailMethod(DeliverPlanDetailDO);
}
String number = serialNumberApi.generateCode(RuleCodeEnum.SUPPLIER_DELIVER_REQUEST.getCode());
deliverPlanMainDO.setNumber(number);
deliverPlanMainMapper.insert(deliverPlanMainDO);
for (DeliverPlanDetailDO deliverPlanDetailDO : subDOList) {
deliverPlanDetailDO.setNumber(deliverPlanMainDO.getNumber());
deliverPlanDetailDO.setMasterId(deliverPlanMainDO.getId());
deliverPlanDetailDO.setCustomerDockCode(null);
}
deliverPlanDetailMapper.insertBatch(subDOList);
return deliverPlanMainDO;
}
if (errorList.isEmpty()) {
// 判断如果不存在,在进行插入
DeliverPlanMainDO existPurchaseclaimRequestMainDO = deliverPlanMainMapper.selectByNumber(createReqVO.getNumber());
if (existPurchaseclaimRequestMainDO == null && mode != 3) {
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverRequestRequest");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
createReqVO.setStatus(null);
String number = serialNumberApi.generateCode(RuleCodeEnum.SUPPLIER_DELIVER_REQUEST.getCode());
createReqVO.setNumber(number);
DeliverPlanMainDO createObj = DeliverPlanMainConvert.INSTANCE.convert(createReqVO);
deliverPlanMainMapper.insert(createObj);
deliverPlanDetailMapper.insertBatch(subDOList);
} else if (existPurchaseclaimRequestMainDO != null && mode != 2) {
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverRequestRequest");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
createReqVO.setStatus(null);
String number = serialNumberApi.generateCode(RuleCodeEnum.SUPPLIER_DELIVER_REQUEST.getCode());
createReqVO.setNumber(number);
DeliverPlanMainDO createObj = DeliverPlanMainConvert.INSTANCE.convert(createReqVO);
deliverPlanMainMapper.updateById(createObj);
deliverPlanDetailMapper.updateBatch(subDOList);
}
}
});
//错误不为空并非部分更新,手工回滚
if (!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
//修改方法(主和子)
private DeliverPlanMainDO validatorToUpdate(DeliverPlanMainUpdateReqVO updateReqVO) {
BusinesstypeDO businesstypeDO = new BusinesstypeDO();
DeliverPlanMainDO deliverPlanMainDO = validateMainMethod(updateReqVO,businesstypeDO);
//子表校验
List<DeliverPlanDetailUpdateReqVO> subList = updateReqVO.getSubList();
List<DeliverPlanDetailDO> subDOList = DeliverPlanDetailConvert.INSTANCE.convertList05(subList);
for (DeliverPlanDetailDO deliverPlanDetailDO : subDOList) {
validateDetailMethod(deliverPlanDetailDO);
}
return errorList;
deliverPlanMainMapper.updateById(deliverPlanMainDO);
deliverPlanDetailMapper.updateBatch(subDOList);
return deliverPlanMainDO;
}
//校验主表公共方法(适用于新增/修改)
private DeliverPlanMainDO validateMainMethod(DeliverPlanMainBaseVO baseVO, BusinesstypeDO businesstypeDO){
DeliverPlanMainDO deliverPlanMainDO = DeliverPlanMainConvert.INSTANCE.convert(baseVO);
this.validatorCustomerExist(deliverPlanMainDO.getCustomerCode());
deliverPlanMainDO.setBusinessType(businesstypeDO.getCode());
return deliverPlanMainDO;
}
//校验子表公共方法(适用于新增/修改)
private void validateDetailMethod(DeliverPlanDetailDO deliverPlanDetailDO) {
ItembasicDO itembasicDO = this.validatorItembasic(deliverPlanDetailDO.getItemCode());
if ( !deliverPlanDetailDO.getUom().equals(itembasicDO.getUom())) {
throw exception(UOM_ERROR, deliverPlanDetailDO.getUom());
}
this.validatorDetailExist(deliverPlanDetailDO.getSoNumber(), deliverPlanDetailDO.getSoLine(), deliverPlanDetailDO.getItemCode());
}
//主表校验客户代码
private void validatorCustomerExist(String customerCode) {
customerService.selectCustomerExist(customerCode);
}
//子表校验物品基础信息
private ItembasicDO validatorItembasic(String itemCode) {
return itembasicService.selectItembasic(itemCode);
}
//子表校验客户代码
private void validatorDetailExist(String soNumber, String soLine, String itemCode) {
deliverJobMainService.saleDetailExist(soNumber, soLine, itemCode);
}
}

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

@ -5,6 +5,7 @@ import cn.hutool.core.exceptions.UtilException;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.common.util.validation.ValidationUtils;
import com.win.framework.dict.core.util.DictFrameworkUtils;
import com.win.module.infra.api.trends.TrendsApi;
@ -14,13 +15,16 @@ import com.win.module.system.enums.serialNumber.RuleCodeEnum;
import com.win.module.wms.controller.issueRequest.vo.*;
import com.win.module.wms.controller.rule.vo.RuleRespVO;
import com.win.module.wms.convert.issueRequest.IssueRequestDetailConvert;
import com.win.module.wms.convert.issueRequest.IssueRequestMainConvert;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
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.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.productionline.ProductionlineDO;
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.dal.mysql.issueRequest.IssueRequestMainMapper;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.enums.request.RequestStatusEnum;
import com.win.module.wms.service.itembasic.ItembasicService;
@ -32,21 +36,15 @@ 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.stereotype.Service;
import javax.annotation.Resource;
import javax.validation.Validator;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import javax.validation.Validator;
import java.time.LocalDateTime;
import java.util.*;
import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.convert.issueRequest.IssueRequestMainConvert;
import com.win.module.wms.dal.mysql.issueRequest.IssueRequestMainMapper;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.module.wms.enums.ErrorCodeConstants.*;
@ -175,6 +173,7 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
return request;
}
//导入的主方法
@Override
@Transactional
public List<IssueRequestImportErrorVO> importIssueRequestList(List<IssueRequestMainCreateReqVO> datas, Integer mode, boolean updatePart) {
@ -217,106 +216,8 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
return errorList;
}
private void validatorWorkshop(String workshopCode) {
workshopService.selectWorkshopExist(workshopCode);
}
private ItembasicDO validatorItembasic(String itemCode) {
return itembasicService.selectItembasic(itemCode);
}
//接口调用后throw的错误需要进行修改形式 code需要统一一下
private void validatorIfInType(String itemType, BusinesstypeDO businesstypeDO) {
jobUtils.ifInType(itemType, businesstypeDO);
}
private ProductionlineDO validatorProductionLineCode(String productionLineCode) {
return productionlineService.productionLineCodeExist(productionLineCode);
}
private WorkstationDO validatorWorkstation(String workStationCode, String workshopCode, String productionLineCode) {
return workstationService.selectWorkstationExist(workStationCode, workshopCode, productionLineCode);
}
private void validatorProductionLineCodeAndpItemCodeExist(String productionLineCode, String itemCode) {
productionlineitemService.productionLineCodeAndpItemCodeExist(productionLineCode, itemCode);
}
//新增校验
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) {
validateDetailMethod(issueRequestDetailDO,businesstypeDO,issueRequestMainDO);
}
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode());
issueRequestMainDO.setNumber(number);
issueRequestMainMapper.insert(issueRequestMainDO);
for (IssueRequestDetailDO issueRequestDetailDO : subDOList) {
issueRequestDetailDO.setMasterId(issueRequestMainDO.getId());
issueRequestDetailDO.setNumber(issueRequestMainDO.getNumber());
}
issueRequestDetailMapper.insertBatch(subDOList);
return issueRequestMainDO;
}
//修改校验
private IssueRequestMainDO validatorToUpdate(IssueRequestMainUpdateReqVO updateReqVO,RequestsettingDO requestsettingDO) {
BusinesstypeDO businesstypeDO = new BusinesstypeDO();
IssueRequestMainDO issueRequestMainDO = validateMainMethod(updateReqVO,businesstypeDO,requestsettingDO);
//子表校验
List<IssueRequestDetailUpdateReqVO> subList = updateReqVO.getSubList();
List<IssueRequestDetailDO> subDOList = IssueRequestDetailConvert.INSTANCE.convertList05(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);
this.validatorWorkshop(issueRequestMainDO.getWorkshopCode());
issueRequestMainDO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
issueRequestMainDO.setRequestTime(LocalDateTime.now());
requestsettingDO = requestsettingService.selectRequestsettingExist("IssueRequest");
issueRequestMainDO.setAutoAgree(requestsettingDO.getAutoAgree());
issueRequestMainDO.setAutoCommit(requestsettingDO.getAutoCommit());
issueRequestMainDO.setAutoExecute(requestsettingDO.getAutoExecute());
issueRequestMainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("IssueRequest");
issueRequestMainDO.setBusinessType(businesstypeDO.getCode());
issueRequestMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes());
issueRequestMainDO.setToLocationTypes(businesstypeDO.getInLocationTypes());
issueRequestMainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes());
issueRequestMainDO.setToAreaCodes(businesstypeDO.getInAreaCodes());
return issueRequestMainDO;
}
//校验子表公共方法(适用于新增/修改)
private void validateDetailMethod(IssueRequestDetailDO issueRequestDetailDO,BusinesstypeDO businesstypeDO,IssueRequestMainDO issueRequestMainDO) {
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);
}
}
/**
* 校验导入并赋值一些参数
* 主表校验导入并赋值一些参数
*
* @param mainDo
* @return
@ -358,7 +259,7 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
}
/**
* 校验导入并赋值一些参数
* 子表校验导入并赋值一些参数
*
* @param detailDo
* @return
@ -416,4 +317,104 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
}
return message.toString();
}
//新增方法(主和子)
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) {
validateDetailMethod(issueRequestDetailDO,businesstypeDO,issueRequestMainDO);
}
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode());
issueRequestMainDO.setNumber(number);
issueRequestMainMapper.insert(issueRequestMainDO);
for (IssueRequestDetailDO issueRequestDetailDO : subDOList) {
issueRequestDetailDO.setMasterId(issueRequestMainDO.getId());
issueRequestDetailDO.setNumber(issueRequestMainDO.getNumber());
}
issueRequestDetailMapper.insertBatch(subDOList);
return issueRequestMainDO;
}
//修改方法(主和子)
private IssueRequestMainDO validatorToUpdate(IssueRequestMainUpdateReqVO updateReqVO,RequestsettingDO requestsettingDO) {
BusinesstypeDO businesstypeDO = new BusinesstypeDO();
IssueRequestMainDO issueRequestMainDO = validateMainMethod(updateReqVO,businesstypeDO,requestsettingDO);
//子表校验
List<IssueRequestDetailUpdateReqVO> subList = updateReqVO.getSubList();
List<IssueRequestDetailDO> subDOList = IssueRequestDetailConvert.INSTANCE.convertList05(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);
this.validatorWorkshop(issueRequestMainDO.getWorkshopCode());
issueRequestMainDO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
issueRequestMainDO.setRequestTime(LocalDateTime.now());
requestsettingDO = requestsettingService.selectRequestsettingExist("IssueRequest");
issueRequestMainDO.setAutoAgree(requestsettingDO.getAutoAgree());
issueRequestMainDO.setAutoCommit(requestsettingDO.getAutoCommit());
issueRequestMainDO.setAutoExecute(requestsettingDO.getAutoExecute());
issueRequestMainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("IssueRequest");
issueRequestMainDO.setBusinessType(businesstypeDO.getCode());
issueRequestMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes());
issueRequestMainDO.setToLocationTypes(businesstypeDO.getInLocationTypes());
issueRequestMainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes());
issueRequestMainDO.setToAreaCodes(businesstypeDO.getInAreaCodes());
return issueRequestMainDO;
}
//校验子表公共方法(适用于新增/修改)
private void validateDetailMethod(IssueRequestDetailDO issueRequestDetailDO,BusinesstypeDO businesstypeDO,IssueRequestMainDO issueRequestMainDO) {
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);
}
}
private void validatorWorkshop(String workshopCode) {
workshopService.selectWorkshopExist(workshopCode);
}
private ItembasicDO validatorItembasic(String itemCode) {
return itembasicService.selectItembasic(itemCode);
}
//接口调用后throw的错误需要进行修改形式 code需要统一一下
private void validatorIfInType(String itemType, BusinesstypeDO businesstypeDO) {
jobUtils.ifInType(itemType, businesstypeDO);
}
private ProductionlineDO validatorProductionLineCode(String productionLineCode) {
return productionlineService.productionLineCodeExist(productionLineCode);
}
private WorkstationDO validatorWorkstation(String workStationCode, String workshopCode, String productionLineCode) {
return workstationService.selectWorkstationExist(workStationCode, workshopCode, productionLineCode);
}
private void validatorProductionLineCodeAndpItemCodeExist(String productionLineCode, String itemCode) {
productionlineitemService.productionLineCodeAndpItemCodeExist(productionLineCode, itemCode);
}
}

Loading…
Cancel
Save