Browse Source

发货计划 要货预测 库存修改申请等用例导入/新增/编辑

master
叶佳兴 2 years ago
parent
commit
a0dedde662
  1. 2
      win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java
  2. 11
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverPlan/vo/DeliverPlanMainBaseVO.java
  3. 11
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/demandforecasting/vo/DemandforecastingMainUpdateReqVO.java
  4. 11
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestMainUpdateReqVO.java
  5. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/demandforecasting/DemandforecastingDetailConvert.java
  6. 18
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/demandforecasting/DemandforecastingMainConvert.java
  7. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorychangeRequest/InventorychangeRequestDetailConvert.java
  8. 19
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorychangeRequest/InventorychangeRequestMainConvert.java
  9. 18
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverPlan/DeliverPlanMainServiceImpl.java
  10. 291
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/demandforecasting/DemandforecastingMainServiceImpl.java
  11. 731
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestMainServiceImpl.java

2
win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java

@ -662,6 +662,8 @@ public interface ErrorCodeConstants {
ErrorCode SALE_MAIN_NOT_EXISTS = new ErrorCode(1_000_117_000, "销售订单主不存在");
ErrorCode SALE_DETAIL_NOT_EXISTS = new ErrorCode(1_000_117_001, "销售订单子不存在");
//发货计划ErrorCode
//发货计划导入不能为空
ErrorCode DELIVERPLAN_MAIN_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_000_020_015, "导入发货计划不能为空");
ErrorCode DELIVER_PLAN_MAIN_NOT_EXISTS = new ErrorCode(1_000_118_000, "发货计划主不存在");
ErrorCode DELIVER_PLAN_DETAIL_NOT_EXISTS = new ErrorCode(1_000_118_001, "发货计划子不存在");
//发货申请ErrorCode

11
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverPlan/vo/DeliverPlanMainBaseVO.java

@ -1,16 +1,9 @@
package com.win.module.wms.controller.deliverPlan.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import javax.validation.constraints.*;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
/**

11
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/demandforecasting/vo/DemandforecastingMainUpdateReqVO.java

@ -1,12 +1,19 @@
package com.win.module.wms.controller.demandforecasting.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 DemandforecastingMainUpdateReqVO extends DemandforecastingMainBaseVO {
@SubObject
@Schema(description = "子表数据")
private List<DemandforecastingDetailUpdateReqVO> subList;
}

11
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestMainUpdateReqVO.java

@ -1,12 +1,19 @@
package com.win.module.wms.controller.inventorychangeRequest.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 InventorychangeRequestMainUpdateReqVO extends InventorychangeRequestMainBaseVO {
@SubObject
@Schema(description = "子表数据")
private List<InventorychangeRequestDetailUpdateReqVO> subList;
}

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/demandforecasting/DemandforecastingDetailConvert.java

@ -35,6 +35,8 @@ public interface DemandforecastingDetailConvert {
List<DemandforecastingDetailDO> convertList03(List<DemandforecastingDetailCreateReqVO> list);
List<DemandforecastingDetailDO> convertList05(List<DemandforecastingDetailUpdateReqVO> list);
DemandforecastingDetailCreateReqVO convert1(DemandforecastingDetailDO bean);
@Mappings({

18
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/demandforecasting/DemandforecastingMainConvert.java

@ -1,16 +1,15 @@
package com.win.module.wms.convert.demandforecasting;
import java.util.*;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.demandforecasting.vo.DemandforecastingMainCreateReqVO;
import com.win.module.wms.controller.demandforecasting.vo.DemandforecastingMainExcelVO;
import com.win.module.wms.controller.demandforecasting.vo.DemandforecastingMainRespVO;
import com.win.module.wms.controller.demandforecasting.vo.DemandforecastingMainUpdateReqVO;
import com.win.module.wms.controller.demandforecasting.vo.*;
import com.win.module.wms.dal.dataobject.demandforecasting.DemandforecastingDetailDO;
import com.win.module.wms.dal.dataobject.demandforecasting.DemandforecastingMainDO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
import com.win.module.wms.dal.dataobject.demandforecasting.DemandforecastingMainDO;
import java.util.List;
/**
* 要货预测主 Convert
@ -24,6 +23,8 @@ public interface DemandforecastingMainConvert {
DemandforecastingMainDO convert(DemandforecastingMainCreateReqVO bean);
DemandforecastingMainDO convert(DemandforecastingMainBaseVO bean);
DemandforecastingMainDO convert(DemandforecastingMainUpdateReqVO bean);
DemandforecastingMainRespVO convert(DemandforecastingMainDO bean);
@ -34,4 +35,5 @@ public interface DemandforecastingMainConvert {
List<DemandforecastingMainExcelVO> convertList02(List<DemandforecastingMainDO> list);
DemandforecastingImportErrorVO convert(DemandforecastingMainCreateReqVO mainVo, DemandforecastingDetailDO detailDo);
}

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorychangeRequest/InventorychangeRequestDetailConvert.java

@ -35,6 +35,8 @@ public interface InventorychangeRequestDetailConvert {
List<InventorychangeRequestDetailDO> convertList03(List<InventorychangeRequestDetailCreateReqVO> list);
List<InventorychangeRequestDetailDO> convertList05(List<InventorychangeRequestDetailUpdateReqVO> list);
InventorychangeRequestDetailCreateReqVO convert1(InventorychangeRequestDetailDO bean);
@Mappings({

19
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorychangeRequest/InventorychangeRequestMainConvert.java

@ -1,16 +1,13 @@
package com.win.module.wms.convert.inventorychangeRequest;
import java.util.*;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestMainCreateReqVO;
import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestMainExcelVO;
import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestMainRespVO;
import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestMainUpdateReqVO;
import com.win.module.wms.controller.inventorychangeRequest.vo.*;
import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestDetailDO;
import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestMainDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestMainDO;
import java.util.List;
/**
* 库存修改申请主 Convert
@ -26,6 +23,8 @@ public interface InventorychangeRequestMainConvert {
InventorychangeRequestMainDO convert(InventorychangeRequestMainUpdateReqVO bean);
InventorychangeRequestMainDO convert(InventorychangeRequestMainBaseVO bean);
InventorychangeRequestMainRespVO convert(InventorychangeRequestMainDO bean);
List<InventorychangeRequestMainRespVO> convertList(List<InventorychangeRequestMainDO> list);
@ -34,4 +33,8 @@ public interface InventorychangeRequestMainConvert {
List<InventorychangeRequestMainExcelVO> convertList02(List<InventorychangeRequestMainDO> list);
InventorychangeRequestMainImportErrorVO convert(InventorychangeRequestMainCreateReqVO mainVo, InventorychangeRequestDetailDO detailDo);
}

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

@ -28,6 +28,7 @@ import com.win.module.wms.service.customer.CustomerService;
import com.win.module.wms.service.deliverJob.DeliverJobMainService;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.itempackaging.ItempackagingService;
import com.win.module.wms.service.requestsetting.RequestsettingService;
import com.win.module.wms.service.shift.ShiftService;
import com.win.module.wms.service.supplieritem.SupplieritemService;
import com.win.module.wms.util.JobUtils;
@ -75,12 +76,13 @@ public class DeliverPlanMainServiceImpl implements DeliverPlanMainService {
private SerialNumberApi serialNumberApi;
@Resource
private TrendsApi trendsApi;
@Resource
private RequestsettingService requestsettingService;
@Override
public Long createDeliverPlanMain(DeliverPlanMainCreateReqVO createReqVO) {
RequestsettingDO requestsettingDO = new RequestsettingDO();
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("DeliverPlan");
DeliverPlanMainDO deliverPlanMainDO = validatorToCreate(createReqVO);
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(deliverPlanMainDO.getStatus())) {
@ -92,15 +94,14 @@ public class DeliverPlanMainServiceImpl implements DeliverPlanMainService {
@Override
public void updateDeliverPlanMain(DeliverPlanMainUpdateReqVO updateReqVO) {
RequestsettingDO requestsettingDO = new RequestsettingDO();
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("DeliverPlan");
// 校验存在
validateDeliverPlanMainExists(updateReqVO.getId());
DeliverPlanMainDO deliverPlanMainDO = validatorToUpdate(updateReqVO);
if(RequestStatusEnum.HANDLING.getCode().equals(deliverPlanMainDO.getStatus())) {
}
trendsApi.createTrends(requestsettingDO.getId(), "DeliverPlan", "增加了发货计划", TrendsTypeEnum.CREATE);
trendsApi.createTrends(requestsettingDO.getId(), "DeliverPlan", "修改了发货计划", TrendsTypeEnum.CREATE);
}
@Override
@ -145,8 +146,7 @@ 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);
throw exception(DELIVERPLAN_MAIN_IMPORT_LIST_IS_EMPTY);
}
List<DeliverPlanMainImportErrorVO> errorList = new ArrayList<>();
datas.forEach(createReqVO -> {
@ -255,8 +255,8 @@ public class DeliverPlanMainServiceImpl implements DeliverPlanMainService {
//子表校验
List<DeliverPlanDetailCreateReqVO> subList = createReqVO.getSubList();
List<DeliverPlanDetailDO> subDOList = DeliverPlanDetailConvert.INSTANCE.convertList03(subList);
for (DeliverPlanDetailDO DeliverPlanDetailDO : subDOList) {
validateDetailMethod(DeliverPlanDetailDO);
for (DeliverPlanDetailDO deliverPlanDetailDO : subDOList) {
validateDetailMethod(deliverPlanDetailDO);
}
String number = serialNumberApi.generateCode(RuleCodeEnum.SUPPLIER_DELIVER_REQUEST.getCode());
deliverPlanMainDO.setNumber(number);

291
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/demandforecasting/DemandforecastingMainServiceImpl.java

@ -1,11 +1,12 @@
package com.win.module.wms.service.demandforecasting;
import cn.hutool.core.collection.CollUtil;
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.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.demandforecasting.vo.*;
@ -16,11 +17,13 @@ import com.win.module.wms.dal.dataobject.demandforecasting.DemandforecastingDeta
import com.win.module.wms.dal.dataobject.demandforecasting.DemandforecastingMainDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.purchase.PurchaseDetailDO;
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO;
import com.win.module.wms.dal.dataobject.supplier.SupplierDO;
import com.win.module.wms.dal.dataobject.supplieritem.SupplieritemDO;
import com.win.module.wms.dal.mysql.demandforecasting.DemandforecastingDetailMapper;
import com.win.module.wms.dal.mysql.demandforecasting.DemandforecastingMainMapper;
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.purchase.PurchaseMainService;
import com.win.module.wms.service.requestsetting.RequestsettingService;
@ -29,7 +32,6 @@ import com.win.module.wms.service.supplieritem.SupplieritemService;
import com.win.module.wms.util.JobUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
@ -68,24 +70,29 @@ public class DemandforecastingMainServiceImpl implements DemandforecastingMainSe
private SupplieritemService supplieritemService;
@Resource
private SerialNumberApi serialNumberApi;
private TrendsApi trendsApi;
@Override
public Long createDemandforecastingMain(DemandforecastingMainCreateReqVO createReqVO) {
// 插入
DemandforecastingMainDO demandforecastingMain = DemandforecastingMainConvert.INSTANCE.convert(createReqVO);
demandforecastingMainMapper.insert(demandforecastingMain);
// 返回
return demandforecastingMain.getId();
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("Demandforecasting");
DemandforecastingMainDO demandforecastingMainDO = validatorToCreate(createReqVO);
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(demandforecastingMainDO.getStatus())) {
}
trendsApi.createTrends(requestsettingDO.getId(), "Demandforecasting", "增加了要货预测", TrendsTypeEnum.CREATE);
return demandforecastingMainDO.getId();
}
@Override
public void updateDemandforecastingMain(DemandforecastingMainUpdateReqVO updateReqVO) {
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("Demandforecasting");
// 校验存在
validateDemandforecastingMainExists(updateReqVO.getId());
// 更新
DemandforecastingMainDO updateObj = DemandforecastingMainConvert.INSTANCE.convert(updateReqVO);
demandforecastingMainMapper.updateById(updateObj);
DemandforecastingMainDO demandforecastingMainDO = validatorToUpdate(updateReqVO);
if(RequestStatusEnum.HANDLING.getCode().equals(demandforecastingMainDO.getStatus())) {
}
trendsApi.createTrends(requestsettingDO.getId(), "Demandforecasting", "修改了要货预测", TrendsTypeEnum.CREATE);
}
@Override
@ -135,113 +142,173 @@ public class DemandforecastingMainServiceImpl implements DemandforecastingMainSe
}
List<DemandforecastingImportErrorVO> errorList = new ArrayList<>();
datas.forEach(createReqVO -> {
String messageMain = "";
//主表校验方法
if (mode != null) {
//校验供应商基础信息
try {
SupplierDO supplierDO = supplierService.selectSupplier(createReqVO.getSupplierCode());
if (supplierDO == null) {
messageMain += "未查找到供应商" + createReqVO.getSupplierCode() + "信息" + ",";
}
} catch (Exception ex) {
messageMain += ex.getMessage() + ",";
BusinesstypeDO businesstypeDO = new BusinesstypeDO();
DemandforecastingMainDO mainDo = DemandforecastingMainConvert.INSTANCE.convert(createReqVO);
String messageMain = validateDemandforecastingMainImport(mainDo, businesstypeDO);
List<DemandforecastingDetailCreateReqVO> subList = createReqVO.getSubList();
List<DemandforecastingDetailDO> subDOList = DemandforecastingDetailConvert.INSTANCE.convertList03(subList);
// 是否有错误数据
boolean flag = true;
for (DemandforecastingDetailDO detailDO : subDOList) {
String messageDetail = validateDemandforecastingDetailImport(detailDO, mainDo, businesstypeDO);
if (!messageMain.isEmpty() || messageDetail.isEmpty()) {
DemandforecastingImportErrorVO importErrorVO = DemandforecastingMainConvert.INSTANCE.convert(createReqVO, detailDO);
importErrorVO.setImportStatus("失败");
messageMain = messageMain + messageDetail;
importErrorVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1));
errorList.add(importErrorVO);
flag = false;
}
List<DemandforecastingDetailCreateReqVO> subList = createReqVO.getSubList();
List<DemandforecastingDetailDO> subDOList = DemandforecastingDetailConvert.INSTANCE.convertList03(subList);
// 新增子表数据
for (DemandforecastingDetailDO detailDO : subDOList) {
String messageDetail = "";
//校验物品基础信息
try {
ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDO.getItemCode());
if (itembasicDO == null) {
messageDetail += "物品" + detailDO.getItemCode() + "无效" + ",";
} else {
if (!detailDO.getUom().equals(itembasicDO.getUom())) {
messageDetail += "计量单位" + detailDO.getItemCode() + "错误," + "应该是" + itembasicDO.getUom() + ",";
}
}
} catch (Exception ex) {
messageDetail += ex.getMessage() + ",";
}
//校验采购订单
try {
PurchaseDetailDO purchaseDetailDO = purchaseMainService.selectPurchaseDetailDoExist(detailDO.getPoNumber(), createReqVO.getSupplierCode(), detailDO.getItemCode(), detailDO.getPoLine());
if ((purchaseDetailDO.getShippedQty().add(detailDO.getPlanQty())).compareTo(purchaseDetailDO.getOrderQty()) == 1) {
messageDetail += "订单行" + detailDO.getPoLine() + "的已收货数量" + purchaseDetailDO.getReceivedQty() + "+计划数量" + detailDO.getPlanQty() + "大于订单数量" + purchaseDetailDO.getOrderQty() + ",";
}
} catch (Exception ex) {
messageDetail += ex.getMessage() + ",";
}
// 校验供应商物品
try {
SupplieritemDO supplieritemDO = supplieritemService.selectSupplierItemExist(createReqVO.getSupplierCode(), detailDO.getItemCode());
if (supplieritemDO == null) {
messageDetail += "未查找到物品" + detailDO.getItemCode() + "供应商" + createReqVO.getSupplierCode() + "信息" + ",";
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
DemandforecastingDetailCreateReqVO demandforecastingDetailCreateReqVO = DemandforecastingDetailConvert.INSTANCE.convert1(detailDO);
DemandforecastingImportErrorVO importVO = DemandforecastingDetailConvert.INSTANCE.convert(createReqVO, demandforecastingDetailCreateReqVO);
//进行子表的错误统计
//主表没有错误 写入库里
if (!messageMain.equals("") || !messageDetail.equals("")) {
importVO.setImportStatus("失败");
messageMain = messageMain + messageDetail;
importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1));
errorList.add(importVO);
} else {
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_PREDICTION.getCode());
createReqVO.setNumber(number);
}
}
//写入数据
if (flag) {
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchasePrediction");
if (businesstypeDO != null) {
mainDo.setBusinessType(businesstypeDO.getCode());
}
if (errorList.isEmpty()) {
// 判断如果不存在,在进行插入
DemandforecastingMainDO demandforecastingMainDO = demandforecastingMainMapper.selectByNumber(createReqVO.getSupplierCode());
if (demandforecastingMainDO == null && mode != 3) {
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchasePrediction");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
DemandforecastingMainDO createObj = DemandforecastingMainConvert.INSTANCE.convert(createReqVO);
//根据版本默认作废之前版本
QueryWrapper<DemandforecastingMainDO> demandforecastingMainDOQueryWrapper = new QueryWrapper<>();
demandforecastingMainDOQueryWrapper.eq("supplier_code", createReqVO.getSupplierCode());
List<DemandforecastingMainDO> doList = demandforecastingMainMapper.selectList(demandforecastingMainDOQueryWrapper);
for (DemandforecastingMainDO mainDO : doList) {
mainDO.setAvailable("FALSE");
}
demandforecastingMainMapper.insert(createObj);
demandforecastingDetailMapper.insertBatch(subDOList);
} else if (demandforecastingMainDO != null && mode != 2) {
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchasePrediction");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
DemandforecastingMainDO createObj = DemandforecastingMainConvert.INSTANCE.convert(createReqVO);
//根据版本默认作废之前版本
QueryWrapper<DemandforecastingMainDO> demandforecastingMainDOQueryWrapper = new QueryWrapper<>();
demandforecastingMainDOQueryWrapper.eq("supplier_code", createReqVO.getSupplierCode());
List<DemandforecastingMainDO> doList = demandforecastingMainMapper.selectList(demandforecastingMainDOQueryWrapper);
for (DemandforecastingMainDO mainDO : doList) {
mainDO.setAvailable("FALSE");
}
demandforecastingMainMapper.updateById(createObj);
demandforecastingDetailMapper.updateBatch(subDOList);
}
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_PREDICTION.getCode());
mainDo.setNumber(number);
demandforecastingMainMapper.insert(mainDo);
for (DemandforecastingDetailDO detailDO : subDOList) {
detailDO.setNumber(number);
}
demandforecastingDetailMapper.insertBatch(subDOList);
}
});
//错误不为空并非部分更新,手工回滚
if (!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return errorList;
}
/**
* 主表校验导入并赋值一些参数
*
* @param mainDo
* @return
*/
private String validateDemandforecastingMainImport(DemandforecastingMainDO mainDo, BusinesstypeDO businesstypeDO) {
// 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList
String messageMain = "";
//主表的验证
//校验供应商基础信息
try {
SupplierDO supplierDO = supplierService.selectSupplier(mainDo.getSupplierCode());
if (supplierDO == null) {
messageMain += "未查找到供应商" + mainDo.getSupplierCode() + "信息" + ",";
}
} catch (Exception ex) {
messageMain += ex.getMessage() + ",";
}
return messageMain;
}
/**
* 子表校验导入并赋值一些参数
*
* @param detailDo
* @return
*/
private String validateDemandforecastingDetailImport(DemandforecastingDetailDO detailDo, DemandforecastingMainDO mainDo, BusinesstypeDO businesstypeDO) {
String messageDetail = "";
//校验物品基础信息
try {
ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode());
if (itembasicDO == null) {
messageDetail += "物品" + detailDo.getItemCode() + "无效" + ",";
} else {
if (!detailDo.getUom().equals(itembasicDO.getUom())) {
messageDetail += "计量单位" + detailDo.getItemCode() + "错误," + "应该是" + itembasicDO.getUom() + ",";
}
}
} catch (Exception ex) {
messageDetail += ex.getMessage() + ",";
}
//校验采购订单
try {
PurchaseDetailDO purchaseDetailDO = purchaseMainService.selectPurchaseDetailDoExist(detailDo.getPoNumber(), mainDo.getSupplierCode(), detailDo.getItemCode(), detailDo.getPoLine());
if ((purchaseDetailDO.getShippedQty().add(detailDo.getPlanQty())).compareTo(purchaseDetailDO.getOrderQty()) == 1) {
messageDetail += "订单行" + detailDo.getPoLine() + "的已收货数量" + purchaseDetailDO.getReceivedQty() + "+计划数量" + detailDo.getPlanQty() + "大于订单数量" + purchaseDetailDO.getOrderQty() + ",";
}
} catch (Exception ex) {
messageDetail += ex.getMessage() + ",";
}
// 校验供应商物品
try {
SupplieritemDO supplieritemDO = supplieritemService.selectSupplierItemExist(mainDo.getSupplierCode(), detailDo.getItemCode());
if (supplieritemDO == null) {
messageDetail += "未查找到物品" + detailDo.getItemCode() + "供应商" + mainDo.getSupplierCode() + "信息" + ",";
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
return messageDetail;
}
//新增方法(主和子)
private DemandforecastingMainDO validatorToCreate(DemandforecastingMainCreateReqVO createReqVO) {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("Demandforecasting");
DemandforecastingMainDO demandforecastingMainDO = validateMainMethod(createReqVO,businesstypeDO);
//子表校验
List<DemandforecastingDetailCreateReqVO> subList = createReqVO.getSubList();
List<DemandforecastingDetailDO> subDOList = DemandforecastingDetailConvert.INSTANCE.convertList03(subList);
for (DemandforecastingDetailDO demandforecastingDetailDO : subDOList) {
validateDetailMethod(demandforecastingMainDO,demandforecastingDetailDO);
}
String number = serialNumberApi.generateCode(RuleCodeEnum.SUPPLIER_DELIVER_REQUEST.getCode());
demandforecastingMainDO.setNumber(number);
demandforecastingMainMapper.insert(demandforecastingMainDO);
for (DemandforecastingDetailDO DemandforecastingDetailDO : subDOList) {
DemandforecastingDetailDO.setNumber(demandforecastingMainDO.getNumber());
DemandforecastingDetailDO.setMasterId(demandforecastingMainDO.getId());
}
demandforecastingDetailMapper.insertBatch(subDOList);
return demandforecastingMainDO;
}
//修改方法(主和子)
private DemandforecastingMainDO validatorToUpdate(DemandforecastingMainUpdateReqVO updateReqVO) {
BusinesstypeDO businesstypeDO = new BusinesstypeDO();
DemandforecastingMainDO demandforecastingMainDO = validateMainMethod(updateReqVO,businesstypeDO);
//子表校验
List<DemandforecastingDetailUpdateReqVO> subList = updateReqVO.getSubList();
List<DemandforecastingDetailDO> subDOList = DemandforecastingDetailConvert.INSTANCE.convertList05(subList);
for (DemandforecastingDetailDO demandforecastingDetailDO : subDOList) {
validateDetailMethod(demandforecastingMainDO,demandforecastingDetailDO);
}
demandforecastingMainMapper.updateById(demandforecastingMainDO);
demandforecastingDetailMapper.updateBatch(subDOList);
return demandforecastingMainDO;
}
//校验主表公共方法(适用于新增/修改)
private DemandforecastingMainDO validateMainMethod(DemandforecastingMainBaseVO baseVO, BusinesstypeDO businesstypeDO){
DemandforecastingMainDO demandforecastingMainDO = DemandforecastingMainConvert.INSTANCE.convert(baseVO);
this.validatorSupplier(demandforecastingMainDO.getSupplierCode());
return demandforecastingMainDO;
}
//校验子表公共方法(适用于新增/修改)
private void validateDetailMethod(DemandforecastingMainDO demandforecastingMainDO,DemandforecastingDetailDO demandforecastingDetailDO) {
itembasicService.selectItembasic(demandforecastingDetailDO.getItemCode());
purchaseMainService.selectPurchaseDetailDoExist(demandforecastingDetailDO.getPoNumber(), demandforecastingMainDO.getSupplierCode(), demandforecastingDetailDO.getItemCode(), demandforecastingDetailDO.getPoLine());
supplieritemService.selectSupplierItemExist(demandforecastingMainDO.getSupplierCode(), demandforecastingDetailDO.getItemCode());
}
//主表校验客户代码
private void validatorSupplier(String supplierCode) {
supplierService.selectSupplier(supplierCode);
}
//子表校验物品基础信息
private void validatorItembasic(String itemCode) {
itembasicService.selectItembasic(itemCode);
}
//子表校验物品基础信息
private void validatorItembasic(String poNumber, String supplierCode, String itemCode, String poLine) {
purchaseMainService.selectPurchaseDetailDoExist(poNumber, supplierCode, itemCode, poLine);
}
}

731
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestMainServiceImpl.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.inventorychangeRequest.vo.*;
@ -20,6 +22,7 @@ import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO;
import com.win.module.wms.dal.mysql.inventorychangeRequest.InventorychangeRequestDetailMapper;
import com.win.module.wms.dal.mysql.inventorychangeRequest.InventorychangeRequestMainMapper;
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.itempackaging.ItempackagingService;
import com.win.module.wms.service.location.LocationService;
@ -27,7 +30,6 @@ import com.win.module.wms.service.requestsetting.RequestsettingService;
import com.win.module.wms.service.shift.ShiftService;
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;
@ -36,8 +38,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.INVENTORYCHANGE_REQUEST_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 实现类
@ -64,25 +65,33 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
private LocationService locationService;
@Resource
private SerialNumberApi serialNumberApi;
@Resource
private TrendsApi trendsApi;
@Resource
private RequestsettingService requestsettingService;
@Override
public Long createInventorychangeRequestMain(InventorychangeRequestMainCreateReqVO createReqVO) {
// 插入
InventorychangeRequestMainDO inventorychangeRequestMain = InventorychangeRequestMainConvert.INSTANCE.convert(createReqVO);
inventorychangeRequestMainMapper.insert(inventorychangeRequestMain);
// 返回
return inventorychangeRequestMain.getId();
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("InventorychangeRequest");
InventorychangeRequestMainDO inventorychangeRequestMainDO = validatorToCreate(createReqVO);
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(inventorychangeRequestMainDO.getStatus())) {
}
trendsApi.createTrends(requestsettingDO.getId(), "DeliverPlan", "增加了发货计划", TrendsTypeEnum.CREATE);
return inventorychangeRequestMainDO.getId();
}
@Override
public void updateInventorychangeRequestMain(InventorychangeRequestMainUpdateReqVO updateReqVO) {
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("DeliverPlan");
// 校验存在
validateInventorychangeRequestMainExists(updateReqVO.getId());
// 更新
InventorychangeRequestMainDO updateObj = InventorychangeRequestMainConvert.INSTANCE.convert(updateReqVO);
inventorychangeRequestMainMapper.updateById(updateObj);
InventorychangeRequestMainDO inventorychangeRequestMainDO = validatorToUpdate(updateReqVO);
if(RequestStatusEnum.HANDLING.getCode().equals(inventorychangeRequestMainDO.getStatus())) {
}
trendsApi.createTrends(requestsettingDO.getId(), "DeliverPlan", "修改了发货计划", TrendsTypeEnum.CREATE);
}
@Override
@ -131,312 +140,448 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
}
List<InventorychangeRequestMainImportErrorVO> errorList = new ArrayList<>();
datas.forEach(createReqVO -> {
// 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList
String messageMain = "";
//主表的验证
//子表的验证
BusinesstypeDO businesstypeDO = new BusinesstypeDO();
InventorychangeRequestMainDO mainDo = InventorychangeRequestMainConvert.INSTANCE.convert(createReqVO);
String messageMain = validateInventorychangeRequestMainImport(mainDo, businesstypeDO);
List<InventorychangeRequestDetailCreateReqVO> subList = createReqVO.getSubList();
List<InventorychangeRequestDetailDO> subDOList = InventorychangeRequestDetailConvert.INSTANCE.convertList03(subList);
for (InventorychangeRequestDetailDO purchaseDetailDO : subDOList) {
String messageDetail = "";
//校验来源库位基础信息
try {
LocationDO locationDO = locationService.selectLocation(purchaseDetailDO.getLocationCode());
if (locationDO != null) {
purchaseDetailDO.setLocationCode(locationDO.getCode());
purchaseDetailDO.setAreaCode(locationDO.getAreaCode());
purchaseDetailDO.setLocationGroupCode(locationDO.getLocationGroupCode());
}
} catch (ServiceException ex) {
messageMain += ex.getMessage() + ",";
// 是否有错误数据
boolean flag = true;
for (InventorychangeRequestDetailDO detailDO : subDOList) {
String messageDetail = validateInventorychangeRequestDetailImport(detailDO, mainDo, businesstypeDO);
if (!messageMain.isEmpty() || messageDetail.isEmpty()) {
InventorychangeRequestMainImportErrorVO importErrorVO = InventorychangeRequestMainConvert.INSTANCE.convert(createReqVO, detailDO);
importErrorVO.setImportStatus("失败");
messageMain = messageMain + messageDetail;
importErrorVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1));
errorList.add(importErrorVO);
flag = false;
}
// 校验物品基础信息
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.setProjectCode(itembasicDO.getProject());
}
purchaseDetailDO.setProjectCode(itembasicDO.getCode());
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
//写入数据
if (flag) {
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InventoryChangeRequest");
if (businesstypeDO != null) {
mainDo.setBusinessType(businesstypeDO.getCode());
}
// 校验业务类型
try {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToOk");
jobUtils.selectItembasicExist(purchaseDetailDO.getItemCode(), businesstypeDO);
jobUtils.ifOutInventoryStatuses(purchaseDetailDO.getFromInventoryStatus(), businesstypeDO);
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
String number = serialNumberApi.generateCode(RuleCodeEnum.INVENTORY_CHANGE_REQUEST.getCode());
mainDo.setNumber(number);
inventorychangeRequestMainMapper.insert(mainDo);
for (InventorychangeRequestDetailDO detailDO : subDOList) {
detailDO.setNumber(mainDo.getNumber());
detailDO.setMasterId(mainDo.getId());
}
inventorychangeRequestDetailMapper.insertBatch(subDOList);
}
});
return errorList;
}
//隔离转合格申请
if ("Hold".equals(purchaseDetailDO.getFromInventoryStatus())) {
// 校验库存余额是否存在
try {
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add("Hold");
List<BalanceDO> balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(purchaseDetailDO.getItemCode(), purchaseDetailDO.getFromPackingNumber()
, purchaseDetailDO.getFromBatch(), purchaseDetailDO.getLocationCode(), inventoryStatus);
if (balanceDOList != null) {
BalanceDO balanceDO = balanceDOList.get(0);
purchaseDetailDO.setFromQty(balanceDO.getQty());
purchaseDetailDO.setToQty(balanceDO.getQty());
purchaseDetailDO.setQty(balanceDO.getQty());
purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate());
purchaseDetailDO.setFromProduceDate(balanceDO.getProduceDate());
purchaseDetailDO.setFromExpireDate(balanceDO.getExpireDate());
purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate());
purchaseDetailDO.setToProduceDate(balanceDO.getProduceDate());
purchaseDetailDO.setToExpireDate(balanceDO.getExpireDate());
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
purchaseDetailDO.setToInventoryStatus("OK");
String number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_SCRAP_REQUEST.getCode());
createReqVO.setNumber(number);
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToScrapRequest");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("HoldToScrapRequest");
if (requestsettingDO != null) {
createReqVO.setAutoAgree(requestsettingDO.getAutoAgree());
createReqVO.setAutoCommit(requestsettingDO.getAutoCommit());
createReqVO.setAutoExecute(requestsettingDO.getAutoExecute());
createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
}
/**
* 主表校验导入并赋值一些参数
*
* @param mainDo
* @return
*/
private String validateInventorychangeRequestMainImport(InventorychangeRequestMainDO mainDo, BusinesstypeDO businesstypeDO) {
// 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList
String messageMain = "";
//主表的验证
return messageMain;
}
//合格转隔离申请
if ("OK".equals(purchaseDetailDO.getFromInventoryStatus())) {
// 校验库存余额是否存在
try {
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add("OK");
List<BalanceDO> balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(purchaseDetailDO.getItemCode(), purchaseDetailDO.getFromPackingNumber()
, purchaseDetailDO.getFromBatch(), purchaseDetailDO.getLocationCode(), inventoryStatus);
if (balanceDOList != null) {
BalanceDO balanceDO = balanceDOList.get(0);
purchaseDetailDO.setFromQty(balanceDO.getQty());
purchaseDetailDO.setToQty(balanceDO.getQty());
purchaseDetailDO.setQty(balanceDO.getQty());
purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate());
purchaseDetailDO.setFromProduceDate(balanceDO.getProduceDate());
purchaseDetailDO.setFromExpireDate(balanceDO.getExpireDate());
purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate());
purchaseDetailDO.setToProduceDate(balanceDO.getProduceDate());
purchaseDetailDO.setToExpireDate(balanceDO.getExpireDate());
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
purchaseDetailDO.setToInventoryStatus("Hold");
String number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_HOLD_REQUEST.getCode());
createReqVO.setNumber(number);
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToHoldRequest");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("OkToHoldRequest");
if (requestsettingDO != null) {
createReqVO.setAutoAgree(requestsettingDO.getAutoAgree());
createReqVO.setAutoCommit(requestsettingDO.getAutoCommit());
createReqVO.setAutoExecute(requestsettingDO.getAutoExecute());
createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
purchaseDetailDO.setToPackingNumber(null);
purchaseDetailDO.setToBatch(null);
purchaseDetailDO.setToContainerNumber(null);
}
/**
* 子表校验导入并赋值一些参数
*
* @param detailDo
* @return
*/
private String validateInventorychangeRequestDetailImport(InventorychangeRequestDetailDO detailDo, InventorychangeRequestMainDO mainDo, BusinesstypeDO businesstypeDO) {
String messageDetail = "";
//校验来源库位基础信息
try {
LocationDO locationDO = locationService.selectLocation(detailDo.getLocationCode());
if (locationDO != null) {
detailDo.setLocationCode(locationDO.getCode());
detailDo.setAreaCode(locationDO.getAreaCode());
detailDo.setLocationGroupCode(locationDO.getLocationGroupCode());
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
// 校验物品基础信息
try {
ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode());
if (itembasicDO.getUom() != detailDo.getUom()) {
messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + detailDo.getUom() + ",";
} else {
detailDo.setItemDesc1(itembasicDO.getDesc1());
detailDo.setItemDesc2(itembasicDO.getDesc2());
detailDo.setItemName(itembasicDO.getName());
detailDo.setProjectCode(itembasicDO.getProject());
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
// 校验业务类型
try {
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToOk");
jobUtils.selectItembasicExist(detailDo.getItemCode(), businesstypeDO);
jobUtils.ifOutInventoryStatuses(detailDo.getFromInventoryStatus(), businesstypeDO);
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
//隔离转报废申请
if ("Hold".equals(purchaseDetailDO.getFromInventoryStatus())) {
// 校验库存余额是否存在
try {
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add("Hold");
List<BalanceDO> balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(purchaseDetailDO.getItemCode(), purchaseDetailDO.getFromPackingNumber()
, purchaseDetailDO.getFromBatch(), purchaseDetailDO.getLocationCode(), inventoryStatus);
if (balanceDOList != null) {
BalanceDO balanceDO = balanceDOList.get(0);
purchaseDetailDO.setFromQty(balanceDO.getQty());
purchaseDetailDO.setToQty(balanceDO.getQty());
purchaseDetailDO.setQty(balanceDO.getQty());
purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate());
purchaseDetailDO.setFromProduceDate(balanceDO.getProduceDate());
purchaseDetailDO.setFromExpireDate(balanceDO.getExpireDate());
purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate());
purchaseDetailDO.setToProduceDate(balanceDO.getProduceDate());
purchaseDetailDO.setToExpireDate(balanceDO.getExpireDate());
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
purchaseDetailDO.setToInventoryStatus("Scrap");
String number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_HOLD_REQUEST.getCode());
createReqVO.setNumber(number);
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToHoldRequest");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("OkToHoldRequest");
if (requestsettingDO != null) {
createReqVO.setAutoAgree(requestsettingDO.getAutoAgree());
createReqVO.setAutoCommit(requestsettingDO.getAutoCommit());
createReqVO.setAutoExecute(requestsettingDO.getAutoExecute());
createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
purchaseDetailDO.setFromPackingNumber(null);
purchaseDetailDO.setFromBatch(null);
purchaseDetailDO.setFromContainerNumber(null);
//隔离转合格申请
if ("Hold".equals(detailDo.getFromInventoryStatus())) {
// 校验库存余额是否存在
try {
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add("Hold");
List<BalanceDO> balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getFromPackingNumber()
, detailDo.getFromBatch(), detailDo.getLocationCode(), inventoryStatus);
if (balanceDOList != null) {
BalanceDO balanceDO = balanceDOList.get(0);
detailDo.setFromQty(balanceDO.getQty());
detailDo.setToQty(balanceDO.getQty());
detailDo.setQty(balanceDO.getQty());
detailDo.setToArrivdAte(balanceDO.getArriveDate());
detailDo.setFromProduceDate(balanceDO.getProduceDate());
detailDo.setFromExpireDate(balanceDO.getExpireDate());
detailDo.setToArrivdAte(balanceDO.getArriveDate());
detailDo.setToProduceDate(balanceDO.getProduceDate());
detailDo.setToExpireDate(balanceDO.getExpireDate());
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
detailDo.setToInventoryStatus("OK");
String number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_SCRAP_REQUEST.getCode());
detailDo.setNumber(number);
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToScrapRequest");
if (businesstypeDO != null) {
mainDo.setBusinessType(businesstypeDO.getCode());
}
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("HoldToScrapRequest");
if (requestsettingDO != null) {
mainDo.setAutoAgree(requestsettingDO.getAutoAgree());
mainDo.setAutoCommit(requestsettingDO.getAutoCommit());
mainDo.setAutoExecute(requestsettingDO.getAutoExecute());
mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
}
//报废转隔离申请
if ("Scrap".equals(purchaseDetailDO.getFromInventoryStatus())) {
// 校验库存余额是否存在
try {
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add("Scrap");
List<BalanceDO> balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(purchaseDetailDO.getItemCode(), purchaseDetailDO.getFromPackingNumber()
, purchaseDetailDO.getFromBatch(), purchaseDetailDO.getLocationCode(), inventoryStatus);
if (balanceDOList != null) {
BalanceDO balanceDO = balanceDOList.get(0);
purchaseDetailDO.setFromQty(balanceDO.getQty());
purchaseDetailDO.setToQty(balanceDO.getQty());
purchaseDetailDO.setQty(balanceDO.getQty());
purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate());
purchaseDetailDO.setFromProduceDate(balanceDO.getProduceDate());
purchaseDetailDO.setFromExpireDate(balanceDO.getExpireDate());
purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate());
purchaseDetailDO.setToProduceDate(balanceDO.getProduceDate());
purchaseDetailDO.setToExpireDate(balanceDO.getExpireDate());
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
purchaseDetailDO.setToInventoryStatus("Scrap");
String number = serialNumberApi.generateCode(RuleCodeEnum.SCRAP_TO_HOLD_REQUEST.getCode());
createReqVO.setNumber(number);
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ScrapToHoldRequest");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ScrapToHoldRequest");
if (requestsettingDO != null) {
createReqVO.setAutoAgree(requestsettingDO.getAutoAgree());
createReqVO.setAutoCommit(requestsettingDO.getAutoCommit());
createReqVO.setAutoExecute(requestsettingDO.getAutoExecute());
createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
purchaseDetailDO.setFromPackingNumber(null);
purchaseDetailDO.setFromBatch(null);
purchaseDetailDO.setFromContainerNumber(null);
//合格转隔离申请
if ("OK".equals(detailDo.getFromInventoryStatus())) {
// 校验库存余额是否存在
try {
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add("OK");
List<BalanceDO> balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getFromPackingNumber()
, detailDo.getFromBatch(), detailDo.getLocationCode(), inventoryStatus);
if (balanceDOList != null) {
BalanceDO balanceDO = balanceDOList.get(0);
detailDo.setFromQty(balanceDO.getQty());
detailDo.setToQty(balanceDO.getQty());
detailDo.setQty(balanceDO.getQty());
detailDo.setToArrivdAte(balanceDO.getArriveDate());
detailDo.setFromProduceDate(balanceDO.getProduceDate());
detailDo.setFromExpireDate(balanceDO.getExpireDate());
detailDo.setToArrivdAte(balanceDO.getArriveDate());
detailDo.setToProduceDate(balanceDO.getProduceDate());
detailDo.setToExpireDate(balanceDO.getExpireDate());
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
detailDo.setToInventoryStatus("Hold");
String number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_HOLD_REQUEST.getCode());
mainDo.setNumber(number);
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToHoldRequest");
if (businesstypeDO != null) {
mainDo.setBusinessType(businesstypeDO.getCode());
}
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("OkToHoldRequest");
if (requestsettingDO != null) {
mainDo.setAutoAgree(requestsettingDO.getAutoAgree());
mainDo.setAutoCommit(requestsettingDO.getAutoCommit());
mainDo.setAutoExecute(requestsettingDO.getAutoExecute());
mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
//合格转报废
if ("Ok".equals(purchaseDetailDO.getFromInventoryStatus())) {
// 校验库存余额是否存在
try {
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add("Scrap");
List<BalanceDO> balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(purchaseDetailDO.getItemCode(), purchaseDetailDO.getFromPackingNumber()
, purchaseDetailDO.getFromBatch(), purchaseDetailDO.getLocationCode(), inventoryStatus);
if (balanceDOList != null) {
BalanceDO balanceDO = balanceDOList.get(0);
purchaseDetailDO.setFromQty(balanceDO.getQty());
purchaseDetailDO.setToQty(balanceDO.getQty());
purchaseDetailDO.setQty(balanceDO.getQty());
purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate());
purchaseDetailDO.setFromProduceDate(balanceDO.getProduceDate());
purchaseDetailDO.setFromExpireDate(balanceDO.getExpireDate());
purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate());
purchaseDetailDO.setToProduceDate(balanceDO.getProduceDate());
purchaseDetailDO.setToExpireDate(balanceDO.getExpireDate());
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
purchaseDetailDO.setToInventoryStatus("Scrap");
String number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_SCRAP_REQUEST.getCode());
createReqVO.setNumber(number);
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToScrapRequest");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("OkToScrapRequest");
if (requestsettingDO != null) {
createReqVO.setAutoAgree(requestsettingDO.getAutoAgree());
createReqVO.setAutoCommit(requestsettingDO.getAutoCommit());
createReqVO.setAutoExecute(requestsettingDO.getAutoExecute());
createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
purchaseDetailDO.setFromPackingNumber(null);
purchaseDetailDO.setFromBatch(null);
purchaseDetailDO.setFromContainerNumber(null);
detailDo.setToPackingNumber(null);
detailDo.setToBatch(null);
detailDo.setToContainerNumber(null);
}
//隔离转报废申请
if ("Hold".equals(detailDo.getFromInventoryStatus())) {
// 校验库存余额是否存在
try {
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add("Hold");
List<BalanceDO> balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getFromPackingNumber()
, detailDo.getFromBatch(), detailDo.getLocationCode(), inventoryStatus);
if (balanceDOList != null) {
BalanceDO balanceDO = balanceDOList.get(0);
detailDo.setFromQty(balanceDO.getQty());
detailDo.setToQty(balanceDO.getQty());
detailDo.setQty(balanceDO.getQty());
detailDo.setToArrivdAte(balanceDO.getArriveDate());
detailDo.setFromProduceDate(balanceDO.getProduceDate());
detailDo.setFromExpireDate(balanceDO.getExpireDate());
detailDo.setToArrivdAte(balanceDO.getArriveDate());
detailDo.setToProduceDate(balanceDO.getProduceDate());
detailDo.setToExpireDate(balanceDO.getExpireDate());
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
detailDo.setToInventoryStatus("Scrap");
String number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_HOLD_REQUEST.getCode());
mainDo.setNumber(number);
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToHoldRequest");
if (businesstypeDO != null) {
mainDo.setBusinessType(businesstypeDO.getCode());
}
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("OkToHoldRequest");
if (requestsettingDO != null) {
mainDo.setAutoAgree(requestsettingDO.getAutoAgree());
mainDo.setAutoCommit(requestsettingDO.getAutoCommit());
mainDo.setAutoExecute(requestsettingDO.getAutoExecute());
mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
detailDo.setFromPackingNumber(null);
detailDo.setFromBatch(null);
detailDo.setFromContainerNumber(null);
}
InventorychangeRequestDetailCreateReqVO purchaseDetailCreateReqVO = InventorychangeRequestDetailConvert.INSTANCE.convert1(purchaseDetailDO);
InventorychangeRequestMainImportErrorVO importVO = InventorychangeRequestDetailConvert.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());
//报废转隔离申请
if ("Scrap".equals(detailDo.getFromInventoryStatus())) {
// 校验库存余额是否存在
try {
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add("Scrap");
List<BalanceDO> balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getFromPackingNumber()
, detailDo.getFromBatch(), detailDo.getLocationCode(), inventoryStatus);
if (balanceDOList != null) {
BalanceDO balanceDO = balanceDOList.get(0);
detailDo.setFromQty(balanceDO.getQty());
detailDo.setToQty(balanceDO.getQty());
detailDo.setQty(balanceDO.getQty());
detailDo.setToArrivdAte(balanceDO.getArriveDate());
detailDo.setFromProduceDate(balanceDO.getProduceDate());
detailDo.setFromExpireDate(balanceDO.getExpireDate());
detailDo.setToArrivdAte(balanceDO.getArriveDate());
detailDo.setToProduceDate(balanceDO.getProduceDate());
detailDo.setToExpireDate(balanceDO.getExpireDate());
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
detailDo.setToInventoryStatus("Scrap");
String number = serialNumberApi.generateCode(RuleCodeEnum.SCRAP_TO_HOLD_REQUEST.getCode());
mainDo.setNumber(number);
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ScrapToHoldRequest");
if (businesstypeDO != null) {
mainDo.setBusinessType(businesstypeDO.getCode());
}
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ScrapToHoldRequest");
if (requestsettingDO != null) {
mainDo.setAutoAgree(requestsettingDO.getAutoAgree());
mainDo.setAutoCommit(requestsettingDO.getAutoCommit());
mainDo.setAutoExecute(requestsettingDO.getAutoExecute());
mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
if (errorList.isEmpty()) {
if (mode != 3) {
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
InventorychangeRequestMainDO createObj = InventorychangeRequestMainConvert.INSTANCE.convert(createReqVO);
inventorychangeRequestMainMapper.insert(createObj);
inventorychangeRequestDetailMapper.insertBatch(subDOList);
} else if (mode != 2) {
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
detailDo.setFromPackingNumber(null);
detailDo.setFromBatch(null);
detailDo.setFromContainerNumber(null);
}
InventorychangeRequestMainDO createObj = InventorychangeRequestMainConvert.INSTANCE.convert(createReqVO);
inventorychangeRequestMainMapper.updateById(createObj);
inventorychangeRequestDetailMapper.updateBatch(subDOList);
//合格转报废
if ("Ok".equals(detailDo.getFromInventoryStatus())) {
// 校验库存余额是否存在
try {
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add("Scrap");
List<BalanceDO> balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getFromPackingNumber()
, detailDo.getFromBatch(), detailDo.getLocationCode(), inventoryStatus);
if (balanceDOList != null) {
BalanceDO balanceDO = balanceDOList.get(0);
detailDo.setFromQty(balanceDO.getQty());
detailDo.setToQty(balanceDO.getQty());
detailDo.setQty(balanceDO.getQty());
detailDo.setToArrivdAte(balanceDO.getArriveDate());
detailDo.setFromProduceDate(balanceDO.getProduceDate());
detailDo.setFromExpireDate(balanceDO.getExpireDate());
detailDo.setToArrivdAte(balanceDO.getArriveDate());
detailDo.setToProduceDate(balanceDO.getProduceDate());
detailDo.setToExpireDate(balanceDO.getExpireDate());
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
});
//错误不为空并非部分更新,手工回滚
if (!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
detailDo.setToInventoryStatus("Scrap");
String number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_SCRAP_REQUEST.getCode());
mainDo.setNumber(number);
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToScrapRequest");
if (businesstypeDO != null) {
mainDo.setBusinessType(businesstypeDO.getCode());
}
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("OkToScrapRequest");
if (requestsettingDO != null) {
mainDo.setAutoAgree(requestsettingDO.getAutoAgree());
mainDo.setAutoCommit(requestsettingDO.getAutoCommit());
mainDo.setAutoExecute(requestsettingDO.getAutoExecute());
mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
detailDo.setFromPackingNumber(null);
detailDo.setFromBatch(null);
detailDo.setFromContainerNumber(null);
}
return errorList;
return messageDetail;
}
//新增方法(主和子)
private InventorychangeRequestMainDO validatorToCreate(InventorychangeRequestMainCreateReqVO createReqVO) {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverPlan");
InventorychangeRequestMainDO inventorychangeRequestMainDO = validateMainMethod(createReqVO, businesstypeDO);
//子表校验
List<InventorychangeRequestDetailCreateReqVO> subList = createReqVO.getSubList();
List<InventorychangeRequestDetailDO> subDOList = InventorychangeRequestDetailConvert.INSTANCE.convertList03(subList);
for (InventorychangeRequestDetailDO inventorychangeRequestDetailDO : subDOList) {
validateDetailMethod(inventorychangeRequestDetailDO);
}
String number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_SCRAP_REQUEST.getCode());
inventorychangeRequestMainDO.setNumber(number);
inventorychangeRequestMainMapper.insert(inventorychangeRequestMainDO);
for (InventorychangeRequestDetailDO inventorychangeRequestDetailDO : subDOList) {
inventorychangeRequestDetailDO.setNumber(inventorychangeRequestMainDO.getNumber());
inventorychangeRequestDetailDO.setMasterId(inventorychangeRequestMainDO.getId());
}
inventorychangeRequestDetailMapper.insertBatch(subDOList);
return inventorychangeRequestMainDO;
}
//修改方法(主和子)
private InventorychangeRequestMainDO validatorToUpdate(InventorychangeRequestMainUpdateReqVO updateReqVO) {
BusinesstypeDO businesstypeDO = new BusinesstypeDO();
InventorychangeRequestMainDO deliverPlanMainDO = validateMainMethod(updateReqVO, businesstypeDO);
//子表校验
List<InventorychangeRequestDetailUpdateReqVO> subList = updateReqVO.getSubList();
List<InventorychangeRequestDetailDO> subDOList = InventorychangeRequestDetailConvert.INSTANCE.convertList05(subList);
for (InventorychangeRequestDetailDO inventorychangeRequestDetailDO : subDOList) {
validateDetailMethod(inventorychangeRequestDetailDO);
}
inventorychangeRequestMainMapper.updateById(deliverPlanMainDO);
inventorychangeRequestDetailMapper.updateBatch(subDOList);
return deliverPlanMainDO;
}
//校验主表公共方法(适用于新增/修改)
private InventorychangeRequestMainDO validateMainMethod(InventorychangeRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO) {
InventorychangeRequestMainDO InventorychangeRequestMainDO = InventorychangeRequestMainConvert.INSTANCE.convert(baseVO);
return InventorychangeRequestMainDO;
}
//校验子表公共方法(适用于新增/修改)
private void validateDetailMethod(InventorychangeRequestDetailDO inventorychangeRequestDetailDO) {
LocationDO locationDO = this.validatorLocation(inventorychangeRequestDetailDO.getLocationCode());
if (locationDO != null) {
inventorychangeRequestDetailDO.setLocationCode(locationDO.getCode());
inventorychangeRequestDetailDO.setAreaCode(locationDO.getAreaCode());
inventorychangeRequestDetailDO.setLocationGroupCode(locationDO.getLocationGroupCode());
}
ItembasicDO itembasicDO = this.validatorItembasic(inventorychangeRequestDetailDO.getItemCode());
if (!inventorychangeRequestDetailDO.getUom().equals(itembasicDO.getUom())) {
throw exception(UOM_ERROR, inventorychangeRequestDetailDO.getUom());
} else {
inventorychangeRequestDetailDO.setItemDesc1(itembasicDO.getDesc1());
inventorychangeRequestDetailDO.setItemDesc2(itembasicDO.getDesc2());
inventorychangeRequestDetailDO.setItemName(itembasicDO.getName());
inventorychangeRequestDetailDO.setProjectCode(itembasicDO.getProject());
}
//校验库存余额是否存在
List<String> inventoryStatus = new ArrayList<>();
//隔离转合格申请
if ("Hold".equals(inventorychangeRequestDetailDO.getFromInventoryStatus())) {
inventoryStatus.add("Hold");
}
//合格转隔离申请
if ("HOKold".equals(inventorychangeRequestDetailDO.getFromInventoryStatus())) {
inventoryStatus.add("OK");
}
//隔离转报废申请
if ("Hold".equals(inventorychangeRequestDetailDO.getFromInventoryStatus())) {
inventoryStatus.add("Hold");
}
//报废转隔离申请
if ("Scrap".equals(inventorychangeRequestDetailDO.getFromInventoryStatus())) {
inventoryStatus.add("Scrap");
}
//合格转报废申请
if ("Ok".equals(inventorychangeRequestDetailDO.getFromInventoryStatus())) {
inventoryStatus.add("Scrap");
}
List<BalanceDO> balanceDOList = this.validatorLocationReturnManagementAccuracy(inventorychangeRequestDetailDO.getItemCode(), inventorychangeRequestDetailDO.getFromPackingNumber()
, inventorychangeRequestDetailDO.getFromBatch(), inventorychangeRequestDetailDO.getLocationCode(), inventoryStatus);
if (balanceDOList != null) {
BalanceDO balanceDO = balanceDOList.get(0);
inventorychangeRequestDetailDO.setFromQty(balanceDO.getQty());
inventorychangeRequestDetailDO.setToQty(balanceDO.getQty());
inventorychangeRequestDetailDO.setQty(balanceDO.getQty());
inventorychangeRequestDetailDO.setToArrivdAte(balanceDO.getArriveDate());
inventorychangeRequestDetailDO.setFromProduceDate(balanceDO.getProduceDate());
inventorychangeRequestDetailDO.setFromExpireDate(balanceDO.getExpireDate());
inventorychangeRequestDetailDO.setToArrivdAte(balanceDO.getArriveDate());
inventorychangeRequestDetailDO.setToProduceDate(balanceDO.getProduceDate());
inventorychangeRequestDetailDO.setToExpireDate(balanceDO.getExpireDate());
}
}
//子表校验来源库位基础信息
private LocationDO validatorLocation(String locationCode) {
LocationDO locationDO = locationService.selectLocation(locationCode);
return locationDO;
}
//子表校验物品基础信息
private ItembasicDO validatorItembasic(String itemCode) {
return itembasicService.selectItembasic(itemCode);
}
//子表校验业务类型
private void validatorItembasic(String itemCode, String fromInventoryStatus) {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToOk");
jobUtils.selectItembasicExist(itemCode, businesstypeDO);
jobUtils.ifOutInventoryStatuses(fromInventoryStatus, businesstypeDO);
}
private List<BalanceDO> validatorLocationReturnManagementAccuracy(String itemCode, String fromPackingNumber, String fromBatch, String locationCode, List<String> inventoryStatus) {
List<BalanceDO> balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(itemCode, fromPackingNumber
, fromBatch, locationCode, inventoryStatus);
return balanceDOList;
}
}

Loading…
Cancel
Save