Browse Source

Merge remote-tracking branch 'origin/master'

master
赵雪冰 2 years ago
parent
commit
e4869ecb82
  1. 2
      win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java
  2. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayJob/vo/ProductputawayJobMainBaseVO.java
  3. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayJob/vo/ProductputawayJobMainPageReqVO.java
  4. 149
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/ProductputawayRequestMainController.java
  5. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayImportVO.java
  6. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestDetailBaseVO.java
  7. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestDetailPageReqVO.java
  8. 50
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestImportVO.java
  9. 77
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestMainExcelVO.java
  10. 13
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptJob/ProductreceiptJobMainController.java
  11. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRequest/IssueRequestMainConvert.java
  12. 11
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productputawayRequest/ProductputawayRequestMainConvert.java
  13. 8
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productputawayJob/ProductputawayJobMainDO.java
  14. 7
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productputawayJob/ProductputawayJobMainMapper.java
  15. 7
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productputawayRequest/ProductputawayRequestDetailMapper.java
  16. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productputawayRequest/ProductputawayRequestMainMapper.java
  17. 15
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainServiceImpl.java
  18. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/location/LocationServiceImpl.java
  19. 8
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainServiceImpl.java
  20. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestDetailService.java
  21. 62
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestDetailServiceImpl.java
  22. 13
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainService.java
  23. 326
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainServiceImpl.java
  24. 9
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRequest/ProductreceiptRequestMainServiceImpl.java

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

@ -736,6 +736,8 @@ public interface ErrorCodeConstants {
ErrorCode PRODUCTPUTAWAY_REQUEST_DETAIL_NOT_EXISTS = new ErrorCode(1_000_112_001, "制品上架申请子不存在");
//制品上架申请ErrorCode
ErrorCode PRODUCTPUTAWAY_REQUEST_NOT_EXISTS = new ErrorCode(1_000_112_002, "制品上架申请不存在");
ErrorCode PRODUCTPUTAWAY_REQUEST_MAIN_STATUS_ERROR = new ErrorCode(1_000_112_003, "制品上架申请状态错误");
ErrorCode PRODUCTPUTAWAY_REQUEST_JOB_EXISTS = new ErrorCode(1_000_112_004, "制品上架申请存在制品上架任务单");
//制品上架任务ErrorCode
ErrorCode PRODUCTPUTAWAY_JOB_MAIN_NOT_EXISTS = new ErrorCode(1_000_113_000, "制品上架任务主不存在");
ErrorCode PRODUCTPUTAWAY_JOB_DETAIL_NOT_EXISTS = new ErrorCode(1_000_113_001, "制品上架任务子不存在");

6
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayJob/vo/ProductputawayJobMainBaseVO.java

@ -144,4 +144,10 @@ public class ProductputawayJobMainBaseVO {
@Schema(description = "允许修改箱码")
private String allowModifyPackingNumber;
@Schema(description = "入库库存状态范围")
private String inInventoryStatuses;
@Schema(description = "出库库存状态范围")
private String outInventoryStatuses;
}

6
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayJob/vo/ProductputawayJobMainPageReqVO.java

@ -133,4 +133,10 @@ public class ProductputawayJobMainPageReqVO extends PageParam {
@Schema(description = "允许修改箱码")
private String allowModifyPackingNumber;
@Schema(description = "入库库存状态范围")
private String inInventoryStatuses;
@Schema(description = "出库库存状态范围")
private String outInventoryStatuses;
}

149
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/ProductputawayRequestMainController.java

@ -9,9 +9,13 @@ import com.win.framework.excel.core.util.ExcelUtils;
import com.win.framework.operatelog.core.annotations.OperateLog;
import com.win.module.system.api.user.AdminUserApi;
import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.wms.controller.issueRequest.vo.IssueRequestMainExcelVO;
import com.win.module.wms.controller.productputawayRequest.vo.*;
import com.win.module.wms.convert.issueRequest.IssueRequestMainConvert;
import com.win.module.wms.convert.productputawayRequest.ProductputawayRequestDetailConvert;
import com.win.module.wms.convert.productputawayRequest.ProductputawayRequestMainConvert;
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.productputawayRequest.ProductputawayRequestDetailDO;
import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestMainDO;
import com.win.module.wms.enums.DictTypeConstants;
@ -102,23 +106,6 @@ public class ProductputawayRequestMainController {
return success(ProductputawayRequestMainConvert.INSTANCE.convertPage(pageResult));
}
@GetMapping("/export-excel")
@Operation(summary = "导出制品上架申请主 Excel")
@PreAuthorize("@ss.hasPermission('wms:productputaway-request-main:export')")
@OperateLog(type = EXPORT)
public void exportProductputawayRequestMainExcel(@Valid ProductputawayRequestMainExportReqVO exportReqVO,
HttpServletResponse response) throws IOException {
List<ProductputawayRequestMainDO> list = productputawayRequestMainService.getProductputawayRequestMainList(exportReqVO);
// 导出 Excel
List<ProductputawayRequestMainExcelVO> datas = ProductputawayRequestMainConvert.INSTANCE.convertList02(list);
for (ProductputawayRequestMainExcelVO vo : datas) {
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator()));
//后端创建个字段作为前端展示的虚拟字段
vo.setCreator(user.getNickname());
}
ExcelUtils.write(response, "制品上架申请主.xls", "数据", ProductputawayRequestMainExcelVO.class, datas);
}
@PostMapping("/senior")
@Operation(summary = "高级搜索获得制品上架申请主分页")
@PreAuthorize("@ss.hasPermission('wms:productputaway-request-main:query')")
@ -137,18 +124,75 @@ public class ProductputawayRequestMainController {
@Operation(summary = "获得导入制品上架申请信息模板")
public void importTemplate(HttpServletResponse response) throws IOException {
// 手动创建导出 demo
List<ProductputawayImportVO> list = Arrays.asList(
// ProductputawayImportExcelVO.builder().code("code").name("name").build()
);
List<ProductputawayRequestImportVO> list = new ArrayList<>();
Map<Integer, String[]> mapDropDown = new HashMap<>();
String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS);
mapDropDown.put(3, inventoryStatus);
String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM);
mapDropDown.put(7, uom);
mapDropDown.put(6, uom);
String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS);
mapDropDown.put(7, inventoryStatus);
// 输出
ExcelUtils.write(response, "制品上架申请信息导入模板.xls", "制品上架申请信息列表", ProductputawayImportVO.class, list,mapDropDown);
ExcelUtils.write(response, "检验发料申请导入模板.xlsx", "发料申请信息列表", ProductputawayRequestImportVO.class, list, mapDropDown);
}
private List<ProductputawayRequestMainExcelVO> getExcelVo(List<ProductputawayRequestMainDO> list, Map<Integer, String[]> mapDropDown) {
String[] locationTypes = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.LOCATION_TYPE);
mapDropDown.put(3, locationTypes);
mapDropDown.put(4, locationTypes);
String[] trueFalse = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE);
mapDropDown.put(18, trueFalse);
mapDropDown.put(19, trueFalse);
mapDropDown.put(20, trueFalse);
mapDropDown.put(21, trueFalse);
String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS);
mapDropDown.put(25, inventoryStatus);
String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM);
mapDropDown.put(35, uom);
List<ProductputawayRequestMainExcelVO> resultList = new ArrayList<>();
// 导出
for(ProductputawayRequestMainDO mainDO : list) {
List<ProductputawayRequestDetailDO> subList = productputawayRequestDetailService.selectList(mainDO.getId());
for(ProductputawayRequestDetailDO detailDO : subList) {
ProductputawayRequestMainExcelVO vo = ProductputawayRequestMainConvert.INSTANCE.convert(mainDO, detailDO);
resultList.add(vo);
}
}
return resultList;
}
@GetMapping("/export-excel")
@Operation(summary = "导出制品上架申请主 Excel")
@PreAuthorize("@ss.hasPermission('wms:productputaway-request-main:export')")
@OperateLog(type = EXPORT)
public void exportProductputawayRequestMainExcel(@Valid ProductputawayRequestMainExportReqVO exportReqVO,
HttpServletResponse response) throws IOException {
List<ProductputawayRequestMainDO> list = productputawayRequestMainService.getProductputawayRequestMainList(exportReqVO);
//组装vo
Map<Integer, String[]> mapDropDown = new HashMap<>();
List<ProductputawayRequestMainExcelVO> resultList = this.getExcelVo(list, mapDropDown);
resultList.forEach(item -> {
//后端创建个字段作为前端展示的虚拟字段
item.setCreator(userApi.getUser(Long.valueOf(item.getCreator())).getNickname());
item.setUpdater(userApi.getUser(Long.valueOf(item.getUpdater())).getNickname());
});
ExcelUtils.write(response, "制品上架申请.xls", "制品上架申请", ProductputawayRequestMainExcelVO.class, resultList);
}
@GetMapping("/export-excel-senior")
@Operation(summary = "导出发料申请 Excel")
@PreAuthorize("@ss.hasPermission('wms:productputaway-request-main:export')")
@OperateLog(type = EXPORT)
public void exportProductputawayRequestMainSeniorExcel(@Valid @RequestBody CustomConditions conditions, HttpServletResponse response) throws IOException {
List<ProductputawayRequestMainDO> list = productputawayRequestMainService.getProductputawayRequestMainList(conditions);
//组装vo
Map<Integer, String[]> mapDropDown = new HashMap<>();
List<ProductputawayRequestMainExcelVO> resultList = this.getExcelVo(list, mapDropDown);
resultList.forEach(item -> {
//后端创建个字段作为前端展示的虚拟字段
item.setCreator(userApi.getUser(Long.valueOf(item.getCreator())).getNickname());
item.setUpdater(userApi.getUser(Long.valueOf(item.getUpdater())).getNickname());
});
ExcelUtils.write(response, "制品上架申请.xlsx", "制品上架申请", ProductputawayRequestMainExcelVO.class, resultList, mapDropDown);
}
@PostMapping("/import")
@ -189,8 +233,61 @@ public class ProductputawayRequestMainController {
ProductputawayRequestDetailExportReqVO reqVO = new ProductputawayRequestDetailExportReqVO();
reqVO.setMasterId(result.getId());
List<ProductputawayRequestDetailDO> list = productputawayRequestDetailService.getProductputawayRequestDetailList(reqVO);
List<ProductputawayRequestDetailExcelVO> vos = ProductputawayRequestDetailConvert.INSTANCE.convertList02(list);
result.setSubList(vos);
result.setSubList(list);
return success(result);
}
@PutMapping("/close")
@Operation(summary = "关闭")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:productputaway-request-main:close')")
public CommonResult<Boolean> closeProductputawayRequestMain(@RequestParam("id") Long id) {
Integer count = productputawayRequestMainService.closeProductputawayRequestMain(id);
return success(count > 0);
}
@PutMapping("/reAdd")
@Operation(summary = "重新添加")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:productputaway-request-main:reAdd')")
public CommonResult<Boolean> reAddProductputawayRequestMain(@RequestParam("id") Long id) {
Integer count = productputawayRequestMainService.reAddProductputawayRequestMain(id);
return success(count > 0);
}
@PutMapping("/submit")
@Operation(summary = "提交审批")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:productputaway-request-main:submit')")
public CommonResult<Boolean> submitProductputawayRequestMain(@RequestParam("id") Long id) {
Integer count = productputawayRequestMainService.submitProductputawayRequestMain(id);
return success(count > 0);
}
@PutMapping("/refused")
@Operation(summary = "驳回")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:productputaway-request-main:refused')")
public CommonResult<Boolean> refusedProductputawayRequestMain(@RequestParam("id") Long id) {
Integer count = productputawayRequestMainService.refusedProductputawayRequestMain(id);
return success(count > 0);
}
@PutMapping("/agree")
@Operation(summary = "审批通过")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:productputaway-request-main:agree')")
public CommonResult<Boolean> agreeProductputawayRequestMain(@RequestParam("id") Long id) {
Integer count = productputawayRequestMainService.agreeProductputawayRequestMain(id);
return success(count > 0);
}
@PutMapping("/handle")
@Operation(summary = "处理")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:productputaway-request-main:handle')")
public CommonResult<Boolean> handleProductputawayRequestMain(@RequestParam("id") Long id) {
Integer count = productputawayRequestMainService.handleProductputawayRequestMain(id);
return success(count > 0);
}
}

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayImportVO.java

@ -37,7 +37,7 @@ public class ProductputawayImportVO {
@ExcelProperty("批次")
private String batch;
@ExcelProperty("库存状态")
@ExcelProperty(value = "库存状态", converter = DictConvert.class)
@DictFormat(DictTypeConstants.INVENTORY_STATUS)
private String inventoryStatus;
@ -52,7 +52,7 @@ public class ProductputawayImportVO {
@ExcelProperty("数量")
private BigDecimal qty;
@ExcelProperty("计量单位")
@ExcelProperty(value = "计量单位", converter = DictConvert.class)
@DictFormat(DictTypeConstants.UOM)
private String uom;

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestDetailBaseVO.java

@ -89,4 +89,7 @@ public class ProductputawayRequestDetailBaseVO {
@Schema(description = "到货主代码")
private String toOwnerCode;
@Schema(description = "主表ID")
private String masterId;
}

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestDetailPageReqVO.java

@ -85,4 +85,8 @@ public class ProductputawayRequestDetailPageReqVO extends PageParam {
@Schema(description = "到货主代码")
private String toOwnerCode;
@Schema(description = "主表ID")
private String masterId;
}

50
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestImportVO.java

@ -0,0 +1,50 @@
package com.win.module.wms.controller.productputawayRequest.vo;
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.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题
public class ProductputawayRequestImportVO {
@ExcelProperty("截止时间")
private String dueTime;
// 子表数据
@ExcelProperty("物品代码")
private String itemCode;
@ExcelProperty("包装号")
private String packingNumber;
@ExcelProperty("器具号")
private String containerNumber;
@ExcelProperty("批次")
private String batch;
@ExcelProperty("数量")
private BigDecimal qty;
@ExcelProperty(value = "计量单位", converter = DictConvert.class)
@DictFormat(DictTypeConstants.UOM)
private String uom;
@ExcelProperty(value = "库存状态", converter = DictConvert.class)
@DictFormat(DictTypeConstants.INVENTORY_STATUS)
private String inventoryStatus;
@ExcelProperty("从库位代码")
private String fromLocationCode;
}

77
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestMainExcelVO.java

@ -1,7 +1,11 @@
package com.win.module.wms.controller.productputawayRequest.vo;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.enums.request.RequestStatusConverter;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.math.BigDecimal;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
@ -21,9 +25,6 @@ import com.win.framework.excel.core.convert.DictConvert;
@Data
public class ProductputawayRequestMainExcelVO {
@ExcelProperty("id")
private Long id;
@ExcelProperty("供应商代码")
private String supplierCode;
@ -34,11 +35,11 @@ public class ProductputawayRequestMainExcelVO {
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("从库区代码范围")
@ -71,8 +72,7 @@ public class ProductputawayRequestMainExcelVO {
@ExcelProperty("部门")
private String departmentCode;
@ExcelProperty(value = "状态", converter = DictConvert.class)
@DictFormat("request_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
@ExcelProperty(value = "状态", converter = RequestStatusConverter.class)
private String status;
@ExcelProperty("最后更新时间")
@ -81,16 +81,71 @@ public class ProductputawayRequestMainExcelVO {
@ExcelProperty("最后更新者用户名")
private String updater;
@ExcelProperty("自动提交")
@ExcelProperty(value = "自动提交", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String autoCommit;
@ExcelProperty("自动通过")
@ExcelProperty(value = "自动通过", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String autoAgree;
@ExcelProperty("自动执行")
@ExcelProperty(value = "自动执行", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String autoExecute;
@ExcelProperty("直接生成记录")
@ExcelProperty(value = "直接生成记录", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String directCreateRecord;
// 子表数据
@ExcelProperty("包装号")
private String packingNumber;
@ExcelProperty("器具号")
private String containerNumber;
@ExcelProperty("批次")
private String batch;
@ExcelProperty(value = "库存状态", converter = DictConvert.class)
@DictFormat(DictTypeConstants.INVENTORY_STATUS)
private String inventoryStatus;
@ExcelProperty("订单号")
private String poNumber;
@ExcelProperty("订单行")
private String poLine;
@ExcelProperty("从库位代码")
private String fromLocationCode;
@ExcelProperty("物品代码")
private String itemCode;
@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 BigDecimal fromOwnerCode;
@ExcelProperty("到货主代码")
private BigDecimal toOwnerCode;
}

13
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptJob/ProductreceiptJobMainController.java

@ -11,6 +11,7 @@ import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.wms.controller.productreceiptJob.vo.*;
import com.win.module.wms.convert.productreceiptJob.ProductreceiptJobDetailConvert;
import com.win.module.wms.convert.productreceiptJob.ProductreceiptJobMainConvert;
import com.win.module.wms.dal.dataobject.issueJob.IssueJobDetailDO;
import com.win.module.wms.dal.dataobject.productreceiptJob.ProductreceiptJobDetailDO;
import com.win.module.wms.dal.dataobject.productreceiptJob.ProductreceiptJobMainDO;
import com.win.module.wms.enums.DictTypeConstants;
@ -191,11 +192,13 @@ public class ProductreceiptJobMainController {
if(result==null) {
return success(result);
};
ProductreceiptJobDetailExportReqVO rxportReqVO = new ProductreceiptJobDetailExportReqVO();
rxportReqVO.setMasterId(result.getId());
List<ProductreceiptJobDetailDO> productreceiptJobDetailList = productreceiptJobDetailService.getProductreceiptJobDetailList(rxportReqVO);
List<ProductreceiptJobDetailExcelVO> productreceiptJobDetailExcelVOS = ProductreceiptJobDetailConvert.INSTANCE.convertList02(productreceiptJobDetailList);
result.setSubList(productreceiptJobDetailExcelVOS);
// ProductreceiptJobDetailExportReqVO rxportReqVO = new ProductreceiptJobDetailExportReqVO();
// rxportReqVO.setMasterId(result.getId());
// List<ProductreceiptJobDetailDO> productreceiptJobDetailList = productreceiptJobDetailService.getProductreceiptJobDetailList(rxportReqVO);
// List<ProductreceiptJobDetailExcelVO> productreceiptJobDetailExcelVOS = ProductreceiptJobDetailConvert.INSTANCE.convertList02(productreceiptJobDetailList);
// result.setSubList(productreceiptJobDetailExcelVOS);
List<ProductreceiptJobDetailDO> subList = productreceiptJobDetailService.selectList(id);
result.setSubList(subList);
return success(result);
}

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

@ -3,10 +3,13 @@ package com.win.module.wms.convert.issueRequest;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.issueRequest.vo.*;
import com.win.module.wms.controller.production.vo.ProductionMainExcelVO;
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainExcelVO;
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.production.ProductionDetailDO;
import com.win.module.wms.dal.dataobject.production.ProductionMainDO;
import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestDetailDO;
import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestMainDO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
@ -55,5 +58,4 @@ public interface IssueRequestMainConvert {
@Mapping(source = "detailDO.remark", target = "remarkDetail"),
})
IssueRequestMainExcelVO convert(IssueRequestMainDO mainDO, IssueRequestDetailDO detailDO);
}

11
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productputawayRequest/ProductputawayRequestMainConvert.java

@ -50,6 +50,13 @@ public interface ProductputawayRequestMainConvert {
ProductputawayImportErrorVO convert(ProductputawayRequestMainCreateReqVO mainVo, ProductputawayRequestDetailDO detailDo);
@Mappings({
@Mapping(source = "mainDO.number", target = "number"),
@Mapping(source = "mainDO.remark", target = "remark"),
@Mapping(source = "mainDO.createTime", target = "createTime"),
@Mapping(source = "mainDO.creator", target = "creator"),
@Mapping(source = "mainDO.updateTime", target = "updateTime"),
@Mapping(source = "mainDO.updater", target = "updater"),
})
ProductputawayRequestMainExcelVO convert(ProductputawayRequestMainDO mainDO, ProductputawayRequestDetailDO detailDO);
}

8
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productputawayJob/ProductputawayJobMainDO.java

@ -207,5 +207,13 @@ public class ProductputawayJobMainDO extends BaseDO {
* 允许修改箱码
*/
private String allowModifyPackingNumber;
/**
* 入库库存状态范围
*/
private String inInventoryStatuses;
/**
* 出库库存状态范围
*/
private String outInventoryStatuses;
}

7
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productputawayJob/ProductputawayJobMainMapper.java

@ -7,8 +7,10 @@ import com.win.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.productputawayJob.vo.ProductputawayJobMainExportReqVO;
import com.win.module.wms.controller.productputawayJob.vo.ProductputawayJobMainPageReqVO;
import com.win.module.wms.dal.dataobject.issueJob.IssueJobMainDO;
import com.win.module.wms.dal.dataobject.productputawayJob.ProductputawayJobMainDO;
import com.win.module.wms.dal.dataobject.purchasereturnJob.PurchasereturnJobMainDO;
import com.win.module.wms.enums.order.OrderStatusEnum;
import org.apache.ibatis.annotations.Mapper;
import java.util.Collection;
@ -120,4 +122,9 @@ public interface ProductputawayJobMainMapper extends BaseMapperX<ProductputawayJ
}
default Long selectByRequestNumber(String requestNumber) {
return selectCount(new LambdaQueryWrapperX<ProductputawayJobMainDO>()
.eq(ProductputawayJobMainDO::getRequestNumber, requestNumber)
.ne(ProductputawayJobMainDO::getStatus, OrderStatusEnum.CLOSED.getCode()));
}
}

7
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productputawayRequest/ProductputawayRequestDetailMapper.java

@ -7,6 +7,7 @@ import com.win.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestDetailExportReqVO;
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestDetailPageReqVO;
import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestDetailDO;
import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestDetailDO;
import org.apache.ibatis.annotations.Mapper;
@ -22,6 +23,7 @@ public interface ProductputawayRequestDetailMapper extends BaseMapperX<Productpu
default PageResult<ProductputawayRequestDetailDO> selectPage(ProductputawayRequestDetailPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ProductputawayRequestDetailDO>()
.eqIfPresent(ProductputawayRequestDetailDO::getMasterId, reqVO.getMasterId())
.eqIfPresent(ProductputawayRequestDetailDO::getPackingNumber, reqVO.getPackingNumber())
.eqIfPresent(ProductputawayRequestDetailDO::getContainerNumber, reqVO.getContainerNumber())
.eqIfPresent(ProductputawayRequestDetailDO::getBatch, reqVO.getBatch())
@ -53,6 +55,7 @@ public interface ProductputawayRequestDetailMapper extends BaseMapperX<Productpu
default List<ProductputawayRequestDetailDO> selectList(ProductputawayRequestDetailExportReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<ProductputawayRequestDetailDO>()
.eqIfPresent(ProductputawayRequestDetailDO::getMasterId, reqVO.getMasterId())
.eqIfPresent(ProductputawayRequestDetailDO::getPackingNumber, reqVO.getPackingNumber())
.eqIfPresent(ProductputawayRequestDetailDO::getContainerNumber, reqVO.getContainerNumber())
.eqIfPresent(ProductputawayRequestDetailDO::getBatch, reqVO.getBatch())
@ -78,4 +81,8 @@ public interface ProductputawayRequestDetailMapper extends BaseMapperX<Productpu
.orderByDesc(ProductputawayRequestDetailDO::getId));
}
default List<ProductputawayRequestDetailDO> selectList(Long masterId) {
return selectList(new LambdaQueryWrapperX<ProductputawayRequestDetailDO>()
.eq(ProductputawayRequestDetailDO::getMasterId, masterId));
}
}

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productputawayRequest/ProductputawayRequestMainMapper.java

@ -7,6 +7,7 @@ import com.win.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainExportReqVO;
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainPageReqVO;
import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO;
import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestMainDO;
import com.win.module.wms.dal.dataobject.workstation.WorkstationDO;
import org.apache.ibatis.annotations.Mapper;
@ -81,4 +82,7 @@ public interface ProductputawayRequestMainMapper extends BaseMapperX<Productputa
.orderByDesc(ProductputawayRequestMainDO::getId));
}
default List<ProductputawayRequestMainDO> selectSeniorList(CustomConditions conditions) {
return selectList(QueryWrapperUtils.structure(conditions));
}
}

15
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainServiceImpl.java

@ -231,7 +231,7 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
List<IssueRequestImportErrorVO> errorList = new ArrayList<>();
datas.forEach(createReqVO -> {
IssueRequestMainDO mainDo = IssueRequestMainConvert.INSTANCE.convert(createReqVO);
String messageMain = validateIssueRequestMainImport(mainDo, businesstypeDO);
String messageMain = validateIssueRequestMainImport(mainDo);
List<IssueRequestDetailCreateReqVO> subList = createReqVO.getSubList();
List<IssueRequestDetailDO> subDOList = IssueRequestDetailConvert.INSTANCE.convertList03(subList);
// 是否有错误数据
@ -251,7 +251,6 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
if (flag) {
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_REQUEST.getCode());
mainDo.setNumber(number);
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
issueRequestMainMapper.insert(mainDo);
//增加操作记录
trendsApi.createTrends(mainDo.getId(), "issueRequestMain", "导入了发料申请", TrendsTypeEnum.CREATE);
@ -280,14 +279,13 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
* @param mainDo
* @return
*/
private String validateIssueRequestMainImport(IssueRequestMainDO mainDo, BusinesstypeDO businesstypeDO) {
private String validateIssueRequestMainImport(IssueRequestMainDO mainDo) {
StringBuilder message = new StringBuilder();
try {
this.validatorWorkshop(mainDo.getWorkshopCode());
} catch (Exception ex) {
message.append(ex.getMessage()).append(",");
}
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
mainDo.setRequestTime(LocalDateTime.now());
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("IssueRequest");
if (requestsettingDO == null) {
@ -297,8 +295,11 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
mainDo.setAutoCommit(requestsettingDO.getAutoCommit());
mainDo.setAutoExecute(requestsettingDO.getAutoExecute());
mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
RequestStatusState requestStatusState = new RequestStatusState();
requestStatusState.newObject(requestsettingDO.getAutoCommit(), requestsettingDO.getAutoAgree(), requestsettingDO.getAutoExecute());
mainDo.setStatus(requestStatusState.getState().getCode());
}
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("IssueRequest");
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("IssueRequest");
if (businesstypeDO == null) {
message.append("根据单据设置未查找到发料申请的相关业务类型");
} else {
@ -423,13 +424,15 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
private IssueRequestMainDO validateMainMethod(IssueRequestMainBaseVO baseVO){
IssueRequestMainDO issueRequestMainDO = IssueRequestMainConvert.INSTANCE.convert(baseVO);
this.validatorWorkshop(issueRequestMainDO.getWorkshopCode());
issueRequestMainDO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
issueRequestMainDO.setRequestTime(LocalDateTime.now());
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("IssueRequest");
issueRequestMainDO.setAutoAgree(requestsettingDO.getAutoAgree());
issueRequestMainDO.setAutoCommit(requestsettingDO.getAutoCommit());
issueRequestMainDO.setAutoExecute(requestsettingDO.getAutoExecute());
issueRequestMainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
RequestStatusState requestStatusState = new RequestStatusState();
requestStatusState.newObject(requestsettingDO.getAutoCommit(), requestsettingDO.getAutoAgree(), requestsettingDO.getAutoExecute());
issueRequestMainDO.setStatus(requestStatusState.getState().getCode());
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("IssueRequest");
issueRequestMainDO.setBusinessType(businesstypeDO.getCode());
issueRequestMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes());

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/location/LocationServiceImpl.java

@ -316,8 +316,8 @@ public class LocationServiceImpl implements LocationService {
JSONObject jsonObject = JSONUtil.parseObj(ruleRespVO.getConfiguration());
String locationCode = jsonObject.getStr("LocationCode");
//设置了库位直接返回
if (locationCode != null) {
return this.selectLocation(String.valueOf(locationCode));
if (locationCode != null && !locationCode.isEmpty()) {
return this.selectLocation(locationCode);
}
//增加过滤条件
QueryWrapper<LocationDO> queryWrapper = new QueryWrapper<>();

8
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainServiceImpl.java

@ -260,7 +260,6 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR
if (flag) {
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_REQUEST.getCode());
mainDo.setNumber(number);
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
mainDo.setRequestTime(LocalDateTime.now());
productionreturnRequestMainMapper.insert(mainDo);
for (ProductionreturnRequestDetailDO detailDO : subDOList) {
@ -286,7 +285,9 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR
}
String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCTION_RETURN_REQUEST.getCode());
mainDo.setNumber(number);
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "审批中"));
RequestStatusState requestStatusState = new RequestStatusState();
requestStatusState.newObject(requestsettingDO.getAutoCommit(), requestsettingDO.getAutoAgree(), requestsettingDO.getAutoExecute());
mainDo.setStatus(requestStatusState.getState().getCode());
mainDo.setDepartmentCode(userApi.getUser(getLoginUserId()).getDeptId().toString());
productionreturnRequestMainMapper.insert(mainDo);
// 拆解后 子表集合
@ -400,6 +401,9 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR
mainDo.setAutoCommit(requestsettingDO.getAutoCommit());
mainDo.setAutoExecute(requestsettingDO.getAutoExecute());
mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
RequestStatusState requestStatusState = new RequestStatusState();
requestStatusState.newObject(requestsettingDO.getAutoCommit(), requestsettingDO.getAutoAgree(), requestsettingDO.getAutoExecute());
mainDo.setStatus(requestStatusState.getState().getCode());
}
try {
ValidationUtils.validate(validator, mainDo);

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestDetailService.java

@ -80,4 +80,6 @@ public interface ProductputawayRequestDetailService {
* @return 分页列表
*/
PageResult<ProductputawayRequestDetailDO> getProductputawayRequestDetailSenior(CustomConditions conditions);
List<ProductputawayRequestDetailDO> selectList(Long id);
}

62
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestDetailServiceImpl.java

@ -7,17 +7,30 @@ import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequ
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestDetailPageReqVO;
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestDetailUpdateReqVO;
import com.win.module.wms.convert.productputawayRequest.ProductputawayRequestDetailConvert;
import com.win.module.wms.dal.dataobject.balance.BalanceDO;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
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.productionlineitem.ProductionlineitemDO;
import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestDetailDO;
import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestMainDO;
import com.win.module.wms.dal.mysql.productputawayRequest.ProductputawayRequestDetailMapper;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.location.LocationService;
import com.win.module.wms.util.JobUtils;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTPUTAWAY_REQUEST_DETAIL_NOT_EXISTS;
import static com.win.module.wms.enums.ErrorCodeConstants.QTY_ERRORR;
/**
* 制品上架申请子 Service 实现类
@ -28,6 +41,14 @@ import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTPUTAWAY_REQUEST
@Validated
public class ProductputawayRequestDetailServiceImpl implements ProductputawayRequestDetailService {
@Resource
private JobUtils jobUtils;
@Resource
private LocationService locationService;
@Resource
private ItembasicService itembasicService;
@Resource
private ProductputawayRequestMainService productputawayRequestMainService;
@Resource
private ProductputawayRequestDetailMapper productputawayRequestDetailMapper;
@ -35,6 +56,7 @@ public class ProductputawayRequestDetailServiceImpl implements ProductputawayReq
public Long createProductputawayRequestDetail(ProductputawayRequestDetailCreateReqVO createReqVO) {
// 插入
ProductputawayRequestDetailDO productputawayRequestDetail = ProductputawayRequestDetailConvert.INSTANCE.convert(createReqVO);
validatorDetail(productputawayRequestDetail);
productputawayRequestDetailMapper.insert(productputawayRequestDetail);
// 返回
return productputawayRequestDetail.getId();
@ -46,9 +68,44 @@ public class ProductputawayRequestDetailServiceImpl implements ProductputawayReq
validateProductputawayRequestDetailExists(updateReqVO.getId());
// 更新
ProductputawayRequestDetailDO updateObj = ProductputawayRequestDetailConvert.INSTANCE.convert(updateReqVO);
validatorDetail(updateObj);
productputawayRequestDetailMapper.updateById(updateObj);
}
//子表校验
private ProductputawayRequestDetailDO validatorDetail(ProductputawayRequestDetailDO productputawayRequestDetailDO) {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductPutawayRequest");
// 主表信息
// ProductputawayRequestMainDO productputawayRequestMainDO = productputawayRequestMainService.getProductputawayRequestMain(productputawayRequestDetailDO.getMasterId());
ItembasicDO itembasicDO = itembasicService.selectItembasic(productputawayRequestDetailDO.getItemCode());
productputawayRequestDetailDO.setItemDesc1(itembasicDO.getDesc1());
productputawayRequestDetailDO.setItemDesc2(itembasicDO.getDesc2());
productputawayRequestDetailDO.setItemName(itembasicDO.getName());
productputawayRequestDetailDO.setProjectCode(itembasicDO.getProject());
// 校验 库位
locationService.selectLocation(productputawayRequestDetailDO.getFromLocationCode());
// 校验 库位类型是否一致
jobUtils.ifInToLocationType(productputawayRequestDetailDO.getFromLocationCode(),businesstypeDO);
// 物品类型 与 业务设置类型 是否正确
jobUtils.selectItembasicExist(productputawayRequestDetailDO.getItemCode(),businesstypeDO);
String value = productputawayRequestDetailDO.getInventoryStatus();
String[] businessArray = value.split(",");
List<String> business = Arrays.asList(businessArray);
List<BalanceDO> balance = jobUtils.selectlocationReturnManagementAccuracy(productputawayRequestDetailDO.getItemCode(), productputawayRequestDetailDO.getPackingNumber(),
productputawayRequestDetailDO.getBatch(), productputawayRequestDetailDO.getFromLocationCode(), business);
BalanceDO blance1 = balance.get(0);
isqty(productputawayRequestDetailDO.getQty(),blance1.getQty());
return productputawayRequestDetailDO;
}
public String isqty(BigDecimal qty1, BigDecimal qty2) {
if(qty1.compareTo(qty2) < 0){
return "ture";
} else {
throw exception(QTY_ERRORR,qty2,qty1);
}
}
@Override
public void deleteProductputawayRequestDetail(Long id) {
// 校验存在
@ -88,4 +145,9 @@ public class ProductputawayRequestDetailServiceImpl implements ProductputawayReq
return productputawayRequestDetailMapper.selectSenior(conditions);
}
@Override
public List<ProductputawayRequestDetailDO> selectList(Long masterId) {
return productputawayRequestDetailMapper.selectList(masterId);
}
}

13
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainService.java

@ -97,4 +97,17 @@ public interface ProductputawayRequestMainService {
public List<ProductputawayImportErrorVO> importProductputawayRequestList(List<ProductputawayRequestMainCreateReqVO> datas, Integer mode, boolean updatePart);
List<ProductputawayRequestMainDO> getProductputawayRequestMainList(CustomConditions conditions);
Integer closeProductputawayRequestMain(Long id);
Integer reAddProductputawayRequestMain(Long id);
Integer submitProductputawayRequestMain(Long id);
Integer refusedProductputawayRequestMain(Long id);
Integer agreeProductputawayRequestMain(Long id);
Integer handleProductputawayRequestMain(Long id);
}

326
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainServiceImpl.java

@ -4,17 +4,22 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.exceptions.UtilException;
import cn.hutool.core.util.StrUtil;
import com.google.common.annotations.VisibleForTesting;
import com.win.framework.common.exception.ServiceException;
import com.win.framework.common.util.validation.ValidationUtils;
import com.win.framework.datapermission.core.util.DataPermissionUtils;
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.user.AdminUserApi;
import com.win.module.wms.controller.expectin.vo.ExpectinCreateReqVO;
import com.win.module.wms.controller.expectout.vo.ExpectoutCreateReqVO;
import com.win.module.wms.controller.issueRequest.vo.IssueRequestMainCreateReqVO;
import com.win.module.wms.controller.issueRequest.vo.IssueRequestMainUpdateReqVO;
import com.win.module.wms.controller.productreceiptRequest.vo.ProductreceiptRequestMainBaseVO;
import com.win.module.wms.controller.productreceiptRequest.vo.ProductreceiptRequestMainCreateReqVO;
import com.win.module.wms.controller.productscrapRequest.vo.ProductscrapRequestImportErrorVO;
import com.win.module.wms.controller.rule.vo.RuleRespVO;
import com.win.module.wms.convert.issueRequest.IssueRequestMainConvert;
import com.win.module.wms.convert.productreceiptRequest.ProductreceiptRequestMainConvert;
import com.win.module.wms.convert.productscrapRequest.ProductscrapRequestMainConvert;
@ -23,14 +28,25 @@ import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
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.jobsetting.JobsettingDO;
import com.win.module.wms.dal.dataobject.location.LocationDO;
import com.win.module.wms.dal.dataobject.productputawayJob.ProductputawayJobDetailDO;
import com.win.module.wms.dal.dataobject.productputawayJob.ProductputawayJobMainDO;
import com.win.module.wms.dal.dataobject.productreceiptRequest.ProductreceiptRequestMainDO;
import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestDetailDO;
import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestMainDO;
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO;
import com.win.module.wms.dal.mysql.productputawayJob.ProductputawayJobDetailMapper;
import com.win.module.wms.dal.mysql.productputawayJob.ProductputawayJobMainMapper;
import com.win.module.wms.dal.mysql.productputawayRequest.ProductputawayRequestDetailMapper;
import com.win.module.wms.enums.job.JobStatusEnum;
import com.win.module.wms.enums.request.RequestStatusEnum;
import com.win.module.wms.enums.request.RequestStatusState;
import com.win.module.wms.service.expectin.ExpectinService;
import com.win.module.wms.service.expectout.ExpectoutService;
import com.win.module.wms.service.jobsetting.JobsettingService;
import com.win.module.wms.service.requestsetting.RequestsettingService;
import com.win.module.wms.service.rule.RuleService;
import com.win.module.wms.util.*;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
@ -44,6 +60,7 @@ import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayReq
import com.win.module.wms.service.businesstype.*;
import com.win.module.wms.dal.mysql.productputawayRequest.ProductputawayRequestMainMapper;
import com.win.module.wms.enums.DictTypeConstants;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
@ -59,6 +76,7 @@ import java.util.Collection;
import java.util.List;
import com.win.module.wms.service.location.*;
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.*;
import com.win.module.wms.service.recordsetting.*;
import com.win.module.wms.service.itembasic.*;
@ -72,6 +90,20 @@ import com.win.module.wms.service.itembasic.*;
@Validated
public class ProductputawayRequestMainServiceImpl implements ProductputawayRequestMainService {
@Resource
private ExpectoutService expectoutService;
@Resource
private ExpectinService expectinService;
@Resource
private ProductputawayJobDetailMapper productputawayJobDetailMapper;
@Resource
private RuleService ruleService;
@Resource
private JobsettingService jobsettingService;
@Resource
private ProductputawayJobMainMapper productputawayJobMainMapper;
@Resource
private AdminUserApi userApi;
@Resource
private ProductputawayRequestMainMapper productputawayRequestMainMapper;
@Resource
@ -102,16 +134,16 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque
@Override
public Long createProductputawayRequestMain(ProductputawayRequestMainCreateReqVO createReqVO) {
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ProductPutawayRequest");
ProductputawayRequestMainDO productputawayRequestMainDO = validatorToCreate(createReqVO,requestsettingDO);
ProductputawayRequestMainDO productputawayRequestMainDO = validatorToCreate(createReqVO);
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(productputawayRequestMainDO.getStatus())) {
}
trendsApi.createTrends(requestsettingDO.getId(), "ProductputawayRequest", "增加了制品上架申请", TrendsTypeEnum.CREATE);
trendsApi.createTrends(productputawayRequestMainDO.getId(), "ProductputawayRequest", "增加了制品上架申请", TrendsTypeEnum.CREATE);
return productputawayRequestMainDO.getId();
}
private ProductputawayRequestMainDO validatorToCreate( ProductputawayRequestMainCreateReqVO createReqVO, RequestsettingDO requestsettingDO) {
private ProductputawayRequestMainDO validatorToCreate( ProductputawayRequestMainCreateReqVO createReqVO) {
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ProductPutawayRequest");
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductPutawayRequest");
ProductputawayRequestMainDO productputawayRequestMainDO = validateMainMethod(createReqVO,businesstypeDO,requestsettingDO);
//子表校验
@ -136,10 +168,13 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque
productputawayRequestDetailDO.setItemDesc2(itembasicDO.getDesc2());
productputawayRequestDetailDO.setItemName(itembasicDO.getName());
productputawayRequestDetailDO.setProjectCode(itembasicDO.getProject());
// 校验 库位
validatorLocation(productputawayRequestDetailDO.getFromLocationCode());
// 校验 库位类型是否一致
IfInToLocationType(productputawayRequestDetailDO.getFromLocationCode(),businesstypeDO);
DictDataRespDTO dictDataRespDTO = dictDataApi.selectDictValue(productputawayRequestDetailDO.getInventoryStatus());
String value = dictDataRespDTO.getValue();
// 物品类型 与 业务设置类型 是否正确
jobUtils.selectItembasicExist(productputawayRequestDetailDO.getItemCode(),businesstypeDO);
String value = productputawayRequestDetailDO.getInventoryStatus();
String[] businessArray = value.split(",");
List<String> business = Arrays.asList(businessArray);
List<BalanceDO> balance = selectlocationReturnManagement(productputawayRequestDetailDO.getItemCode(), productputawayRequestDetailDO.getPackingNumber(),
@ -150,12 +185,14 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque
}
BalanceDO blance1 = balance.get(0);
isqty(productputawayRequestDetailDO.getQty(),blance1.getQty());
}
private ProductputawayRequestMainDO validateMainMethod(ProductputawayRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO){
ProductputawayRequestMainDO productputawayRequestMainDO = ProductputawayRequestMainConvert.INSTANCE.convert(baseVO);
productputawayRequestMainDO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
RequestStatusState requestStatusState = new RequestStatusState();
requestStatusState.newObject(requestsettingDO.getAutoCommit(), requestsettingDO.getAutoAgree(), requestsettingDO.getAutoExecute());
productputawayRequestMainDO.setStatus(requestStatusState.getState().getCode());
productputawayRequestMainDO.setDepartmentCode(userApi.getUser(getLoginUserId()).getDeptId().toString());
productputawayRequestMainDO.setRequestTime(LocalDateTime.now());
productputawayRequestMainDO.setAutoAgree(requestsettingDO.getAutoAgree());
productputawayRequestMainDO.setAutoCommit(requestsettingDO.getAutoCommit());
@ -186,14 +223,14 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductPutawayRequest");
ProductputawayRequestMainDO productputawayRequestMainDO = validateMainMethod(updateReqVO,businesstypeDO,requestsettingDO);
//子表校验
List<ProductputawayRequestDetailUpdateReqVO> subList = updateReqVO.getSubList();
if(subList!=null) {
List<ProductputawayRequestDetailDO> subDOList = ProductputawayRequestDetailConvert.INSTANCE.convertList05(subList);
for (ProductputawayRequestDetailDO productputawayRequestDetailDO : subDOList) {
validateDetailMethod(productputawayRequestDetailDO, businesstypeDO, productputawayRequestMainDO);
}
productputawayRequestDetailMapper.updateBatch(subDOList);
}
// List<ProductputawayRequestDetailUpdateReqVO> subList = updateReqVO.getSubList();
// if(subList!=null) {
// List<ProductputawayRequestDetailDO> subDOList = ProductputawayRequestDetailConvert.INSTANCE.convertList05(subList);
// for (ProductputawayRequestDetailDO productputawayRequestDetailDO : subDOList) {
// validateDetailMethod(productputawayRequestDetailDO, businesstypeDO, productputawayRequestMainDO);
// }
// productputawayRequestDetailMapper.updateBatch(subDOList);
// }
productputawayRequestMainMapper.updateById(productputawayRequestMainDO);
return productputawayRequestMainDO;
}
@ -207,10 +244,12 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque
productputawayRequestMainMapper.deleteById(id);
}
private void validateProductputawayRequestMainExists(Long id) {
if (productputawayRequestMainMapper.selectById(id) == null) {
private ProductputawayRequestMainDO validateProductputawayRequestMainExists(Long id) {
ProductputawayRequestMainDO productputawayRequestMainDO = productputawayRequestMainMapper.selectById(id);
if ( productputawayRequestMainDO == null) {
throw exception(PRODUCTPUTAWAY_REQUEST_MAIN_NOT_EXISTS);
}
return productputawayRequestMainDO;
}
@Override
@ -243,15 +282,6 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque
return null;
}
private void validateproductputawayForCreateOrUpdate(Long id,String code,String workshopCode,String productionLineCode,String available) {
// 关闭数据权限,避免因为没有数据权限,查询不到数据,进而导致唯一校验不正确
DataPermissionUtils.executeIgnore(() -> {
// 校验code唯一
});
}
@VisibleForTesting
private void validateProductputawayExists(Long id) {
if (id == null) {
@ -263,16 +293,6 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque
}
}
public String Isuom(String uom1, String uom2) {
DictDataRespDTO dictDataRespDTO = dictDataApi.selectDictValue(uom1);
String value = dictDataRespDTO.getLabel();
if(uom2.equals(value)){
return "ture";
}else {
throw exception(UOM_ERRORR,uom2,value);
}
}
public String isqty(BigDecimal qty1, BigDecimal qty2) {
if(qty1.compareTo(qty2) < 0){
return "ture";
@ -283,7 +303,7 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque
private String validateProductputawayRequestMainImport(ProductputawayRequestMainDO mainDo, BusinesstypeDO businesstypeDO) {
StringBuilder message = new StringBuilder();
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
mainDo.setDepartmentCode(userApi.getUser(getLoginUserId()).getDeptId().toString());
mainDo.setRequestTime(LocalDateTime.now());
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ProductPutawayRequest");
if (requestsettingDO == null) {
@ -293,6 +313,9 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque
mainDo.setAutoCommit(requestsettingDO.getAutoCommit());
mainDo.setAutoExecute(requestsettingDO.getAutoExecute());
mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
RequestStatusState requestStatusState = new RequestStatusState();
requestStatusState.newObject(requestsettingDO.getAutoCommit(), requestsettingDO.getAutoAgree(), requestsettingDO.getAutoExecute());
mainDo.setStatus(requestStatusState.getState().getCode());
}
if (businesstypeDO == null) {
message.append("根据单据设置未查找到制品上架申请的相关业务类型");
@ -335,26 +358,33 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque
detailDo.setItemDesc2(item.getDesc2());
detailDo.setItemName(item.getName());
detailDo.setProjectCode(item.getProject());
try{
Isuom(item.getUom(),detailDo.getUom());
}catch (Exception ex) {
message.append(ex.getMessage()).append(",");
if (!item.getUom().equals(detailDo.getUom())) {
message.append("计量单位【").append(detailDo.getUom()).append("】错误,应该是【").append(item.getUom()).append("】").append(",");
}
} catch (Exception ex) {
message.append(ex.getMessage()).append(",");
}
// 物品类型 与 业务设置类型 是否正确
try {
jobUtils.selectItembasicExist(detailDo.getItemCode(),businesstypeDO);
} catch (Exception ex){
message.append(ex.getMessage()).append(",");
}
try{
// 校验 库位
validatorLocation(detailDo.getFromLocationCode());
detailDo.setInventoryStatus(detailDo.getInventoryStatus());
}catch (Exception ex) {
message.append(ex.getMessage()).append(",");
}
try{
// 校验来源库位
IfInToLocationType(detailDo.getFromLocationCode(),businesstypeDO);
DictDataRespDTO dictDataRespDTO = dictDataApi.selectDictLabel(detailDo.getInventoryStatus());
String value = dictDataRespDTO.getValue();
String value = detailDo.getInventoryStatus();
String[] businessArray = value.split(",");
List<String> business = Arrays.asList(businessArray);
try {
// 校验库存余额
List<BalanceDO> balance = selectlocationReturnManagement(detailDo.getItemCode(), detailDo.getPackingNumber(),
detailDo.getBatch(), detailDo.getFromLocationCode(), business);
try{
@ -406,7 +436,6 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque
if (flag) {
String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCT_PUTAWAY_REQUEST.getCode());
mainDo.setNumber(number);
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
productputawayRequestMainMapper.insert(mainDo);
for (ProductputawayRequestDetailDO detailDO : subDOList) {
detailDO.setMasterId(mainDo.getId());
@ -418,4 +447,211 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque
return errorList;
}
@Override
public List<ProductputawayRequestMainDO> getProductputawayRequestMainList(CustomConditions conditions) {
return productputawayRequestMainMapper.selectSeniorList(conditions);
}
@Override
@Transactional
public Integer closeProductputawayRequestMain(Long id) {
ProductputawayRequestMainDO mainDO = validateProductputawayRequestMainExists(id);
// 校验存在存在下级单据
Long count = productputawayJobMainMapper.selectByRequestNumber(mainDO.getNumber());
if(count > 0) {
throw new ServiceException(PRODUCTPUTAWAY_REQUEST_JOB_EXISTS);
}
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.close();
if(!flag) {
throw new ServiceException(PRODUCTPUTAWAY_REQUEST_MAIN_STATUS_ERROR);
}
mainDO.setStatus(requestStatusState.getState().getCode());
//增加操作记录
trendsApi.createTrends(id, "productputawayRequest", "关闭了制品上架申请", TrendsTypeEnum.UPDATE);
return productputawayRequestMainMapper.updateById(mainDO);
}
@Override
@Transactional
public Integer reAddProductputawayRequestMain(Long id) {
ProductputawayRequestMainDO mainDO = validateProductputawayRequestMainExists(id);
// 校验存在存在下级单据
Long count = productputawayJobMainMapper.selectByRequestNumber(mainDO.getNumber());
if(count > 0) {
throw new ServiceException(PRODUCTPUTAWAY_REQUEST_JOB_EXISTS);
}
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.reAdd();
if(!flag) {
throw new ServiceException(PRODUCTPUTAWAY_REQUEST_MAIN_STATUS_ERROR);
}
mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录
trendsApi.createTrends(id, "productputawayRequest", "打开了制品上架申请", TrendsTypeEnum.UPDATE);
return productputawayRequestMainMapper.updateById(mainDO);
}
@Override
@Transactional
public Integer submitProductputawayRequestMain(Long id) {
ProductputawayRequestMainDO mainDO = validateProductputawayRequestMainExists(id);
// 校验存在存在下级单据
Long count = productputawayJobMainMapper.selectByRequestNumber(mainDO.getNumber());
if(count > 0) {
throw new ServiceException(PRODUCTPUTAWAY_REQUEST_JOB_EXISTS);
}
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.submit(mainDO.getAutoAgree(), mainDO.getAutoExecute());
if(!flag) {
throw new ServiceException(PRODUCTPUTAWAY_REQUEST_MAIN_STATUS_ERROR);
}
mainDO.setStatus(requestStatusState.getState().getCode());
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) {
this.generateJob(mainDO, productputawayRequestDetailMapper.selectList(mainDO.getId()));
}
trendsApi.createTrends(id, "productputawayRequest", "提交了制品上架申请", TrendsTypeEnum.UPDATE);
return productputawayRequestMainMapper.updateById(mainDO);
}
@Override
@Transactional
public Integer refusedProductputawayRequestMain(Long id) {
// 校验存在
ProductputawayRequestMainDO mainDO = validateProductputawayRequestMainExists(id);
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.refused();
if(!flag) {
throw new ServiceException(PRODUCTPUTAWAY_REQUEST_MAIN_STATUS_ERROR);
}
mainDO.setStatus(requestStatusState.getState().getCode());
trendsApi.createTrends(id, "productputawayRequest", "驳回了制品上架申请", TrendsTypeEnum.UPDATE);
return productputawayRequestMainMapper.updateById(mainDO);
}
@Override
@Transactional
public Integer agreeProductputawayRequestMain(Long id) {
// 校验存在
ProductputawayRequestMainDO mainDO = validateProductputawayRequestMainExists(id);
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.agree(mainDO.getAutoAgree());
if(!flag) {
throw new ServiceException(PRODUCTPUTAWAY_REQUEST_MAIN_STATUS_ERROR);
}
mainDO.setStatus(requestStatusState.getState().getCode());
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) {
this.generateJob(mainDO, productputawayRequestDetailMapper.selectList(mainDO.getId()));
}
trendsApi.createTrends(id, "productputawayRequest", "审批通过了制品上架申请", TrendsTypeEnum.UPDATE);
return productputawayRequestMainMapper.updateById(mainDO);
}
@Override
@Transactional
public Integer handleProductputawayRequestMain(Long id) {
// 校验存在
ProductputawayRequestMainDO mainDO = validateProductputawayRequestMainExists(id);
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.handle();
if(!flag) {
throw new ServiceException(PRODUCTPUTAWAY_REQUEST_MAIN_STATUS_ERROR);
}
mainDO.setStatus(requestStatusState.getState().getCode());
//调用执行方法
this.generateJob(mainDO, productputawayRequestDetailMapper.selectList(mainDO.getId()));
trendsApi.createTrends(id, "productputawayRequest", "执行了制品上架申请", TrendsTypeEnum.UPDATE);
return productputawayRequestMainMapper.updateById(mainDO);
}
/**
* 创建任务 OR 创建记录
* @param mainDO
* @param detailDOList
*/
private void generateJob(ProductputawayRequestMainDO mainDO, List<ProductputawayRequestDetailDO> detailDOList) {
//跳过任务直接生成记录
if("TRUE".equals(mainDO.getDirectCreateRecord())) {
// TODO: 发料申请 跳过任务直接生成记录 未做!!
}
// 任务主表信息
ProductputawayJobMainDO productputawayJobMainDO = new ProductputawayJobMainDO();
BeanUtils.copyProperties(mainDO,productputawayJobMainDO);
String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCT_PUTAWAY_JOB.getCode());
productputawayJobMainDO.setNumber(number);
productputawayJobMainDO.setRequestNumber(mainDO.getNumber());
productputawayJobMainDO.setCompletetime(LocalDateTime.now());
productputawayJobMainDO.setRequestDueTime(mainDO.getDueTime());
productputawayJobMainDO.setStatus(JobStatusEnum.PENDING.getCode());
productputawayJobMainDO.setId(null);
productputawayJobMainDO.setCreateTime(null);
productputawayJobMainDO.setCreator(null);
productputawayJobMainDO.setUpdateTime(null);
productputawayJobMainDO.setUpdater(null);
// 获取任务单据设置
JobsettingDO jobsettingDO = jobsettingService.selectJobsettingExist("ProductPutawayJob");
productputawayJobMainDO.setAutoComplete(jobsettingDO.getAutoComplete());
productputawayJobMainDO.setAllowModifyLocation(jobsettingDO.getAllowModifyLocation());
productputawayJobMainDO.setAllowModifyQty(jobsettingDO.getAllowModifyQty());
productputawayJobMainDO.setAllowBiggerQty(jobsettingDO.getAllowBiggerQty());
productputawayJobMainDO.setAllowSmallerQty(jobsettingDO.getAllowSmallerQty());
productputawayJobMainDO.setAllowModifyInventoryStatus(jobsettingDO.getAllowModifyInventoryStatus());
productputawayJobMainDO.setAllowContinuousScanning(jobsettingDO.getAllowContinuousScanning());
productputawayJobMainDO.setAllowPartialComplete(jobsettingDO.getAllowPartialComplete());
productputawayJobMainDO.setAllowModifyPackingNumber(jobsettingDO.getAllowModifyPackingNumber());
productputawayJobMainDO.setAllowModifyBatch(jobsettingDO.getAllowModifyBach());
//增加业务类型
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductPutawayJob");
productputawayJobMainDO.setInInventoryStatuses(businesstypeDO.getInInventoryStatuses());
productputawayJobMainDO.setOutInventoryStatuses(businesstypeDO.getOutInventoryStatuses());
productputawayJobMainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes());
productputawayJobMainDO.setToAreaCodes(businesstypeDO.getInAreaCodes());
productputawayJobMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes());
productputawayJobMainDO.setToLocationTypes(businesstypeDO.getInLocationTypes());
productputawayJobMainDO.setBusinessType(businesstypeDO.getCode());
productputawayJobMainMapper.insert(productputawayJobMainDO);
List<ProductputawayJobDetailDO> productputawayJobDetailDOList = new ArrayList<>();
List<ExpectinCreateReqVO> expectinCreateReqVOList = new ArrayList<>();
List<ExpectoutCreateReqVO> expectoutCreateReqVOList = new ArrayList<>();
for(ProductputawayRequestDetailDO productputawayRequestDetailDO : detailDOList) {
ProductputawayJobDetailDO productputawayJobDetailDO = new ProductputawayJobDetailDO();
BeanUtils.copyProperties(productputawayRequestDetailDO,productputawayJobDetailDO);
// 获取上架策略 并赋值 to库位
RuleRespVO ruleRespVO = ruleService.grounding(null,null, productputawayJobDetailDO.getItemCode(),null,null,null,null,null,null);
LocationDO locationDO = locationService.inspectLocation(ruleRespVO, productputawayJobDetailDO.getItemCode(), productputawayJobDetailDO.getBatch(), productputawayJobDetailDO.getInventoryStatus());
productputawayJobDetailDO.setToLocationCode(locationDO.getCode());
productputawayJobDetailDO.setNumber(mainDO.getNumber());
productputawayJobDetailDO.setMasterId(mainDO.getId());
productputawayJobDetailDO.setId(null);
productputawayJobDetailDO.setCreateTime(null);
productputawayJobDetailDO.setCreator(null);
productputawayJobDetailDO.setUpdateTime(null);
productputawayJobDetailDO.setUpdater(null);
productputawayJobDetailDOList.add(productputawayJobDetailDO);
//预计入
ExpectinCreateReqVO expectinCreateReqVO = new ExpectinCreateReqVO();
BeanUtils.copyProperties(productputawayJobDetailDO, expectinCreateReqVO);
expectinCreateReqVO.setJobNumber(number);
expectinCreateReqVO.setBusinessType(mainDO.getBusinessType());
expectinCreateReqVO.setLocationCode(productputawayJobDetailDO.getToLocationCode());
expectinCreateReqVO.setOwnerCode(productputawayJobDetailDO.getToOwnerCode());
expectinCreateReqVOList.add(expectinCreateReqVO);
//预计出
ExpectoutCreateReqVO expectoutCreateReqVO = new ExpectoutCreateReqVO();
BeanUtils.copyProperties(productputawayJobDetailDO, expectoutCreateReqVO);
expectoutCreateReqVO.setJobNumber(number);
expectoutCreateReqVO.setBusinessType(mainDO.getBusinessType());
expectoutCreateReqVO.setLocationCode(productputawayJobDetailDO.getFromLocationCode());
expectoutCreateReqVO.setOwnerCode(productputawayJobDetailDO.getFromOwnerCode());
expectoutCreateReqVOList.add(expectoutCreateReqVO);
}
productputawayJobDetailMapper.insertBatch(productputawayJobDetailDOList);
//增加预计入
expectinService.createExpectin(expectinCreateReqVOList);
//增加预计出
expectoutService.createExpectout(expectoutCreateReqVOList);
trendsApi.createTrends(mainDO.getId(), "productputawayJob", "制品上架申请生成制品上架任务", TrendsTypeEnum.CREATE);
}
}

9
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRequest/ProductreceiptRequestMainServiceImpl.java

@ -213,7 +213,6 @@ public class ProductreceiptRequestMainServiceImpl implements ProductreceiptReque
private ProductreceiptRequestMainDO validateMainMethod(ProductreceiptRequestMainBaseVO baseVO){
ProductreceiptRequestMainDO mainDo = ProductreceiptRequestMainConvert.INSTANCE.convert(baseVO);
// 赋值
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
mainDo.setRequestTime(LocalDateTime.now());
// 校验 车间
workshopService.selectWorkshopExist(mainDo.getWorkshopCode());
@ -229,6 +228,9 @@ public class ProductreceiptRequestMainServiceImpl implements ProductreceiptReque
mainDo.setAutoCommit(requestsettingDO.getAutoCommit());
mainDo.setAutoExecute(requestsettingDO.getAutoExecute());
mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
RequestStatusState requestStatusState = new RequestStatusState();
requestStatusState.newObject(requestsettingDO.getAutoCommit(), requestsettingDO.getAutoAgree(), requestsettingDO.getAutoExecute());
mainDo.setStatus(requestStatusState.getState().getCode());
}
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductReceiptRequest");
if (businesstypeDO == null) {
@ -331,7 +333,6 @@ public class ProductreceiptRequestMainServiceImpl implements ProductreceiptReque
private String validateProductreceiptRequestMainImport(ProductreceiptRequestMainDO mainDo) {
StringBuilder message = new StringBuilder();
// 赋值
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
mainDo.setRequestTime(LocalDateTime.now());
// 校验 车间
try {
@ -359,6 +360,9 @@ public class ProductreceiptRequestMainServiceImpl implements ProductreceiptReque
mainDo.setAutoCommit(requestsettingDO.getAutoCommit());
mainDo.setAutoExecute(requestsettingDO.getAutoExecute());
mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
RequestStatusState requestStatusState = new RequestStatusState();
requestStatusState.newObject(requestsettingDO.getAutoCommit(), requestsettingDO.getAutoAgree(), requestsettingDO.getAutoExecute());
mainDo.setStatus(requestStatusState.getState().getCode());
}
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductReceiptRequest");
if (businesstypeDO == null) {
@ -481,7 +485,6 @@ public class ProductreceiptRequestMainServiceImpl implements ProductreceiptReque
if (flag) {
String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCT_RECEIPT_REQUEST.getCode());
mainDo.setNumber(number);
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
productreceiptRequestMainMapper.insert(mainDo);
for (ProductreceiptRequestDetailDO detailDO : subDOList) {
detailDO.setMasterId(mainDo.getId());

Loading…
Cancel
Save