Browse Source

Merge remote-tracking branch 'origin/master'

master
chenfang 2 years ago
parent
commit
bcbc66d406
  1. 2
      win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/serialNumber/RuleCodeEnum.java
  2. 3
      win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java
  3. 23
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/IssueRequestMainController.java
  4. 7
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/packageMassage/PackageController.java
  5. 116
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/ProductionreturnRequestMainController.java
  6. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestDetailBaseVO.java
  7. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestDetailPageReqVO.java
  8. 117
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestMainExcelVO.java
  9. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestMainUpdateReqVO.java
  10. 8
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/supplierdeliverRequest/SupplierdeliverRequestMainController.java
  11. 22
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/supplierdeliverRequest/vo/SupplierdeliverRequestDetailBaseVO.java
  12. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/supplierdeliverRequest/vo/SupplierdeliverRequestDetailPageReqVO.java
  13. 10
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionreturnRequest/ProductionreturnRequestMainConvert.java
  14. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/packageMassage/PackageDO.java
  15. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/packageMassage/PackageMapper.java
  16. 7
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnJob/ProductionreturnJobMainMapper.java
  17. 7
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnRequest/ProductionreturnRequestDetailMapper.java
  18. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnRequest/ProductionreturnRequestMainMapper.java
  19. 1
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/supplierdeliverRequest/SupplierdeliverRequestDetailMapper.java
  20. 20
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueJob/IssueJobMainServiceImpl.java
  21. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainService.java
  22. 25
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainServiceImpl.java
  23. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/packageMassage/PackageService.java
  24. 49
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/packageMassage/PackageServiceImpl.java
  25. 18
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreceiptJob/ProductionreceiptJobMainServiceImpl.java
  26. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestDetailService.java
  27. 73
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestDetailServiceImpl.java
  28. 14
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainService.java
  29. 248
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainServiceImpl.java
  30. 7
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainServiceImpl.java
  31. 18
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/repleinshJob/RepleinshJobMainServiceImpl.java
  32. 76
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRequest/SupplierdeliverRequestDetailServiceImpl.java
  33. 9
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRequest/SupplierdeliverRequestMainService.java
  34. 25
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRequest/SupplierdeliverRequestMainServiceImpl.java
  35. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/util/JobUtils.java

2
win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/serialNumber/RuleCodeEnum.java

@ -141,6 +141,8 @@ public enum RuleCodeEnum {
TRANSFER_LOG("TransferLog"), // 库存转移日志
PACKING_NUMBER("PackingNumber"), // 包装号
CUSTOMER_DELIVER_NUMBER("CustomerDeliverNumber"), // 客户发货单号
LABEL_NUMBER("LabelNumber"), // 标签流水号
;
private final String code;

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

@ -611,6 +611,9 @@ public interface ErrorCodeConstants {
//生产退料申请子ErrorCode
ErrorCode PRODUCTIONRETURN_REQUEST_DETAIL_NOT_EXISTS = new ErrorCode(1_000_097_001, "生产退料申请子不存在");
ErrorCode PRODUCTIONRETURN_REQUEST_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_000_097_002, "导入生产退料申请不能为空");
ErrorCode PRODUCTIONRETURN_REQUEST_JOB_EXISTS = new ErrorCode(1_000_097_003, "生产退料申请存在任务单");
ErrorCode PRODUCTIONRETURN_REQUEST_MAIN_ERROR = new ErrorCode(1_000_097_004, "生产退料申请状态错误");
//生产退料申请主ErrorCode
ErrorCode PRODUCTIONRETURN_JOB_MAIN_NOT_EXISTS = new ErrorCode(1_000_098_000, "生产退料任务主不存在");
//生产退料任务子ErrorCode

23
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/IssueRequestMainController.java

@ -7,6 +7,7 @@ import com.win.framework.excel.core.util.ConvertUtil;
import com.win.module.system.api.user.AdminUserApi;
import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.wms.convert.issueRequest.IssueRequestDetailConvert;
import com.win.module.wms.dal.dataobject.issueJob.IssueJobDetailDO;
import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestDetailDO;
import com.win.module.wms.dal.dataobject.productionline.ProductionlineDO;
import com.win.module.wms.dal.dataobject.workshop.WorkshopDO;
@ -29,6 +30,7 @@ import io.swagger.v3.oas.annotations.Operation;
import javax.validation.*;
import javax.servlet.http.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.*;
@ -310,6 +312,8 @@ public class IssueRequestMainController {
Map<String,Object> mapWorkstation = new HashMap<>();
mapWorkstation.put("value", workstationItem.getCode());
mapWorkstation.put("label", workstationItem.getName());
mapWorkstation.put("rawLocationCode", workstationItem.getRawLocationCode());
mapWorkstation.put("fgLocationCode", workstationItem.getFgLocationCode());
workstationCodeList.add(mapWorkstation);
});
if (workstationCodeList != null && workstationCodeList.size() > 0) {
@ -318,6 +322,8 @@ public class IssueRequestMainController {
Map<String,Object> mapworkstationNull = new HashMap<>();
mapworkstationNull.put("value", "");
mapworkstationNull.put("label", "");
mapworkstationNull.put("rawLocationCode", "");
mapworkstationNull.put("fgLocationCode", "");
List WorkstationListNUll = new ArrayList();
WorkstationListNUll.add(mapworkstationNull);
mapProductionline.put("children", WorkstationListNUll);
@ -333,6 +339,8 @@ public class IssueRequestMainController {
Map<String,Object> workstationMapNull = new HashMap<>();
workstationMapNull.put("value", "");
workstationMapNull.put("label", "");
workstationMapNull.put("rawLocationCode", "");
workstationMapNull.put("fgLocationCode", "");
workstationListNUll.add(workstationMapNull);
productionlineMapNull.put("value", "");
@ -365,4 +373,19 @@ public class IssueRequestMainController {
result.setSubList(vos);
return success(result);
}
/**
* PDA 获取库存推荐
* @param itemCode
* @param qty
* @return
*/
@GetMapping("/getBalanceByBatchOffShelf")
@Operation(summary = "获取库存推荐")
@Parameter(name = "id", description = "编号", required = true)
public CommonResult<List<IssueJobDetailDO>> getBalanceByBatchOffShelf(@RequestParam("itemCode") String itemCode,
@RequestParam("qty") BigDecimal qty) {
List<IssueJobDetailDO> issueJobDetailDOList = issueRequestMainService.getBalanceByBatchOffShelf(itemCode, qty);
return success(issueJobDetailDOList);
}
}

7
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/packageMassage/PackageController.java

@ -48,6 +48,13 @@ public class PackageController {
return success(packageService.createPackage(createReqVO));
}
@PostMapping("/createLabel")
@Operation(summary = "创建包装标签")
@PreAuthorize("@ss.hasPermission('wms:package:create')")
public CommonResult<PackageDO> createPackageLabel(@Valid @RequestBody PackageCreateReqVO createReqVO) {
return success(packageService.createPackageLabel(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新包装")
@PreAuthorize("@ss.hasPermission('wms:package:update')")

116
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/ProductionreturnRequestMainController.java

@ -9,13 +9,18 @@ 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.productionreturnRequest.vo.*;
import com.win.module.wms.convert.issueRequest.IssueRequestMainConvert;
import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestDetailConvert;
import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestMainConvert;
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.productionreturnRequest.ProductionreturnRequestDetailDO;
import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestMainDO;
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO;
import com.win.module.wms.service.packageMassage.PackageService;
import com.win.module.wms.service.productionreturnRequest.ProductionreturnRequestDetailService;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.productionreturnRequest.ProductionreturnRequestMainService;
@ -103,6 +108,48 @@ public class ProductionreturnRequestMainController {
return success(ProductionreturnRequestMainConvert.INSTANCE.convertPage(pageResult));
}
@GetMapping("/export-excel-senior")
@Operation(summary = "导出生产计划主 Excel")
@PreAuthorize("@ss.hasPermission('wms:productionreturn-request-main:export')")
@OperateLog(type = EXPORT)
public void exportProductionreturnRequestMainSeniorExcel(@Valid @RequestBody CustomConditions conditions, HttpServletResponse response) throws IOException {
List<ProductionreturnRequestMainDO> list = productionreturnRequestMainService.getProductionreturnRequestMainList(conditions);
//组装vo
Map<Integer, String[]> mapDropDown = new HashMap<>();
List<ProductionreturnRequestMainExcelVO> 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", "生产退料申请", ProductionreturnRequestMainExcelVO.class, resultList, mapDropDown);
}
private List<ProductionreturnRequestMainExcelVO> getExcelVo(List<ProductionreturnRequestMainDO> list, Map<Integer, String[]> mapDropDown) {
String[] locationTypes = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.LOCATION_TYPE);
mapDropDown.put(8, locationTypes);
mapDropDown.put(9, locationTypes);
String[] available = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE);
mapDropDown.put(14, available);
mapDropDown.put(15, available);
mapDropDown.put(16, available);
mapDropDown.put(17, available);
String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS);
mapDropDown.put(24, inventoryStatus);
String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM);
mapDropDown.put(35, uom);
List<ProductionreturnRequestMainExcelVO> resultList = new ArrayList<>();
// 导出
for(ProductionreturnRequestMainDO mainDO : list) {
List<ProductionreturnRequestDetailDO> subList = productionreturnRequestDetailService.selectList(mainDO.getId());
for(ProductionreturnRequestDetailDO detailDO : subList) {
ProductionreturnRequestMainExcelVO vo = ProductionreturnRequestMainConvert.INSTANCE.convert(mainDO, detailDO);
resultList.add(vo);
}
}
return resultList;
}
@GetMapping("/export-excel")
@Operation(summary = "导出生产退料申请主 Excel")
@PreAuthorize("@ss.hasPermission('wms:productionreturn-request-main:export')")
@ -110,14 +157,15 @@ public class ProductionreturnRequestMainController {
public void exportProductionreturnRequestMainExcel(@Valid ProductionreturnRequestMainExportReqVO exportReqVO,
HttpServletResponse response) throws IOException {
List<ProductionreturnRequestMainDO> list = productionreturnRequestMainService.getProductionreturnRequestMainList(exportReqVO);
// 导出 Excel
List<ProductionreturnRequestMainExcelVO> datas = ProductionreturnRequestMainConvert.INSTANCE.convertList02(list);
for(ProductionreturnRequestMainExcelVO vo : datas) {
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator()));
//组装vo
Map<Integer, String[]> mapDropDown = new HashMap<>();
List<ProductionreturnRequestMainExcelVO> resultList = this.getExcelVo(list, mapDropDown);
resultList.forEach(item -> {
//后端创建个字段作为前端展示的虚拟字段
vo.setCreator(user.getNickname());
}
ExcelUtils.write(response, "生产退料申请主.xls", "数据", ProductionreturnRequestMainExcelVO.class, datas);
item.setCreator(userApi.getUser(Long.valueOf(item.getCreator())).getNickname());
item.setUpdater(userApi.getUser(Long.valueOf(item.getUpdater())).getNickname());
});
ExcelUtils.write(response, "生产退料申请.xls", "生产退料申请", ProductionreturnRequestMainExcelVO.class, resultList);
}
@PostMapping("/senior")
@ -215,4 +263,58 @@ public class ProductionreturnRequestMainController {
}
return success(returnMap);
}
@PutMapping("/close")
@Operation(summary = "关闭")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:productionreturn-request-main:close')")
public CommonResult<Boolean> closeProductionreturnRequestMain(@RequestParam("id") Long id) {
Integer count = productionreturnRequestMainService.closeProductionreturnRequestMain(id);
return success(count > 0);
}
@PutMapping("/reAdd")
@Operation(summary = "重新添加")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:productionreturn-request-main:reAdd')")
public CommonResult<Boolean> reAddProductionreturnRequestMain(@RequestParam("id") Long id) {
Integer count = productionreturnRequestMainService.reAddProductionreturnRequestMain(id);
return success(count > 0);
}
@PutMapping("/submit")
@Operation(summary = "提交审批")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:productionreturn-request-main:submit')")
public CommonResult<Boolean> submitProductionreturnRequestMain(@RequestParam("id") Long id) {
Integer count = productionreturnRequestMainService.submitProductionreturnRequestMain(id);
return success(count > 0);
}
@PutMapping("/refused")
@Operation(summary = "驳回")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:productionreturn-request-main:refused')")
public CommonResult<Boolean> refusedProductionreturnRequestMain(@RequestParam("id") Long id) {
Integer count = productionreturnRequestMainService.refusedProductionreturnRequestMain(id);
return success(count > 0);
}
@PutMapping("/agree")
@Operation(summary = "审批通过")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:productionreturn-request-main:agree')")
public CommonResult<Boolean> agreeProductionreturnRequestMain(@RequestParam("id") Long id) {
Integer count = productionreturnRequestMainService.agreeProductionreturnRequestMain(id);
return success(count > 0);
}
@PutMapping("/handle")
@Operation(summary = "处理")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:productionreturn-request-main:handle')")
public CommonResult<Boolean> handleProductionreturnRequestMain(@RequestParam("id") Long id) {
Integer count = productionreturnRequestMainService.handleProductionreturnRequestMain(id);
return success(count > 0);
}
}

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestDetailBaseVO.java

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

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestDetailPageReqVO.java

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

117
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestMainExcelVO.java

@ -1,5 +1,8 @@
package com.win.module.wms.controller.productionreturnRequest.vo;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.enums.job.JobStatusConverter;
import com.win.module.wms.enums.request.RequestStatusConverter;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
@ -24,15 +27,6 @@ public class ProductionreturnRequestMainExcelVO {
@ExcelProperty("车间代码")
private String workshopCode;
@ExcelProperty("从仓库代码")
private String fromWarehouseCode;
@ExcelProperty("从库位类型范围")
private String fromLocationTypes;
@ExcelProperty("从库区代码范围")
private String fromAreaCodes;
@ExcelProperty("单据号")
private String number;
@ -42,12 +36,6 @@ public class ProductionreturnRequestMainExcelVO {
@ExcelProperty("备注")
private String remark;
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@ExcelProperty("创建者用户名")
private String creator;
@ExcelProperty("申请时间")
private LocalDateTime requestTime;
@ -57,36 +45,101 @@ public class ProductionreturnRequestMainExcelVO {
@ExcelProperty("部门")
private String departmentCode;
@ExcelProperty(value = "状态", converter = DictConvert.class)
@DictFormat("request_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
@ExcelProperty(value = "状态", converter = RequestStatusConverter.class)
private String status;
@ExcelProperty("最后更新时间")
private LocalDateTime updateTime;
@ExcelProperty("最后更新者用户名")
private String updater;
@ExcelProperty("到仓库代码")
private String toWarehouseCode;
@ExcelProperty(value = "从库位类型范围", converter = DictConvert.class)
@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("从库区代码范围")
private String fromAreaCodes;
@ExcelProperty("到库区代码范围")
private String toAreaCodes;
@ExcelProperty("从仓库代码")
private String fromWarehouseCode;
@ExcelProperty("到仓库代码")
private String toWarehouseCode;
@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 LocalDateTime createTime;
@ExcelProperty("创建者用户名")
private String creator;
@ExcelProperty("最后更新时间")
private LocalDateTime updateTime;
@ExcelProperty("最后更新者用户名")
private String updater;
// 子表数据
@ExcelProperty("生产线代码")
private String productionLineCode;
@ExcelProperty("工位代码")
private String workStationCode;
@ExcelProperty(value = "库存状态", converter = DictConvert.class)
@DictFormat(DictTypeConstants.INVENTORY_STATUS)
private String inventoryStatus;
@ExcelProperty("包装号")
private String packingNumber;
@ExcelProperty("器具号")
private String containerNumber;
@ExcelProperty("批次")
private String batch;
@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 String qty;
@ExcelProperty(value = "计量单位", converter = DictConvert.class)
@DictFormat(DictTypeConstants.UOM)
private String uom;
@ExcelProperty("从货主代码")
private String fromOwnerCode;
@ExcelProperty("到货主代码")
private String toOwnerCode;
}

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestMainUpdateReqVO.java

@ -8,5 +8,6 @@ import lombok.*;
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ProductionreturnRequestMainUpdateReqVO extends ProductionreturnRequestMainBaseVO {
@Schema(description = "是否合格退料")
private Boolean isOK;
}

8
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/supplierdeliverRequest/SupplierdeliverRequestMainController.java

@ -209,4 +209,12 @@ public class SupplierdeliverRequestMainController {
return success(count > 0);
}
@PostMapping("/genLabel")
@Operation(summary = "生成标签")
@Parameter(name = "id", description = "编号", required = true)
public CommonResult<Boolean> genLabel(@RequestParam("id") String id) {
Integer count = supplierdeliverRequestMainService.genLabel(id);
return success(count > 0);
}
}

22
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/supplierdeliverRequest/vo/SupplierdeliverRequestDetailBaseVO.java

@ -34,34 +34,34 @@ public class SupplierdeliverRequestDetailBaseVO {
private String altBatch;
@Schema(description = "到货日期", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "到货日期不能为空")
// @NotNull(message = "到货日期不能为空")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime arriveDate;
@Schema(description = "生产日期", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "生产日期不能为空")
// @NotNull(message = "生产日期不能为空")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime produceDate;
@Schema(description = "过期日期", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "过期日期不能为空")
// @NotNull(message = "过期日期不能为空")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime expireDate;
@Schema(description = "订单号", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "订单号不能为空")
// @NotNull(message = "订单号不能为空")
private String poNumber;
@Schema(description = "订单行", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "订单行不能为空")
// @NotNull(message = "订单行不能为空")
private String poLine;
@Schema(description = "标包数量", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "标包数量不能为空")
// @NotNull(message = "标包数量不能为空")
private BigDecimal stdPackQty;
@Schema(description = "标包单位", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "标包单位不能为空")
// @NotNull(message = "标包单位不能为空")
private String stdPackUnit;
@Schema(description = "供应商计量数量")
@ -71,14 +71,14 @@ public class SupplierdeliverRequestDetailBaseVO {
private String supplierPackUnit;
@Schema(description = "转换率", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "转换率不能为空")
// @NotNull(message = "转换率不能为空")
private BigDecimal convertRate;
@Schema(description = "单据号")
private String number;
@Schema(description = "物品代码", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "物品代码不能为空")
// @NotNull(message = "物品代码不能为空")
private String itemCode;
@Schema(description = "备注")
@ -121,5 +121,9 @@ public class SupplierdeliverRequestDetailBaseVO {
@Schema(description = "到货主代码")
private String toOwnerCode;
/**
* 主表ID
*/
private Long masterId;
}

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/supplierdeliverRequest/vo/SupplierdeliverRequestDetailPageReqVO.java

@ -102,5 +102,9 @@ public class SupplierdeliverRequestDetailPageReqVO extends PageParam {
@Schema(description = "到货主代码")
private String toOwnerCode;
/**
* 主表ID
*/
private Long masterId;
}

10
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionreturnRequest/ProductionreturnRequestMainConvert.java

@ -35,4 +35,14 @@ public interface ProductionreturnRequestMainConvert {
@Mapping(source = "createReqVO.number", target = "number"),
})
ProductionreturnRequestImportErrorVO convert(ProductionreturnRequestMainCreateReqVO createReqVO, ProductionreturnRequestDetailDO 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"),
})
ProductionreturnRequestMainExcelVO convert(ProductionreturnRequestMainDO mainDO, ProductionreturnRequestDetailDO detailDO);
}

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/packageMassage/PackageDO.java

@ -136,7 +136,7 @@ public class PackageDO{
/**
* 采购计划单号
*/
private String rpNumber;
private String ppNumber;
/**
* 发货单号
*/

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/packageMassage/PackageMapper.java

@ -66,7 +66,7 @@ public interface PackageMapper extends BaseMapperX<PackageDO> {
.eqIfPresent(PackageDO::getSupplierItemCode, reqVO.getSupplierItemCode())
.eqIfPresent(PackageDO::getPoNumber, reqVO.getPoNumber())
.eqIfPresent(PackageDO::getPoLine, reqVO.getPoLine())
.eqIfPresent(PackageDO::getRpNumber, reqVO.getRpNumber())
.eqIfPresent(PackageDO::getPpNumber, reqVO.getRpNumber())
.eqIfPresent(PackageDO::getAsnNumber, reqVO.getAsnNumber())
.eqIfPresent(PackageDO::getWoNumber, reqVO.getWoNumber())
.eqIfPresent(PackageDO::getWoLine, reqVO.getWoLine())

7
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnJob/ProductionreturnJobMainMapper.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.productionreturnJob.vo.ProductionreturnJobMainExportReqVO;
import com.win.module.wms.controller.productionreturnJob.vo.ProductionreturnJobMainPageReqVO;
import com.win.module.wms.dal.dataobject.issueJob.IssueJobMainDO;
import com.win.module.wms.dal.dataobject.productionreceiptJob.ProductionreceiptJobMainDO;
import com.win.module.wms.dal.dataobject.productionreturnJob.ProductionreturnJobMainDO;
import com.win.module.wms.enums.order.OrderStatusEnum;
import org.apache.ibatis.annotations.Mapper;
import java.util.Collection;
@ -122,4 +124,9 @@ public interface ProductionreturnJobMainMapper extends BaseMapperX<Productionret
}
default Long selectByRequestNumber(String requestNumber) {
return selectCount(new LambdaQueryWrapperX<ProductionreturnJobMainDO>()
.eq(ProductionreturnJobMainDO::getRequestNumber, requestNumber)
.ne(ProductionreturnJobMainDO::getStatus, OrderStatusEnum.CLOSED.getCode()));
}
}

7
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnRequest/ProductionreturnRequestDetailMapper.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.productionreturnRequest.vo.ProductionreturnRequestDetailExportReqVO;
import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestDetailPageReqVO;
import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestDetailDO;
import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestDetailDO;
import org.apache.ibatis.annotations.Mapper;
@ -22,6 +23,7 @@ public interface ProductionreturnRequestDetailMapper extends BaseMapperX<Product
default PageResult<ProductionreturnRequestDetailDO> selectPage(ProductionreturnRequestDetailPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ProductionreturnRequestDetailDO>()
.eqIfPresent(ProductionreturnRequestDetailDO::getMasterId, reqVO.getMasterId())
.eqIfPresent(ProductionreturnRequestDetailDO::getProductionLineCode, reqVO.getProductionLineCode())
.eqIfPresent(ProductionreturnRequestDetailDO::getWorkStationCode, reqVO.getWorkStationCode())
.eqIfPresent(ProductionreturnRequestDetailDO::getInventoryStatus, reqVO.getInventoryStatus())
@ -51,6 +53,11 @@ public interface ProductionreturnRequestDetailMapper extends BaseMapperX<Product
return selectPage(conditions, QueryWrapperUtils.structure(conditions));
}
default List<ProductionreturnRequestDetailDO> selectList(Long masterId) {
return selectList(new LambdaQueryWrapperX<ProductionreturnRequestDetailDO>()
.eq(ProductionreturnRequestDetailDO::getMasterId, masterId));
}
default List<ProductionreturnRequestDetailDO> selectList(ProductionreturnRequestDetailExportReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<ProductionreturnRequestDetailDO>()
.eqIfPresent(ProductionreturnRequestDetailDO::getProductionLineCode, reqVO.getProductionLineCode())

5
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnRequest/ProductionreturnRequestMainMapper.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.productionreturnRequest.vo.ProductionreturnRequestMainExportReqVO;
import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestMainPageReqVO;
import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO;
import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestMainDO;
import org.apache.ibatis.annotations.Mapper;
@ -79,4 +80,8 @@ public interface ProductionreturnRequestMainMapper extends BaseMapperX<Productio
default ProductionreturnRequestMainDO selectByNumber(String number){
return selectOne(ProductionreturnRequestMainDO::getNumber,number);
}
default List<ProductionreturnRequestMainDO> selectSeniorList(CustomConditions conditions) {
return selectList(QueryWrapperUtils.structure(conditions));
}
}

1
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/supplierdeliverRequest/SupplierdeliverRequestDetailMapper.java

@ -22,6 +22,7 @@ public interface SupplierdeliverRequestDetailMapper extends BaseMapperX<Supplier
default PageResult<SupplierdeliverRequestDetailDO> selectPage(SupplierdeliverRequestDetailPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<SupplierdeliverRequestDetailDO>()
.eqIfPresent(SupplierdeliverRequestDetailDO::getMasterId, reqVO.getMasterId())
.eqIfPresent(SupplierdeliverRequestDetailDO::getBatch, reqVO.getBatch())
.eqIfPresent(SupplierdeliverRequestDetailDO::getAltBatch, reqVO.getAltBatch())
.betweenIfPresent(SupplierdeliverRequestDetailDO::getArriveDate, reqVO.getArriveDate())

20
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueJob/IssueJobMainServiceImpl.java

@ -308,6 +308,7 @@ public class IssueJobMainServiceImpl implements IssueJobMainService {
issueRecordDetailDO.setFromAreaCode(locationDOFrom.getAreaCode());
issueRecordDetailDOList.add(issueRecordDetailDO);
//添加库存事务list
// 入动作
TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO();
BeanUtils.copyProperties(issueRecordDetailDO, transactionCreateReqVO);
TransactiontypeDO transactiontypeDO = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType());
@ -326,6 +327,25 @@ public class IssueJobMainServiceImpl implements IssueJobMainService {
// 如果使用在途库 库存事务 库位赋值为 在途库
transactionCreateReqVO.setLocationCode(issueRecordMainDO.getUseOnTheWayLocation().equals("TRUE")?issueRecordDetailDO.getOnTheWayLocationCode():recordLstItem.get("toLocationCode").toString());
transactionCreateReqVOList.add(transactionCreateReqVO);
// 出动作
TransactionCreateReqVO transactionCreateReqVOOut = new TransactionCreateReqVO();
BeanUtils.copyProperties(issueRecordDetailDO, transactionCreateReqVOOut);
TransactiontypeDO transactiontypeDOOut = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getOutTransactionType());
transactionCreateReqVOOut.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId()));
transactionCreateReqVOOut.setInventoryAction(transactiontypeDOOut.getInventoryAction());
transactionCreateReqVOOut.setTransactionType(transactiontypeDOOut.getCode());
transactionCreateReqVOOut.setBusinessType(issueRecordMainDO.getBusinessType());
transactionCreateReqVOOut.setOwnerCode(issueRecordDetailDO.getFromOwnerCode());
transactionCreateReqVOOut.setRecordNumber(number);
transactionCreateReqVOOut.setId(null);
transactionCreateReqVOOut.setPackingNumber(issueRecordDetailDO.getToPackingNumber());
transactionCreateReqVOOut.setBatch(issueRecordDetailDO.getToBatch());
transactionCreateReqVOOut.setContainerNumber(issueRecordDetailDO.getToContainerNumber());
transactionCreateReqVOOut.setAmount(BigDecimal.ZERO);
transactionCreateReqVOOut.setWarehouseCode(issueRecordMainDO.getToWarehouseCode());
// 如果使用在途库 库存事务 库位赋值为 在途库
transactionCreateReqVOOut.setLocationCode(issueRecordMainDO.getUseOnTheWayLocation().equals("TRUE")?issueRecordDetailDO.getOnTheWayLocationCode():recordLstItem.get("toLocationCode").toString());
transactionCreateReqVOList.add(transactionCreateReqVOOut);
});
}
});

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainService.java

@ -1,10 +1,12 @@
package com.win.module.wms.service.issueRequest;
import java.math.BigDecimal;
import java.util.*;
import javax.validation.*;
import com.win.framework.common.pojo.CustomConditions;
import com.win.module.wms.controller.issueRequest.vo.*;
import com.win.module.wms.dal.dataobject.issueJob.IssueJobDetailDO;
import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.dal.dataobject.production.ProductionMainDO;
@ -99,4 +101,6 @@ public interface IssueRequestMainService {
Integer agreeIssueRequestMain(Long id);
Integer handleIssueRequestMain(Long id);
List<IssueJobDetailDO> getBalanceByBatchOffShelf(String itemCode, BigDecimal qty);
}

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

@ -613,6 +613,7 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
return issueRequestMainMapper.updateById(mainDO);
}
/**
* 创建任务 OR 创建记录
* @param mainDO
@ -746,4 +747,28 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
expectoutService.createExpectout(expectoutCreateReqVOList);
trendsApi.createTrends(issueJobMainDO.getId(), "issueJob", "发料申请生成发料任务", TrendsTypeEnum.CREATE);
}
/**
* PDA 获取库存推荐
* @param itemCode
* @param qty
* @return
*/
@Override
public List<IssueJobDetailDO> getBalanceByBatchOffShelf(String itemCode, BigDecimal qty) {
List<IssueJobDetailDO> issueJobDetailDOList = new ArrayList<>();
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("IssueJob");
// 根据批次策略/下架策略 返回 库存余额DO
List<BalanceDO> balanceDOListJob = jobUtils.getBalanceByBatchOffShelf(itemCode,"OK",null,qty,businesstypeDO.getOutLocationTypes());
// 根据 查询出所需数据 解析成 任务子表数据
balanceDOListJob.forEach(balanceDOItem -> {
IssueJobDetailDO issueJobDetailDO = new IssueJobDetailDO();
issueJobDetailDO.setBatch(balanceDOItem.getBatch());
issueJobDetailDO.setFromLocationCode(balanceDOItem.getLocationCode());
issueJobDetailDO.setStdPackQty(itempackagingService.selectItemPackagingExist(itemCode).getStdPackQty());
issueJobDetailDO.setStdPackUnit(itempackagingService.selectItemPackagingExist(itemCode).getStdPackUnit());
issueJobDetailDOList.add(issueJobDetailDO);
});
return issueJobDetailDOList;
}
}

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/packageMassage/PackageService.java

@ -87,4 +87,6 @@ public interface PackageService {
* @return 分页列表
*/
PageResult<PackageDO> getPackageSenior(CustomConditions conditions);
PackageDO createPackageLabel(PackageCreateReqVO createReqVO);
}

49
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/packageMassage/PackageServiceImpl.java

@ -1,20 +1,32 @@
package com.win.module.wms.service.packageMassage;
import cn.hutool.core.exceptions.UtilException;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.module.system.api.serialnumber.SerialNumberApi;
import com.win.module.system.enums.serialNumber.RuleCodeEnum;
import com.win.module.wms.controller.packageMassage.vo.PackageCreateReqVO;
import com.win.module.wms.controller.packageMassage.vo.PackageExportReqVO;
import com.win.module.wms.controller.packageMassage.vo.PackagePageReqVO;
import com.win.module.wms.controller.packageMassage.vo.PackageUpdateReqVO;
import com.win.module.wms.convert.packageMassage.PackageConvert;
import com.win.module.wms.dal.dataobject.accountcalendar.AccountcalendarDO;
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.packageMassage.PackageDO;
import com.win.module.wms.dal.dataobject.supplieritem.SupplieritemDO;
import com.win.module.wms.dal.mysql.packageMassage.PackageMapper;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.itempackaging.ItempackagingService;
import com.win.module.wms.service.supplieritem.SupplieritemService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@ -30,6 +42,14 @@ import static com.win.module.wms.enums.ErrorCodeConstants.PACKAGE_NOT_EXISTS;
@Validated
public class PackageServiceImpl implements PackageService {
@Resource
private ItempackagingService itempackagingService;
@Resource
private ItembasicService itembasicService;
@Resource
private SupplieritemService supplieritemService;
@Resource
private SerialNumberApi serialNumberApi;
@Resource
private PackageMapper packageMapper;
@ -102,4 +122,33 @@ public class PackageServiceImpl implements PackageService {
public PageResult<PackageDO> getPackageSenior(CustomConditions conditions) {
return packageMapper.selectSenior(conditions);
}
@Override
@Transactional
public PackageDO createPackageLabel(PackageCreateReqVO createReqVO) {
// 插入
PackageDO packageDo = PackageConvert.INSTANCE.convert(createReqVO);
// 获取标包数量
ItempackagingDO itemPackagingDO = itempackagingService.selectItemPackagingExist(packageDo.getItemCode());
// 赋值 自动生成 包装号
String number = serialNumberApi.generateCode(RuleCodeEnum.PACKING_NUMBER.getCode());
packageDo.setNumber(number);
packageDo.setConvertRate(new BigDecimal(1));
packageDo.setStdPackQty(itemPackagingDO.getStdPackQty());
packageDo.setStdPackUnit(itemPackagingDO.getStdPackUnit());
// 采购标签
if (packageDo.getSupplierCode() != null && !packageDo.getSupplierCode().isEmpty()) {
// TODO: 赋值 仓库代码 月台代码 库位代码 采购订单号 采购订单行 采购计划单号 发货单号
// 赋值 供应商物品代码
SupplieritemDO supplieritemDO = supplieritemService.selectSupplierItemExist(packageDo.getSupplierCode(),packageDo.getItemCode());
packageDo.setSupplierItemCode(supplieritemDO.getSupplierItemCode());
}
// 制造件标签
if (packageDo.getProductionLineCode() != null && !packageDo.getProductionLineCode().isEmpty()) {
// TODO: 赋值 生产订单号 生产订单行 班组代码 班次代码
}
packageMapper.insert(packageDo);
// 返回
return packageDo;
}
}

18
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreceiptJob/ProductionreceiptJobMainServiceImpl.java

@ -318,6 +318,7 @@ public class ProductionreceiptJobMainServiceImpl implements ProductionreceiptJob
productionreceiptRecordDetailDO.setUpdateTime(null);
productionreceiptRecordDetailDOList.add(productionreceiptRecordDetailDO);
//添加库存事务list
// 入动作
TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO();
BeanUtils.copyProperties(productionreceiptRecordDetailDO, transactionCreateReqVO);
TransactiontypeDO transactiontypeDO = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType());
@ -334,6 +335,23 @@ public class ProductionreceiptJobMainServiceImpl implements ProductionreceiptJob
transactionCreateReqVO.setAmount(BigDecimal.ZERO);
transactionCreateReqVO.setLocationCode(productionreceiptRecordDetailDO.getToLocationCode());
transactionCreateReqVOList.add(transactionCreateReqVO);
// 出动作
TransactionCreateReqVO transactionCreateReqVOOut = new TransactionCreateReqVO();
BeanUtils.copyProperties(productionreceiptRecordDetailDO, transactionCreateReqVOOut);
TransactiontypeDO transactiontypeDOOut = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getOutTransactionType());
transactionCreateReqVOOut.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId()));
transactionCreateReqVOOut.setInventoryAction(transactiontypeDOOut.getInventoryAction());
transactionCreateReqVOOut.setTransactionType(transactiontypeDOOut.getCode());
transactionCreateReqVOOut.setBusinessType(productionreceiptRecordMainDO.getBusinessType());
transactionCreateReqVOOut.setOwnerCode(productionreceiptRecordDetailDO.getFromOwnerCode());
transactionCreateReqVOOut.setRecordNumber(number);
transactionCreateReqVOOut.setId(null);
transactionCreateReqVOOut.setPackingNumber(productionreceiptRecordDetailDO.getToPackingNumber());
transactionCreateReqVOOut.setBatch(productionreceiptRecordDetailDO.getToBatch());
transactionCreateReqVOOut.setContainerNumber(productionreceiptRecordDetailDO.getToContainerNumber());
transactionCreateReqVOOut.setAmount(BigDecimal.ZERO);
transactionCreateReqVOOut.setLocationCode(productionreceiptRecordDetailDO.getToLocationCode());
transactionCreateReqVOList.add(transactionCreateReqVOOut);
}
});
});

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestDetailService.java

@ -78,4 +78,6 @@ public interface ProductionreturnRequestDetailService {
* @return 分页列表
*/
PageResult<ProductionreturnRequestDetailDO> getProductionreturnRequestDetailSenior(CustomConditions conditions);
List<ProductionreturnRequestDetailDO> selectList(Long id);
}

73
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestDetailServiceImpl.java

@ -1,5 +1,7 @@
package com.win.module.wms.service.productionreturnRequest;
import cn.hutool.core.exceptions.UtilException;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.module.infra.api.trends.TrendsApi;
@ -8,21 +10,28 @@ import com.win.module.wms.controller.productionreturnRequest.vo.Productionreturn
import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestDetailExportReqVO;
import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestDetailPageReqVO;
import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestDetailUpdateReqVO;
import com.win.module.wms.convert.issueRequest.IssueRequestDetailConvert;
import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestDetailConvert;
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.productionline.ProductionlineDO;
import com.win.module.wms.dal.dataobject.productionlineitem.ProductionlineitemDO;
import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestDetailDO;
import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestMainDO;
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO;
import com.win.module.wms.dal.dataobject.workstation.WorkstationDO;
import com.win.module.wms.dal.mysql.productionreturnRequest.ProductionreturnRequestDetailMapper;
import com.win.module.wms.enums.request.RequestStatusEnum;
import com.win.module.wms.service.businesstype.BusinesstypeService;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.productionline.ProductionlineService;
import com.win.module.wms.service.productionlineitem.ProductionlineitemService;
import com.win.module.wms.service.workstation.WorkstationService;
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;
@ -43,6 +52,8 @@ import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTIONRETURN_REQUE
@Validated
public class ProductionreturnRequestDetailServiceImpl implements ProductionreturnRequestDetailService {
@Resource
private BusinesstypeService businesstypeService;
@Resource
private ProductionreturnRequestDetailMapper productionreturnRequestDetailMapper;
@Resource
@ -60,25 +71,63 @@ public class ProductionreturnRequestDetailServiceImpl implements Productionretur
@Resource
private TrendsApi trendsApi;
@Override
@Transactional
public Long createProductionreturnRequestDetail(ProductionreturnRequestDetailCreateReqVO createReqVO) {
// 插入
ProductionreturnRequestDetailDO productionreturnRequestDetail = ProductionreturnRequestDetailConvert.INSTANCE.convert(createReqVO);
validatorDetail(productionreturnRequestDetail);
productionreturnRequestDetailMapper.insert(productionreturnRequestDetail);
// 返回
return productionreturnRequestDetail.getId();
}
@Override
@Transactional
public void updateProductionreturnRequestDetail(ProductionreturnRequestDetailUpdateReqVO updateReqVO, RequestsettingDO requestsettingDO) {
// 校验存在
validateProductionreturnRequestDetailExists(updateReqVO.getId());
// 更新
ProductionreturnRequestMainDO productionreturnRequestMainToNumber = productionreturnRequestMainService.getProductionreturnRequestMainToNumber(updateReqVO.getNumber());
ProductionreturnRequestDetailDO updateObj = ProductionreturnRequestDetailConvert.INSTANCE.convert(updateReqVO);
validatorDetailMethod(updateObj,productionreturnRequestMainToNumber);
validatorDetail(updateObj);
productionreturnRequestDetailMapper.updateById(updateObj);
}
//子表校验
private ProductionreturnRequestDetailDO validatorDetail(ProductionreturnRequestDetailDO productionreturnRequestDetailDO) {
// 主表信息
ProductionreturnRequestMainDO productionreturnRequestMainDO = productionreturnRequestMainService.getProductionreturnRequestMain(productionreturnRequestDetailDO.getMasterId());
// 业务信息
BusinesstypeDO businesstypeDO = businesstypeService.selectBusinesstypeExist(productionreturnRequestMainDO.getBusinessType());
// 基础信息
ItembasicDO itembasicDO = itembasicService.selectItembasic(productionreturnRequestDetailDO.getItemCode());
// 基础信息赋值
productionreturnRequestDetailDO.setItemName(itembasicDO.getName());
productionreturnRequestDetailDO.setItemDesc1(itembasicDO.getDesc1());
productionreturnRequestDetailDO.setItemDesc2(itembasicDO.getDesc2());
productionreturnRequestDetailDO.setProjectCode(itembasicDO.getProject());
// 单位校验
ifUomSuccess(itembasicDO.getUom(), productionreturnRequestDetailDO.getUom());
// 校验 子表数据 物品类型要一致性(创建标签时 前端好判断 否则前端无法实现)
String itemCodetype = "";
// 查询其他子表数据物品对应类型
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("masterId", productionreturnRequestDetailDO.getMasterId());
List<ProductionreturnRequestDetailDO> productionreturnRequestDetailDOOrther = productionreturnRequestDetailMapper.selectList(queryWrapper);
if (productionreturnRequestDetailDOOrther != null && productionreturnRequestDetailDOOrther.size() > 0) {
itemCodetype = itembasicService.selectItembasic(productionreturnRequestDetailDOOrther.get(0).getItemCode()).getType();
}
if (!itemCodetype.equals("") && !itemCodetype.equals(itembasicDO.getType())) {
throw new UtilException("物品代码:" + productionreturnRequestDetailDO.getItemCode() + " 物品类型不一致!");
}
// 校验 业务类型
jobUtils.ifInType(itembasicDO.getType(), businesstypeDO);
// 检验 生产线
productionlineService.productionLineCodeExist(productionreturnRequestDetailDO.getProductionLineCode());
// 检验 工位
workstationService.selectWorkstationExist(productionreturnRequestDetailDO.getWorkStationCode(), productionreturnRequestMainDO.getWorkshopCode(), productionreturnRequestDetailDO.getProductionLineCode());
return productionreturnRequestDetailDO;
}
@Override
public void deleteProductionreturnRequestDetail(Long id) {
// 校验存在
@ -118,6 +167,11 @@ public class ProductionreturnRequestDetailServiceImpl implements Productionretur
return productionreturnRequestDetailMapper.selectSenior(conditions);
}
@Override
public List<ProductionreturnRequestDetailDO> selectList(Long masterId) {
return productionreturnRequestDetailMapper.selectList(masterId);
}
//校验子表公共方法(适用于新增/修改)
private void validatorDetailMethod(ProductionreturnRequestDetailDO detailDo, ProductionreturnRequestMainDO mainDo) {
ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode());
@ -129,13 +183,14 @@ public class ProductionreturnRequestDetailServiceImpl implements Productionretur
ProductionlineDO productionlineDO = validatorProductionline(detailDo.getProductionLineCode());
detailDo.setFromLocationCode(productionlineDO.getRawLocationCode());
this.validatorProductionlineitem(detailDo.getProductionLineCode(), detailDo.getItemCode());
WorkstationDO workstationDO = validatorWorkStation(mainDo.getWorkshopCode(), detailDo.getProductionLineCode(), detailDo.getWorkStationCode());
if(workstationDO != null){
detailDo.setFromLocationCode(workstationDO.getRawLocationCode());
}
ArrayList<String> inventoryStatus = new ArrayList<>();
inventoryStatus.set(0,detailDo.getInventoryStatus());
validatorManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), detailDo.getBatch(), detailDo.getFromLocationCode(), inventoryStatus);
validatorWorkStation(mainDo.getWorkshopCode(), detailDo.getProductionLineCode(), detailDo.getWorkStationCode());
// if(workstationDO != null){
// detailDo.setFromLocationCode(workstationDO.getRawLocationCode());
// }
// TODO:管理精度校验, 暂时注释
// ArrayList<String> inventoryStatus = new ArrayList<>();
// inventoryStatus.set(0,detailDo.getInventoryStatus());
// validatorManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), detailDo.getBatch(), detailDo.getFromLocationCode(), inventoryStatus);
}
private ItembasicDO validatorItembasic(String itemCode){

14
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainService.java

@ -82,4 +82,18 @@ public interface ProductionreturnRequestMainService {
PageResult<ProductionreturnRequestMainDO> getProductionreturnRequestMainSenior(CustomConditions conditions);
List<ProductionreturnRequestImportErrorVO> importProductionreturnRequestList(List<ProductionreturnRequestMainCreateReqVO> createReqVOList, Integer mode, Boolean updatePart, Boolean isOK);
Integer closeProductionreturnRequestMain(Long id);
Integer reAddProductionreturnRequestMain(Long id);
Integer submitProductionreturnRequestMain(Long id);
Integer refusedProductionreturnRequestMain(Long id);
Integer agreeProductionreturnRequestMain(Long id);
Integer handleProductionreturnRequestMain(Long id);
List<ProductionreturnRequestMainDO> getProductionreturnRequestMainList(CustomConditions conditions);
}

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

@ -1,6 +1,8 @@
package com.win.module.wms.service.productionreturnRequest;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.exceptions.UtilException;
import com.win.framework.common.exception.ServiceException;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.common.util.validation.ValidationUtils;
@ -15,7 +17,11 @@ import com.win.module.wms.convert.productionreturnRequest.ProductionreturnReques
import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestDetailConvert;
import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestMainConvert;
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.itempackaging.ItempackagingDO;
import com.win.module.wms.dal.dataobject.packageMassage.PackageDO;
import com.win.module.wms.dal.dataobject.productionline.ProductionlineDO;
import com.win.module.wms.dal.dataobject.productionlineitem.ProductionlineitemDO;
import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestDetailDO;
@ -25,24 +31,29 @@ import com.win.module.wms.dal.dataobject.productionreturnRequest.Productionretur
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO;
import com.win.module.wms.dal.dataobject.workshop.WorkshopDO;
import com.win.module.wms.dal.dataobject.workstation.WorkstationDO;
import com.win.module.wms.dal.mysql.productionreturnJob.ProductionreturnJobMainMapper;
import com.win.module.wms.dal.mysql.productionreturnRequest.ProductionreturnRequestDetailMapper;
import com.win.module.wms.dal.mysql.productionreturnRequest.ProductionreturnRequestMainMapper;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.enums.request.RequestStatusEnum;
import com.win.module.wms.enums.request.RequestStatusState;
import com.win.module.wms.service.businesstype.BusinesstypeService;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.itempackaging.ItempackagingService;
import com.win.module.wms.service.productionline.ProductionlineService;
import com.win.module.wms.service.productionlineitem.ProductionlineitemService;
import com.win.module.wms.service.requestsetting.RequestsettingService;
import com.win.module.wms.service.workshop.WorkshopService;
import com.win.module.wms.service.workstation.WorkstationService;
import com.win.module.wms.util.JobUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import javax.validation.Validator;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Collection;
@ -60,6 +71,10 @@ import static com.win.module.wms.enums.ErrorCodeConstants.*;
@Validated
public class ProductionreturnRequestMainServiceImpl implements ProductionreturnRequestMainService {
@Resource
private ItempackagingService itempackagingService;
@Resource
private ProductionreturnJobMainMapper productionreturnJobMainMapper;
@Resource
private BusinesstypeService businesstypeService;
@Resource
@ -86,6 +101,8 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR
private SerialNumberApi serialNumberApi;
@Resource
private TrendsApi trendsApi;
private String itemCodetype;
@Override
@Transactional
public Long createProductionreturnRequestMain(ProductionreturnRequestMainCreateReqVO createReqVO) {
@ -102,7 +119,7 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR
if(RequestStatusEnum.HANDLING.getCode().equals(productionreturnRequestMainDO.getStatus())) {
}
trendsApi.createTrends(productionreturnRequestMainDO.getId(), "ProductionreturnRequest", "增加了合格退料申请", TrendsTypeEnum.CREATE);
trendsApi.createTrends(productionreturnRequestMainDO.getId(), "ProductionreturnRequest", "增加了生产退料申请", TrendsTypeEnum.CREATE);
// 返回
return createReqVO.getId();
}
@ -112,8 +129,14 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR
public void updateProductionreturnRequestMain(ProductionreturnRequestMainUpdateReqVO updateReqVO) {
// 校验存在
validateProductionreturnRequestMainExists(updateReqVO.getId());
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ReturnToStoreRequest");
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("IssueRequest");
BusinesstypeDO businesstypeDO = null;
// 判断是否合格退料
if (updateReqVO.getIsOK()) {
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ReturnToStoreRequest");
} else {
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ReturnToHOldRequest");
}
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("MaterialReturnRequest");
ProductionreturnRequestMainDO productionreturnRequestMainDO = validatorMainMethod(updateReqVO, businesstypeDO, requestsettingDO);
if(RequestStatusEnum.HANDLING.getCode().equals(productionreturnRequestMainDO.getStatus())) {
@ -133,10 +156,12 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR
productionreturnRequestMainMapper.deleteById(id);
}
private void validateProductionreturnRequestMainExists(Long id) {
if (productionreturnRequestMainMapper.selectById(id) == null) {
private ProductionreturnRequestMainDO validateProductionreturnRequestMainExists(Long id) {
ProductionreturnRequestMainDO productionreturnRequestMainDO = productionreturnRequestMainMapper.selectById(id);
if ( productionreturnRequestMainDO == null) {
throw exception(PRODUCTIONRETURN_REQUEST_MAIN_NOT_EXISTS);
}
return productionreturnRequestMainDO;
}
@Override
@ -219,18 +244,52 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR
//子表校验
List<ProductionreturnRequestDetailCreateReqVO> subList = createReqVO.getSubList();
List<ProductionreturnRequestDetailDO> subDOList = ProductionreturnRequestDetailConvert.INSTANCE.convertList03(subList);
// 子表 物品类型
itemCodetype = "";
for (ProductionreturnRequestDetailDO detailDO : subDOList) {
validatorDetailMethod(detailDO,mainDo);
}
String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCTION_RETURN_REQUEST.getCode());
mainDo.setNumber(number);
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "审批中"));
productionreturnRequestMainMapper.insert(mainDo);
// 拆解后 子表集合
List<ProductionreturnRequestDetailDO> subDOListPack = new ArrayList<>();
for (ProductionreturnRequestDetailDO detailDO : subDOList) {
detailDO.setMasterId(mainDo.getId());
detailDO.setNumber(mainDo.getNumber());
// 获取标包信息
ItempackagingDO itemPackagingDO = itempackagingService.selectItemPackagingExist(detailDO.getItemCode());
// 获取标包数量
BigDecimal itemPackagingDOQty = itemPackagingDO.getStdPackQty();
// 库存余额输入数量
BigDecimal detailDOQty = detailDO.getQty();
// 判断 库存余额输入的数量 大于 标包数 进行拆分
if (detailDO.getQty().compareTo(itemPackagingDO.getStdPackQty()) == 1 ) {
// 库存余额 除以 标包 保留0位 具体子表 例如:保留1位 1.60-1.6 1.61-1.7 1.66-1.7 -1.62--1.7
// 拆分数据总条数 bdCount
BigDecimal bdCount = detailDOQty.divide(itemPackagingDOQty,0, BigDecimal.ROUND_UP);
int forInt = bdCount.intValue();
// 最后一条数据 插入数量 residueQty = 库存余额数 - (拆分数据总条数-1)*标包数
BigDecimal residueQty = detailDOQty.subtract(itemPackagingDOQty.multiply(bdCount.subtract(new BigDecimal(1))));
for(int i = 0; i < forInt; i++) {
ProductionreturnRequestDetailDO detailDOPack = new ProductionreturnRequestDetailDO();
BeanUtils.copyProperties(detailDO, detailDOPack);
// 最后一条数据 插入数量
if (i == (forInt-1) ) {
detailDOPack.setQty(residueQty);
} else {
detailDOPack.setQty(itemPackagingDO.getStdPackQty());
}
productionreturnRequestDetailMapper.insertBatch(subDOList);
subDOListPack.add(detailDOPack);
}
} else {
// 判断 库存余额输入的数量 小于等于 标包数
subDOListPack.add(detailDO);
}
}
productionreturnRequestDetailMapper.insertBatch(subDOListPack);
return mainDo;
}
@ -254,16 +313,24 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR
detailDo.setItemName(itembasicDO.getName());
detailDo.setProjectCode(itembasicDO.getProject());
this.ifUomSuccess(itembasicDO.getUom(), detailDo.getUom());
validatorProductionline(detailDo.getProductionLineCode());
ProductionlineitemDO productionlineitemDO = validatorProductionlineitem(detailDo.getProductionLineCode(), detailDo.getItemCode());
detailDo.setFromLocationCode(productionlineitemDO.getRawLocationCode());
WorkstationDO workstationDO = validatorWorkStation(mainDo.getWorkshopCode(), detailDo.getProductionLineCode(), detailDo.getWorkStationCode());
if(workstationDO != null){
detailDo.setFromLocationCode(workstationDO.getRawLocationCode());
// 校验 子表数据 物品类型要一致性(创建标签时 前端好判断 否则前端无法实现)
if (itemCodetype.equals("")) {
itemCodetype = itembasicDO.getType();
}
if (!itemCodetype.equals(itembasicDO.getType())) {
throw new UtilException("物品代码:" + detailDo.getItemCode() + " 物品类型不一致!");
}
validatorProductionline(detailDo.getProductionLineCode());
// ProductionlineitemDO productionlineitemDO = validatorProductionlineitem(detailDo.getProductionLineCode(), detailDo.getItemCode());
// detailDo.setFromLocationCode(productionlineitemDO.getRawLocationCode());
validatorWorkStation(mainDo.getWorkshopCode(), detailDo.getProductionLineCode(), detailDo.getWorkStationCode());
// if(workstationDO != null){
// detailDo.setFromLocationCode(workstationDO.getRawLocationCode());
// }
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add(detailDo.getInventoryStatus());
validatorManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), detailDo.getBatch(), detailDo.getFromLocationCode(), inventoryStatus);
// TODO:管理精度校验, 暂时注释
// validatorManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), detailDo.getBatch(), detailDo.getFromLocationCode(), inventoryStatus);
}
/**
@ -393,4 +460,157 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR
private void validatorManagementAccuracy(String itemCode,String packingNumber,String batch,String locationCode,List<String> inventoryStatus){
jobUtils.selectlocationReturnManagementAccuracy(itemCode,packingNumber,batch,locationCode,inventoryStatus);
}
@Override
@Transactional
public Integer closeProductionreturnRequestMain(Long id) {
ProductionreturnRequestMainDO mainDO = validateProductionreturnRequestMainExists(id);
// 校验存在存在下级单据
Long count = productionreturnJobMainMapper.selectByRequestNumber(mainDO.getNumber());
if(count > 0) {
throw new ServiceException(PRODUCTIONRETURN_REQUEST_JOB_EXISTS);
}
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.close();
if(!flag) {
throw new ServiceException(PRODUCTIONRETURN_REQUEST_MAIN_ERROR);
}
mainDO.setStatus(requestStatusState.getState().getCode());
//增加操作记录
trendsApi.createTrends(id, "productionreturnRequest", "关闭了生产收料申请", TrendsTypeEnum.UPDATE);
return productionreturnRequestMainMapper.updateById(mainDO);
}
@Override
@Transactional
public Integer reAddProductionreturnRequestMain(Long id) {
ProductionreturnRequestMainDO mainDO = validateProductionreturnRequestMainExists(id);
// 校验存在存在下级单据
Long count = productionreturnJobMainMapper.selectByRequestNumber(mainDO.getNumber());
if(count > 0) {
throw new ServiceException(PRODUCTIONRETURN_REQUEST_JOB_EXISTS);
}
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.reAdd();
if(!flag) {
throw new ServiceException(PRODUCTIONRETURN_REQUEST_MAIN_ERROR);
}
mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录
trendsApi.createTrends(id, "issueRequest", "打开了生产收料申请", TrendsTypeEnum.UPDATE);
return productionreturnRequestMainMapper.updateById(mainDO);
}
@Override
@Transactional
public Integer submitProductionreturnRequestMain(Long id) {
ProductionreturnRequestMainDO mainDO = validateProductionreturnRequestMainExists(id);
// 校验存在存在下级单据
Long count = productionreturnJobMainMapper.selectByRequestNumber(mainDO.getNumber());
if(count > 0) {
throw new ServiceException(PRODUCTIONRETURN_REQUEST_JOB_EXISTS);
}
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.submit(mainDO.getAutoAgree(), mainDO.getAutoExecute());
if(!flag) {
throw new ServiceException(PRODUCTIONRETURN_REQUEST_MAIN_ERROR);
}
mainDO.setStatus(requestStatusState.getState().getCode());
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) {
// 审批通过 生成标签
this.generateLabel(mainDO, productionreturnRequestDetailMapper.selectList(mainDO.getId()));
this.generateJob(mainDO, productionreturnRequestDetailMapper.selectList(mainDO.getId()));
}
trendsApi.createTrends(id, "issueRequest", "提交了生产收料申请", TrendsTypeEnum.UPDATE);
return productionreturnRequestMainMapper.updateById(mainDO);
}
@Override
@Transactional
public Integer refusedProductionreturnRequestMain(Long id) {
ProductionreturnRequestMainDO mainDO = validateProductionreturnRequestMainExists(id);
// 校验存在存在下级单据
Long count = productionreturnJobMainMapper.selectByRequestNumber(mainDO.getNumber());
if(count > 0) {
throw new ServiceException(PRODUCTIONRETURN_REQUEST_JOB_EXISTS);
}
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.refused();
if(!flag) {
throw new ServiceException(PRODUCTIONRETURN_REQUEST_MAIN_ERROR);
}
mainDO.setStatus(requestStatusState.getState().getCode());
trendsApi.createTrends(id, "issueRequest", "驳回了生产收料申请", TrendsTypeEnum.UPDATE);
return productionreturnRequestMainMapper.updateById(mainDO);
}
@Override
@Transactional
public Integer agreeProductionreturnRequestMain(Long id) {
ProductionreturnRequestMainDO mainDO = validateProductionreturnRequestMainExists(id);
// 校验存在存在下级单据
Long count = productionreturnJobMainMapper.selectByRequestNumber(mainDO.getNumber());
if(count > 0) {
throw new ServiceException(PRODUCTIONRETURN_REQUEST_JOB_EXISTS);
}
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.agree(mainDO.getAutoExecute());
if(!flag) {
throw new ServiceException(PRODUCTIONRETURN_REQUEST_MAIN_ERROR);
}
mainDO.setStatus(requestStatusState.getState().getCode());
// 审批通过 生成标签
this.generateLabel(mainDO, productionreturnRequestDetailMapper.selectList(mainDO.getId()));
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) {
this.generateJob(mainDO, productionreturnRequestDetailMapper.selectList(mainDO.getId()));
}
trendsApi.createTrends(id, "issueRequest", "审批通过了生产收料申请", TrendsTypeEnum.UPDATE);
return productionreturnRequestMainMapper.updateById(mainDO);
}
@Override
@Transactional
public Integer handleProductionreturnRequestMain(Long id) {
ProductionreturnRequestMainDO mainDO = validateProductionreturnRequestMainExists(id);
// 校验存在存在下级单据
Long count = productionreturnJobMainMapper.selectByRequestNumber(mainDO.getNumber());
if(count > 0) {
throw new ServiceException(PRODUCTIONRETURN_REQUEST_JOB_EXISTS);
}
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.handle();
if(!flag) {
throw new ServiceException(ISSUE_REQUEST_MAIN_CANNOT_HANDLE);
}
mainDO.setStatus(requestStatusState.getState().getCode());
//调用执行方法
this.generateJob(mainDO, productionreturnRequestDetailMapper.selectList(mainDO.getId()));
trendsApi.createTrends(id, "issueRequest", "执行了发料申请", TrendsTypeEnum.UPDATE);
return productionreturnRequestMainMapper.updateById(mainDO);
}
/**
* 创建标签
* @param mainDO
* @param detailDO
*/
private void generateLabel (ProductionreturnRequestMainDO mainDO, List<ProductionreturnRequestDetailDO> detailDO) {
// 查询 mainDO.packingNumber 在包装表中,是否存在,如果存在不创建标签,如果不存在,创建
// PackageDO packageDO =
}
/**
* 创建任务 OR 创建记录
* @param mainDO
* @param detailDO
*/
private void generateJob (ProductionreturnRequestMainDO mainDO, List<ProductionreturnRequestDetailDO> detailDO) {
}
@Override
public List<ProductionreturnRequestMainDO> getProductionreturnRequestMainList(CustomConditions conditions) {
return productionreturnRequestMainMapper.selectSeniorList(conditions);
}
}

7
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainServiceImpl.java

@ -629,10 +629,10 @@ public class PurchaseMainServiceImpl implements PurchaseMainService {
purchaseDetailDOQueryWrapper.eq("item_code", itemCode);
purchaseDetailDOQueryWrapper.eq("available", "TRUE");
List<PurchaseDetailDO> purchaseDetailDOList = purchaseDetailMapper.selectList(purchaseDetailDOQueryWrapper);
boolean res = false;
boolean res = true;
for (PurchaseDetailDO purchaseDetailDO : purchaseDetailDOList) {
if ("TRUE".equals(purchaseDetailDO.getAvailable())) {
res = true;
res = false;
}
}
if ("DISCRETE".equals(purchaseMainDO.getType()) && res) {
@ -641,12 +641,11 @@ public class PurchaseMainServiceImpl implements PurchaseMainService {
for (PurchaseDetailDO purchaseDetailDO : purchaseDetailDOList) {
//如果是离散单
if ("DISCRETE".equals(purchaseMainDO.getType())) {
purchaseDetailDO.setReceivedQty(receivedQty);
if (purchaseDetailDO.getReceivedQty().compareTo(purchaseDetailDO.getOrderQty()) == 0
|| purchaseDetailDO.getReceivedQty().compareTo(purchaseDetailDO.getOrderQty().multiply(new BigDecimal(1).add(purchaseDetailDO.getOverReceivingPercent())))
>= 0) {
purchaseDetailDO.setAvailable("FALSE");
} else {
purchaseDetailDO.setReceivedQty(receivedQty);
}
} else {
purchaseDetailDO.setReceivedQty(purchaseDetailDO.getReceivedQty().add(receivedQty));

18
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/repleinshJob/RepleinshJobMainServiceImpl.java

@ -298,6 +298,7 @@ public class RepleinshJobMainServiceImpl implements RepleinshJobMainService {
repleinshRecordDetailDO.setFromAreaCode(locationDOFrom.getAreaCode());
repleinshRecordDetailDOList.add(repleinshRecordDetailDO);
//添加库存事务list
// 入动作
TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO();
BeanUtils.copyProperties(repleinshRecordDetailDO, transactionCreateReqVO);
TransactiontypeDO transactiontypeDO = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType());
@ -314,6 +315,23 @@ public class RepleinshJobMainServiceImpl implements RepleinshJobMainService {
transactionCreateReqVO.setAmount(BigDecimal.ZERO);
transactionCreateReqVO.setLocationCode(recordLstItem.get("toLocationCode").toString());
transactionCreateReqVOList.add(transactionCreateReqVO);
// 出动作
TransactionCreateReqVO transactionCreateReqVOOut = new TransactionCreateReqVO();
BeanUtils.copyProperties(repleinshRecordDetailDO, transactionCreateReqVOOut);
TransactiontypeDO transactiontypeDOOut = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getOutTransactionType());
transactionCreateReqVOOut.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId()));
transactionCreateReqVOOut.setInventoryAction(transactiontypeDOOut.getInventoryAction());
transactionCreateReqVOOut.setTransactionType(transactiontypeDOOut.getCode());
transactionCreateReqVOOut.setBusinessType(repleinshRecordMainDO.getBusinessType());
transactionCreateReqVOOut.setOwnerCode(repleinshRecordDetailDO.getFromOwnerCode());
transactionCreateReqVOOut.setRecordNumber(number);
transactionCreateReqVOOut.setId(null);
transactionCreateReqVOOut.setPackingNumber(repleinshRecordDetailDO.getToPackingNumber());
transactionCreateReqVOOut.setBatch(repleinshRecordDetailDO.getToBatch());
transactionCreateReqVOOut.setContainerNumber(repleinshRecordDetailDO.getToContainerNumber());
transactionCreateReqVOOut.setAmount(BigDecimal.ZERO);
transactionCreateReqVOOut.setLocationCode(recordLstItem.get("toLocationCode").toString());
transactionCreateReqVOList.add(transactionCreateReqVOOut);
});
}
});

76
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRequest/SupplierdeliverRequestDetailServiceImpl.java

@ -1,14 +1,27 @@
package com.win.module.wms.service.supplierdeliverRequest;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.win.framework.common.pojo.CustomConditions;
import com.win.module.wms.controller.supplierdeliverRequest.vo.SupplierdeliverRequestDetailCreateReqVO;
import com.win.module.wms.controller.supplierdeliverRequest.vo.SupplierdeliverRequestDetailExportReqVO;
import com.win.module.wms.controller.supplierdeliverRequest.vo.SupplierdeliverRequestDetailPageReqVO;
import com.win.module.wms.controller.supplierdeliverRequest.vo.SupplierdeliverRequestDetailUpdateReqVO;
import com.win.module.wms.dal.dataobject.itempackaging.ItempackagingDO;
import com.win.module.wms.dal.dataobject.purchasePlan.PurchasePlanDetailDO;
import com.win.module.wms.dal.dataobject.supplierdeliverRequest.SupplierdeliverRequestMainDO;
import com.win.module.wms.dal.dataobject.supplieritem.SupplieritemDO;
import com.win.module.wms.dal.mysql.supplierdeliverRequest.SupplierdeliverRequestMainMapper;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.itempackaging.ItempackagingService;
import com.win.module.wms.service.purchasePlan.PurchasePlanMainService;
import com.win.module.wms.service.supplieritem.SupplieritemService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import java.math.BigDecimal;
import java.util.*;
import com.win.module.wms.dal.dataobject.supplierdeliverRequest.SupplierdeliverRequestDetailDO;
@ -31,14 +44,32 @@ public class SupplierdeliverRequestDetailServiceImpl implements SupplierdeliverR
@Resource
private SupplierdeliverRequestDetailMapper supplierdeliverRequestDetailMapper;
@Resource
private SupplierdeliverRequestMainMapper supplierdeliverRequestMainMapper;
@Resource
private ItembasicService itembasicService;
@Resource
private SupplieritemService supplieritemService;
@Resource
private ItempackagingService itempackagingService;
@Resource
private PurchasePlanMainService purchasePlanMainService;
@Override
public Long createSupplierdeliverRequestDetail(SupplierdeliverRequestDetailCreateReqVO createReqVO) {
// 插入
SupplierdeliverRequestDetailDO supplierdeliverRequestDetail = SupplierdeliverRequestDetailConvert.INSTANCE.convert(createReqVO);
supplierdeliverRequestDetailMapper.insert(supplierdeliverRequestDetail);
SupplierdeliverRequestDetailDO supplierdeliverRequestDetailDO = SupplierdeliverRequestDetailConvert.INSTANCE.convert(createReqVO);
QueryWrapper<SupplierdeliverRequestMainDO> queryWrapper = new QueryWrapper();
queryWrapper.eq("number", createReqVO.getNumber());
SupplierdeliverRequestMainDO mainDO = supplierdeliverRequestMainMapper.selectOne(queryWrapper);
validatorDetailMethod(supplierdeliverRequestDetailDO, mainDO);
supplierdeliverRequestDetailDO.setMasterId(mainDO.getId());
supplierdeliverRequestDetailDO.setNumber(mainDO.getNumber());
supplierdeliverRequestDetailDO.setConvertRate(new BigDecimal(0));
supplierdeliverRequestDetailMapper.insert(supplierdeliverRequestDetailDO);
// 返回
return supplierdeliverRequestDetail.getId();
return supplierdeliverRequestDetailDO.getId();
}
@Override
@ -49,6 +80,7 @@ public class SupplierdeliverRequestDetailServiceImpl implements SupplierdeliverR
SupplierdeliverRequestDetailDO updateObj = SupplierdeliverRequestDetailConvert.INSTANCE.convert(updateReqVO);
supplierdeliverRequestDetailMapper.updateById(updateObj);
}
@Override
public PageResult<SupplierdeliverRequestDetailDO> getSupplierdeliverRequestDetailSenior(CustomConditions conditions) {
return supplierdeliverRequestDetailMapper.selectSenior(conditions);
@ -88,4 +120,42 @@ public class SupplierdeliverRequestDetailServiceImpl implements SupplierdeliverR
return supplierdeliverRequestDetailMapper.selectList(exportReqVO);
}
//子表校验 校验供应商基础信息
private void validatorItembasic(String itemCode) {
itembasicService.selectItembasic(itemCode);
}
//子表校验 校验供应商物品
private SupplieritemDO validatorSupplierItemExist(String supplierCode, String itemCode) {
return supplieritemService.selectSupplierItemExist(supplierCode, itemCode);
}
//子表校验 校验物品标包信息
private ItempackagingDO validatorItemPackagingExist(String itemCode) {
return itempackagingService.selectItemPackagingExist(itemCode);
}
//子表校验 校验要货计划
private PurchasePlanDetailDO validatorPurchasePlan(SupplierdeliverRequestMainDO supplierdeliverRequestMainDO, SupplierdeliverRequestDetailDO supplierdeliverRequestDetailDO) {
PurchasePlanDetailDO purchasePlanDetailDO =
purchasePlanMainService.selectPurchasePlan(supplierdeliverRequestMainDO.getPpNumber(), supplierdeliverRequestMainDO.getSupplierCode(),
supplierdeliverRequestDetailDO.getPoNumber(), supplierdeliverRequestDetailDO.getPoLine(), supplierdeliverRequestDetailDO.getItemCode());
return purchasePlanDetailDO;
}
//校验子表公共方法(适用于新增/修改)
private void validatorDetailMethod(SupplierdeliverRequestDetailDO detailDo, SupplierdeliverRequestMainDO mainDo) {
this.validatorItembasic(detailDo.getItemCode());
this.validatorSupplierItemExist(mainDo.getSupplierCode(), detailDo.getItemCode());
PurchasePlanDetailDO purchasePlanDetailDO = this.validatorPurchasePlan(mainDo, detailDo);
if ((purchasePlanDetailDO.getPlanQty().subtract(purchasePlanDetailDO.getShippedQty())).compareTo(detailDo.getQty()) == -1) {
throw exception(QTY_ERROR, detailDo.getQty(), null, detailDo.getPoLine(), null, purchasePlanDetailDO.getPlanQty().subtract(purchasePlanDetailDO.getShippedQty()));
}
ItempackagingDO itempackagingDO = itempackagingService.selectItemPackagingExist(detailDo.getItemCode());
if (itempackagingDO != null) {
detailDo.setStdPackUnit(itempackagingDO.getStdPackUnit());
detailDo.setStdPackQty(itempackagingDO.getStdPackQty());
}
}
}

9
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRequest/SupplierdeliverRequestMainService.java

@ -127,5 +127,14 @@ public interface SupplierdeliverRequestMainService {
*/
Integer rejSupplierdeliverRequestMain(Long id);
/**
* 生成标签
*
* @param id 采采购订单申请主ID
* @return 更新数量
*/
Integer genLabel(String id);
}

25
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRequest/SupplierdeliverRequestMainServiceImpl.java

@ -24,6 +24,7 @@ import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.currencyexchange.CurrencyexchangeDO;
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.packageMassage.PackageDO;
import com.win.module.wms.dal.dataobject.purchase.PurchaseDetailDO;
import com.win.module.wms.dal.dataobject.purchase.PurchaseMainDO;
import com.win.module.wms.dal.dataobject.purchasePlan.PurchasePlanDetailDO;
@ -466,4 +467,28 @@ public class SupplierdeliverRequestMainServiceImpl implements SupplierdeliverReq
return supplierdeliverRequestMainMapper.updateById(mainDO);
}
/**
* 生成标签
*
* @param id 采采购订单申请主ID
* @return 更新数量
*/
@Override
@Transactional
public Integer genLabel(String id) {
QueryWrapper<SupplierdeliverRequestMainDO> queryWrapper = new QueryWrapper();
queryWrapper.eq("number", id);
SupplierdeliverRequestMainDO mainDO = supplierdeliverRequestMainMapper.selectOne(queryWrapper);
PackageDO packageDO = new PackageDO();
packageDO.setSupplierCode(mainDO.getSupplierCode());
packageDO.setSupplierItemCode(null);
packageDO.setPpNumber(mainDO.getPpNumber());
packageDO.setAsnNumber(mainDO.getAsnNumber());
return 0;
}
}

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

@ -890,6 +890,8 @@ public class JobUtils {
if (locationList != null && locationList.size() > 0) {
queryWrapperExpectout.in("location_code", locationList);
}
// TODO: 默认单件管理 箱码不为null 如按批次或其他 需要扩展其他情况
queryWrapperExpectout.isNotNull("packing_number");
if (balanceDO.getPackingNumber() != null && !balanceDO.getPackingNumber().equals("")) queryWrapperExpectout.eq("packing_number", balanceDO.getPackingNumber());
if (balanceDO.getBatch() != null && !balanceDO.getBatch().equals("")) queryWrapperExpectout.eq("batch", balanceDO.getBatch());
queryWrapperExpectout.groupBy("item_code","packing_number", "batch");

Loading…
Cancel
Save