Browse Source

成品发货申请

master
廉洪喜 2 years ago
parent
commit
d83305a5f2
  1. 7
      win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java
  2. 8
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/vo/DeliverRequestMainUpdateReqVO.java
  3. 19
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverRequest/DeliverRequestMainConvert.java
  4. 1
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRequest/IssueRequestMainConvert.java
  5. 7
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/customerreturnRequest/CustomerreturnRequestDetailDO.java
  6. 15
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/customerreturnRequest/CustomerreturnRequestMainDO.java
  7. 13
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/customersettleRequest/CustomersettleRequestMainDO.java
  8. 8
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/deliverRequest/DeliverRequestDetailDO.java
  9. 19
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/deliverRequest/DeliverRequestMainDO.java
  10. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productputawayRequest/ProductputawayRequestDetailDO.java
  11. 16
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productputawayRequest/ProductputawayRequestMainDO.java
  12. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productscrapRequest/ProductscrapRequestDetailDO.java
  13. 9
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productscrapRequest/ProductscrapRequestMainDO.java
  14. 284
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestMainServiceImpl.java

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

@ -12,7 +12,7 @@ public interface ErrorCodeConstants {
ErrorCode ITEMBASIC_NOT_EXISTS = new ErrorCode(1_000_020_000, "物品基本信息不存在");
ErrorCode ITEMBASIC_CODE_NOT_EXISTS = new ErrorCode(1_000_020_001, "物品基本信息不正确");
ErrorCode ITEMBASIC_CODE_EXISTS = new ErrorCode(1_000_020_002, "code已存在");
ErrorCode ITEMBASIC_STATUS_NOT_EXISTS = new ErrorCode(1_000_020_003, "状态不存在{}");
ErrorCode ITEMBASIC_STATUS_NOT_EXISTS = new ErrorCode(1_000_020_003, "状态不存在");
ErrorCode ITEMBASIC_UOM_NOT_EXISTS = new ErrorCode(1_000_020_004, "计量单位不存在");
ErrorCode ITEMBASIC_IS_STDPACK_NOT_EXISTS = new ErrorCode(1_000_020_005, "是否标包不存在");
ErrorCode ITEMBASIC_ENABLE_BUY_NOT_EXISTS = new ErrorCode(1_000_020_006, "可采购不存在");
@ -665,7 +665,7 @@ public interface ErrorCodeConstants {
ErrorCode DELIVER_REQUEST_NOT_EXISTS = new ErrorCode(1_000_119_000, "发货申请不存在");
ErrorCode DELIVER_REQUEST_DETAIL_NOT_EXISTS = new ErrorCode(1_000_119_001, "发货申请子不存在");
//发货任务ErrorCode
ErrorCode DELIVER_JOB_MAIN_NOT_EXISTS = new ErrorCode(1_000_120_000, "发货任务主不存在");
ErrorCode DELIVER_JOB_MAIN_NOT_EXISTS = new ErrorCode(1_000_120_000, "发货任务主不存在{}");
ErrorCode DELIVER_JOB_DETAIL_NOT_EXISTS = new ErrorCode(1_000_120_001, "发货任务子不存在");
ErrorCode DELIVER_JOB_MAIN_STATUS_ERROR = new ErrorCode(1_000_120_003, "发货任务状态错误");
//发货记录ErrorCode
@ -816,5 +816,8 @@ public interface ErrorCodeConstants {
ErrorCode QTY_EXCEPTION = new ErrorCode(1_000_403_000, "数量问题:【{}】");
ErrorCode ORDER_PURCHASE_EXCEPTION = new ErrorCode(1_000_404_000, "采购订单问题:【{}】");
ErrorCode UOM_ERROR = new ErrorCode(1_000_300_000, "计量单位单位应是【{}】");
ErrorCode QTY_ERROR = new ErrorCode(1_000_301_000, "发货数量【{}】大于订单号【{}】、订单行【{}】、物品代码【{}】的未发货数量【{}】");
}

8
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/vo/DeliverRequestMainUpdateReqVO.java

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

19
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverRequest/DeliverRequestMainConvert.java

@ -4,11 +4,16 @@ import java.util.*;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.deliverRequest.vo.DeliverRequestMainCreateReqVO;
import com.win.module.wms.controller.deliverRequest.vo.DeliverRequestMainExcelVO;
import com.win.module.wms.controller.deliverRequest.vo.DeliverRequestMainRespVO;
import com.win.module.wms.controller.deliverRequest.vo.DeliverRequestMainUpdateReqVO;
import com.win.module.wms.controller.deliverRequest.vo.*;
import com.win.module.wms.controller.issueRequest.vo.IssueRequestImportErrorVO;
import com.win.module.wms.controller.issueRequest.vo.IssueRequestMainBaseVO;
import com.win.module.wms.controller.issueRequest.vo.IssueRequestMainCreateReqVO;
import com.win.module.wms.dal.dataobject.deliverRequest.DeliverRequestDetailDO;
import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestDetailDO;
import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
import com.win.module.wms.dal.dataobject.deliverRequest.DeliverRequestMainDO;
@ -33,5 +38,11 @@ public interface DeliverRequestMainConvert {
PageResult<DeliverRequestMainRespVO> convertPage(PageResult<DeliverRequestMainDO> page);
List<DeliverRequestMainExcelVO> convertList02(List<DeliverRequestMainDO> list);
DeliverRequestMainDO convert(DeliverRequestMainBaseVO bean);
@Mappings({
@Mapping(source = "mainVo.number", target = "number"),
})
DeliverRequestImportErrorVO convert(DeliverRequestMainCreateReqVO mainVo, DeliverRequestDetailDO detailDo);
}

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

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

7
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/customerreturnRequest/CustomerreturnRequestDetailDO.java

@ -8,6 +8,8 @@ import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.win.framework.mybatis.core.dataobject.BaseDO;
import javax.validation.constraints.NotBlank;
/**
* 客户退货申请子 DO
*
@ -30,6 +32,7 @@ public class CustomerreturnRequestDetailDO extends BaseDO {
/**
* 销售订单号
*/
@NotBlank
private String soNumber;
/**
* 销售订单行
@ -38,6 +41,7 @@ public class CustomerreturnRequestDetailDO extends BaseDO {
/**
* 包装号
*/
@NotBlank
private String packingNumber;
/**
* 器具号
@ -46,12 +50,14 @@ public class CustomerreturnRequestDetailDO extends BaseDO {
/**
* 批次
*/
@NotBlank
private String batch;
/**
* 库存状态
*
* 枚举 {@link TODO inventory_status 对应的类}
*/
@NotBlank
private String inventoryStatus;
/**
* 从货主代码
@ -60,6 +66,7 @@ public class CustomerreturnRequestDetailDO extends BaseDO {
/**
* 从库位代码
*/
@NotBlank
private String fromLocationCode;
/**
* 到库位代码

15
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/customerreturnRequest/CustomerreturnRequestMainDO.java

@ -9,6 +9,8 @@ import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.win.framework.mybatis.core.dataobject.BaseDO;
import javax.validation.constraints.NotBlank;
/**
* 客户退货申请主 DO
*
@ -40,10 +42,12 @@ public class CustomerreturnRequestMainDO extends BaseDO {
/**
* 客户代码
*/
@NotBlank
private String customerCode;
/**
* 客户月台代码
*/
@NotBlank
private String customerDockCode;
/**
* 承运商
@ -96,6 +100,7 @@ public class CustomerreturnRequestMainDO extends BaseDO {
/**
* 部门
*/
@NotBlank
private String departmentCode;
/**
* 状态
@ -114,30 +119,36 @@ public class CustomerreturnRequestMainDO extends BaseDO {
/**
* 从仓库代码
*/
@NotBlank
private String fromWarehouseCode;
/**
* 从库位类型范围
*
* 枚举 {@link TODO location_type 对应的类}
*/
@NotBlank
private String fromLocationTypes;
/**
* 从库区代码范围
*/
@NotBlank
private String fromAreaCodes;
/**
* 到仓库代码
*/
@NotBlank
private String toWarehouseCode;
/**
* 到库位类型范围
*
* 枚举 {@link TODO location_type 对应的类}
*/
@NotBlank
private String toLocationTypes;
/**
* 到库区代码范围
*/
@NotBlank
private String toAreaCodes;
/**
* 到月台代码
@ -150,18 +161,22 @@ public class CustomerreturnRequestMainDO extends BaseDO {
/**
* 自动提交
*/
@NotBlank
private String autoCommit;
/**
* 自动通过
*/
@NotBlank
private String autoAgree;
/**
* 自动执行
*/
@NotBlank
private String autoExecute;
/**
* 直接生成记录
*/
@NotBlank
private String directCreateRecord;
}

13
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/customersettleRequest/CustomersettleRequestMainDO.java

@ -9,6 +9,8 @@ import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.win.framework.mybatis.core.dataobject.BaseDO;
import javax.validation.constraints.NotBlank;
/**
* 客户结算申请主 DO
*
@ -39,20 +41,24 @@ public class CustomersettleRequestMainDO extends BaseDO {
/**
* 客户代码
*/
@NotBlank
private String customerCode;
/**
* 从仓库代码
*/
@NotBlank
private String fromWarehouseCode;
/**
* 从库位类型范围
*
* 枚举 {@link TODO location_type 对应的类}
*/
@NotBlank
private String fromLocationTypes;
/**
* 从库区代码范围
*/
@NotBlank
private String fromAreaCodes;
/**
* details
@ -65,6 +71,7 @@ public class CustomersettleRequestMainDO extends BaseDO {
/**
* 业务类型
*/
@NotBlank
private String businessType;
/**
* 备注
@ -89,12 +96,14 @@ public class CustomersettleRequestMainDO extends BaseDO {
/**
* 部门
*/
@NotBlank
private String departmentCode;
/**
* 状态
*
* 枚举 {@link TODO request_status 对应的类}
*/
@NotBlank
private String status;
/**
* 并发乐观锁
@ -111,18 +120,22 @@ public class CustomersettleRequestMainDO extends BaseDO {
/**
* 自动提交
*/
@NotBlank
private String autoCommit;
/**
* 自动通过
*/
@NotBlank
private String autoAgree;
/**
* 自动执行
*/
@NotBlank
private String autoExecute;
/**
* 直接生成记录
*/
@NotBlank
private String directCreateRecord;
}

8
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/deliverRequest/DeliverRequestDetailDO.java

@ -8,6 +8,9 @@ import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.win.framework.mybatis.core.dataobject.BaseDO;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* 发货申请子 DO
*
@ -30,6 +33,7 @@ public class DeliverRequestDetailDO extends BaseDO {
/**
* 销售订单号
*/
@NotBlank
private String soNumber;
/**
* 销售订单行
@ -38,6 +42,7 @@ public class DeliverRequestDetailDO extends BaseDO {
/**
* 包装号
*/
@NotBlank
private String packingNumber;
/**
* 器具号
@ -46,12 +51,14 @@ public class DeliverRequestDetailDO extends BaseDO {
/**
* 批次
*/
@NotBlank
private String batch;
/**
* 库存状态
*
* 枚举 {@link TODO inventory_status 对应的类}
*/
@NotBlank
private String inventoryStatus;
/**
* 到货主代码
@ -60,6 +67,7 @@ public class DeliverRequestDetailDO extends BaseDO {
/**
* 到库位代码
*/
@NotBlank
private String toLocationCode;
/**
* 主表ID

19
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/deliverRequest/DeliverRequestMainDO.java

@ -1,14 +1,12 @@
package com.win.module.wms.dal.dataobject.deliverRequest;
import lombok.*;
import java.util.*;
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;
import javax.validation.constraints.NotBlank;
/**
* 发货申请主 DO
*
@ -39,10 +37,12 @@ public class DeliverRequestMainDO extends BaseDO {
/**
* 客户代码
*/
@NotBlank
private String customerCode;
/**
* 客户月台代码
*/
@NotBlank
private String customerDockCode;
/**
* 承运商
@ -63,20 +63,24 @@ public class DeliverRequestMainDO extends BaseDO {
/**
* 从仓库代码
*/
@NotBlank
private String fromWarehouseCode;
/**
* 到仓库代码
*/
@NotBlank
private String toWarehouseCode;
/**
* 从库位类型范围
*
* 枚举 {@link TODO location_type 对应的类}
*/
@NotBlank
private String fromLocationTypes;
/**
* 从库区代码范围
*/
@NotBlank
private String fromAreaCodes;
/**
* details
@ -113,12 +117,14 @@ public class DeliverRequestMainDO extends BaseDO {
/**
* 部门
*/
@NotBlank
private String departmentCode;
/**
* 状态
*
* 枚举 {@link TODO request_status 对应的类}
*/
@NotBlank
private String status;
/**
* 并发乐观锁
@ -133,6 +139,7 @@ public class DeliverRequestMainDO extends BaseDO {
*
* 枚举 {@link TODO location_type 对应的类}
*/
@NotBlank
private String toLocationTypes;
/**
* 到库区范围
@ -149,18 +156,22 @@ public class DeliverRequestMainDO extends BaseDO {
/**
* 自动提交
*/
@NotBlank
private String autoCommit;
/**
* 自动通过
*/
@NotBlank
private String autoAgree;
/**
* 自动执行
*/
@NotBlank
private String autoExecute;
/**
* 直接生成记录
*/
@NotBlank
private String directCreateRecord;
}

6
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productputawayRequest/ProductputawayRequestDetailDO.java

@ -8,6 +8,8 @@ import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.win.framework.mybatis.core.dataobject.BaseDO;
import javax.validation.constraints.NotBlank;
/**
* 制品上架申请子 DO
*
@ -30,6 +32,7 @@ public class ProductputawayRequestDetailDO extends BaseDO {
/**
* 包装号
*/
@NotBlank
private String packingNumber;
/**
* 器具号
@ -38,12 +41,14 @@ public class ProductputawayRequestDetailDO extends BaseDO {
/**
* 批次
*/
@NotBlank
private String batch;
/**
* 库存状态
*
* 枚举 {@link TODO inventory_status 对应的类}
*/
@NotBlank
private String inventoryStatus;
/**
* 订单号
@ -56,6 +61,7 @@ public class ProductputawayRequestDetailDO extends BaseDO {
/**
* 从库位代码
*/
@NotBlank
private String fromLocationCode;
/**
* 主表ID

16
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productputawayRequest/ProductputawayRequestMainDO.java

@ -1,14 +1,12 @@
package com.win.module.wms.dal.dataobject.productputawayRequest;
import lombok.*;
import java.util.*;
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;
import javax.validation.constraints.NotBlank;
/**
* 制品上架申请主 DO
*
@ -35,22 +33,26 @@ public class ProductputawayRequestMainDO extends BaseDO {
/**
* 从仓库代码
*/
@NotBlank
private String fromWarehouseCode;
/**
* 到仓库代码
*/
@NotBlank
private String toWarehouseCode;
/**
* 从库位类型范围
*
* 枚举 {@link TODO location_type 对应的类}
*/
@NotBlank
private String fromLocationTypes;
/**
* 到库位类型范围
*
* 枚举 {@link TODO location_type 对应的类}
*/
@NotBlank
private String toLocationTypes;
/**
* 从库区代码范围
@ -95,12 +97,14 @@ public class ProductputawayRequestMainDO extends BaseDO {
/**
* 部门
*/
@NotBlank
private String departmentCode;
/**
* 状态
*
* 枚举 {@link TODO request_status 对应的类}
*/
@NotBlank
private String status;
/**
* 并发乐观锁
@ -117,18 +121,22 @@ public class ProductputawayRequestMainDO extends BaseDO {
/**
* 自动提交
*/
@NotBlank
private String autoCommit;
/**
* 自动通过
*/
@NotBlank
private String autoAgree;
/**
* 自动执行
*/
@NotBlank
private String autoExecute;
/**
* 直接生成记录
*/
@NotBlank
private String directCreateRecord;
}

6
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productscrapRequest/ProductscrapRequestDetailDO.java

@ -8,6 +8,8 @@ import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.win.framework.mybatis.core.dataobject.BaseDO;
import javax.validation.constraints.NotBlank;
/**
* 制品报废申请子 DO
*
@ -34,6 +36,7 @@ public class ProductscrapRequestDetailDO extends BaseDO {
/**
* 包装号
*/
@NotBlank
private String packingNumber;
/**
* 器具号
@ -42,16 +45,19 @@ public class ProductscrapRequestDetailDO extends BaseDO {
/**
* 批次
*/
@NotBlank
private String batch;
/**
* 从库位代码
*/
@NotBlank
private String fromLocationCode;
/**
* 库存状态
*
* 枚举 {@link TODO inventory_status 对应的类}
*/
@NotBlank
private String inventoryStatus;
/**
* 原因

9
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productscrapRequest/ProductscrapRequestMainDO.java

@ -9,6 +9,8 @@ import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.win.framework.mybatis.core.dataobject.BaseDO;
import javax.validation.constraints.NotBlank;
/**
* 制品报废申请主 DO
*
@ -31,6 +33,7 @@ public class ProductscrapRequestMainDO extends BaseDO {
/**
* 从仓库代码
*/
@NotBlank
private String fromWarehouseCode;
/**
* details
@ -87,10 +90,12 @@ public class ProductscrapRequestMainDO extends BaseDO {
*
* 枚举 {@link TODO location_type 对应的类}
*/
@NotBlank
private String fromLocationTypes;
/**
* 从库区代码范围
*/
@NotBlank
private String fromAreaCodes;
/**
* 工作流流水号
@ -99,18 +104,22 @@ public class ProductscrapRequestMainDO extends BaseDO {
/**
* 自动提交
*/
@NotBlank
private String autoCommit;
/**
* 自动通过
*/
@NotBlank
private String autoAgree;
/**
* 自动执行
*/
@NotBlank
private String autoExecute;
/**
* 直接生成记录
*/
@NotBlank
private String directCreateRecord;
}

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

@ -2,27 +2,31 @@ package com.win.module.wms.service.deliverRequest;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.exceptions.UtilException;
import com.win.framework.common.exception.ErrorCode;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.util.validation.ValidationUtils;
import com.win.framework.dict.core.util.DictFrameworkUtils;
import com.win.module.infra.api.trends.TrendsApi;
import com.win.module.infra.enums.TrendsTypeEnum;
import com.win.module.system.api.dict.DictDataApi;
import com.win.module.system.api.dict.dto.DictDataRespDTO;
import com.win.module.system.api.serialnumber.SerialNumberApi;
import com.win.module.system.enums.serialNumber.RuleCodeEnum;
import com.win.module.wms.controller.deliverRequest.vo.*;
import com.win.module.wms.controller.issueRequest.vo.IssueRequestDetailCreateReqVO;
import com.win.module.wms.controller.issueRequest.vo.IssueRequestImportErrorVO;
import com.win.module.wms.controller.issueRequest.vo.*;
import com.win.module.wms.convert.deliverRequest.DeliverRequestDetailConvert;
import com.win.module.wms.convert.issueRequest.IssueRequestDetailConvert;
import com.win.module.wms.convert.issueRequest.IssueRequestMainConvert;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.deliverRequest.DeliverRequestDetailDO;
import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestDetailDO;
import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO;
import com.win.module.wms.dal.dataobject.sale.SaleDetailDO;
import com.win.module.wms.dal.mysql.deliverRequest.DeliverRequestDetailMapper;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.enums.request.RequestStatusEnum;
import com.win.module.wms.service.customer.*;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.requestsetting.RequestsettingService;
@ -68,6 +72,9 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService
@Resource
private Validator validator;
@Resource
private TrendsApi trendsApi;
@Resource
private DictDataApi dictDataApi;
@Resource
@ -79,23 +86,100 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService
@Resource
private DeliverJobMainService deliverJobMainService;
@Override
public Long createDeliverRequestMain(DeliverRequestMainCreateReqVO createReqVO) {
// 插入
DeliverRequestMainDO deliverRequestMain = DeliverRequestMainConvert.INSTANCE.convert(createReqVO);
deliverRequestMainMapper.insert(deliverRequestMain);
// 返回
RequestsettingDO requestsettingDO = new RequestsettingDO();
DeliverRequestMainDO deliverRequestMain = validatorToCreate(createReqVO,requestsettingDO);
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(deliverRequestMain.getStatus())) {
}
trendsApi.createTrends(requestsettingDO.getId(), "IssueRequest", "增加了发料申请", TrendsTypeEnum.CREATE);
return deliverRequestMain.getId();
}
private DeliverRequestMainDO validatorToCreate(DeliverRequestMainCreateReqVO createReqVO, RequestsettingDO requestsettingDO) {
BusinesstypeDO businesstypeDO = new BusinesstypeDO();
DeliverRequestMainDO deliverRequestMainDO = validateMainMethod(createReqVO,businesstypeDO,requestsettingDO);
List<DeliverRequestDetailCreateReqVO> subList = createReqVO.getSubList();
List<DeliverRequestDetailDO> subDOList = DeliverRequestDetailConvert.INSTANCE.convertList03(subList);
for (DeliverRequestDetailDO deliverRequestDetailDO : subDOList) {
validateDetailMethod(deliverRequestDetailDO);
}
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode());
deliverRequestMainDO.setNumber(number);
deliverRequestMainMapper.insert(deliverRequestMainDO);
for (DeliverRequestDetailDO deliverRequestDetailDO : subDOList) {
deliverRequestDetailDO.setMasterId(deliverRequestMainDO.getId());
deliverRequestDetailDO.setNumber(deliverRequestMainDO.getNumber());
}
deliverRequestDetailMapper.insertBatch(subDOList);
return deliverRequestMainDO;
}
private DeliverRequestMainDO validateMainMethod(DeliverRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO){
DeliverRequestMainDO deliverRequestMainDO = DeliverRequestMainConvert.INSTANCE.convert(baseVO);
deliverRequestMainDO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
deliverRequestMainDO.setRequestTime(LocalDateTime.now());
requestsettingDO = requestsettingService.selectRequestsettingExist("DeliverRequest");
deliverRequestMainDO.setAutoAgree(requestsettingDO.getAutoAgree());
deliverRequestMainDO.setAutoCommit(requestsettingDO.getAutoCommit());
deliverRequestMainDO.setAutoExecute(requestsettingDO.getAutoExecute());
deliverRequestMainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverRequest");
deliverRequestMainDO.setBusinessType(businesstypeDO.getCode());
deliverRequestMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes());
deliverRequestMainDO.setToLocationTypes(businesstypeDO.getInLocationTypes());
deliverRequestMainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes());
deliverRequestMainDO.setToAreaCodes(businesstypeDO.getInAreaCodes());
return deliverRequestMainDO;
}
private DeliverRequestDetailDO validateDetailMethod(DeliverRequestDetailDO deliverRequestDetailDO) {
ItembasicDO itembasicDO = validatoritemcode(deliverRequestDetailDO.getItemCode());
deliverRequestDetailDO.setItemDesc1(itembasicDO.getDesc1());
deliverRequestDetailDO.setItemDesc2(itembasicDO.getDesc2());
deliverRequestDetailDO.setItemName(itembasicDO.getName());
deliverRequestDetailDO.setProjectCode(itembasicDO.getProject());
Isuom(itembasicDO.getUom(),deliverRequestDetailDO.getUom());
SaleDetailDO saleDetailDO =validatorSale(deliverRequestDetailDO.getSoNumber(),deliverRequestDetailDO.getSoLine(),deliverRequestDetailDO.getItemCode());
if(saleDetailDO!=null) {
Isqty(saleDetailDO.getShippedQty(), deliverRequestDetailDO.getQty(), saleDetailDO.getOrderQty(), deliverRequestDetailDO.getSoNumber(), deliverRequestDetailDO.getSoLine(), deliverRequestDetailDO.getItemCode());
}
return deliverRequestDetailDO;
}
@Override
public void updateDeliverRequestMain(DeliverRequestMainUpdateReqVO updateReqVO) {
RequestsettingDO requestsettingDO = new RequestsettingDO();
// 校验存在
validateDeliverRequestMainExists(updateReqVO.getId());
// 更新
DeliverRequestMainDO deliverRequestMainDO = validatorToUpdate(updateReqVO, requestsettingDO);
DeliverRequestMainDO updateObj = DeliverRequestMainConvert.INSTANCE.convert(updateReqVO);
deliverRequestMainMapper.updateById(updateObj);
}
private DeliverRequestMainDO validatorToUpdate(DeliverRequestMainUpdateReqVO updateReqVO, RequestsettingDO requestsettingDO) {
BusinesstypeDO businesstypeDO = new BusinesstypeDO();
DeliverRequestMainDO deliverRequestMainDO = validateMainMethod(updateReqVO,businesstypeDO,requestsettingDO);
//子表校验
List<DeliverRequestDetailCreateReqVO> subList = updateReqVO.getSubList();
List<DeliverRequestDetailDO> subDOList = DeliverRequestDetailConvert.INSTANCE.convertList03(subList);
for (DeliverRequestDetailDO issueRequestDetailDO : subDOList) {
validateDetailMethod(issueRequestDetailDO);
}
deliverRequestMainMapper.updateById(deliverRequestMainDO);
deliverRequestDetailMapper.updateBatch(subDOList);
return deliverRequestMainDO;
}
@Override
public void deleteDeliverRequestMain(Long id) {
@ -138,10 +222,12 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService
public String Isuom(String uom1, String uom2) {
DictDataRespDTO dictDataRespDTO = dictDataApi.selectDictValue(uom1);
String value = dictDataRespDTO.getLabel();
if(uom2.equals(value)){
DictDataRespDTO dictDataRespDTO1 = dictDataApi.selectDictValue(uom2);
String value2 = dictDataRespDTO1.getLabel();
if(value2.equals(value)){
return "ture";
}else {
throw new UtilException("计量单位"+uom2+"错误,应该是"+value);
throw exception(UOM_ERROR, value2);
}
}
public String Isqty(BigDecimal shippedqty, BigDecimal detailqty, BigDecimal orderqty,String sonumber,String soline,String itemcode) {
@ -149,113 +235,141 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService
if( resultqty.compareTo(detailqty)>0 )
return "TURE";
else{
throw new UtilException("发货数量"+detailqty+"大于订单号"+sonumber+"、订单行"+soline+"、物品代码"+itemcode+"的未发货数量"+ resultqty );
throw exception(QTY_ERROR, detailqty,sonumber,soline,itemcode,resultqty);
}
}
private String validateDeliverRequestMainImport(DeliverRequestMainDO mainDo, BusinesstypeDO businesstypeDO) {
StringBuilder message = new StringBuilder();
@Override
@Transactional
public List<DeliverRequestImportErrorVO> importDeliverRequestList(List<DeliverRequestMainCreateReqVO> datas, Integer mode, boolean updatePart){
if (CollUtil.isEmpty(datas)) {
throw exception(DELIVER_REQUEST_NOT_EXISTS);
}
List<DeliverRequestImportErrorVO> errorList = new ArrayList<>();
datas.forEach(createReqVO -> {
String messageMain = "";
BusinesstypeDO businesstypeDO = null;
try{
customerService.selectCustomerExist(createReqVO.getCustomerCode());
}catch (Exception ex) {
messageMain += ex.getMessage() + ",";
}
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
createReqVO.setRequestTime(LocalDateTime.now());
try {
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
mainDo.setRequestTime(LocalDateTime.now());
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("DeliverRequest");
if (requestsettingDO != null) {
createReqVO.setAutoAgree(requestsettingDO.getAutoAgree());
createReqVO.setAutoCommit(requestsettingDO.getAutoCommit());
createReqVO.setAutoExecute(requestsettingDO.getAutoExecute());
createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
if (requestsettingDO == null) {
message.append("未查找到发料申请的相关申请设置");
} else {
mainDo.setAutoAgree(requestsettingDO.getAutoAgree());
mainDo.setAutoCommit(requestsettingDO.getAutoCommit());
mainDo.setAutoExecute(requestsettingDO.getAutoExecute());
mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
} catch (Exception ex) {
messageMain += ex.getMessage() + ",";
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverRequest");
if(businesstypeDO == null){
message.append("根据单据设置未查找到发料申请的相关业务类型");
}else {
mainDo.setBusinessType(businesstypeDO.getCode());
mainDo.setFromLocationTypes(businesstypeDO.getOutLocationTypes());
mainDo.setToLocationTypes(businesstypeDO.getInLocationTypes());
mainDo.setFromAreaCodes(businesstypeDO.getOutAreaCodes());
mainDo.setToAreaCodes(businesstypeDO.getInAreaCodes());
}
try {
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverRequest");
createReqVO.setBusinessType(businesstypeDO.getCode());
createReqVO.setFromLocationTypes(businesstypeDO.getOutLocationTypes());
createReqVO.setToLocationTypes(businesstypeDO.getInLocationTypes());
createReqVO.setFromAreaCodes(businesstypeDO.getOutAreaCodes());
createReqVO.setToAreaCodes(businesstypeDO.getInAreaCodes());
ValidationUtils.validate(validator, mainDo);
} catch (Exception ex) {
messageMain += ex.getMessage() + ",";
message.append(ex.getMessage()).append(",");
}
try {
ValidationUtils.validate(validator, createReqVO);
return message.toString();
}
private void validatorcustomercode(String code){
customerService.selectCustomerExist(code);
}
private ItembasicDO validatoritemcode(String code){
ItembasicDO itembasicDO = itembasicService.selectItembasic(code);
return itembasicDO;
}
private SaleDetailDO validatorSale(String SoNumber,String SoLine,String ItemCode ){
SaleDetailDO saleDetailDO =deliverJobMainService.saleDetailExist(SoNumber,SoLine,ItemCode );
return saleDetailDO;
}
private String validateIssueRequestDetailImport(DeliverRequestDetailDO detailDo, DeliverRequestMainDO mainDo, BusinesstypeDO businesstypeDO) {
StringBuilder message = new StringBuilder();
try{
validatorcustomercode(mainDo.getCustomerCode());
} catch (Exception ex) {
messageMain += ex.getMessage() + ",";
message.append(ex.getMessage()).append(",");
}
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RETURN_REQUEST.getCode());
createReqVO.setNumber(number);
List<DeliverRequestDetailCreateReqVO> subList = createReqVO.getSubList();
List<DeliverRequestDetailDO> subDOList = DeliverRequestDetailConvert.INSTANCE.convertList03(subList);
for (DeliverRequestDetailDO detailDO : subDOList) {
String messageDetail = "";
try {
ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDO.getItemCode());
detailDO.setItemDesc1(itembasicDO.getDesc1());
detailDO.setItemDesc2(itembasicDO.getDesc2());
detailDO.setItemName(itembasicDO.getName());
detailDO.setProjectCode(itembasicDO.getProject());
ItembasicDO itembasicDO = validatoritemcode(detailDo.getItemCode());
detailDo.setItemDesc1(itembasicDO.getDesc1());
detailDo.setItemDesc2(itembasicDO.getDesc2());
detailDo.setItemName(itembasicDO.getName());
detailDo.setProjectCode(itembasicDO.getProject());
try{
Isuom(itembasicDO.getUom(),detailDO.getUom());
Isuom(itembasicDO.getUom(),detailDo.getUom());
}catch (Exception ex) {
messageDetail += ex.getMessage() + ",";
message.append(ex.getMessage()).append(",");
}
}catch (Exception ex) {
messageDetail += ex.getMessage() + ",";
message.append(ex.getMessage()).append(",");
}
try{
SaleDetailDO saleDetailDO =deliverJobMainService.saleDetailExist(detailDO.getSoNumber(),detailDO.getSoLine(),detailDO.getItemCode());
try{
if(saleDetailDO!=null){
Isqty(saleDetailDO.getShippedQty(),detailDO.getQty(),saleDetailDO.getOrderQty(),detailDO.getSoNumber(),detailDO.getSoLine(),detailDO.getItemCode());
SaleDetailDO saleDetailDO =validatorSale(detailDo.getSoNumber(),detailDo.getSoLine(),detailDo.getItemCode());
if(saleDetailDO!=null) {
try {
Isqty(saleDetailDO.getShippedQty(), detailDo.getQty(), saleDetailDO.getOrderQty(), detailDo.getSoNumber(), detailDo.getSoLine(), detailDo.getItemCode());
} catch (Exception ex) {
message.append(ex.getMessage()).append(",");
}
}catch (Exception ex) {
messageDetail += ex.getMessage() + ",";
}
}catch (Exception ex) {
messageDetail += ex.getMessage() + ",";
message.append(ex.getMessage()).append(",");
}
try {
ValidationUtils.validate(validator, detailDo);
} catch (Exception ex) {
message.append(ex.getMessage()).append(",");
}
return message.toString();
}
@Override
@Transactional
public List<DeliverRequestImportErrorVO> importDeliverRequestList(List<DeliverRequestMainCreateReqVO> datas, Integer mode, boolean updatePart){
if (CollUtil.isEmpty(datas)) {
throw exception(DELIVER_REQUEST_NOT_EXISTS);
}
DeliverRequestDetailCreateReqVO purchaseturnRequestDetailCreateReqVO = DeliverRequestDetailConvert.INSTANCE.convert1(detailDO);
DeliverRequestImportErrorVO importVO = DeliverRequestDetailConvert.INSTANCE.convert(createReqVO, purchaseturnRequestDetailCreateReqVO);
if (!messageMain.equals("") || !messageDetail.equals("")) {
importVO.setImportStatus("失败");
List<DeliverRequestImportErrorVO> errorList = new ArrayList<>();
datas.forEach(createReqVO -> {
BusinesstypeDO businesstypeDO = new BusinesstypeDO();
DeliverRequestMainDO mainDo = DeliverRequestMainConvert.INSTANCE.convert(createReqVO);
String messageMain = validateDeliverRequestMainImport(mainDo, businesstypeDO);
List<DeliverRequestDetailCreateReqVO> subList = createReqVO.getSubList();
List<DeliverRequestDetailDO> subDOList = DeliverRequestDetailConvert.INSTANCE.convertList03(subList);
// 是否有错误数据
boolean flag = true;
for (DeliverRequestDetailDO detailDO : subDOList) {
String messageDetail = validateIssueRequestDetailImport(detailDO, mainDo, businesstypeDO);
if (!messageMain.isEmpty() || messageDetail.isEmpty()) {
DeliverRequestImportErrorVO importErrorVO = DeliverRequestMainConvert.INSTANCE.convert(createReqVO, detailDO);
importErrorVO.setImportStatus("失败");
messageMain = messageMain + messageDetail;
importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1));
errorList.add(importVO);
} else {
detailDO.setNumber(createReqVO.getNumber());
detailDO.setMasterId(createReqVO.getId());
importErrorVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1));
errorList.add(importErrorVO);
flag = false;
}
}
DeliverRequestMainDO createobj = DeliverRequestMainConvert.INSTANCE.convert(createReqVO);
if (errorList.isEmpty()) {
DeliverRequestMainDO existDeliverRequestMainDO = deliverRequestMainMapper.selectWorkShopCodeAndUseOnTheWayLocation(createReqVO.getCustomerCode());
if (existDeliverRequestMainDO == null && mode != 3) {
deliverRequestMainMapper.insert(createobj);
deliverRequestDetailMapper.insertBatch(subDOList);
} else if (existDeliverRequestMainDO != null && mode != 2) {
deliverRequestMainMapper.updateById(createobj);
deliverRequestDetailMapper.updateBatch(subDOList);
//写入数据
if (flag) {
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_REQUEST.getCode());
mainDo.setNumber(number);
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
deliverRequestMainMapper.insert(mainDo);
for (DeliverRequestDetailDO detailDO : subDOList) {
detailDO.setMasterId(mainDo.getId());
detailDO.setNumber(number);
}
deliverRequestDetailMapper.insertBatch(subDOList);
}
});
if (!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return errorList;
}
}

Loading…
Cancel
Save