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. 217
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/demandforecasting/DemandforecastingMainServiceImpl.java
  11. 491
      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_MAIN_NOT_EXISTS = new ErrorCode(1_000_117_000, "销售订单主不存在");
ErrorCode SALE_DETAIL_NOT_EXISTS = new ErrorCode(1_000_117_001, "销售订单子不存在"); ErrorCode SALE_DETAIL_NOT_EXISTS = new ErrorCode(1_000_117_001, "销售订单子不存在");
//发货计划ErrorCode //发货计划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_MAIN_NOT_EXISTS = new ErrorCode(1_000_118_000, "发货计划主不存在");
ErrorCode DELIVER_PLAN_DETAIL_NOT_EXISTS = new ErrorCode(1_000_118_001, "发货计划子不存在"); ErrorCode DELIVER_PLAN_DETAIL_NOT_EXISTS = new ErrorCode(1_000_118_001, "发货计划子不存在");
//发货申请ErrorCode //发货申请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; package com.win.module.wms.controller.deliverPlan.vo;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.Data;
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 org.springframework.format.annotation.DateTimeFormat; 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; 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; 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 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") @Schema(description = "管理后台 - 要货预测主更新 Request VO")
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true) @ToString(callSuper = true)
public class DemandforecastingMainUpdateReqVO extends DemandforecastingMainBaseVO { 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; 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 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") @Schema(description = "管理后台 - 库存修改申请主更新 Request VO")
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true) @ToString(callSuper = true)
public class InventorychangeRequestMainUpdateReqVO extends InventorychangeRequestMainBaseVO { 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> convertList03(List<DemandforecastingDetailCreateReqVO> list);
List<DemandforecastingDetailDO> convertList05(List<DemandforecastingDetailUpdateReqVO> list);
DemandforecastingDetailCreateReqVO convert1(DemandforecastingDetailDO bean); DemandforecastingDetailCreateReqVO convert1(DemandforecastingDetailDO bean);
@Mappings({ @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; package com.win.module.wms.convert.demandforecasting;
import java.util.*;
import com.win.framework.common.pojo.PageResult; import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.demandforecasting.vo.*;
import com.win.module.wms.controller.demandforecasting.vo.DemandforecastingMainCreateReqVO; import com.win.module.wms.dal.dataobject.demandforecasting.DemandforecastingDetailDO;
import com.win.module.wms.controller.demandforecasting.vo.DemandforecastingMainExcelVO; import com.win.module.wms.dal.dataobject.demandforecasting.DemandforecastingMainDO;
import com.win.module.wms.controller.demandforecasting.vo.DemandforecastingMainRespVO;
import com.win.module.wms.controller.demandforecasting.vo.DemandforecastingMainUpdateReqVO;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers; import org.mapstruct.factory.Mappers;
import com.win.module.wms.dal.dataobject.demandforecasting.DemandforecastingMainDO;
import java.util.List;
/** /**
* 要货预测主 Convert * 要货预测主 Convert
@ -24,6 +23,8 @@ public interface DemandforecastingMainConvert {
DemandforecastingMainDO convert(DemandforecastingMainCreateReqVO bean); DemandforecastingMainDO convert(DemandforecastingMainCreateReqVO bean);
DemandforecastingMainDO convert(DemandforecastingMainBaseVO bean);
DemandforecastingMainDO convert(DemandforecastingMainUpdateReqVO bean); DemandforecastingMainDO convert(DemandforecastingMainUpdateReqVO bean);
DemandforecastingMainRespVO convert(DemandforecastingMainDO bean); DemandforecastingMainRespVO convert(DemandforecastingMainDO bean);
@ -34,4 +35,5 @@ public interface DemandforecastingMainConvert {
List<DemandforecastingMainExcelVO> convertList02(List<DemandforecastingMainDO> list); 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> convertList03(List<InventorychangeRequestDetailCreateReqVO> list);
List<InventorychangeRequestDetailDO> convertList05(List<InventorychangeRequestDetailUpdateReqVO> list);
InventorychangeRequestDetailCreateReqVO convert1(InventorychangeRequestDetailDO bean); InventorychangeRequestDetailCreateReqVO convert1(InventorychangeRequestDetailDO bean);
@Mappings({ @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; package com.win.module.wms.convert.inventorychangeRequest;
import java.util.*;
import com.win.framework.common.pojo.PageResult; import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.inventorychangeRequest.vo.*;
import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestMainCreateReqVO; import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestDetailDO;
import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestMainExcelVO; import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestMainDO;
import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestMainRespVO;
import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestMainUpdateReqVO;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers; import org.mapstruct.factory.Mappers;
import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestMainDO;
import java.util.List;
/** /**
* 库存修改申请主 Convert * 库存修改申请主 Convert
@ -26,6 +23,8 @@ public interface InventorychangeRequestMainConvert {
InventorychangeRequestMainDO convert(InventorychangeRequestMainUpdateReqVO bean); InventorychangeRequestMainDO convert(InventorychangeRequestMainUpdateReqVO bean);
InventorychangeRequestMainDO convert(InventorychangeRequestMainBaseVO bean);
InventorychangeRequestMainRespVO convert(InventorychangeRequestMainDO bean); InventorychangeRequestMainRespVO convert(InventorychangeRequestMainDO bean);
List<InventorychangeRequestMainRespVO> convertList(List<InventorychangeRequestMainDO> list); List<InventorychangeRequestMainRespVO> convertList(List<InventorychangeRequestMainDO> list);
@ -34,4 +33,8 @@ public interface InventorychangeRequestMainConvert {
List<InventorychangeRequestMainExcelVO> convertList02(List<InventorychangeRequestMainDO> list); 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.deliverJob.DeliverJobMainService;
import com.win.module.wms.service.itembasic.ItembasicService; import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.itempackaging.ItempackagingService; 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.shift.ShiftService;
import com.win.module.wms.service.supplieritem.SupplieritemService; import com.win.module.wms.service.supplieritem.SupplieritemService;
import com.win.module.wms.util.JobUtils; import com.win.module.wms.util.JobUtils;
@ -75,12 +76,13 @@ public class DeliverPlanMainServiceImpl implements DeliverPlanMainService {
private SerialNumberApi serialNumberApi; private SerialNumberApi serialNumberApi;
@Resource @Resource
private TrendsApi trendsApi; private TrendsApi trendsApi;
@Resource
private RequestsettingService requestsettingService;
@Override @Override
public Long createDeliverPlanMain(DeliverPlanMainCreateReqVO createReqVO) { public Long createDeliverPlanMain(DeliverPlanMainCreateReqVO createReqVO) {
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("DeliverPlan");
RequestsettingDO requestsettingDO = new RequestsettingDO();
DeliverPlanMainDO deliverPlanMainDO = validatorToCreate(createReqVO); DeliverPlanMainDO deliverPlanMainDO = validatorToCreate(createReqVO);
//调用自动执行方法 //调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(deliverPlanMainDO.getStatus())) { if(RequestStatusEnum.HANDLING.getCode().equals(deliverPlanMainDO.getStatus())) {
@ -92,15 +94,14 @@ public class DeliverPlanMainServiceImpl implements DeliverPlanMainService {
@Override @Override
public void updateDeliverPlanMain(DeliverPlanMainUpdateReqVO updateReqVO) { public void updateDeliverPlanMain(DeliverPlanMainUpdateReqVO updateReqVO) {
RequestsettingDO requestsettingDO = new RequestsettingDO(); RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("DeliverPlan");
// 校验存在 // 校验存在
validateDeliverPlanMainExists(updateReqVO.getId()); validateDeliverPlanMainExists(updateReqVO.getId());
DeliverPlanMainDO deliverPlanMainDO = validatorToUpdate(updateReqVO); DeliverPlanMainDO deliverPlanMainDO = validatorToUpdate(updateReqVO);
if(RequestStatusEnum.HANDLING.getCode().equals(deliverPlanMainDO.getStatus())) { if(RequestStatusEnum.HANDLING.getCode().equals(deliverPlanMainDO.getStatus())) {
} }
trendsApi.createTrends(requestsettingDO.getId(), "DeliverPlan", "增加了发货计划", TrendsTypeEnum.CREATE); trendsApi.createTrends(requestsettingDO.getId(), "DeliverPlan", "修改了发货计划", TrendsTypeEnum.CREATE);
} }
@Override @Override
@ -145,8 +146,7 @@ public class DeliverPlanMainServiceImpl implements DeliverPlanMainService {
@Override @Override
public List<DeliverPlanMainImportErrorVO> importDeliverPlanMainList(List<DeliverPlanMainCreateReqVO> datas, Integer mode, boolean updatePart) { public List<DeliverPlanMainImportErrorVO> importDeliverPlanMainList(List<DeliverPlanMainCreateReqVO> datas, Integer mode, boolean updatePart) {
if (CollUtil.isEmpty(datas)) { if (CollUtil.isEmpty(datas)) {
//TODO throw exception(DELIVERPLAN_MAIN_IMPORT_LIST_IS_EMPTY);
throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY);
} }
List<DeliverPlanMainImportErrorVO> errorList = new ArrayList<>(); List<DeliverPlanMainImportErrorVO> errorList = new ArrayList<>();
datas.forEach(createReqVO -> { datas.forEach(createReqVO -> {
@ -255,8 +255,8 @@ public class DeliverPlanMainServiceImpl implements DeliverPlanMainService {
//子表校验 //子表校验
List<DeliverPlanDetailCreateReqVO> subList = createReqVO.getSubList(); List<DeliverPlanDetailCreateReqVO> subList = createReqVO.getSubList();
List<DeliverPlanDetailDO> subDOList = DeliverPlanDetailConvert.INSTANCE.convertList03(subList); List<DeliverPlanDetailDO> subDOList = DeliverPlanDetailConvert.INSTANCE.convertList03(subList);
for (DeliverPlanDetailDO DeliverPlanDetailDO : subDOList) { for (DeliverPlanDetailDO deliverPlanDetailDO : subDOList) {
validateDetailMethod(DeliverPlanDetailDO); validateDetailMethod(deliverPlanDetailDO);
} }
String number = serialNumberApi.generateCode(RuleCodeEnum.SUPPLIER_DELIVER_REQUEST.getCode()); String number = serialNumberApi.generateCode(RuleCodeEnum.SUPPLIER_DELIVER_REQUEST.getCode());
deliverPlanMainDO.setNumber(number); deliverPlanMainDO.setNumber(number);

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

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