Browse Source

客户退货申请 新增时发货记录子表数量校验

master
chenfang 2 years ago
parent
commit
3f27fa3230
  1. 16
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveJob/InventorymoveJobMainController.java
  2. 21
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveJob/vo/InventorymoveJobDetailUpdateReqVO.java
  3. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveJob/vo/InventorymoveJobMainPageReqVO.java
  4. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRecord/vo/InventorymoveRecordMainPageReqVO.java
  5. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainImportVO.java
  6. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/recordsetting/RecordsettingDO.java
  7. 24
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorymoveJob/InventorymoveJobMainMapper.java
  8. 19
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorymoveRecord/InventorymoveRecordMainMapper.java
  9. 149
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRequest/CustomerreturnRequestMainServiceImpl.java
  10. 33
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customersettleRequest/CustomersettleRequestMainServiceImpl.java
  11. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestMainServiceImpl.java
  12. 177
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveJob/InventorymoveJobMainServiceImpl.java
  13. 26
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRecord/InventorymoveRecordMainServiceImpl.java
  14. 234
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRequest/InventorymoveRequestMainServiceImpl.java
  15. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/util/JobUtils.java

16
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveJob/InventorymoveJobMainController.java

@ -5,9 +5,13 @@ import com.win.framework.dict.core.util.DictFrameworkUtils;
import com.win.module.system.api.dept.DeptApi;
import com.win.module.system.api.user.AdminUserApi;
import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.wms.controller.deliverJob.vo.DeliverJobMainRespVO;
import com.win.module.wms.controller.inventorymoveRequest.vo.InventorymoveRequestMainExcelVO;
import com.win.module.wms.convert.deliverJob.DeliverJobMainConvert;
import com.win.module.wms.convert.inventorymoveJob.InventorymoveJobDetailConvert;
import com.win.module.wms.convert.inventorymoveRequest.InventorymoveRequestMainConvert;
import com.win.module.wms.dal.dataobject.deliverJob.DeliverJobDetailDO;
import com.win.module.wms.dal.dataobject.deliverJob.DeliverJobMainDO;
import com.win.module.wms.dal.dataobject.inventorymoveJob.InventorymoveJobDetailDO;
import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestDetailDO;
import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestMainDO;
@ -196,11 +200,13 @@ public class InventorymoveJobMainController {
if(result==null) {
return success(result);
};
InventorymoveJobDetailExportReqVO exportReqVO = new InventorymoveJobDetailExportReqVO();
exportReqVO.setMasterId(result.getId());
List<InventorymoveJobDetailDO> inventorymoveJobDetailList = inventorymoveJobDetailService.getInventorymoveJobDetailList(exportReqVO);
List<InventorymoveJobDetailExcelVO> inventorymoveJobDetailExcelVOS = InventorymoveJobDetailConvert.INSTANCE.convertList02(inventorymoveJobDetailList);
result.setSubList(inventorymoveJobDetailExcelVOS);
// InventorymoveJobDetailExportReqVO exportReqVO = new InventorymoveJobDetailExportReqVO();
// exportReqVO.setMasterId(result.getId());
// List<InventorymoveJobDetailDO> inventorymoveJobDetailList = inventorymoveJobDetailService.getInventorymoveJobDetailList(exportReqVO);
// List<InventorymoveJobDetailExcelVO> inventorymoveJobDetailExcelVOS = InventorymoveJobDetailConvert.INSTANCE.convertList02(inventorymoveJobDetailList);
// result.setSubList(inventorymoveJobDetailExcelVOS);
List<InventorymoveJobDetailDO> subList = inventorymoveJobDetailService.selectList(id);
result.setSubList(subList);
return success(result);
}

21
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveJob/vo/InventorymoveJobDetailUpdateReqVO.java

@ -3,6 +3,7 @@ package com.win.module.wms.controller.inventorymoveJob.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
@ -11,6 +12,22 @@ import java.util.Map;
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class InventorymoveJobDetailUpdateReqVO extends InventorymoveJobDetailBaseVO {
@Schema(description = "子表记录数据")
private List<Map<String,String>> recordList;
@Schema(description = "实际收货数量")
private BigDecimal handleQty;
@Schema(description = "到包装")
private String toPackingNumber;
@Schema(description = "到器具")
private String toContainerNumber;
@Schema(description = "到批次")
private String toBatch;
@Schema(description = "到库存状态")
private String toInventoryStatus;
@Schema(description = "到库位")
private String toLocationCode;
}

5
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveJob/vo/InventorymoveJobMainPageReqVO.java

@ -136,4 +136,9 @@ public class InventorymoveJobMainPageReqVO extends PageParam {
@Schema(description = "允许修改箱码")
private String allowModifyPackingNumber;
@Schema(description = "从库存状态")
private String fromInventoryStatus;
@Schema(description = "到库存状态")
private String toInventoryStatus;
}

5
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRecord/vo/InventorymoveRecordMainPageReqVO.java

@ -95,4 +95,9 @@ public class InventorymoveRecordMainPageReqVO extends PageParam {
@Schema(description = "主表id")
private String masterId;
@Schema(description = "从库存状态")
private String fromInventoryStatus;
@Schema(description = "到库存状态")
private String toInventoryStatus;
}

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainImportVO.java

@ -46,6 +46,10 @@ public class InventorymoveRequestMainImportVO {
@DictFormat(DictTypeConstants.INVENTORY_STATUS)
private String fromInventoryStatus;
@ExcelProperty(value = "到库存状态", converter = DictConvert.class)
@DictFormat(DictTypeConstants.INVENTORY_STATUS)
private String toInventoryStatus;
@ExcelProperty("从库位代码")
private String fromLocationCode;

6
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/recordsetting/RecordsettingDO.java

@ -1,11 +1,7 @@
package com.win.module.wms.dal.dataobject.recordsetting;
import com.sun.xml.bind.v2.TODO;
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 com.baomidou.mybatisplus.annotation.*;
import com.win.framework.mybatis.core.dataobject.BaseDO;

24
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorymoveJob/InventorymoveJobMainMapper.java

@ -10,6 +10,7 @@ import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.inventorymoveJob.vo.InventorymoveJobMainExportReqVO;
import com.win.module.wms.controller.inventorymoveJob.vo.InventorymoveJobMainPageReqVO;
import com.win.module.wms.dal.dataobject.inventorymoveJob.InventorymoveJobMainDO;
import com.win.module.wms.dal.dataobject.inventorymoveRecord.InventorymoveRecordMainDO;
import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestMainDO;
import com.win.module.wms.dal.dataobject.productdismantleJob.ProductdismantleJobMainDO;
import org.apache.ibatis.annotations.Mapper;
@ -23,8 +24,8 @@ import org.apache.ibatis.annotations.Mapper;
public interface InventorymoveJobMainMapper extends BaseMapperX<InventorymoveJobMainDO> {
default PageResult<InventorymoveJobMainDO> selectPage(InventorymoveJobMainPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<InventorymoveJobMainDO>()
.eqIfPresent(InventorymoveJobMainDO::getRequestNumber, reqVO.getRequestNumber())
LambdaQueryWrapperX<InventorymoveJobMainDO> lambdaQueryWrapperX = new LambdaQueryWrapperX<>();
lambdaQueryWrapperX.eqIfPresent(InventorymoveJobMainDO::getRequestNumber, reqVO.getRequestNumber())
.eqIfPresent(InventorymoveJobMainDO::getUseOnTheWayLocation, reqVO.getUseOnTheWayLocation())
.eqIfPresent(InventorymoveJobMainDO::getFromWarehouseCode, reqVO.getFromWarehouseCode())
.betweenIfPresent(InventorymoveJobMainDO::getRequestTime, reqVO.getRequestTime())
@ -62,11 +63,25 @@ public interface InventorymoveJobMainMapper extends BaseMapperX<InventorymoveJob
.eqIfPresent(InventorymoveJobMainDO::getAllowPartialComplete, reqVO.getAllowPartialComplete())
.eqIfPresent(InventorymoveJobMainDO::getAllowModifyBatch, reqVO.getAllowModifyBatch())
.eqIfPresent(InventorymoveJobMainDO::getAllowModifyPackingNumber, reqVO.getAllowModifyPackingNumber())
.orderByDesc(InventorymoveJobMainDO::getId));
.orderByDesc(InventorymoveJobMainDO::getId);
if("OK".equals(reqVO.getFromInventoryStatus()) && "HOLD".equals(reqVO.getToInventoryStatus())) {
lambdaQueryWrapperX.eq(InventorymoveJobMainDO::getBusinessType,"OkToHoldJob");
} else if("HOLD".equals(reqVO.getFromInventoryStatus()) && "OK".equals(reqVO.getToInventoryStatus())) {
lambdaQueryWrapperX.eq(InventorymoveJobMainDO::getBusinessType,"HoldToOkJob");
} else if("HOLD".equals(reqVO.getFromInventoryStatus()) && "SCRAP".equals(reqVO.getToInventoryStatus())) {
lambdaQueryWrapperX.eq(InventorymoveJobMainDO::getBusinessType,"HoldToScrapJob");
} else if("OK".equals(reqVO.getFromInventoryStatus()) && "SCRAP".equals(reqVO.getToInventoryStatus())) {
lambdaQueryWrapperX.eq(InventorymoveJobMainDO::getBusinessType,"OkToScrapJob");
} else if("SCRAP".equals(reqVO.getFromInventoryStatus()) && "HOLD".equals(reqVO.getToInventoryStatus())) {
lambdaQueryWrapperX.eq(InventorymoveJobMainDO::getBusinessType,"ScrapToHoldJob");
}
return selectPage(reqVO, lambdaQueryWrapperX);
}
default PageResult<InventorymoveJobMainDO> selectSenior(CustomConditions conditions) {
return selectPage(conditions, QueryWrapperUtils.structure(conditions));
}
default List<InventorymoveJobMainDO> selectList(InventorymoveJobMainExportReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<InventorymoveJobMainDO>()
.eqIfPresent(InventorymoveJobMainDO::getRequestNumber, reqVO.getRequestNumber())
@ -111,7 +126,8 @@ public interface InventorymoveJobMainMapper extends BaseMapperX<InventorymoveJob
}
/**
*根据类型数组查询任务数量
* 根据类型数组查询任务数量
*
* @param types
* @return
*/

19
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorymoveRecord/InventorymoveRecordMainMapper.java

@ -9,6 +9,7 @@ import com.win.framework.mybatis.core.mapper.BaseMapperX;
import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.inventorymoveRecord.vo.InventorymoveRecordMainExportReqVO;
import com.win.module.wms.controller.inventorymoveRecord.vo.InventorymoveRecordMainPageReqVO;
import com.win.module.wms.dal.dataobject.inventorymoveJob.InventorymoveJobMainDO;
import com.win.module.wms.dal.dataobject.inventorymoveRecord.InventorymoveRecordMainDO;
import org.apache.ibatis.annotations.Mapper;
@ -21,8 +22,8 @@ import org.apache.ibatis.annotations.Mapper;
public interface InventorymoveRecordMainMapper extends BaseMapperX<InventorymoveRecordMainDO> {
default PageResult<InventorymoveRecordMainDO> selectPage(InventorymoveRecordMainPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<InventorymoveRecordMainDO>()
.eqIfPresent(InventorymoveRecordMainDO::getRequestNumber, reqVO.getRequestNumber())
LambdaQueryWrapperX<InventorymoveRecordMainDO> lambdaQueryWrapperX = new LambdaQueryWrapperX<>();
lambdaQueryWrapperX.eqIfPresent(InventorymoveRecordMainDO::getRequestNumber, reqVO.getRequestNumber())
.eqIfPresent(InventorymoveRecordMainDO::getJobNumber, reqVO.getJobNumber())
.eqIfPresent(InventorymoveRecordMainDO::getUseOnTheWayLocation, reqVO.getUseOnTheWayLocation())
.eqIfPresent(InventorymoveRecordMainDO::getOutTransactionType, reqVO.getOutTransactionType())
@ -46,7 +47,19 @@ public interface InventorymoveRecordMainMapper extends BaseMapperX<Inventorymove
.eqIfPresent(InventorymoveRecordMainDO::getToLocationTypes, reqVO.getToLocationTypes())
.eqIfPresent(InventorymoveRecordMainDO::getToAreaCodes, reqVO.getToAreaCodes())
.eqIfPresent(InventorymoveRecordMainDO::getAvailable, reqVO.getAvailable())
.orderByDesc(InventorymoveRecordMainDO::getId));
.orderByDesc(InventorymoveRecordMainDO::getId);
if("OK".equals(reqVO.getFromInventoryStatus()) && "HOLD".equals(reqVO.getToInventoryStatus())) {
lambdaQueryWrapperX.eq(InventorymoveRecordMainDO::getBusinessType,"OkToHoldRecord");
} else if("HOLD".equals(reqVO.getFromInventoryStatus()) && "OK".equals(reqVO.getToInventoryStatus())) {
lambdaQueryWrapperX.eq(InventorymoveRecordMainDO::getBusinessType,"HoldToOkRecord");
} else if("HOLD".equals(reqVO.getFromInventoryStatus()) && "SCRAP".equals(reqVO.getToInventoryStatus())) {
lambdaQueryWrapperX.eq(InventorymoveRecordMainDO::getBusinessType,"HoldToScrapRecord");
} else if("OK".equals(reqVO.getFromInventoryStatus()) && "SCRAP".equals(reqVO.getToInventoryStatus())) {
lambdaQueryWrapperX.eq(InventorymoveRecordMainDO::getBusinessType,"OkToScrapRecord");
} else if("SCRAP".equals(reqVO.getFromInventoryStatus()) && "HOLD".equals(reqVO.getToInventoryStatus())) {
lambdaQueryWrapperX.eq(InventorymoveRecordMainDO::getBusinessType,"ScrapToHoldRecord");
}
return selectPage(reqVO, lambdaQueryWrapperX);
}
default PageResult<InventorymoveRecordMainDO> selectSenior(CustomConditions conditions) {
return selectPage(conditions, QueryWrapperUtils.structure(conditions));

149
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRequest/CustomerreturnRequestMainServiceImpl.java

@ -2,6 +2,7 @@ package com.win.module.wms.service.customerreturnRequest;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.exceptions.UtilException;
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;
@ -65,6 +66,7 @@ import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
@ -147,7 +149,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque
this.validateCustomerreturnRequestMainCreate(mainDO);
List<CustomerreturnRequestDetailDO> subDOList = CustomerreturnRequestMainConvert.INSTANCE.convertList03(createReqVO.getSubList());
for (CustomerreturnRequestDetailDO detailDO : subDOList) {
this.validateCustomerreturnRequestDetailCreate(mainDO,detailDO);
this.validateCustomerreturnRequestDetailCreate(mainDO, detailDO);
}
String number = serialNumberApi.generateCode(RuleCodeEnum.CUSTOMER_REJECT_REQUEST.getCode());
mainDO.setNumber(number);
@ -155,11 +157,12 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque
requestStatusState.newObject(mainDO.getAutoCommit(), mainDO.getAutoAgree(), mainDO.getAutoExecute());
mainDO.setStatus(requestStatusState.getState().getCode());
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) {
if (RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) {
this.generateJob(mainDO, subDOList);
}
customerreturnRequestMainMapper.insert(mainDO);
for (CustomerreturnRequestDetailDO detailDO : subDOList) {
detailDO.setId(null);
detailDO.setMasterId(mainDO.getId());
detailDO.setNumber(number);
}
@ -177,7 +180,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque
CustomerreturnRequestMainDO updateObj = CustomerreturnRequestMainConvert.INSTANCE.convert(updateReqVO);
this.validateCustomerreturnRequestMainCreate(updateObj);
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(updateObj.getStatus())) {
if (RequestStatusEnum.HANDLING.getCode().equals(updateObj.getStatus())) {
this.generateJob(updateObj, customerreturnRequestDetailMapper.selectList(updateReqVO.getId()));
}
customerreturnRequestMainMapper.updateById(updateObj);
@ -262,7 +265,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque
mainDo.setStatus(PlanStatusEnum.NEW.getCode());
String number = serialNumberApi.generateCode(RuleCodeEnum.CUSTOMER_REJECT_REQUEST.getCode());
DeliverRecordMainDO deliverRecordMainDO = deliverRecordMainService.selectsMainRecordExist(mainDo.getDeliverRecordNumber());
if(deliverRecordMainDO != null){
if (deliverRecordMainDO != null) {
mainDo.setFromWarehouseCode(deliverRecordMainDO.getToWarehouseCode());
mainDo.setCustomerDockCode(deliverRecordMainDO.getCustomerDockCode());
}
@ -274,7 +277,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque
detailDO.setMasterId(mainDo.getId());
}
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(mainDo.getStatus())) {
if (RequestStatusEnum.HANDLING.getCode().equals(mainDo.getStatus())) {
this.generateJob(mainDo, subDOList);
}
customerreturnRequestDetailMapper.insertBatch(subDOList);
@ -285,7 +288,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque
private void generateJob(CustomerreturnRequestMainDO mainDO, List<CustomerreturnRequestDetailDO> detailDOList) {
//跳过任务直接生成记录
if("TRUE".equals(mainDO.getDirectCreateRecord())) {
if ("TRUE".equals(mainDO.getDirectCreateRecord())) {
//如果直接生成记录 修改申请状态为已完成
mainDO.setStatus("8");
customerreturnRequestMainMapper.updateById(mainDO);
@ -305,7 +308,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque
customerreturnRecordMainCreateReqVO.setBusinessType(businesstypeDO.getCode());
CustomerreturnRecordMainDO recordMainDO = CustomerreturnRecordMainConvert.INSTANCE.convert(customerreturnRecordMainCreateReqVO);
customerreturnRecordMainMapper.insert(recordMainDO);
for(CustomerreturnRequestDetailDO customerreturnRequestDetailDO : detailDOList) {
for (CustomerreturnRequestDetailDO customerreturnRequestDetailDO : detailDOList) {
//记录子表数据 同名属性同名赋值
CustomerreturnRecordDetailCreateReqVO customerreturnRecordDetailCreateReqVO = new CustomerreturnRecordDetailCreateReqVO();
CustomerreturnRecordDetailDO recordDetailDO = CustomerreturnRecordDetailConvert.INSTANCE.convert(customerreturnRecordDetailCreateReqVO);
@ -356,7 +359,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque
customerreturnJobMainMapper.insert(customerreturnJobMainDO);
List<ExpectinCreateReqVO> expectinCreateReqVOList = new ArrayList<>();
List<CustomerreturnJobDetailDO> customerreturnJobDetailDOList = new ArrayList<>();
for(CustomerreturnRequestDetailDO customerreturnRequestDetailDO : detailDOList) {
for (CustomerreturnRequestDetailDO customerreturnRequestDetailDO : detailDOList) {
//任务子表数据 同名属性同名赋值
CustomerreturnJobDetailDO customerreturnJobDetailDO = CustomerreturnJobDetailConvert.INSTANCE.convert(customerreturnRequestDetailDO);
BeanUtils.copyProperties(customerreturnRequestDetailDO, customerreturnJobDetailDO);
@ -387,6 +390,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque
/**
* 主表校验导入并赋值一些参数
*
* @param mainDo
* @return
*/
@ -417,41 +421,41 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque
/**
* 子表校验导入并赋值一些参数
*
* @param detailDo
* @return
*/
private String validateCustomerreturnRequestDetailImport(CustomerreturnRequestDetailDO detailDo, CustomerreturnRequestMainDO mainDo, BusinesstypeDO businesstypeDO) {
String messageDetail = "";
// 校验物品基础信息
try {
validateDeliverRecordDetail(mainDo,detailDo);
validateDeliverRecordDetail(mainDo, detailDo);
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
try {
ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode());
if ( !detailDo.getUom().equals(itembasicDO.getUom())) {
if (!detailDo.getUom().equals(itembasicDO.getUom())) {
messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + detailDo.getUom() + ",";
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
try {
if(!"".equals(detailDo.getFromLocationCode())){
validatorIfInToLocationType(detailDo.getFromLocationCode(),businesstypeDO);
if (!"".equals(detailDo.getFromLocationCode())) {
validatorIfInToLocationType(detailDo.getFromLocationCode(), businesstypeDO);
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
try {
validatorIfInFromLocationType(detailDo.getToLocationCode(),businesstypeDO);
validatorIfInFromLocationType(detailDo.getToLocationCode(), businesstypeDO);
} catch (ServiceException ex) {
messageDetail += "从" + ex.getMessage() + ",";
}
try {
validatorIfInventoryStatuses(detailDo.getInventoryStatus(),businesstypeDO);
validatorIfInventoryStatuses(detailDo.getInventoryStatus(), businesstypeDO);
} catch (ServiceException ex) {
messageDetail += "到" + ex.getMessage() + ",";
messageDetail += "到" + ex.getMessage() + ",";
}
try {
validatorBalance(detailDo);
@ -461,7 +465,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque
try {
ValidationUtils.validate(validator, mainDo);
} catch (Exception ex) {
messageDetail+= ex.getMessage() + (",");
messageDetail += ex.getMessage() + (",");
}
return messageDetail;
}
@ -472,12 +476,12 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque
// 校验存在存在下级单据
CustomerreturnRequestMainDO mainDO = validateCustomerreturnRequestMainExists(id);
Long count = customerreturnJobMainMapper.selectByRequestNumber(mainDO.getNumber());
if(count > 0) {
if (count > 0) {
throw new ServiceException(CUSTOMERRETURN_REQUEST_JOB_EXISTS);
}
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.close();
if(!flag) {
if (!flag) {
throw new ServiceException(CUSTOMERRETURN_REQUEST_CANNOT_CLOSE);
}
mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录
@ -491,12 +495,12 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque
// 校验存在存在下级单据
CustomerreturnRequestMainDO mainDO = validateCustomerreturnRequestMainExists(id);
Long count = customerreturnJobMainMapper.selectByRequestNumber(mainDO.getNumber());
if(count > 0) {
if (count > 0) {
throw new ServiceException(CUSTOMERRETURN_REQUEST_JOB_EXISTS);
}
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.reAdd();
if(!flag) {
if (!flag) {
throw new ServiceException(CUSTOMERRETURN_REQUEST_CANNOT_RE_ADD);
}
mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录
@ -510,12 +514,12 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque
CustomerreturnRequestMainDO mainDO = validateCustomerreturnRequestMainExists(id);
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.submit(mainDO.getAutoAgree(), mainDO.getAutoExecute());
if(!flag) {
if (!flag) {
throw new ServiceException(CUSTOMERRETURN_REQUEST_CANNOT_SUBMIT);
}
mainDO.setStatus(requestStatusState.getState().getCode());
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) {
if (RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) {
this.generateJob(mainDO, customerreturnRequestDetailMapper.selectList(mainDO.getId()));
}
trendsApi.createTrends(id, "CustomerRejectRequest", "提交了客户退货申请", TrendsTypeEnum.UPDATE);
@ -529,12 +533,12 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque
CustomerreturnRequestMainDO mainDO = validateCustomerreturnRequestMainExists(id);
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.agree(mainDO.getAutoAgree());
if(!flag) {
if (!flag) {
throw new ServiceException(CUSTOMERRETURN_REQUEST_CANNOT_AGREE);
}
mainDO.setStatus(requestStatusState.getState().getCode());
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) {
if (RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) {
this.generateJob(mainDO, customerreturnRequestDetailMapper.selectList(mainDO.getId()));
}
trendsApi.createTrends(id, "CustomerRejectRequest", "审批同意了客户退货申请", TrendsTypeEnum.UPDATE);
@ -548,7 +552,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque
CustomerreturnRequestMainDO mainDO = validateCustomerreturnRequestMainExists(id);
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.handle();
if(!flag) {
if (!flag) {
throw new ServiceException(CUSTOMERRETURN_REQUEST_CANNOT_HANDLE);
}
mainDO.setStatus(requestStatusState.getState().getCode());
@ -565,7 +569,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque
CustomerreturnRequestMainDO mainDO = validateCustomerreturnRequestMainExists(id);
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.refused();
if(!flag) {
if (!flag) {
throw new ServiceException(CUSTOMERRETURN_REQUEST_CANNOT_ABORT);
}
mainDO.setStatus(requestStatusState.getState().getCode());
@ -575,6 +579,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque
/**
* 新增主表校验
*
* @param mainDo
* @return
*/
@ -589,40 +594,41 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque
/**
* 新增子表校验
*
* @param detailDo
* @return
*/
private void validateCustomerreturnRequestDetailCreate(CustomerreturnRequestMainDO mainDo, CustomerreturnRequestDetailDO detailDo) {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CustomerRejectRequest");
//校验成品发货记录子表并赋值
validateDeliverRecordDetail(mainDo,detailDo);
//校验物品基础信息并赋值
ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode());
if(detailDo.getUom() != null){
if (detailDo.getUom() != null) {
if (!detailDo.getUom().equals(itembasicDO.getUom())) {
//注意转换字段数值
throw exception(UOM_EXCEPTION,"计量单位" + itembasicDO.getUom() + "错误,应该是" + detailDo.getUom() + ",");
throw exception(UOM_EXCEPTION, "计量单位" + itembasicDO.getUom() + "错误,应该是" + detailDo.getUom() + ",");
}
}
//校验来源库位
if(!"".equals(detailDo.getFromLocationCode())){
validatorIfInToLocationType(detailDo.getFromLocationCode(),businesstypeDO);
if (!"".equals(detailDo.getFromLocationCode())) {
validatorIfInToLocationType(detailDo.getFromLocationCode(), businesstypeDO);
}
//校验到库位
// customerdockService.
validatorIfInFromLocationType(detailDo.getToLocationCode(),businesstypeDO);
validatorIfInFromLocationType(detailDo.getToLocationCode(), businesstypeDO);
//校验库存状态
validatorIfInventoryStatuses(detailDo.getInventoryStatus(),businesstypeDO);
validatorIfInventoryStatuses(detailDo.getInventoryStatus(), businesstypeDO);
//校验库存余额
validatorBalance(detailDo);
validateDeliverRecordQtyDetail(mainDo, detailDo);
}
/**
* 校验发货记录并赋值
*
* @param mainDo
*/
private CustomerreturnRequestMainDO validateDeliverRecord(CustomerreturnRequestMainDO mainDo) {
DeliverRecordMainDO deliverRecordMainDO = deliverRecordMainService.selectsMainRecordExist(mainDo.getDeliverRecordNumber());
DeliverRecordMainDO deliverRecordMainDO = deliverRecordMainService.selectsMainRecordExist(mainDo.getDeliverRecordNumber());
mainDo.setDeliverPlanNumber(deliverRecordMainDO.getDeliverPlanNumber());
mainDo.setCustomerCode(deliverRecordMainDO.getCustomerCode());
mainDo.setCustomerDockCode(deliverRecordMainDO.getCustomerDockCode());
@ -632,9 +638,10 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque
/**
* 校验业务类型和申请设置并赋值
*
* @param mainDo
*/
private void validateRequestsettingAndBusinesstype(CustomerreturnRequestMainDO mainDo){
private void validateRequestsettingAndBusinesstype(CustomerreturnRequestMainDO mainDo) {
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("CustomerRejectRequest");
if (requestsettingDO != null) {
mainDo.setAutoAgree(requestsettingDO.getAutoAgree());
@ -643,7 +650,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque
mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CustomerRejectRequest");
if(businesstypeDO != null){
if (businesstypeDO != null) {
mainDo.setBusinessType(businesstypeDO.getCode());
mainDo.setFromLocationTypes(businesstypeDO.getOutLocationTypes());
mainDo.setToLocationTypes(businesstypeDO.getInLocationTypes());
@ -655,14 +662,51 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque
}
private HashMap<Long, BigDecimal> validateDeliverRecordQtyDetail(CustomerreturnRequestMainDO mainDo, CustomerreturnRequestDetailDO detailDO) {
QueryWrapper<CustomerreturnRecordMainDO> customerreturnRecordMainDOQueryWrapper = new QueryWrapper<>();
customerreturnRecordMainDOQueryWrapper.eq("deliver_record_number", mainDo.getDeliverRecordNumber());
HashMap<Long, BigDecimal> hashMap = new HashMap<>();
//查询出已经退货完的记录主表
List<CustomerreturnRecordMainDO> customerreturnRecordMainDOS = customerreturnRecordMainMapper.selectList(customerreturnRecordMainDOQueryWrapper);
//获取发货记录子表每条数据
List<DeliverRecordDetailDO> deliverRecordDetailDO = deliverRecordMainService.selectsDeliverRecordExist(mainDo.getDeliverRecordNumber());
if (deliverRecordDetailDO != null && deliverRecordDetailDO.size() != 0) {
//2条
for (DeliverRecordDetailDO deliver : deliverRecordDetailDO) {
for (CustomerreturnRecordMainDO customerreturnRecordMainDO : customerreturnRecordMainDOS) {
List<CustomerreturnRecordDetailDO> customerreturnRecordDetailDOS = customerreturnRecordDetailMapper.selectList(customerreturnRecordMainDO.getId());
//查询出已经退货完的记录主表下的子表数据
BigDecimal qty = BigDecimal.ZERO;
for (CustomerreturnRecordDetailDO customerreturnRecordDetailDO : customerreturnRecordDetailDOS) {
if (deliver.getItemCode().equals(detailDO.getItemCode()) && deliver.getBatch().equals(detailDO.getBatch())
&& deliver.getPackingNumber().equals(detailDO.getPackingNumber())) {
if (deliver.getItemCode().equals(customerreturnRecordDetailDO.getItemCode()) && deliver.getBatch().equals(customerreturnRecordDetailDO.getFromBatch())
&& deliver.getPackingNumber().equals(customerreturnRecordDetailDO.getFromPackingNumber())) {
hashMap.put(detailDO.getId(), qty = qty.add(customerreturnRecordDetailDO.getQty()));
}
}
}
if (hashMap.get(detailDO.getId()) != null) {
if (deliver.getQty().compareTo((hashMap.get(detailDO.getId())).add(detailDO.getQty())) == -1) {
throw exception(QTY_EXCEPTION, "当前客户退货申请单的" + detailDO.getId() + "的退货数量已超出当前发货记录的发货数量" + (hashMap.get(detailDO.getId())).add(detailDO.getQty()).subtract(deliver.getQty()) + "个");
}
}
}
}
}
return hashMap;
}
/**
* 校验成品发货记录子表并赋值
*
* @param mainDo
* @param detailDO
*/
private void validateDeliverRecordDetail(CustomerreturnRequestMainDO mainDo,CustomerreturnRequestDetailDO detailDO){
private void validateDeliverRecordDetail(CustomerreturnRequestMainDO mainDo, CustomerreturnRequestDetailDO detailDO) {
List<DeliverRecordDetailDO> deliverRecordDetailDO = deliverRecordMainService.selectsDeliverRecordExist(mainDo.getDeliverRecordNumber());
if(deliverRecordDetailDO != null && deliverRecordDetailDO.size() != 0){
if (deliverRecordDetailDO != null && deliverRecordDetailDO.size() != 0) {
Boolean result = false;
for (DeliverRecordDetailDO deliver : deliverRecordDetailDO) {
if (
@ -670,28 +714,25 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque
// deliver.getSoLine().equals(detailDO.getSoLine()) &&
deliver.getItemCode().equals(detailDO.getItemCode()) &&
deliver.getBatch().equals(detailDO.getBatch()) &&
deliver.getPackingNumber().equals(detailDO.getPackingNumber()))
{
detailDO.setQty(deliver.getQty());
detailDO.setUom(deliver.getUom());
deliver.getPackingNumber().equals(detailDO.getPackingNumber())) {
result = true;
}
}
if(!result){
throw exception(DELIVER_RECORD_DETAIL_EXCEPTION,"物料代码" + detailDO.getItemCode() + "批次" + detailDO.getBatch() + "箱码" + detailDO.getPackingNumber() + "不在发货记录单"
if (!result) {
throw exception(DELIVER_RECORD_DETAIL_EXCEPTION, "物料代码" + detailDO.getItemCode() + "批次" + detailDO.getBatch() + "箱码" + detailDO.getPackingNumber() + "不在发货记录单"
+ mainDo.getDeliverRecordNumber() + "中");
// throw exception(DELIVER_RECORD_DETAIL_EXCEPTION,"销售订单号" + detailDO.getSoNumber() + "销售订单行" + detailDO.getSoLine()
// + "物料代码" + detailDO.getItemCode() + "批次" + detailDO.getBatch() + "箱码" + detailDO.getPackingNumber() + "不在发货记录单"
// + createReqVO.getDeliverRecordNumber() + "中");
}
}
else {
} else {
throw exception(DELIVER_RECORD_DETAIL_NOT_EXISTS);
}
}
/**
* 校验物品基础信息并赋值
*
* @param itemCode
*/
private ItembasicDO validatorItembasic(String itemCode) {
@ -700,6 +741,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque
/**
* 校验出库库位类型是否一致
*
* @param fromLocationCode
* @param businesstypeDO
*/
@ -709,15 +751,17 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque
/**
* 校验出库库位类型是否一致
*
* @param toLocationCode
* @param businesstypeDO
*/
private void validatorIfInFromLocationType(String toLocationCode, BusinesstypeDO businesstypeDO) {
jobUtils.ifInFromLocationType(toLocationCode, businesstypeDO);
jobUtils.ifInFromLocationType(toLocationCode, businesstypeDO);
}
/**
* 校验库存状态是否一致
*
* @param inventoryStatus
* @param businesstypeDO
*/
@ -727,14 +771,15 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque
/**
* 校验库存余额
*
* @param
*/
private void validatorBalance(CustomerreturnRequestDetailDO detailDO) {
ArrayList<String> list = new ArrayList<>();
list.add(detailDO.getInventoryStatus());
if("CUST".equals(detailDO.getFromLocationCode())){
List<BalanceDO> balance = jobUtils.selectlocationReturnManagementAccuracy(detailDO.getItemCode(),detailDO.getPackingNumber()
,detailDO.getBatch(),detailDO.getFromLocationCode(),list);
if ("CUST".equals(detailDO.getFromLocationCode())) {
List<BalanceDO> balance = jobUtils.selectlocationReturnManagementAccuracy(detailDO.getItemCode(), detailDO.getPackingNumber()
, detailDO.getBatch(), detailDO.getFromLocationCode(), list);
isqty(detailDO.getQty(), balance.get(0).getQty());
}
}

33
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customersettleRequest/CustomersettleRequestMainServiceImpl.java

@ -9,21 +9,25 @@ import com.win.framework.common.util.validation.ValidationUtils;
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.user.AdminUserApi;
import com.win.module.system.enums.serialNumber.RuleCodeEnum;
import com.win.module.wms.controller.customersettleRecord.vo.CustomersettleRecordDetailCreateReqVO;
import com.win.module.wms.controller.customersettleRecord.vo.CustomersettleRecordMainCreateReqVO;
import com.win.module.wms.controller.customersettleRequest.vo.*;
import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO;
import com.win.module.wms.convert.customersettleRecord.CustomersettleRecordDetailConvert;
import com.win.module.wms.convert.customersettleRecord.CustomersettleRecordMainConvert;
import com.win.module.wms.convert.customersettleRequest.CustomersettleRequestDetailConvert;
import com.win.module.wms.convert.customersettleRequest.CustomersettleRequestMainConvert;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.customersettleRecord.CustomersettleRecordDetailDO;
import com.win.module.wms.dal.dataobject.customersettleRecord.CustomersettleRecordMainDO;
import com.win.module.wms.dal.dataobject.customersettleRequest.CustomersettleRequestDetailDO;
import com.win.module.wms.dal.dataobject.customersettleRequest.CustomersettleRequestMainDO;
import com.win.module.wms.dal.dataobject.deliverRecord.DeliverRecordDetailDO;
import com.win.module.wms.dal.dataobject.deliverRecord.DeliverRecordMainDO;
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO;
import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO;
import com.win.module.wms.dal.mysql.customersettleRecord.CustomersettleRecordDetailMapper;
import com.win.module.wms.dal.mysql.customersettleRecord.CustomersettleRecordMainMapper;
import com.win.module.wms.dal.mysql.customersettleRequest.CustomersettleRequestDetailMapper;
@ -42,12 +46,14 @@ import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import javax.validation.Validator;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
import static com.win.module.wms.enums.ErrorCodeConstants.*;
/**
@ -84,6 +90,8 @@ public class CustomersettleRequestMainServiceImpl implements CustomersettleReque
private TrendsApi trendsApi;
@Resource
private SerialNumberApi serialNumberApi;
@Resource
private AdminUserApi userApi;
@Override
public Long createCustomersettleRequestMain(CustomersettleRequestMainCreateReqVO createReqVO) {
// 插入
@ -270,14 +278,35 @@ public class CustomersettleRequestMainServiceImpl implements CustomersettleReque
customersettleRecordMainCreateReqVO.setBusinessType(businesstypeDO.getCode());
CustomersettleRecordMainDO convert = CustomersettleRecordMainConvert.INSTANCE.convert(customersettleRecordMainCreateReqVO);
customersettleRecordMainMapper.insert(convert);
List<TransactionCreateReqVO> transactionCreateReqVOList = new ArrayList<>();
for (CustomersettleRequestDetailDO customersettleRequestDetailDO : detailDOList) {
CustomersettleRecordDetailCreateReqVO customersettleRecordDetailCreateReqVO = new CustomersettleRecordDetailCreateReqVO();
BeanUtils.copyProperties(customersettleRequestDetailDO, customersettleRecordDetailCreateReqVO);
customersettleRecordDetailCreateReqVO.setNumber(number);
customersettleRecordDetailCreateReqVO.setMasterId(convert.getId().toString());
customersettleRecordDetailMapper.insert(CustomersettleRecordDetailConvert.INSTANCE.convert(customersettleRecordDetailCreateReqVO));
trendsApi.createTrends(mainDO.getId(), "CustomersettleRecord", "客户结算申请生成客户结算记录", TrendsTypeEnum.CREATE);
CustomersettleRecordDetailDO recordDetailDO = CustomersettleRecordDetailConvert.INSTANCE.convert(customersettleRecordDetailCreateReqVO);
customersettleRecordDetailMapper.insert(recordDetailDO);
//添加库存事务list
TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO();
BeanUtils.copyProperties(recordDetailDO, transactionCreateReqVO);
TransactiontypeDO transactiontypeDO = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType());
transactionCreateReqVO.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId()));
transactionCreateReqVO.setInventoryAction(transactiontypeDO.getInventoryAction());
transactionCreateReqVO.setTransactionType(transactiontypeDO.getCode());
transactionCreateReqVO.setBusinessType(mainDO.getBusinessType());
transactionCreateReqVO.setOwnerCode(recordDetailDO.getOwnerCode());
transactionCreateReqVO.setItemCode(recordDetailDO.getItemCode());
transactionCreateReqVO.setRecordNumber(number);
transactionCreateReqVO.setId(null);
transactionCreateReqVO.setPackingNumber(recordDetailDO.getPackingNumber());
transactionCreateReqVO.setBatch(recordDetailDO.getBatch());
transactionCreateReqVO.setContainerNumber(null);
transactionCreateReqVO.setAmount(recordDetailDO.getAmount());
transactionCreateReqVO.setWarehouseCode(mainDO.getFromWarehouseCode());
transactionCreateReqVO.setLocationCode(recordDetailDO.getFromLocationCode());
transactionCreateReqVOList.add(transactionCreateReqVO);
}
trendsApi.createTrends(mainDO.getId(), "CustomersettleRecord", "客户结算申请生成客户结算记录", TrendsTypeEnum.CREATE);
}
@Override

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestMainServiceImpl.java

@ -614,7 +614,7 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService
deliverJobDetailDo.setUpdateTime(null);
deliverJobDetailDo.setUpdater(null);
if("TRUE".equals(businesstypeDO.getUseOnTheWay())){
deliverJobDetailDo.setToLocationCode("FAC_INTRANS");
deliverJobDetailDo.setToLocationCode("CUST");
}else {
deliverJobDetailDo.setToLocationCode(null);
}

177
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveJob/InventorymoveJobMainServiceImpl.java

@ -12,6 +12,7 @@ import com.win.module.system.enums.serialNumber.RuleCodeEnum;
import com.win.module.wms.controller.expectin.vo.ExpectinCreateReqVO;
import com.win.module.wms.controller.expectout.vo.ExpectoutCreateReqVO;
import com.win.module.wms.controller.inventorymoveJob.vo.*;
import com.win.module.wms.controller.purchasereturnJob.vo.PurchasereturnJobDetailUpdateReqVO;
import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.inventorymoveJob.InventorymoveJobDetailDO;
@ -193,7 +194,7 @@ public class InventorymoveJobMainServiceImpl implements InventorymoveJobMainServ
inventorymoveJobMainDO.setAcceptUserId(String.valueOf(userId));
inventorymoveJobMainDO.setAcceptUserName(userRespDTO.getNickname());
inventorymoveJobMainDO.setAcceptTime(LocalDateTime.now());
trendsApi.createTrends(id, "MoveJob", "承接了库存转移任务", TrendsTypeEnum.UPDATE);
trendsApi.createTrends(id, "InventoryMoveJob", "承接了库存转移任务", TrendsTypeEnum.UPDATE);
return inventorymoveJobMainMapper.updateById(inventorymoveJobMainDO);
}
@ -209,7 +210,7 @@ public class InventorymoveJobMainServiceImpl implements InventorymoveJobMainServ
inventorymoveJobMainDO.setAcceptUserId(null);
inventorymoveJobMainDO.setAcceptUserName(null);
inventorymoveJobMainDO.setAcceptTime(null);
trendsApi.createTrends(id, "MoveJob", "取消了库存转移任务", TrendsTypeEnum.UPDATE);
trendsApi.createTrends(id, "InventoryMoveJob", "取消了库存转移任务", TrendsTypeEnum.UPDATE);
return inventorymoveJobMainMapper.updateById(inventorymoveJobMainDO);
}
@ -222,7 +223,7 @@ public class InventorymoveJobMainServiceImpl implements InventorymoveJobMainServ
throw exception(DELIVER_JOB_MAIN_STATUS_ERROR);
}
inventorymoveJobMainDO.setStatus(jobStatusState.getState().getCode());
trendsApi.createTrends(id, "MoveJob", "关闭了库存转移任务", TrendsTypeEnum.UPDATE);
trendsApi.createTrends(id, "InventoryMoveJob", "关闭了库存转移任务", TrendsTypeEnum.UPDATE);
return inventorymoveJobMainMapper.updateById(inventorymoveJobMainDO);
}
@ -231,7 +232,7 @@ public class InventorymoveJobMainServiceImpl implements InventorymoveJobMainServ
public String executeInventorymoveJobMain(InventorymoveJobMainUpdateReqVO inventorymoveJobMainUpdateReqVO) {
RecordsettingDO recordsettingDO = null;
BusinesstypeDO businesstypeDO = null;
String number = "";
String number = "";
//查询数据
InventorymoveJobMainDO inventorymoveJobMainDO = this.validateInventorymoveJobMainExists(inventorymoveJobMainUpdateReqVO.getId());
List<InventorymoveJobDetailDO> subList = inventorymoveJobDetailService.selectList(inventorymoveJobMainDO.getId());
@ -259,26 +260,30 @@ public class InventorymoveJobMainServiceImpl implements InventorymoveJobMainServ
inventorymoveRecordMainDO.setExecuteTime(LocalDateTime.now());
inventorymoveRecordMainDO.setActiveDate(LocalDateTime.now());
inventorymoveRecordMainDO.setDueTime(inventorymoveJobMainDO.getRequestDueTime());
if("HoldToOkJob".equals(inventorymoveRecordMainDO.getBusinessType())){
if ("HoldToOkJob".equals(inventorymoveRecordMainDO.getBusinessType())) {
number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_OK_RECORD.getCode());
recordsettingDO = recordsettingService.selectRecordsettingExist("HoldToOkRecord");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToOkRecord");
} else if("OkToHoldJob".equals(inventorymoveRecordMainDO.getBusinessType())){
} else if ("OkToHoldJob".equals(inventorymoveRecordMainDO.getBusinessType())) {
number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_HOLD_RECORD.getCode());
recordsettingDO = recordsettingService.selectRecordsettingExist("OkToHoldRecord");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToHoldRecord");
} else if("HoldToScrapJob".equals(inventorymoveRecordMainDO.getBusinessType())){
} else if ("HoldToScrapJob".equals(inventorymoveRecordMainDO.getBusinessType())) {
number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_SCRAP_RECORD.getCode());
recordsettingDO = recordsettingService.selectRecordsettingExist("HoldToScrapRecord");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToScrapRecord");
} else if("ScrapToHoldJob".equals(inventorymoveRecordMainDO.getBusinessType())){
} else if ("ScrapToHoldJob".equals(inventorymoveRecordMainDO.getBusinessType())) {
number = serialNumberApi.generateCode(RuleCodeEnum.SCRAP_TO_HOLD_RECORD.getCode());
recordsettingDO = recordsettingService.selectRecordsettingExist("ScrapToHoldRecord");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ScrapToHoldRecord");
} else if("OkToScrapJob".equals(inventorymoveRecordMainDO.getBusinessType())){
} else if ("OkToScrapJob".equals(inventorymoveRecordMainDO.getBusinessType())) {
number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_SCRAP_RECORD.getCode());
recordsettingDO = recordsettingService.selectRecordsettingExist("OkToScrapRecord");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToScrapRecord");
}else {
number = serialNumberApi.generateCode(RuleCodeEnum.INVENTORY_MOVE_RECORD.getCode());
recordsettingDO = recordsettingService.selectRecordsettingExist("InventoryMoveRecord");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InventoryMoveRecord");
}
inventorymoveRecordMainDO.setNumber(number);
inventorymoveRecordMainDO.setBusinessType(businesstypeDO.getCode());
@ -290,84 +295,78 @@ public class InventorymoveJobMainServiceImpl implements InventorymoveJobMainServ
List<InventorymoveRecordDetailDO> inventorymoveRecordDetailDOList = new ArrayList<>();
//库存事务
List<TransactionCreateReqVO> transactionCreateReqVOList = new ArrayList<>();
subList.forEach(subListItem -> {
inventorymoveJobDetailUpdateReqVOList.forEach(DetailUpdateItem -> {
// 匹配任务子表与参数中子表
if (DetailUpdateItem.getId().equals(subListItem.getId())) {
List<Map<String,String>> recordList = DetailUpdateItem.getRecordList();
recordList.forEach(recordListItem -> {InventorymoveRecordDetailDO inventorymoveRecordDetailDO = new InventorymoveRecordDetailDO();
BeanUtils.copyProperties(DetailUpdateItem, inventorymoveRecordDetailDO);
inventorymoveRecordDetailDO.setJobDetailId(DetailUpdateItem.getId().toString());
inventorymoveRecordDetailDO.setId(null);
inventorymoveRecordDetailDO.setCreator(null);
inventorymoveRecordDetailDO.setCreateTime(LocalDateTime.now());
inventorymoveRecordDetailDO.setUpdater(null);
inventorymoveRecordDetailDO.setUpdateTime(null);
inventorymoveRecordDetailDO.setNumber(inventorymoveRecordMainDO.getNumber());
inventorymoveRecordDetailDO.setInterfaceType(inventorymoveRecordMainDO.getInterfaceType());
inventorymoveRecordDetailDO.setMasterId(inventorymoveRecordMainDO.getId().toString());
inventorymoveRecordDetailDO.setQty(new BigDecimal(recordListItem.get("handleQty")));
inventorymoveRecordDetailDO.setToPackingNumber(recordListItem.get("toPackingNumber")==null?"":recordListItem.get("toPackingNumber"));
inventorymoveRecordDetailDO.setToContainerNumber(recordListItem.get("toContainerNumber")==null?"":recordListItem.get("toContainerNumber"));
inventorymoveRecordDetailDO.setToBatch(recordListItem.get("toBatch")==null?"":recordListItem.get("toBatch"));
inventorymoveRecordDetailDO.setToLocationCode(recordListItem.get("toLocationCode"));
LocationDO toLocationDO = locationService.selectLocation(recordListItem.get("toLocationCode"));
inventorymoveRecordDetailDO.setToAreaCode(toLocationDO.getAreaCode());
inventorymoveRecordDetailDO.setToLocationGroupCode(toLocationDO.getLocationGroupCode());
LocationDO fromLocationDO = locationService.selectLocation(inventorymoveRecordDetailDO.getFromLocationCode());
inventorymoveRecordDetailDO.setFromAreaCode(fromLocationDO.getAreaCode());
inventorymoveRecordDetailDO.setFromLocationGroupCode(fromLocationDO.getLocationGroupCode());
inventorymoveRecordDetailDO.setToInventoryStatus(recordListItem.get("toInventoryStatus"));
inventorymoveRecordDetailDO.setFromPackingNumber(DetailUpdateItem.getPackingNumber());
inventorymoveRecordDetailDO.setFromContainerNumber(DetailUpdateItem.getContainerNumber());
inventorymoveRecordDetailDO.setFromAreaCode(inventorymoveJobMainDO.getFromAreaCodes());
inventorymoveRecordDetailDO.setToAreaCode(inventorymoveJobMainDO.getToAreaCodes());
inventorymoveRecordDetailDO.setFromBatch(DetailUpdateItem.getBatch());
inventorymoveRecordDetailDO.setInterfaceType(inventorymoveRecordMainDO.getInterfaceType());
inventorymoveRecordDetailDO.setFromInventoryStatus(DetailUpdateItem.getInventoryStatus());
inventorymoveRecordDetailDOList.add(inventorymoveRecordDetailDO);
//添加库存事务list
// 入动作
TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO();
BeanUtils.copyProperties(inventorymoveRecordDetailDO, transactionCreateReqVO);
TransactiontypeDO transactiontypeDO = jobUtils.selectDocumentFromTransactionType(inventorymoveRecordMainDO.getInTransactionType());
transactionCreateReqVO.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId()));
transactionCreateReqVO.setInventoryAction(transactiontypeDO.getInventoryAction());
transactionCreateReqVO.setTransactionType(transactiontypeDO.getCode());
transactionCreateReqVO.setBusinessType(inventorymoveJobMainDO.getBusinessType());
transactionCreateReqVO.setOwnerCode(inventorymoveRecordDetailDO.getFromOwnerCode());
transactionCreateReqVO.setRecordNumber(inventorymoveRecordMainDO.getNumber());
transactionCreateReqVO.setId(null);
transactionCreateReqVO.setPackingNumber(DetailUpdateItem.getPackingNumber());
transactionCreateReqVO.setBatch(DetailUpdateItem.getBatch());
transactionCreateReqVO.setContainerNumber(DetailUpdateItem.getContainerNumber());
transactionCreateReqVO.setInventoryStatus(DetailUpdateItem.getInventoryStatus());
transactionCreateReqVO.setAmount(BigDecimal.ZERO);
transactionCreateReqVO.setLocationCode(recordListItem.get("toLocationCode").toString());
transactionCreateReqVOList.add(transactionCreateReqVO);
// 出动作
TransactionCreateReqVO transactionCreateReqVOOut = new TransactionCreateReqVO();
BeanUtils.copyProperties(inventorymoveRecordDetailDO, transactionCreateReqVOOut);
TransactiontypeDO transactiontypeDOOut = jobUtils.selectDocumentFromTransactionType(inventorymoveRecordMainDO.getOutTransactionType());
transactionCreateReqVOOut.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId()));
transactionCreateReqVOOut.setInventoryAction(transactiontypeDOOut.getInventoryAction());
transactionCreateReqVOOut.setTransactionType(transactiontypeDOOut.getCode());
transactionCreateReqVOOut.setBusinessType(inventorymoveJobMainDO.getBusinessType());
transactionCreateReqVOOut.setOwnerCode(inventorymoveRecordDetailDO.getFromOwnerCode());
transactionCreateReqVOOut.setRecordNumber(inventorymoveRecordMainDO.getNumber());
transactionCreateReqVOOut.setId(null);
transactionCreateReqVOOut.setPackingNumber(DetailUpdateItem.getPackingNumber());
transactionCreateReqVOOut.setBatch(DetailUpdateItem.getBatch());
transactionCreateReqVOOut.setContainerNumber(DetailUpdateItem.getContainerNumber());
transactionCreateReqVOOut.setInventoryStatus(DetailUpdateItem.getInventoryStatus());
transactionCreateReqVOOut.setAmount(BigDecimal.ZERO);
transactionCreateReqVOOut.setLocationCode(subListItem.getFromLocationCode());
transactionCreateReqVOList.add(transactionCreateReqVOOut);});
}
});
});
if(!inventorymoveRecordDetailDOList.isEmpty()) {
inventorymoveRecordDetailMapper.insertBatch(inventorymoveRecordDetailDOList);
for (InventorymoveJobDetailUpdateReqVO inventorymoveJobDetailUpdateReqVO : inventorymoveJobDetailUpdateReqVOList) {
InventorymoveRecordDetailDO inventorymoveRecordDetailDO = new InventorymoveRecordDetailDO();
BeanUtils.copyProperties(inventorymoveJobDetailUpdateReqVO, inventorymoveRecordDetailDO);
inventorymoveRecordDetailDO.setJobDetailId(inventorymoveJobDetailUpdateReqVO.getId().toString());
inventorymoveRecordDetailDO.setId(null);
inventorymoveRecordDetailDO.setCreator(null);
inventorymoveRecordDetailDO.setCreateTime(LocalDateTime.now());
inventorymoveRecordDetailDO.setUpdater(null);
inventorymoveRecordDetailDO.setUpdateTime(null);
inventorymoveRecordDetailDO.setNumber(inventorymoveRecordMainDO.getNumber());
inventorymoveRecordDetailDO.setInterfaceType(inventorymoveRecordMainDO.getInterfaceType());
inventorymoveRecordDetailDO.setMasterId(inventorymoveRecordMainDO.getId().toString());
inventorymoveRecordDetailDO.setQty(inventorymoveJobDetailUpdateReqVO.getHandleQty());
inventorymoveRecordDetailDO.setToPackingNumber(inventorymoveJobDetailUpdateReqVO.getToPackingNumber());
inventorymoveRecordDetailDO.setToContainerNumber(inventorymoveJobDetailUpdateReqVO.getToContainerNumber());
inventorymoveRecordDetailDO.setToBatch(inventorymoveJobDetailUpdateReqVO.getToBatch());
inventorymoveRecordDetailDO.setToLocationCode(inventorymoveJobDetailUpdateReqVO.getToLocationCode());
LocationDO toLocationDO = locationService.selectLocation(inventorymoveJobDetailUpdateReqVO.getToLocationCode());
inventorymoveRecordDetailDO.setToAreaCode(toLocationDO.getAreaCode());
inventorymoveRecordDetailDO.setToLocationGroupCode(toLocationDO.getLocationGroupCode());
LocationDO fromLocationDO = locationService.selectLocation(inventorymoveRecordDetailDO.getFromLocationCode());
inventorymoveRecordDetailDO.setFromAreaCode(fromLocationDO.getAreaCode());
inventorymoveRecordDetailDO.setFromLocationGroupCode(fromLocationDO.getLocationGroupCode());
inventorymoveRecordDetailDO.setToInventoryStatus(inventorymoveJobDetailUpdateReqVO.getToInventoryStatus());
inventorymoveRecordDetailDO.setFromPackingNumber(inventorymoveJobDetailUpdateReqVO.getPackingNumber());
inventorymoveRecordDetailDO.setFromContainerNumber(inventorymoveJobDetailUpdateReqVO.getContainerNumber());
inventorymoveRecordDetailDO.setFromAreaCode(inventorymoveJobMainDO.getFromAreaCodes());
inventorymoveRecordDetailDO.setToAreaCode(inventorymoveJobMainDO.getToAreaCodes());
inventorymoveRecordDetailDO.setFromBatch(inventorymoveJobDetailUpdateReqVO.getBatch());
inventorymoveRecordDetailDO.setInterfaceType(inventorymoveRecordMainDO.getInterfaceType());
inventorymoveRecordDetailDO.setFromInventoryStatus(inventorymoveJobDetailUpdateReqVO.getInventoryStatus());
inventorymoveRecordDetailDOList.add(inventorymoveRecordDetailDO);
//添加库存事务list
// 入动作
TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO();
BeanUtils.copyProperties(inventorymoveRecordDetailDO, transactionCreateReqVO);
TransactiontypeDO transactiontypeDO = jobUtils.selectDocumentFromTransactionType(inventorymoveRecordMainDO.getInTransactionType());
transactionCreateReqVO.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId()));
transactionCreateReqVO.setInventoryAction(transactiontypeDO.getInventoryAction());
transactionCreateReqVO.setTransactionType(transactiontypeDO.getCode());
transactionCreateReqVO.setBusinessType(inventorymoveJobMainDO.getBusinessType());
transactionCreateReqVO.setOwnerCode(inventorymoveRecordDetailDO.getFromOwnerCode());
transactionCreateReqVO.setRecordNumber(inventorymoveRecordMainDO.getNumber());
transactionCreateReqVO.setId(null);
transactionCreateReqVO.setPackingNumber(inventorymoveJobDetailUpdateReqVO.getPackingNumber());
transactionCreateReqVO.setBatch(inventorymoveJobDetailUpdateReqVO.getBatch());
transactionCreateReqVO.setContainerNumber(inventorymoveJobDetailUpdateReqVO.getContainerNumber());
transactionCreateReqVO.setInventoryStatus(inventorymoveJobDetailUpdateReqVO.getInventoryStatus());
transactionCreateReqVO.setAmount(BigDecimal.ZERO);
transactionCreateReqVO.setLocationCode(inventorymoveJobDetailUpdateReqVO.getToLocationCode());
transactionCreateReqVOList.add(transactionCreateReqVO);
// 出动作
TransactionCreateReqVO transactionCreateReqVOOut = new TransactionCreateReqVO();
BeanUtils.copyProperties(inventorymoveRecordDetailDO, transactionCreateReqVOOut);
TransactiontypeDO transactiontypeDOOut = jobUtils.selectDocumentFromTransactionType(inventorymoveRecordMainDO.getOutTransactionType());
transactionCreateReqVOOut.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId()));
transactionCreateReqVOOut.setInventoryAction(transactiontypeDOOut.getInventoryAction());
transactionCreateReqVOOut.setTransactionType(transactiontypeDOOut.getCode());
transactionCreateReqVOOut.setBusinessType(inventorymoveJobMainDO.getBusinessType());
transactionCreateReqVOOut.setOwnerCode(inventorymoveRecordDetailDO.getFromOwnerCode());
transactionCreateReqVOOut.setRecordNumber(inventorymoveRecordMainDO.getNumber());
transactionCreateReqVOOut.setId(null);
transactionCreateReqVOOut.setPackingNumber(inventorymoveJobDetailUpdateReqVO.getPackingNumber());
transactionCreateReqVOOut.setBatch(inventorymoveJobDetailUpdateReqVO.getBatch());
transactionCreateReqVOOut.setContainerNumber(inventorymoveJobDetailUpdateReqVO.getContainerNumber());
transactionCreateReqVOOut.setInventoryStatus(inventorymoveJobDetailUpdateReqVO.getInventoryStatus());
transactionCreateReqVOOut.setAmount(BigDecimal.ZERO);
transactionCreateReqVOOut.setLocationCode(inventorymoveJobDetailUpdateReqVO.getFromLocationCode());
transactionCreateReqVOList.add(transactionCreateReqVOOut);
};
if(!inventorymoveRecordDetailDOList.isEmpty()){
inventorymoveRecordDetailMapper.insertBatch(inventorymoveRecordDetailDOList);
}
//增加库存事务
transactionService.createTransaction(transactionCreateReqVOList);
@ -376,7 +375,7 @@ public class InventorymoveJobMainServiceImpl implements InventorymoveJobMainServ
//移除预计出
expectoutService.deleteExpectoutByJobNumber(inventorymoveJobMainDO.getNumber());
//变更记录
trendsApi.createTrends(inventorymoveJobMainDO.getId(), inventorymoveJobMainDO.getBusinessType(), "执行了库存转移任务", TrendsTypeEnum.UPDATE);
trendsApi.createTrends(inventorymoveJobMainDO.getId(),inventorymoveJobMainDO.getBusinessType(),"执行了库存转移任务",TrendsTypeEnum.UPDATE);
return number;
}
}
}

26
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRecord/InventorymoveRecordMainServiceImpl.java

@ -77,33 +77,27 @@ public class InventorymoveRecordMainServiceImpl implements InventorymoveRecordMa
RecordsettingDO recordsettingDO = null;
BusinesstypeDO businesstypeDO = null;
// 插入
InventorymoveRecordMainDO inventorymoveRecordMain = InventorymoveRecordMainConvert.INSTANCE.convert(createReqVO);
inventorymoveRecordMainMapper.insert(inventorymoveRecordMain);
// 插入
InventorymoveRecordMainDO nventorymoveRecordMain = InventorymoveRecordMainConvert.INSTANCE.convert(createReqVO);
inventorymoveRecordMainMapper.insert(nventorymoveRecordMain);
InventorymoveRecordMainDO mainDO = InventorymoveRecordMainConvert.INSTANCE.convert(createReqVO);
inventorymoveRecordMainMapper.insert(mainDO);
List<InventorymoveRecordDetailDO> subDOList = InventorymoveRecordMainConvert.INSTANCE.convertList03(createReqVO.getSubList());
if("HoldToOkRequest".equals(mainDO.getBusinessType())){
if("HoldToOkRecord".equals(mainDO.getBusinessType())){
number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_OK_RECORD.getCode());
recordsettingDO = recordsettingService.selectRecordsettingExist("HoldToOkRecord");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToOkRecord");
} else if("OkToHoldRequest".equals(mainDO.getBusinessType())){
} else if("OkToHoldRecord".equals(mainDO.getBusinessType())){
number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_HOLD_RECORD.getCode());
recordsettingDO = recordsettingService.selectRecordsettingExist("OkToHoldRecord");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToHoldRecord");
} else if("HoldToScrapRequest".equals(mainDO.getBusinessType())){
} else if("HoldToScrapRecord".equals(mainDO.getBusinessType())){
number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_SCRAP_RECORD.getCode());
recordsettingDO = recordsettingService.selectRecordsettingExist("HoldToScrapRecord");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToScrapRecord");
} else if("ScrapToHoldRequest".equals(mainDO.getBusinessType())){
} else if("ScrapToHoldRecord".equals(mainDO.getBusinessType())){
number = serialNumberApi.generateCode(RuleCodeEnum.SCRAP_TO_HOLD_RECORD.getCode());
recordsettingDO = recordsettingService.selectRecordsettingExist("ScrapToHoldRecord");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ScrapToHoldRecord");
} else if("OkToScrapRequest".equals(mainDO.getBusinessType())){
} else if("OkToScrapRecord".equals(mainDO.getBusinessType())){
number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_SCRAP_RECORD.getCode());
recordsettingDO = recordsettingService.selectRecordsettingExist("OkToScrapRecord");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToScrapRecord");
}else if("InventoryMoveRecord".equals(mainDO.getBusinessType())){
number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_SCRAP_RECORD.getCode());
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InventoryMoveRecord");
}
mainDO.setNumber(number);
mainDO.setBusinessType(businesstypeDO.getCode());
@ -169,7 +163,7 @@ public class InventorymoveRecordMainServiceImpl implements InventorymoveRecordMa
//增加操作记录
trendsApi.createTrends(mainDO.getId(), "inventorymoveRecordMain", "增加了库存转移记录", TrendsTypeEnum.CREATE);
// 返回
return inventorymoveRecordMain.getId();
return mainDO.getId();
}
@Override

234
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRequest/InventorymoveRequestMainServiceImpl.java

@ -150,37 +150,34 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest
inventorymoveRequestDetailDO.setCreateTime(LocalDateTime.now());
validatelocation(inventorymoveRequestMainDO, inventorymoveRequestDetailDO);
ItembasicDO itembasicDO = validteitembasic(inventorymoveRequestDetailDO);
//校验库存余额是否存在
List<String> inventoryStatus = new ArrayList<>();
//隔离转合格申请
if ("HOLD".equals(inventorymoveRequestDetailDO.getFromInventoryStatus()) && "OK".equals(inventorymoveRequestDetailDO.getToInventoryStatus())) {
inventoryStatus.add("HOLD");
String OkToScrapRequest = "HoldToOkRequest";
CreateBusinessTypeAndRequestSetting(inventorymoveRequestMainDO,inventorymoveRequestDetailDO,itembasicDO,OkToScrapRequest);
}
//合格转隔离申请
if ("OK".equals(inventorymoveRequestDetailDO.getFromInventoryStatus()) && "HOLD".equals(inventorymoveRequestDetailDO.getToInventoryStatus())) {
inventoryStatus.add("OK");
else if ("OK".equals(inventorymoveRequestDetailDO.getFromInventoryStatus()) && "HOLD".equals(inventorymoveRequestDetailDO.getToInventoryStatus())) {
String OkToScrapRequest = "OkToHoldRequest";
CreateBusinessTypeAndRequestSetting(inventorymoveRequestMainDO,inventorymoveRequestDetailDO,itembasicDO,OkToScrapRequest);
}
//隔离转报废申请
if ("HOLD".equals(inventorymoveRequestDetailDO.getFromInventoryStatus()) && "SCRAP".equals(inventorymoveRequestDetailDO.getToInventoryStatus())) {
inventoryStatus.add("HOLD");
else if ("HOLD".equals(inventorymoveRequestDetailDO.getFromInventoryStatus()) && "SCRAP".equals(inventorymoveRequestDetailDO.getToInventoryStatus())) {
String OkToScrapRequest = "HoldToScrapRequest";
CreateBusinessTypeAndRequestSetting(inventorymoveRequestMainDO,inventorymoveRequestDetailDO,itembasicDO,OkToScrapRequest);
}
//报废转隔离申请
if ("SCRAP".equals(inventorymoveRequestDetailDO.getFromInventoryStatus())&& "HOLD".equals(inventorymoveRequestDetailDO.getToInventoryStatus())) {
inventoryStatus.add("SCRAP");
else if ("SCRAP".equals(inventorymoveRequestDetailDO.getFromInventoryStatus())&& "HOLD".equals(inventorymoveRequestDetailDO.getToInventoryStatus())) {
String OkToScrapRequest = "ScrapToHoldRequest";
CreateBusinessTypeAndRequestSetting(inventorymoveRequestMainDO,inventorymoveRequestDetailDO,itembasicDO,OkToScrapRequest);
}
//合格转报废申请
if ("OK".equals(inventorymoveRequestDetailDO.getFromInventoryStatus())&& "SCRAP".equals(inventorymoveRequestDetailDO.getToInventoryStatus())) {
inventoryStatus.add("SCRAP");
else if ("OK".equals(inventorymoveRequestDetailDO.getFromInventoryStatus())&& "SCRAP".equals(inventorymoveRequestDetailDO.getToInventoryStatus())) {
String OkToScrapRequest = "OkToScrapRequest";
CreateBusinessTypeAndRequestSetting(inventorymoveRequestMainDO,inventorymoveRequestDetailDO,itembasicDO,OkToScrapRequest);
}//库存转移申请
else {
String InventoryMoveRequest = "InventoryMoveRequest";
CreateBusinessTypeAndRequestSetting(inventorymoveRequestMainDO,inventorymoveRequestDetailDO,itembasicDO,InventoryMoveRequest);
}
validtebalance(inventorymoveRequestDetailDO);
inventorymoveRequestDetailDO.setToBatch(inventorymoveRequestDetailDO.getFromBatch());
@ -224,16 +221,14 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest
@Override
public void updateInventorymoveRequestMain(InventorymoveRequestMainUpdateReqVO updateReqVO) {
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("MoveRequest");
// 校验存在
validateInventorymoveRequestMainExists(updateReqVO.getId());
// 更新
InventorymoveRequestMainDO inventorymoveRequestMainDO = validatorToUpdate(updateReqVO);
if (RequestStatusEnum.HANDLING.getCode().equals(inventorymoveRequestMainDO.getStatus())) {
this.generateJob(inventorymoveRequestMainDO, inventorymoveRequestDetailMapper.selectList(inventorymoveRequestMainDO.getId()));
}
trendsApi.createTrends(requestsettingDO.getId(), "MoveRequest", "增加了库存移动申请", TrendsTypeEnum.CREATE);
trendsApi.createTrends(inventorymoveRequestMainDO.getId(), "InventoryMoveRequest", "增加了库存移动申请", TrendsTypeEnum.CREATE);
}
private InventorymoveRequestMainDO validatorToUpdate(InventorymoveRequestMainUpdateReqVO updateReqVO) {
@ -294,73 +289,6 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest
return inventorymoveRequestMainMapper.selectList(exportReqVO);
}
/**
* 主表导入验证
*
* @param mainDo
* @return
*/
private String validateInventorymoveRequestMainImport(InventorymoveRequestMainDO mainDo) {
StringBuilder message = new StringBuilder();
try {
ValidationUtils.validate(validator, mainDo);
} catch (Exception ex) {
message.append(ex.getMessage()).append(",");
}
return message.toString();
}
/**
* 校验来源/目标库位基础信息
*
* @param detailDo
* @return
*/
private void validatelocation(InventorymoveRequestMainDO mainDO, InventorymoveRequestDetailDO detailDo) {
LocationDO fromLocationDO = locationService.selectLocation(detailDo.getFromLocationCode());
if (fromLocationDO != null) {
detailDo.setFromLocationCode(fromLocationDO.getCode());
mainDO.setFromWarehouseCode(fromLocationDO.getWarehouseCode());
mainDO.setFromLocationTypes(fromLocationDO.getType());
mainDO.setFromAreaCodes(fromLocationDO.getAreaCode());
}
LocationDO toLocationDO = locationService.selectLocation(detailDo.getToLocationCode());
if (toLocationDO != null) {
detailDo.setToLocationCode(toLocationDO.getCode());
mainDO.setToWarehouseCode(toLocationDO.getWarehouseCode());
mainDO.setToLocationTypes(fromLocationDO.getType());
mainDO.setToAreaCodes(toLocationDO.getAreaCode());
}
}
/**
* 校验物品基础信息
*
* @param detailDo
* @return
*/
private ItembasicDO validteitembasic(InventorymoveRequestDetailDO detailDo) {
ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode());
detailDo.setItemDesc1(itembasicDO.getDesc1());
detailDo.setItemDesc2(itembasicDO.getDesc2());
detailDo.setItemName(itembasicDO.getName());
detailDo.setUom(itembasicDO.getUom());
detailDo.setProjectCode(itembasicDO.getProject());
return itembasicDO;
}
/**
* 校验库存余额是否存在
*
* @param detailDo
*/
private void validtebalance(InventorymoveRequestDetailDO detailDo) {
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add(detailDo.getFromInventoryStatus());
jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getFromPackingNumber()
, detailDo.getFromBatch(), detailDo.getFromLocationCode(), inventoryStatus);
}
/**
* 导入子表校验
* @param mainDO
@ -394,9 +322,7 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest
// mainDo.setOutInventoryStatuses(businesstypeDO.getOutInventoryStatuses());
// }
//隔离转合格申请
if ("HOLD".equals(detailDo.getFromInventoryStatus())) {
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add("HOLD");
if ("HOLD".equals(detailDo.getFromInventoryStatus()) && "OK".equals(detailDo.getToInventoryStatus())) {
String number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_OK_REQUEST.getCode());
detailDo.setNumber(number);
// 校验业务类型
@ -416,11 +342,8 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest
mainDO.setRequestTime(LocalDateTime.now());
}
}
//合格转隔离申请
if ("OK".equals(detailDo.getFromInventoryStatus())) {
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add("OK");
else if ("OK".equals(detailDo.getFromInventoryStatus()) && "HOLD".equals(detailDo.getToInventoryStatus())) {
String number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_HOLD_REQUEST.getCode());
mainDO.setNumber(number);
// 校验业务类型
@ -439,11 +362,8 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest
mainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
}
//隔离转报废申请
if ("HOLD".equals(detailDo.getFromInventoryStatus())) {
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add("HOLD");
else if ("HOLD".equals(detailDo.getFromInventoryStatus()) && "SCRAP".equals(detailDo.getToInventoryStatus())) {
String number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_SCRAP_REQUEST.getCode());
mainDO.setNumber(number);
// 校验业务类型
@ -462,11 +382,8 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest
mainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
}
//报废转隔离申请
if ("SCRAP".equals(detailDo.getFromInventoryStatus())) {
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add("SCRAP");
else if ("SCRAP".equals(detailDo.getFromInventoryStatus()) && "HOLD".equals(detailDo.getToInventoryStatus())) {
String number = serialNumberApi.generateCode(RuleCodeEnum.SCRAP_TO_HOLD_REQUEST.getCode());
mainDO.setNumber(number);
// 校验业务类型
@ -485,9 +402,28 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest
mainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
}
//合格转报废
if ("Ok".equals(detailDo.getFromInventoryStatus())) {
else if ("OK".equals(detailDo.getFromInventoryStatus()) && "SCRAP".equals(detailDo.getToInventoryStatus())) {
String number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_SCRAP_REQUEST.getCode());
mainDO.setNumber(number);
// 校验业务类型
try {
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToScrapRequest");
mainDO.setBusinessType(businesstypeDO.getCode());
validationBusinesstype(detailDo,businesstypeDO,messageDetail);
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("OkToScrapRequest");
if (requestsettingDO != null) {
mainDO.setAutoAgree(requestsettingDO.getAutoAgree());
mainDO.setAutoCommit(requestsettingDO.getAutoCommit());
mainDO.setAutoExecute(requestsettingDO.getAutoExecute());
mainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
}
//合格转报废
else if ("OK".equals(detailDo.getFromInventoryStatus()) && "SCRAP".equals(detailDo.getToInventoryStatus())) {
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add("SCRAP");
String number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_SCRAP_REQUEST.getCode());
@ -497,7 +433,7 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest
try {
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToScrapRequest");
mainDO.setBusinessType(businesstypeDO.getCode());
validationBusinesstype(detailDo,businesstypeDO,messageDetail);
validationBusinesstype(detailDo, businesstypeDO, messageDetail);
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
@ -508,7 +444,28 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest
mainDO.setAutoExecute(requestsettingDO.getAutoExecute());
mainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
}//库存转移申请
else {
String number = serialNumberApi.generateCode(RuleCodeEnum.INVENTORY_MOVE_REQUEST.getCode());
mainDO.setNumber(number);
// 校验业务类型
try {
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InventoryMoveRequest");
mainDO.setBusinessType(businesstypeDO.getCode());
validationBusinesstype(detailDo,businesstypeDO,messageDetail);
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("InventoryMoveRequest");
if (requestsettingDO != null) {
mainDO.setAutoAgree(requestsettingDO.getAutoAgree());
mainDO.setAutoCommit(requestsettingDO.getAutoCommit());
mainDO.setAutoExecute(requestsettingDO.getAutoExecute());
mainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
}
try {
validtebalance(detailDo);
} catch (Exception ex) {
@ -643,6 +600,10 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest
number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_SCRAP_RECORD.getCode());
recordsettingDO = recordsettingService.selectRecordsettingExist("OkToScrapRecord");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToScrapRecord");
}else {
number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_SCRAP_RECORD.getCode());
recordsettingDO = recordsettingService.selectRecordsettingExist("InventoryMoveRecord");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InventoryMoveRecord");
}
inventorymoveRecordMainCreateReqVO.setNumber(number);
inventorymoveRecordMainCreateReqVO.setBusinessType(businesstypeDO.getCode());
@ -699,6 +660,10 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest
number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_SCRAP_JOB.getCode());
jobsettingDO = jobsettingService.selectJobsettingExist("OkToScrapJob");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToScrapJob");
}else {
number = serialNumberApi.generateCode(RuleCodeEnum.INVENTORY_MOVE_JOB.getCode());
jobsettingDO = jobsettingService.selectJobsettingExist("InventoryMoveJob");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InventoryMoveJob");
}
inventorymoveJobMainDO.setNumber(number);
inventorymoveJobMainDO.setRequestTime(mainDO.getRequestTime());
@ -893,4 +858,73 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest
public List<InventorymoveRequestMainDO> getInventorymoveRequestMainList(CustomConditions conditions) {
return inventorymoveRequestMainMapper.selectSeniorList(conditions);
}
/**
* 主表导入验证
*
* @param mainDo
* @return
*/
private String validateInventorymoveRequestMainImport(InventorymoveRequestMainDO mainDo) {
StringBuilder message = new StringBuilder();
try {
ValidationUtils.validate(validator, mainDo);
} catch (Exception ex) {
message.append(ex.getMessage()).append(",");
}
return message.toString();
}
/**
* 校验来源/目标库位基础信息
*
* @param detailDo
* @return
*/
private void validatelocation(InventorymoveRequestMainDO mainDO, InventorymoveRequestDetailDO detailDo) {
LocationDO fromLocationDO = locationService.selectLocation(detailDo.getFromLocationCode());
if (fromLocationDO != null) {
detailDo.setFromLocationCode(fromLocationDO.getCode());
mainDO.setFromWarehouseCode(fromLocationDO.getWarehouseCode());
mainDO.setFromLocationTypes(fromLocationDO.getType());
mainDO.setFromAreaCodes(fromLocationDO.getAreaCode());
}
LocationDO toLocationDO = locationService.selectLocation(detailDo.getToLocationCode());
if (toLocationDO != null) {
detailDo.setToLocationCode(toLocationDO.getCode());
mainDO.setToWarehouseCode(toLocationDO.getWarehouseCode());
mainDO.setToLocationTypes(fromLocationDO.getType());
mainDO.setToAreaCodes(toLocationDO.getAreaCode());
}
}
/**
* 校验物品基础信息
*
* @param detailDo
* @return
*/
private ItembasicDO validteitembasic(InventorymoveRequestDetailDO detailDo) {
ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode());
detailDo.setItemDesc1(itembasicDO.getDesc1());
detailDo.setItemDesc2(itembasicDO.getDesc2());
detailDo.setItemName(itembasicDO.getName());
detailDo.setUom(itembasicDO.getUom());
detailDo.setProjectCode(itembasicDO.getProject());
return itembasicDO;
}
/**
* 校验库存余额是否存在
*
* @param detailDo
*/
private void validtebalance(InventorymoveRequestDetailDO detailDo) {
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add(detailDo.getFromInventoryStatus());
jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getFromPackingNumber()
, detailDo.getFromBatch(), detailDo.getFromLocationCode(), inventoryStatus);
}
}

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/util/JobUtils.java

@ -372,7 +372,7 @@ public class JobUtils {
if (ifOutLocationType) {
return true;
} else {
throw exception(LOCATION_EXCEPTION, "出库库位" + plocationCode + "的库位类型" + locationDO.getType() + "与业务类型与业务类型" +
throw exception(LOCATION_EXCEPTION, "出库库位" + plocationCode + "的库位类型" + locationDO.getType() + "与业务类型" +
businesstypeDO.getName() + "的出库库位类型" + businesstypeDO.getOutLocationTypes() + "不一致");
}
}

Loading…
Cancel
Save