Browse Source

完善采购收货接口

master
刘忱 2 years ago
parent
commit
6ee8b8d398
  1. 1
      win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java
  2. 11
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptJob/vo/PurchasereceiptJobMainCreateReqVO.java
  3. 39
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/PurchasereceiptRequestMainController.java
  4. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/vo/PurchasereceiptRequestDetailBaseVO.java
  5. 20
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/vo/PurchasereceiptRequestDetailExcelVO.java
  6. 11
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/vo/PurchasereceiptRequestDetailExportReqVO.java
  7. 14
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/vo/PurchasereceiptRequestDetailPageReqVO.java
  8. 130
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/vo/PurchasereceiptRequestMainExcelVO.java
  9. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/vo/PurchasereceiptRequestMainImportVO.java
  10. 15
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereceiptJob/PurchasereceiptJobDetailConvert.java
  11. 15
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereceiptJob/PurchasereceiptJobMainConvert.java
  12. 13
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereceiptRequest/PurchasereceiptRequestMainConvert.java
  13. 19
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/purchasereceiptRequest/PurchasereceiptRequestDetailDO.java
  14. 48
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasereceiptRequest/PurchasereceiptRequestDetailMapper.java
  15. 11
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestDetailService.java
  16. 93
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestDetailServiceImpl.java
  17. 251
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestMainServiceImpl.java

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

@ -26,6 +26,7 @@ public interface ErrorCodeConstants {
ErrorCode ITEMBASIC_AVAIABLE_NOT_EXISTS = new ErrorCode(1_000_020_014, "是否可用不存在");
ErrorCode ITEMBASIC_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_000_020_015, "导入物品基础信息不能为空");
ErrorCode ITEMBASIC_EXCEPTION = new ErrorCode(1_000_020_016, "物品基础信息错误:【{}】");
ErrorCode ITEMBASIC_UOM_EXCEPTION = new ErrorCode(1_000_020_017, "计量单位【{}】错误,应该是【{}】");
//物品包装信息ErrorCode
ErrorCode ITEMPACKAGING_NOT_EXISTS = new ErrorCode(1_000_021_000, "物品包装信息 不存在");
ErrorCode ITEMPACKAGING_ITEM_CODE_NOT_EXISTS = new ErrorCode(1_000_021_001, "code不存在");

11
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptJob/vo/PurchasereceiptJobMainCreateReqVO.java

@ -1,9 +1,12 @@
package com.win.module.wms.controller.purchasereceiptJob.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import javax.validation.constraints.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import javax.validation.Valid;
import java.util.List;
@Schema(description = "管理后台 - 采购收货任务主创建 Request VO")
@Data
@ -11,4 +14,6 @@ import javax.validation.constraints.*;
@ToString(callSuper = true)
public class PurchasereceiptJobMainCreateReqVO extends PurchasereceiptJobMainBaseVO {
@Schema(description = "子表数据")
private List<@Valid PurchasereceiptJobDetailCreateReqVO> subList;
}

39
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/PurchasereceiptRequestMainController.java

@ -3,6 +3,7 @@ package com.win.module.wms.controller.purchasereceiptRequest;
import com.win.framework.common.pojo.CommonResult;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.dict.core.util.DictFrameworkUtils;
import com.win.framework.excel.core.util.ConvertUtil;
import com.win.framework.excel.core.util.ExcelUtils;
import com.win.framework.operatelog.core.annotations.OperateLog;
@ -10,7 +11,10 @@ import com.win.module.system.api.user.AdminUserApi;
import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.wms.controller.purchasereceiptRequest.vo.*;
import com.win.module.wms.convert.purchasereceiptRequest.PurchasereceiptRequestMainConvert;
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO;
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestMainDO;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.purchasereceiptRequest.PurchasereceiptRequestDetailService;
import com.win.module.wms.service.purchasereceiptRequest.PurchasereceiptRequestMainService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@ -40,6 +44,8 @@ public class PurchasereceiptRequestMainController {
@Resource
private PurchasereceiptRequestMainService purchasereceiptRequestMainService;
@Resource
private PurchasereceiptRequestDetailService purchasereceiptRequestDetailService;
@Resource
private AdminUserApi userApi;
@ -115,14 +121,33 @@ public class PurchasereceiptRequestMainController {
public void exportPurchasereceiptRequestMainExcel(@Valid PurchasereceiptRequestMainExportReqVO exportReqVO,
HttpServletResponse response) throws IOException {
List<PurchasereceiptRequestMainDO> list = purchasereceiptRequestMainService.getPurchasereceiptRequestMainList(exportReqVO);
// 导出 Excel
List<PurchasereceiptRequestMainExcelVO> datas = PurchasereceiptRequestMainConvert.INSTANCE.convertList02(list);
for(PurchasereceiptRequestMainExcelVO vo : datas) {
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator()));
//后端创建个字段作为前端展示的虚拟字段
vo.setCreator(user.getNickname());
//组装vo
Map<Integer, String[]> mapDropDown = new HashMap<>();
String[] transferMode = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRANSFER_MODE);
mapDropDown.put(4, transferMode);
String[] locationType = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.LOCATION_TYPE);
mapDropDown.put(7, locationType);
mapDropDown.put(8, locationType);
String[] requestStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.REQUEST_STATUS);
mapDropDown.put(18, requestStatus);
String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS);
mapDropDown.put(31, inventoryStatus);
String[] packUnit = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.PACK_UNIT);
mapDropDown.put(36, packUnit);
String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM);
mapDropDown.put(38, uom);
mapDropDown.put(47, uom);
List<PurchasereceiptRequestMainExcelVO> resultList = new ArrayList<>();
// 导出
for(PurchasereceiptRequestMainDO mainDO : list) {
List<PurchasereceiptRequestDetailDO> subList = purchasereceiptRequestDetailService.selectList(mainDO.getId());
for(PurchasereceiptRequestDetailDO detailDO : subList) {
PurchasereceiptRequestMainExcelVO vo = PurchasereceiptRequestMainConvert.INSTANCE.convert(mainDO, detailDO);
resultList.add(vo);
}
}
ExcelUtils.write(response, "采购收货申请主.xls", "数据", PurchasereceiptRequestMainExcelVO.class, datas);
// 导出 Excel
ExcelUtils.write(response, "采购收货申请主.xlsx", "数据", PurchasereceiptRequestMainExcelVO.class, resultList, mapDropDown);
}
@GetMapping("/get-import-template")

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/vo/PurchasereceiptRequestDetailBaseVO.java

@ -53,6 +53,9 @@ public class PurchasereceiptRequestDetailBaseVO {
@Schema(description = "从库位代码", requiredMode = Schema.RequiredMode.REQUIRED)
private String fromLocationCode;
@Schema(description = "默认库位代码", requiredMode = Schema.RequiredMode.REQUIRED)
private String defaultToLocationCode;
@Schema(description = "订单号", requiredMode = Schema.RequiredMode.REQUIRED)
@NotBlank(message = "订单号不能为空")
private String poNumber;

20
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/vo/PurchasereceiptRequestDetailExcelVO.java

@ -1,21 +1,12 @@
package com.win.module.wms.controller.purchasereceiptRequest.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.ExcelProperty;
import com.win.framework.excel.core.annotations.DictFormat;
import com.win.framework.excel.core.convert.DictConvert;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
@ -54,6 +45,9 @@ public class PurchasereceiptRequestDetailExcelVO {
@ExcelProperty("从库位代码")
private String fromLocationCode;
@ExcelProperty("默认库位代码")
private String defaultToLocationCode;
@ExcelProperty("订单号")
private String poNumber;

11
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/vo/PurchasereceiptRequestDetailExportReqVO.java

@ -1,13 +1,11 @@
package com.win.module.wms.controller.purchasereceiptRequest.vo;
import lombok.*;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.win.framework.common.pojo.PageParam;
import java.time.LocalDateTime;
import org.springframework.format.annotation.DateTimeFormat;
import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@ -45,6 +43,9 @@ public class PurchasereceiptRequestDetailExportReqVO {
@Schema(description = "从库位代码")
private String fromLocationCode;
@Schema(description = "默认库位代码")
private String defaultToLocationCode;
@Schema(description = "订单号")
private String poNumber;

14
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/vo/PurchasereceiptRequestDetailPageReqVO.java

@ -1,12 +1,13 @@
package com.win.module.wms.controller.purchasereceiptRequest.vo;
import lombok.*;
import java.math.BigDecimal;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.win.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@ -17,6 +18,9 @@ import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY
@ToString(callSuper = true)
public class PurchasereceiptRequestDetailPageReqVO extends PageParam {
@Schema(description = "主表ID")
private Long masterId;
@Schema(description = "包装号")
private String packingNumber;

130
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/vo/PurchasereceiptRequestMainExcelVO.java

@ -1,16 +1,13 @@
package com.win.module.wms.controller.purchasereceiptRequest.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.ExcelProperty;
import com.win.framework.excel.core.annotations.DictFormat;
import com.win.framework.excel.core.convert.DictConvert;
import com.win.module.wms.enums.DictTypeConstants;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
@ -34,7 +31,7 @@ public class PurchasereceiptRequestMainExcelVO {
private String carrierCode;
@ExcelProperty(value = "运输方式", converter = DictConvert.class)
@DictFormat("transfer_mode") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
@DictFormat(DictTypeConstants.TRANSFER_MODE) // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String transferMode;
@ExcelProperty("从仓库代码")
@ -44,11 +41,11 @@ public class PurchasereceiptRequestMainExcelVO {
private String toWarehouseCode;
@ExcelProperty(value = "从库位类型范围", converter = DictConvert.class)
@DictFormat("location_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
@DictFormat(DictTypeConstants.LOCATION_TYPE)
private String fromLocationTypes;
@ExcelProperty(value = "到库位类型范围", converter = DictConvert.class)
@DictFormat("location_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
@DictFormat(DictTypeConstants.LOCATION_TYPE)
private String toLocationTypes;
@ExcelProperty("从库区代码范围")
@ -69,12 +66,6 @@ public class PurchasereceiptRequestMainExcelVO {
@ExcelProperty("备注")
private String remark;
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@ExcelProperty("创建者用户名")
private String creator;
@ExcelProperty("申请时间")
private LocalDateTime requestTime;
@ -84,14 +75,8 @@ public class PurchasereceiptRequestMainExcelVO {
@ExcelProperty("部门")
private String departmentCode;
@ExcelProperty("最后更新时间")
private LocalDateTime updateTime;
@ExcelProperty("最后更新者用户名")
private String updater;
@ExcelProperty(value = "状态", converter = DictConvert.class)
@DictFormat("request_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
@DictFormat(DictTypeConstants.REQUEST_STATUS)
private String status;
@ExcelProperty("自动提交")
@ -106,8 +91,101 @@ public class PurchasereceiptRequestMainExcelVO {
@ExcelProperty("直接生成记录")
private String directCreateRecord;
@ExcelProperty(value = "车牌号", converter = DictConvert.class)
@DictFormat("vehicle_plate_number") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
@ExcelProperty(value = "车牌号")
private String vehiclePlateNumber;
@ExcelProperty("包装号")
private String packingNumber;
@ExcelProperty("器具号")
private String containerNumber;
@ExcelProperty("批次")
private String batch;
@ExcelProperty("替代批次")
private String altBatch;
@ExcelProperty("到货日期")
private LocalDateTime arriveDate;
@ExcelProperty("生产日期")
private LocalDateTime produceDate;
@ExcelProperty("过期日期")
private LocalDateTime expireDate;
@ExcelProperty(value = "库存状态", converter = DictConvert.class)
@DictFormat(DictTypeConstants.INVENTORY_STATUS)
private String inventoryStatus;
@ExcelProperty("从库位代码")
private String fromLocationCode;
@ExcelProperty("订单号")
private String poNumber;
@ExcelProperty("订单行")
private String poLine;
@ExcelProperty("标包数量")
private BigDecimal stdPackQty;
@ExcelProperty(value = "标包单位", converter = DictConvert.class)
@DictFormat(DictTypeConstants.PACK_UNIT)
private String stdPackUnit;
@ExcelProperty("供应商计量数量")
private BigDecimal supplierPackQty;
@ExcelProperty(value = "供应商计量单位", converter = DictConvert.class)
@DictFormat(DictTypeConstants.UOM)
private String supplierPackUnit;
@ExcelProperty("转换率")
private BigDecimal convertRate;
@ExcelProperty("物品代码")
private String itemCode;
@ExcelProperty("备注2")
private String remarkDetail;
@ExcelProperty("物品名称")
private String itemName;
@ExcelProperty("物品描述1")
private String itemDesc1;
@ExcelProperty("物品描述2")
private String itemDesc2;
@ExcelProperty("项目代码")
private String projectCode;
@ExcelProperty("数量")
private BigDecimal qty;
@ExcelProperty(value = "计量单位", converter = DictConvert.class)
@DictFormat(DictTypeConstants.UOM)
private String uom;
@ExcelProperty("从货主代码")
private String fromOwnerCode;
@ExcelProperty("到货主代码")
private String toOwnerCode;
@ExcelProperty("最后更新时间")
private LocalDateTime updateTime;
@ExcelProperty("最后更新者用户名")
private String updater;
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@ExcelProperty("创建者用户名")
private String creator;
}

6
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/vo/PurchasereceiptRequestMainImportVO.java

@ -1,6 +1,7 @@
package com.win.module.wms.controller.purchasereceiptRequest.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@ -30,6 +31,11 @@ public class PurchasereceiptRequestMainImportVO {
@ExcelProperty("订单号")
private String poNumber;
@NotBlank(message="订单号不能为空")
@ExcelProperty("订单号")
@Schema(description = "默认库位代码")
private String defaultToLocationCode;
@NotBlank(message="订单行不能为空")
@ExcelProperty("订单行")
private String poLine;

15
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereceiptJob/PurchasereceiptJobDetailConvert.java

@ -1,13 +1,16 @@
package com.win.module.wms.convert.purchasereceiptJob;
import java.util.*;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.purchasereceiptJob.vo.PurchasereceiptJobDetailCreateReqVO;
import com.win.module.wms.controller.purchasereceiptJob.vo.PurchasereceiptJobDetailExcelVO;
import com.win.module.wms.controller.purchasereceiptJob.vo.PurchasereceiptJobDetailRespVO;
import com.win.module.wms.controller.purchasereceiptJob.vo.PurchasereceiptJobDetailUpdateReqVO;
import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobDetailDO;
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import com.win.module.wms.controller.purchasereceiptJob.vo.*;
import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobDetailDO;
import java.util.List;
/**
* 采购收货任务子 Convert
@ -31,4 +34,6 @@ public interface PurchasereceiptJobDetailConvert {
List<PurchasereceiptJobDetailExcelVO> convertList02(List<PurchasereceiptJobDetailDO> list);
PurchasereceiptJobDetailCreateReqVO convert(PurchasereceiptRequestDetailDO bean);
}

15
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereceiptJob/PurchasereceiptJobMainConvert.java

@ -1,13 +1,16 @@
package com.win.module.wms.convert.purchasereceiptJob;
import java.util.*;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.purchasereceiptJob.vo.PurchasereceiptJobMainCreateReqVO;
import com.win.module.wms.controller.purchasereceiptJob.vo.PurchasereceiptJobMainExcelVO;
import com.win.module.wms.controller.purchasereceiptJob.vo.PurchasereceiptJobMainRespVO;
import com.win.module.wms.controller.purchasereceiptJob.vo.PurchasereceiptJobMainUpdateReqVO;
import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobMainDO;
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestMainDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import com.win.module.wms.controller.purchasereceiptJob.vo.*;
import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobMainDO;
import java.util.List;
/**
* 采购收货任务主 Convert
@ -31,4 +34,6 @@ public interface PurchasereceiptJobMainConvert {
List<PurchasereceiptJobMainExcelVO> convertList02(List<PurchasereceiptJobMainDO> list);
PurchasereceiptJobMainCreateReqVO convert(PurchasereceiptRequestMainDO bean);
}

13
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereceiptRequest/PurchasereceiptRequestMainConvert.java

@ -5,6 +5,8 @@ import com.win.module.wms.controller.purchasereceiptRequest.vo.*;
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO;
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestMainDO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
import java.util.List;
@ -33,4 +35,15 @@ public interface PurchasereceiptRequestMainConvert {
PurchasereceiptRequestMainImportErrorVO convert(PurchasereceiptRequestMainCreateReqVO mainVo, PurchasereceiptRequestDetailDO detailDo);
@Mappings({
@Mapping(source = "mainDO.number", target = "number"),
@Mapping(source = "mainDO.remark", target = "remark"),
@Mapping(source = "detailDO.remark", target = "remarkDetail"),
@Mapping(source = "mainDO.createTime", target = "createTime"),
@Mapping(source = "mainDO.creator", target = "creator"),
@Mapping(source = "mainDO.updateTime", target = "updateTime"),
@Mapping(source = "mainDO.updater", target = "updater"),
})
PurchasereceiptRequestMainExcelVO convert(PurchasereceiptRequestMainDO mainDO, PurchasereceiptRequestDetailDO detailDO);
}

19
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/purchasereceiptRequest/PurchasereceiptRequestDetailDO.java

@ -1,18 +1,13 @@
package com.win.module.wms.dal.dataobject.purchasereceiptRequest;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.sun.xml.bind.v2.TODO;
import com.win.framework.mybatis.core.dataobject.BaseDO;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.win.framework.mybatis.core.dataobject.BaseDO;
/**
* 采购收货申请子 DO
@ -71,6 +66,10 @@ public class PurchasereceiptRequestDetailDO extends BaseDO {
* 从库位代码
*/
private String fromLocationCode;
/**
* 默认库位代码
*/
private String defaultToLocationCode;
/**
* 订单号
*/

48
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasereceiptRequest/PurchasereceiptRequestDetailMapper.java

@ -1,17 +1,16 @@
package com.win.module.wms.dal.mysql.purchasereceiptRequest;
import java.util.*;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.win.framework.mybatis.core.mapper.BaseMapperX;
import com.win.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestDetailExportReqVO;
import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestDetailPageReqVO;
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 采购收货申请子 Mapper
*
@ -22,6 +21,7 @@ public interface PurchasereceiptRequestDetailMapper extends BaseMapperX<Purchase
default PageResult<PurchasereceiptRequestDetailDO> selectPage(PurchasereceiptRequestDetailPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<PurchasereceiptRequestDetailDO>()
.eq(PurchasereceiptRequestDetailDO::getMasterId, reqVO.getMasterId())
.eqIfPresent(PurchasereceiptRequestDetailDO::getPackingNumber, reqVO.getPackingNumber())
.eqIfPresent(PurchasereceiptRequestDetailDO::getContainerNumber, reqVO.getContainerNumber())
.eqIfPresent(PurchasereceiptRequestDetailDO::getBatch, reqVO.getBatch())
@ -52,46 +52,16 @@ public interface PurchasereceiptRequestDetailMapper extends BaseMapperX<Purchase
.eqIfPresent(PurchasereceiptRequestDetailDO::getFromOwnerCode, reqVO.getFromOwnerCode())
.eqIfPresent(PurchasereceiptRequestDetailDO::getToOwnerCode, reqVO.getToOwnerCode())
.betweenIfPresent(PurchasereceiptRequestDetailDO::getCreateTime, reqVO.getCreateTime())
.eqIfPresent(PurchasereceiptRequestDetailDO::getCreator, reqVO.getCreator())
.orderByDesc(PurchasereceiptRequestDetailDO::getId));
.eqIfPresent(PurchasereceiptRequestDetailDO::getCreator, reqVO.getCreator()));
}
default PageResult<PurchasereceiptRequestDetailDO> selectSenior(CustomConditions conditions) {
return selectPage(conditions, QueryWrapperUtils.structure(conditions));
}
default List<PurchasereceiptRequestDetailDO> selectList(PurchasereceiptRequestDetailExportReqVO reqVO) {
default List<PurchasereceiptRequestDetailDO> selectList(Long masterId) {
return selectList(new LambdaQueryWrapperX<PurchasereceiptRequestDetailDO>()
.eqIfPresent(PurchasereceiptRequestDetailDO::getPackingNumber, reqVO.getPackingNumber())
.eqIfPresent(PurchasereceiptRequestDetailDO::getContainerNumber, reqVO.getContainerNumber())
.eqIfPresent(PurchasereceiptRequestDetailDO::getBatch, reqVO.getBatch())
.eqIfPresent(PurchasereceiptRequestDetailDO::getAltBatch, reqVO.getAltBatch())
.betweenIfPresent(PurchasereceiptRequestDetailDO::getArriveDate, reqVO.getArriveDate())
.betweenIfPresent(PurchasereceiptRequestDetailDO::getProduceDate, reqVO.getProduceDate())
.betweenIfPresent(PurchasereceiptRequestDetailDO::getExpireDate, reqVO.getExpireDate())
.eqIfPresent(PurchasereceiptRequestDetailDO::getInventoryStatus, reqVO.getInventoryStatus())
.eqIfPresent(PurchasereceiptRequestDetailDO::getFromLocationCode, reqVO.getFromLocationCode())
.eqIfPresent(PurchasereceiptRequestDetailDO::getPoNumber, reqVO.getPoNumber())
.eqIfPresent(PurchasereceiptRequestDetailDO::getPoLine, reqVO.getPoLine())
.eqIfPresent(PurchasereceiptRequestDetailDO::getStdPackQty, reqVO.getStdPackQty())
.eqIfPresent(PurchasereceiptRequestDetailDO::getStdPackUnit, reqVO.getStdPackUnit())
.eqIfPresent(PurchasereceiptRequestDetailDO::getSupplierPackQty, reqVO.getSupplierPackQty())
.eqIfPresent(PurchasereceiptRequestDetailDO::getSupplierPackUnit, reqVO.getSupplierPackUnit())
.eqIfPresent(PurchasereceiptRequestDetailDO::getConvertRate, reqVO.getConvertRate())
.eqIfPresent(PurchasereceiptRequestDetailDO::getNumber, reqVO.getNumber())
.eqIfPresent(PurchasereceiptRequestDetailDO::getItemCode, reqVO.getItemCode())
.eqIfPresent(PurchasereceiptRequestDetailDO::getRemark, reqVO.getRemark())
.likeIfPresent(PurchasereceiptRequestDetailDO::getItemName, reqVO.getItemName())
.eqIfPresent(PurchasereceiptRequestDetailDO::getItemDesc1, reqVO.getItemDesc1())
.eqIfPresent(PurchasereceiptRequestDetailDO::getItemDesc2, reqVO.getItemDesc2())
.eqIfPresent(PurchasereceiptRequestDetailDO::getProjectCode, reqVO.getProjectCode())
.eqIfPresent(PurchasereceiptRequestDetailDO::getQty, reqVO.getQty())
.eqIfPresent(PurchasereceiptRequestDetailDO::getUom, reqVO.getUom())
.betweenIfPresent(PurchasereceiptRequestDetailDO::getUpdateTime, reqVO.getUpdateTime())
.eqIfPresent(PurchasereceiptRequestDetailDO::getUpdater, reqVO.getUpdater())
.eqIfPresent(PurchasereceiptRequestDetailDO::getFromOwnerCode, reqVO.getFromOwnerCode())
.eqIfPresent(PurchasereceiptRequestDetailDO::getToOwnerCode, reqVO.getToOwnerCode())
.betweenIfPresent(PurchasereceiptRequestDetailDO::getCreateTime, reqVO.getCreateTime())
.eqIfPresent(PurchasereceiptRequestDetailDO::getCreator, reqVO.getCreator())
.orderByDesc(PurchasereceiptRequestDetailDO::getId));
.eq(PurchasereceiptRequestDetailDO::getMasterId, masterId));
}
}

11
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestDetailService.java

@ -8,6 +8,7 @@ import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRe
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO;
import javax.validation.Valid;
import java.util.List;
/**
* 采购收货申请子 Service 接口
@ -23,6 +24,7 @@ public interface PurchasereceiptRequestDetailService {
* @return 编号
*/
Long createPurchasereceiptRequestDetail(@Valid PurchasereceiptRequestDetailCreateReqVO createReqVO);
/**
* 获得用高级搜索户分页列表
*
@ -30,6 +32,7 @@ public interface PurchasereceiptRequestDetailService {
* @return 分页列表
*/
PageResult<PurchasereceiptRequestDetailDO> getPurchasereceiptRequestDetailSenior(CustomConditions conditions);
/**
* 更新采购收货申请子
*
@ -60,4 +63,12 @@ public interface PurchasereceiptRequestDetailService {
*/
PageResult<PurchasereceiptRequestDetailDO> getPurchasereceiptRequestDetailPage(PurchasereceiptRequestDetailPageReqVO pageReqVO);
/**
* 根据主表id查询
*
* @param masterId 主表id
* @return
*/
List<PurchasereceiptRequestDetailDO> selectList(Long masterId);
}

93
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestDetailServiceImpl.java

@ -2,18 +2,29 @@ package com.win.module.wms.service.purchasereceiptRequest;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.module.infra.api.trends.TrendsApi;
import com.win.module.infra.enums.TrendsTypeEnum;
import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestDetailCreateReqVO;
import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestDetailPageReqVO;
import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestDetailUpdateReqVO;
import com.win.module.wms.convert.purchasereceiptRequest.PurchasereceiptRequestDetailConvert;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.itempackaging.ItempackagingDO;
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO;
import com.win.module.wms.dal.mysql.purchasereceiptRequest.PurchasereceiptRequestDetailMapper;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.itempackaging.ItempackagingService;
import com.win.module.wms.util.JobUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.List;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.module.wms.enums.ErrorCodeConstants.ITEMBASIC_UOM_EXCEPTION;
import static com.win.module.wms.enums.ErrorCodeConstants.PURCHASERECEIPT_REQUEST_DETAIL_NOT_EXISTS;
/**
@ -27,14 +38,25 @@ public class PurchasereceiptRequestDetailServiceImpl implements PurchasereceiptR
@Resource
private PurchasereceiptRequestDetailMapper purchasereceiptRequestDetailMapper;
@Resource
private TrendsApi trendsApi;
@Resource
private JobUtils jobUtils;
@Resource
private ItembasicService itembasicService;
@Resource
private ItempackagingService itempackagingService;
@Override
@Transactional
public Long createPurchasereceiptRequestDetail(PurchasereceiptRequestDetailCreateReqVO createReqVO) {
// 插入
PurchasereceiptRequestDetailDO purchasereceiptRequestDetail = PurchasereceiptRequestDetailConvert.INSTANCE.convert(createReqVO);
purchasereceiptRequestDetailMapper.insert(purchasereceiptRequestDetail);
PurchasereceiptRequestDetailDO purchasereceiptRequestDetailDO = PurchasereceiptRequestDetailConvert.INSTANCE.convert(createReqVO);
validatePurchasereceiptRequestDetailCreate(purchasereceiptRequestDetailDO);
purchasereceiptRequestDetailMapper.insert(purchasereceiptRequestDetailDO);
trendsApi.createTrends(purchasereceiptRequestDetailDO.getId(), "purchasereceiptRequestDetail", "增加了采购收货子表", TrendsTypeEnum.CREATE);
// 返回
return purchasereceiptRequestDetail.getId();
return purchasereceiptRequestDetailDO.getId();
}
@Override
@ -43,26 +65,32 @@ public class PurchasereceiptRequestDetailServiceImpl implements PurchasereceiptR
}
@Override
@Transactional
public Integer updatePurchasereceiptRequestDetail(PurchasereceiptRequestDetailUpdateReqVO updateReqVO) {
// 校验存在
validatePurchasereceiptRequestDetailExists(updateReqVO.getId());
// 更新
PurchasereceiptRequestDetailDO updateObj = PurchasereceiptRequestDetailConvert.INSTANCE.convert(updateReqVO);
trendsApi.createTrends(updateObj.getId(), "purchasereceiptRequestDetail", updateObj.toString(), TrendsTypeEnum.UPDATE);
return purchasereceiptRequestDetailMapper.updateById(updateObj);
}
@Override
@Transactional
public Integer deletePurchasereceiptRequestDetail(Long id) {
// 校验存在
validatePurchasereceiptRequestDetailExists(id);
PurchasereceiptRequestDetailDO purchasereceiptRequestDetailDO = validatePurchasereceiptRequestDetailExists(id);
trendsApi.createTrends(id, "purchasereceiptRequestDetail", purchasereceiptRequestDetailDO.toString(), TrendsTypeEnum.DELETE);
// 删除
return purchasereceiptRequestDetailMapper.deleteById(id);
}
private void validatePurchasereceiptRequestDetailExists(Long id) {
if (purchasereceiptRequestDetailMapper.selectById(id) == null) {
private PurchasereceiptRequestDetailDO validatePurchasereceiptRequestDetailExists(Long id) {
PurchasereceiptRequestDetailDO purchasereceiptRequestDetailDO = purchasereceiptRequestDetailMapper.selectById(id);
if (purchasereceiptRequestDetailDO == null) {
throw exception(PURCHASERECEIPT_REQUEST_DETAIL_NOT_EXISTS);
}
return purchasereceiptRequestDetailDO;
}
@Override
@ -75,4 +103,57 @@ public class PurchasereceiptRequestDetailServiceImpl implements PurchasereceiptR
return purchasereceiptRequestDetailMapper.selectPage(pageReqVO);
}
@Override
public List<PurchasereceiptRequestDetailDO> selectList(Long masterId) {
return purchasereceiptRequestDetailMapper.selectList(masterId);
}
/**
* 校验创建并赋值一些参数
* @param detailDo
* @return
*/
private void validatePurchasereceiptRequestDetailCreate(PurchasereceiptRequestDetailDO detailDo) {
ItembasicDO itembasicDO = this.validateItem(detailDo);
if(!itembasicDO.getUom().equals(itembasicDO.getUom())) {
throw exception(ITEMBASIC_UOM_EXCEPTION, itembasicDO.getUom(), itembasicDO.getUom());
}
this.validateItemPacking(detailDo);
this.validateBusinesstype(itembasicDO.getType());
}
/**
* 校验物品信息并赋值
* @param detailDo
* @return
*/
private ItembasicDO validateItem(PurchasereceiptRequestDetailDO detailDo) {
ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode());
detailDo.setItemName(itembasicDO.getName());
detailDo.setItemDesc1(itembasicDO.getDesc1());
detailDo.setItemDesc2(itembasicDO.getDesc2());
detailDo.setProjectCode(itembasicDO.getProject());
return itembasicDO;
}
/**
* 校验物品包装信息并赋值
* @param detailDo
*/
private void validateItemPacking(PurchasereceiptRequestDetailDO detailDo) {
ItempackagingDO itempackagingDO = itempackagingService.selectItemPackagingExist(detailDo.getItemCode());
detailDo.setStdPackQty(itempackagingDO.getStdPackQty());
detailDo.setStdPackUnit(itempackagingDO.getStdPackUnit());
}
/**
* 校验业务类型
* @param itemType
* @return
*/
private void validateBusinesstype(String itemType) {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseReceiptRequest");
jobUtils.ifInType(itemType, businesstypeDO);
}
}

251
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestMainServiceImpl.java

@ -12,24 +12,37 @@ import com.win.module.infra.api.trends.TrendsApi;
import com.win.module.infra.enums.TrendsTypeEnum;
import com.win.module.system.api.serialnumber.SerialNumberApi;
import com.win.module.system.enums.serialNumber.RuleCodeEnum;
import com.win.module.wms.controller.purchasereceiptJob.vo.PurchasereceiptJobDetailCreateReqVO;
import com.win.module.wms.controller.purchasereceiptJob.vo.PurchasereceiptJobMainCreateReqVO;
import com.win.module.wms.controller.purchasereceiptRequest.vo.*;
import com.win.module.wms.controller.rule.vo.RuleRespVO;
import com.win.module.wms.convert.purchasereceiptJob.PurchasereceiptJobDetailConvert;
import com.win.module.wms.convert.purchasereceiptJob.PurchasereceiptJobMainConvert;
import com.win.module.wms.convert.purchasereceiptRequest.PurchasereceiptRequestDetailConvert;
import com.win.module.wms.convert.purchasereceiptRequest.PurchasereceiptRequestMainConvert;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.itempackaging.ItempackagingDO;
import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobDetailDO;
import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobMainDO;
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO;
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestMainDO;
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO;
import com.win.module.wms.dal.mysql.purchasereceiptJob.PurchasereceiptJobDetailMapper;
import com.win.module.wms.dal.mysql.purchasereceiptJob.PurchasereceiptJobMainMapper;
import com.win.module.wms.dal.mysql.purchasereceiptRequest.PurchasereceiptRequestDetailMapper;
import com.win.module.wms.dal.mysql.purchasereceiptRequest.PurchasereceiptRequestMainMapper;
import com.win.module.wms.enums.request.RequestStatusEnum;
import com.win.module.wms.enums.request.RequestStatusState;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.itempackaging.ItempackagingService;
import com.win.module.wms.service.requestsetting.RequestsettingService;
import com.win.module.wms.service.rule.RuleService;
import com.win.module.wms.service.supplier.SupplierService;
import com.win.module.wms.service.supplieritem.SupplieritemService;
import com.win.module.wms.util.JobUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.validation.annotation.Validated;
@ -56,6 +69,8 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq
@Resource
private ItembasicService itembasicService;
@Resource
private ItempackagingService itempackagingService;
@Resource
private SupplierService supplierService;
@Resource
private SupplieritemService supplieritemService;
@ -71,15 +86,20 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq
private RequestsettingService requestsettingService;
@Resource
private PurchasereceiptJobMainMapper purchasereceiptJobMainMapper;
@Resource
private PurchasereceiptJobDetailMapper purchasereceiptJobDetailMapper;
@Resource
private JobUtils jobUtils;
@Override
@Transactional
public Long createPurchasereceiptRequestMain(PurchasereceiptRequestMainCreateReqVO createReqVO) {
// 插入
PurchasereceiptRequestMainDO mainDO = PurchasereceiptRequestMainConvert.INSTANCE.convert(createReqVO);
this.validatePurchasereceiptRequestMainCreate(mainDO);
List<PurchasereceiptRequestDetailDO> subDOList = PurchasereceiptRequestDetailConvert.INSTANCE.convertList03(createReqVO.getSubList());
for (PurchasereceiptRequestDetailDO detailDO : subDOList) {
this.validatePurchasereceiptRequestDetailCreate(detailDO);
this.validatePurchasereceiptRequestDetailCreate(mainDO, detailDO);
}
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_REQUEST.getCode());
mainDO.setNumber(number);
@ -92,7 +112,7 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq
mainDO.setAutoExecute(requestsettingDO.getAutoExecute());
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) {
this.generateJob(mainDO, subDOList);
}
purchasereceiptRequestMainMapper.insert(mainDO);
for (PurchasereceiptRequestDetailDO detailDO : subDOList) {
@ -101,20 +121,21 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq
}
purchasereceiptRequestDetailMapper.insertBatch(subDOList);
//增加操作记录
trendsApi.createTrends(requestsettingDO.getId(), "purchasereceiptRequest", "增加了采购收货", TrendsTypeEnum.CREATE);
trendsApi.createTrends(requestsettingDO.getId(), "purchasereceiptRequestMain", "增加了采购收货", TrendsTypeEnum.CREATE);
// 返回
return mainDO.getId();
}
@Override
@Transactional
public Integer updatePurchasereceiptRequestMain(PurchasereceiptRequestMainUpdateReqVO updateReqVO) {
// 校验存在
PurchasereceiptRequestMainDO existPurchasereceiptRequestMainDO = validatePurchasereceiptRequestMainExists(updateReqVO.getId());
if(existPurchasereceiptRequestMainDO.getStatus().equals(RequestStatusEnum.NEW.getCode())) {
throw new ServiceException(PURCHASERECEIPT_REQUEST_STATUS_NOT_NEW);
throw exception(PURCHASERECEIPT_REQUEST_STATUS_NOT_NEW);
}
//增加操作记录
trendsApi.createTrends(updateReqVO.getId(), "purchasereceiptRequest", existPurchasereceiptRequestMainDO.toString(), TrendsTypeEnum.UPDATE);
trendsApi.createTrends(updateReqVO.getId(), "purchasereceiptRequestMain", existPurchasereceiptRequestMainDO.toString(), TrendsTypeEnum.UPDATE);
// 更新
PurchasereceiptRequestMainDO updateObj = PurchasereceiptRequestMainConvert.INSTANCE.convert(updateReqVO);
return purchasereceiptRequestMainMapper.updateById(updateObj);
@ -126,6 +147,7 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq
}
@Override
@Transactional
public Integer deletePurchasereceiptRequestMain(Long id) {
// 校验存在
PurchasereceiptRequestMainDO existPurchasereceiptRequestMainDO = validatePurchasereceiptRequestMainExists(id);
@ -134,7 +156,7 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq
throw new ServiceException(PURCHASERECEIPT_REQUEST_JOB_EXISTS);
}
//增加操作记录
trendsApi.createTrends(id, "purchasereceiptRequest", existPurchasereceiptRequestMainDO.toString(), TrendsTypeEnum.DELETE);
trendsApi.createTrends(id, "purchasereceiptRequestMain", existPurchasereceiptRequestMainDO.toString(), TrendsTypeEnum.DELETE);
// 删除子表数据
Map<String, Object> map = new HashMap<>();
map.put("master_id", id);
@ -173,6 +195,7 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq
}
@Override
@Transactional
public List<PurchasereceiptRequestMainImportErrorVO> importPurchasereceiptRequestMainList(List<PurchasereceiptRequestMainCreateReqVO> datas, Integer mode, boolean updatePart) {
if (CollUtil.isEmpty(datas)) {
throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY);
@ -186,7 +209,7 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq
// 是否有错误数据
boolean flag = true;
for (PurchasereceiptRequestDetailDO detailDO : subDOList) {
String messageDetail = this.validatePurchasereceiptRequestDetailImport(detailDO);
String messageDetail = this.validatePurchasereceiptRequestDetailImport(mainDO, detailDO);
if(!messageMain.isEmpty() || messageDetail.isEmpty()) {
PurchasereceiptRequestMainImportErrorVO importErrorVO = PurchasereceiptRequestMainConvert.INSTANCE.convert(createReqVO, detailDO);
importErrorVO.setImportStatus("失败");
@ -203,7 +226,7 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq
//if(existPurchasereceiptRequestMainDO == null && mode != 3) {//新增
purchasereceiptRequestMainMapper.insert(mainDO);
//增加操作记录
trendsApi.createTrends(mainDO.getId(), "purchasereceiptRequest", "导入了采购收货", TrendsTypeEnum.CREATE);
trendsApi.createTrends(mainDO.getId(), "purchasereceiptRequestMain", "导入了采购收货", TrendsTypeEnum.CREATE);
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_REQUEST.getCode());
mainDO.setNumber(number);
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PurchaseReceiptRequest");
@ -219,7 +242,7 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq
}
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) {
this.generateJob(mainDO, subDOList);
}
purchasereceiptRequestDetailMapper.insertBatch(subDOList);
//} else if(existPurchasereceiptRequestMainDO != null && existPurchasereceiptRequestMainDO.getStatus().equals(RequestStatusEnum.NEW.getCode()) && mode != 2) {//修改
@ -248,6 +271,7 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq
}
@Override
@Transactional
public Integer closePurchasereceiptRequestMain(Long id) {
// 校验存在存在下级单据
PurchasereceiptRequestMainDO mainDO = validatePurchasereceiptRequestMainExists(id);
@ -260,11 +284,13 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq
if(!flag) {
throw new ServiceException(PURCHASERECEIPT_REQUEST_CANNOT_CLOSE);
}
mainDO.setStatus(requestStatusState.getState().getCode());
mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录
trendsApi.createTrends(id, "purchasereceiptRequest", "关闭了采购收货", TrendsTypeEnum.UPDATE);
return purchasereceiptRequestMainMapper.updateById(mainDO);
}
@Override
@Transactional
public Integer submitPurchasereceiptRequestMain(Long id) {
PurchasereceiptRequestMainDO mainDO = validatePurchasereceiptRequestMainExists(id);
RequestStatusState requestStatusState = new RequestStatusState();
@ -275,12 +301,14 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq
mainDO.setStatus(requestStatusState.getState().getCode());
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) {
this.generateJob(mainDO, purchasereceiptRequestDetailMapper.selectList(mainDO.getId()));
}
trendsApi.createTrends(id, "purchasereceiptRequest", "提交了采购收货", TrendsTypeEnum.UPDATE);
return purchasereceiptRequestMainMapper.updateById(mainDO);
}
@Override
@Transactional
public Integer agreePurchasereceiptRequestMain(Long id) {
// 校验存在
PurchasereceiptRequestMainDO mainDO = validatePurchasereceiptRequestMainExists(id);
@ -292,12 +320,14 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq
mainDO.setStatus(requestStatusState.getState().getCode());
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) {
this.generateJob(mainDO, purchasereceiptRequestDetailMapper.selectList(mainDO.getId()));
}
trendsApi.createTrends(id, "purchasereceiptRequest", "审批同意了采购收货", TrendsTypeEnum.UPDATE);
return purchasereceiptRequestMainMapper.updateById(mainDO);
}
@Override
@Transactional
public Integer abortPurchasereceiptRequestMain(Long id) {
// 校验存在
PurchasereceiptRequestMainDO mainDO = validatePurchasereceiptRequestMainExists(id);
@ -307,6 +337,7 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq
throw new ServiceException(PURCHASERECEIPT_REQUEST_CANNOT_CLOSE);
}
mainDO.setStatus(requestStatusState.getState().getCode());
trendsApi.createTrends(id, "purchasereceiptRequest", "审批拒绝了采购收货", TrendsTypeEnum.UPDATE);
return purchasereceiptRequestMainMapper.updateById(mainDO);
}
@ -337,6 +368,82 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq
}
}
/**
* 生成采购收货任务
* @param mainDO 采购收货主
* @param detailDOList 采购收货子
*/
@Transactional
private void generateJob(PurchasereceiptRequestMainDO mainDO, List<PurchasereceiptRequestDetailDO> detailDOList) {
RuleRespVO ruleRespVO = ruleService.deliveryGoods(null, mainDO.getSupplierCode());
JSONObject jsonObject = JSONUtil.parseObj(ruleRespVO.getConfiguration());
Map<String, List<PurchasereceiptRequestDetailDO>> listMap = new HashMap<>();
List<PurchasereceiptJobMainCreateReqVO> purchasereceiptJobMainCreateReqVOList = new ArrayList<>();
// 获取拆分类型,如果够为FALSE则不拆分
String key = "";
if ("TRUE".equals(jsonObject.get("ByItem"))) {//按零件拆分
key = "item";
} else if ("TRUE".equals(jsonObject.get("ByContainer"))) {//按器具拆分
key = "container";
} else if ("TRUE".equals(jsonObject.get("ByLocation"))) {//按库位拆分
key = "location";
} else {
key = "null";
}
// 每个任务单最多任务数
int count = Integer.parseInt(String.valueOf(jsonObject.get("JobDetailCount")));
if(count == 0) {
count = Integer.MAX_VALUE;
}
for(PurchasereceiptRequestDetailDO detailDO : detailDOList) {
List<PurchasereceiptRequestDetailDO> list;
switch (key) {
case "item":
list = listMap.get(detailDO.getItemCode());
case "container":
list = listMap.get(detailDO.getContainerNumber());
case "location":
list = listMap.get(detailDO.getFromLocationCode());
default:
list = listMap.get(key);
}
if(list == null) {
list = new ArrayList<>();
}
list.add(detailDO);
listMap.put(key, list);
}
for(String mapKey : listMap.keySet()) {
List<PurchasereceiptRequestDetailDO> purchasereceiptRequestDetailDOList = listMap.get(mapKey);
for(int i = 0; i < purchasereceiptRequestDetailDOList.size(); i++) {
PurchasereceiptJobMainCreateReqVO purchasereceiptJobMainCreateReqVO;
List<PurchasereceiptJobDetailCreateReqVO> subList = null;
if(i % count == 0) {
purchasereceiptJobMainCreateReqVO = PurchasereceiptJobMainConvert.INSTANCE.convert(mainDO);
subList = new ArrayList<>();
purchasereceiptJobMainCreateReqVO.setSubList(subList);
purchasereceiptJobMainCreateReqVOList.add(purchasereceiptJobMainCreateReqVO);
}
PurchasereceiptJobDetailCreateReqVO purchasereceiptJobDetailCreateReqVO = PurchasereceiptJobDetailConvert.INSTANCE.convert(purchasereceiptRequestDetailDOList.get(i));
subList.add(purchasereceiptJobDetailCreateReqVO);
}
}
//插入数据库
for(PurchasereceiptJobMainCreateReqVO purchasereceiptJobMainCreateReqVO : purchasereceiptJobMainCreateReqVOList) {
PurchasereceiptJobMainDO purchasereceiptJobMainDO = PurchasereceiptJobMainConvert.INSTANCE.convert(purchasereceiptJobMainCreateReqVO);
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_JOB.getCode());
purchasereceiptJobMainDO.setNumber(number);
purchasereceiptJobMainMapper.insert(purchasereceiptJobMainDO);
trendsApi.createTrends(purchasereceiptJobMainDO.getId(), "purchasereceiptJob", "采购收货申请生成采购收货任务", TrendsTypeEnum.CREATE);
for(PurchasereceiptJobDetailCreateReqVO purchasereceiptJobDetailCreateReqVO : purchasereceiptJobMainCreateReqVO.getSubList()) {
PurchasereceiptJobDetailDO purchasereceiptJobDetailDO = PurchasereceiptJobDetailConvert.INSTANCE.convert(purchasereceiptJobDetailCreateReqVO);
purchasereceiptJobDetailDO.setNumber(number);
purchasereceiptJobDetailDO.setMasterId(purchasereceiptJobMainDO.getId());
purchasereceiptJobDetailMapper.insert(purchasereceiptJobDetailDO);
}
}
}
/**
* 校验导入并赋值一些参数未完全实现
* @param mainDo
@ -348,40 +455,26 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq
ValidationUtils.validate(validator, mainDo);
} catch (Exception ex) {
message.append(ex.getMessage()).append(",");
}
try {
supplierService.selectSupplier(mainDo.getSupplierCode());
}try {
this.validateSupplier(mainDo);
} catch (Exception ex) {
message.append(ex.getMessage()).append(",");
}
RuleRespVO ruleRespVO = ruleService.deliverGoods(null, mainDo.getSupplierCode(), null);
if(ruleRespVO == null) {
message.append(STDCOSTPRICE_SUPPLIER_CODE_NOT_EXISTS.getMsg());
} else {
JSONArray conditionArray = JSONUtil.parseArray(ruleRespVO.getConfiguration());
for (int i = 0; i < conditionArray.size(); i++) {
JSONObject conditionObject = conditionArray.getJSONObject(i);
if ("WarehouseCode".equals(conditionObject.get("ParamCode"))) {
mainDo.setFromWarehouseCode(String.valueOf(conditionObject.get("Value")));
}
if ("DockCode".equals(conditionObject.get("ParamCode"))) {
mainDo.setToDockCode(String.valueOf(conditionObject.get("Value")));
}
if ("OnTheWayLocationCode".equals(conditionObject.get("ParamCode"))) {
mainDo.setToWarehouseCode(String.valueOf(conditionObject.get("Value")));
}
}
}
return message.toString();
}
/**
* 校验导入并赋值一些参数未完全实现
* 校验创建并赋值一些参数
* @param detailDo
* @return
*/
private void validatePurchasereceiptRequestDetailCreate(PurchasereceiptRequestDetailDO detailDo) {
private void validatePurchasereceiptRequestDetailCreate(PurchasereceiptRequestMainDO mainDo, PurchasereceiptRequestDetailDO detailDo) {
ItembasicDO itembasicDO = this.validateItem(detailDo);
if(!itembasicDO.getUom().equals(itembasicDO.getUom())) {
throw exception(ITEMBASIC_UOM_EXCEPTION, itembasicDO.getUom(), itembasicDO.getUom());
}
this.validateItemPacking(detailDo);
this.validateBusinesstype(itembasicDO.getType(), mainDo);
}
/**
@ -389,14 +482,94 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq
* @param detailDo
* @return
*/
private String validatePurchasereceiptRequestDetailImport(PurchasereceiptRequestDetailDO detailDo) {
private String validatePurchasereceiptRequestDetailImport(PurchasereceiptRequestMainDO mainDo, PurchasereceiptRequestDetailDO detailDo) {
StringBuilder message = new StringBuilder();
try {
ValidationUtils.validate(validator, detailDo);
} catch (Exception ex) {
message.append(ex.getMessage()).append(",");
} catch (Exception e) {
message.append(e.getMessage()).append(",");
}
ItembasicDO itembasicDO = null;
try {
itembasicDO = this.validateItem(detailDo);
} catch (Exception e) {
message.append(e.getMessage()).append(",");
}
if(!itembasicDO.getUom().equals(itembasicDO.getUom())) {
message.append("计量单位【").append(itembasicDO.getUom()).append("】错误,应该是【").append(itembasicDO.getUom()).append("】").append(",");
}
try {
this.validateItemPacking(detailDo);
} catch (Exception e) {
message.append(e.getMessage()).append(",");
}
try {
this.validateBusinesstype(itembasicDO.getType(), mainDo);
} catch (Exception e) {
message.append(e.getMessage()).append(",");
}
return message.toString();
}
/**
* 校验供应商并赋值策略
* @param mainDo
*/
private void validateSupplier(PurchasereceiptRequestMainDO mainDo) {
supplierService.selectSupplier(mainDo.getSupplierCode());
RuleRespVO ruleRespVO = ruleService.deliverGoods(null, mainDo.getSupplierCode(), null);
JSONArray conditionArray = JSONUtil.parseArray(ruleRespVO.getConfiguration());
for (int i = 0; i < conditionArray.size(); i++) {
JSONObject conditionObject = conditionArray.getJSONObject(i);
if ("WarehouseCode".equals(conditionObject.get("ParamCode"))) {
mainDo.setFromWarehouseCode(String.valueOf(conditionObject.get("Value")));
}
if ("DockCode".equals(conditionObject.get("ParamCode"))) {
mainDo.setToDockCode(String.valueOf(conditionObject.get("Value")));
}
if ("OnTheWayLocationCode".equals(conditionObject.get("ParamCode"))) {
mainDo.setToWarehouseCode(String.valueOf(conditionObject.get("Value")));
}
}
}
/**
* 校验物品信息并赋值
* @param detailDo
* @return
*/
private ItembasicDO validateItem(PurchasereceiptRequestDetailDO detailDo) {
ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode());
detailDo.setItemName(itembasicDO.getName());
detailDo.setItemDesc1(itembasicDO.getDesc1());
detailDo.setItemDesc2(itembasicDO.getDesc2());
detailDo.setProjectCode(itembasicDO.getProject());
return itembasicDO;
}
/**
* 校验物品包装信息并赋值
* @param detailDo
*/
private void validateItemPacking(PurchasereceiptRequestDetailDO detailDo) {
ItempackagingDO itempackagingDO = itempackagingService.selectItemPackagingExist(detailDo.getItemCode());
detailDo.setStdPackQty(itempackagingDO.getStdPackQty());
detailDo.setStdPackUnit(itempackagingDO.getStdPackUnit());
}
/**
* 校验业务类型并赋值
* @param itemType
* @param mainDo
* @return
*/
private void validateBusinesstype(String itemType, PurchasereceiptRequestMainDO mainDo) {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseReceiptRequest");
jobUtils.ifInType(itemType, businesstypeDO);
mainDo.setFromLocationTypes(businesstypeDO.getOutLocationTypes());
mainDo.setToLocationTypes(businesstypeDO.getInLocationTypes());
mainDo.setFromAreaCodes(businesstypeDO.getOutAreaCodes());
mainDo.setToAreaCodes(businesstypeDO.getInAreaCodes());
}
}

Loading…
Cancel
Save