Browse Source

Merge remote-tracking branch 'origin/master'

master
赵雪冰 2 years ago
parent
commit
527d19b46d
  1. 1
      win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java
  2. 41
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/index/IndexController.java
  3. 57
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/InventorychangeRecordMainController.java
  4. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/vo/InventorychangeRecordDetailBaseVO.java
  5. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/vo/InventorychangeRecordDetailPageReqVO.java
  6. 7
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/vo/InventorychangeRecordMainBaseVO.java
  7. 137
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/vo/InventorychangeRecordMainExcelVO.java
  8. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/vo/InventorychangeRecordMainExportReqVO.java
  9. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/vo/InventorychangeRecordMainPageReqVO.java
  10. 132
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/InventorychangeRequestMainController.java
  11. 10
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestMainBaseVO.java
  12. 129
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestMainExcelVO.java
  13. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestMainExportReqVO.java
  14. 7
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestMainImportVO.java
  15. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestMainPageReqVO.java
  16. 31
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/location/LocationController.java
  17. 57
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/offlinesettlementRecord/OfflinesettlementRecordMainController.java
  18. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/offlinesettlementRecord/vo/OfflinesettlementRecordDetailExportReqVO.java
  19. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/offlinesettlementRecord/vo/OfflinesettlementRecordDetailPageReqVO.java
  20. 59
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/offlinesettlementRecord/vo/OfflinesettlementRecordMainExcelVO.java
  21. 16
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchase/PurchaseDetailController.java
  22. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasePlan/PurchasePlanDetailController.java
  23. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverRequest/DeliverRequestMainConvert.java
  24. 19
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorychangeRecord/InventorychangeRecordMainConvert.java
  25. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorychangeRequest/InventorychangeRequestDetailConvert.java
  26. 21
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorychangeRequest/InventorychangeRequestMainConvert.java
  27. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorymoveJob/InventorymoveJobMainConvert.java
  28. 12
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/offlinesettlementRecord/OfflinesettlementRecordMainConvert.java
  29. 1
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventorychangeRecord/InventorychangeRecordDetailDO.java
  30. 10
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventorychangeRequest/InventorychangeRequestDetailDO.java
  31. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventorychangeRequest/InventorychangeRequestMainDO.java
  32. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/offlinesettlementRecord/OfflinesettlementRecordDetailDO.java
  33. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorychangeRecord/InventorychangeRecordDetailMapper.java
  34. 40
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorychangeRecord/InventorychangeRecordMainMapper.java
  35. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorychangeRequest/InventorychangeRequestDetailMapper.java
  36. 41
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorychangeRequest/InventorychangeRequestMainMapper.java
  37. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorymoveRequest/InventorymoveRequestDetailMapper.java
  38. 7
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/offlinesettlementRecord/OfflinesettlementRecordDetailMapper.java
  39. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/offlinesettlementRecord/OfflinesettlementRecordMainMapper.java
  40. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasePlan/PurchasePlanDetailMapper.java
  41. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countPlan/CountPlanMainServiceImpl.java
  42. 11
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countRequest/CountRequestMainServiceImpl.java
  43. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRequest/CustomerreturnRequestMainServiceImpl.java
  44. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customersettleRequest/CustomersettleRequestMainServiceImpl.java
  45. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestMainServiceImpl.java
  46. 1
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRecord/InventorychangeRecordDetailService.java
  47. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRecord/InventorychangeRecordDetailServiceImpl.java
  48. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRecord/InventorychangeRecordMainService.java
  49. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRecord/InventorychangeRecordMainServiceImpl.java
  50. 1
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestDetailService.java
  51. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestDetailServiceImpl.java
  52. 45
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestMainService.java
  53. 569
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestMainServiceImpl.java
  54. 130
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRequest/InventorymoveRequestMainServiceImpl.java
  55. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/location/LocationServiceImpl.java
  56. 1
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/offlinesettlementRecord/OfflinesettlementRecordDetailService.java
  57. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/offlinesettlementRecord/OfflinesettlementRecordDetailServiceImpl.java
  58. 1
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/offlinesettlementRecord/OfflinesettlementRecordMainService.java
  59. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/offlinesettlementRecord/OfflinesettlementRecordMainServiceImpl.java
  60. 19
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreceiptJob/ProductionreceiptJobMainServiceImpl.java
  61. 57
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptJob/ProductreceiptJobMainServiceImpl.java
  62. 7
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainService.java
  63. 30
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainServiceImpl.java
  64. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanDetailService.java
  65. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanDetailServiceImpl.java
  66. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanMainService.java
  67. 36
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanMainServiceImpl.java
  68. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/putawayRequest/PutawayRequestMainServiceImpl.java
  69. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/recordsetting/RecordsettingServiceImpl.java
  70. 11
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/repleinshJob/RepleinshJobMainServiceImpl.java
  71. 43
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRequest/SupplierdeliverRequestMainServiceImpl.java
  72. 1
      win-server/src/main/resources/application.yaml

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

@ -855,6 +855,7 @@ public interface ErrorCodeConstants {
//库存修改申请ErrorCode //库存修改申请ErrorCode
ErrorCode INVENTORYCHANGE_REQUEST_MAIN_NOT_EXISTS = new ErrorCode(1_000_134_000, "库存修改申请主不存在"); ErrorCode INVENTORYCHANGE_REQUEST_MAIN_NOT_EXISTS = new ErrorCode(1_000_134_000, "库存修改申请主不存在");
ErrorCode INVENTORYCHANGE_REQUEST_DETAIL_NOT_EXISTS = new ErrorCode(1_000_134_001, "库存修改申请子不存在"); ErrorCode INVENTORYCHANGE_REQUEST_DETAIL_NOT_EXISTS = new ErrorCode(1_000_134_001, "库存修改申请子不存在");
ErrorCode INVENTORYCHANGE_REQUEST_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_000_134_001, "导入库存修改申请不能为空");
//库存修改记录ErrorCode //库存修改记录ErrorCode
ErrorCode INVENTORYCHANGE_RECORD_MAIN_NOT_EXISTS = new ErrorCode(1_000_135_000, "库存修改记录主不存在"); ErrorCode INVENTORYCHANGE_RECORD_MAIN_NOT_EXISTS = new ErrorCode(1_000_135_000, "库存修改记录主不存在");
ErrorCode INVENTORYCHANGE_RECORD_DETAIL_NOT_EXISTS = new ErrorCode(1_000_135_001, "库存修改记录子不存在"); ErrorCode INVENTORYCHANGE_RECORD_DETAIL_NOT_EXISTS = new ErrorCode(1_000_135_001, "库存修改记录子不存在");

41
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/index/IndexController.java

@ -0,0 +1,41 @@
package com.win.module.wms.controller.index;
import com.win.framework.common.pojo.CommonResult;
import com.win.module.wms.service.purchase.PurchaseMainService;
import com.win.module.wms.service.purchasePlan.PurchasePlanMainService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;
import static com.win.framework.common.pojo.CommonResult.success;
@Tag(name = "管理后台 - 首页")
@RestController
@RequestMapping("/wms/index")
@Validated
public class IndexController {
@Resource
private PurchaseMainService purchaseMainService;
@Resource
private PurchasePlanMainService purchasePlanMainService;
@GetMapping("/index")
@Operation(summary = "开放订单数")
public CommonResult<Map<String, Object>> index() {
Map<String, Object> dataMap = new HashMap<>();
dataMap.put("openPurchaseNum", purchaseMainService.getPurchaseCount(true));
dataMap.put("allPurchaseNum", purchaseMainService.getPurchaseCount(false));
dataMap.put("openPurchasePlanNum", purchasePlanMainService.getPurchasePlanCount(true));
dataMap.put("allPurchasePlanNum", purchasePlanMainService.getPurchasePlanCount(false));
return success(dataMap);
}
}

57
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/InventorychangeRecordMainController.java

@ -1,8 +1,16 @@
package com.win.module.wms.controller.inventorychangeRecord; package com.win.module.wms.controller.inventorychangeRecord;
import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.dict.core.util.DictFrameworkUtils;
import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.AdminUserApi;
import com.win.module.system.api.user.dto.AdminUserRespDTO; import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestMainExcelVO;
import com.win.module.wms.convert.inventorychangeRequest.InventorychangeRequestMainConvert;
import com.win.module.wms.dal.dataobject.inventorychangeRecord.InventorychangeRecordDetailDO;
import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestDetailDO;
import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestMainDO;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.inventorychangeRecord.InventorychangeRecordDetailService;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -38,6 +46,8 @@ public class InventorychangeRecordMainController {
@Resource @Resource
private InventorychangeRecordMainService inventorychangeRecordMainService; private InventorychangeRecordMainService inventorychangeRecordMainService;
@Resource
private InventorychangeRecordDetailService inventorychangeRecordDetailService;
@Resource @Resource
private AdminUserApi userApi; private AdminUserApi userApi;
@ -113,13 +123,48 @@ public class InventorychangeRecordMainController {
HttpServletResponse response) throws IOException { HttpServletResponse response) throws IOException {
List<InventorychangeRecordMainDO> list = inventorychangeRecordMainService.getInventorychangeRecordMainList(exportReqVO); List<InventorychangeRecordMainDO> list = inventorychangeRecordMainService.getInventorychangeRecordMainList(exportReqVO);
// 导出 Excel // 导出 Excel
List<InventorychangeRecordMainExcelVO> datas = InventorychangeRecordMainConvert.INSTANCE.convertList02(list); //组装vo
for(InventorychangeRecordMainExcelVO vo : datas) { Map<Integer, String[]> mapDropDown = new HashMap<>();
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator())); List<InventorychangeRecordMainExcelVO> resultList = this.getExcelVo(list, mapDropDown);
//后端创建个字段作为前端展示的虚拟字段 // 导出 Excel
vo.setCreator(user.getNickname()); ExcelUtils.write(response, "库存修改记录.xlsx", "数据", InventorychangeRecordMainExcelVO.class, resultList, mapDropDown);
} }
ExcelUtils.write(response, "库存修改记录主.xls", "数据", InventorychangeRecordMainExcelVO.class, datas);
@PostMapping("/export-excel-senior")
@Operation(summary = "导出库存修改记录主 Excel")
@PreAuthorize("@ss.hasPermission('wms:inventorychange-record-main:export')")
@OperateLog(type = EXPORT)
public void exportInventorychangeRecordMainSeniorExcel(@Valid @RequestBody CustomConditions conditions, HttpServletResponse response) throws IOException {
List<InventorychangeRecordMainDO> list = inventorychangeRecordMainService.getInventorychangeRecordMainList(conditions);
//组装vo
Map<Integer, String[]> mapDropDown = new HashMap<>();
List<InventorychangeRecordMainExcelVO> resultList = this.getExcelVo(list, mapDropDown);
// 导出 Excel
ExcelUtils.write(response, "库存修改记录.xlsx", "数据", InventorychangeRecordMainExcelVO.class, resultList, mapDropDown);
} }
private List<InventorychangeRecordMainExcelVO> getExcelVo(List<InventorychangeRecordMainDO> list, Map<Integer, String[]> mapDropDown) {
String[] interfaceType = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INTERFACE_TYPE);
mapDropDown.put(10, interfaceType);
mapDropDown.put(47, interfaceType);
String[] trueFalse = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE);
mapDropDown.put(16, trueFalse);
String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS);
mapDropDown.put(29, inventoryStatus);
mapDropDown.put(39, inventoryStatus);
String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM);
mapDropDown.put(45, uom);
List<InventorychangeRecordMainExcelVO> resultList = new ArrayList<>();
// 导出
for(InventorychangeRecordMainDO mainDO : list) {
List<InventorychangeRecordDetailDO> subList = inventorychangeRecordDetailService.selectListByID(mainDO.getId());
for(InventorychangeRecordDetailDO detailDO : subList) {
InventorychangeRecordMainExcelVO vo = InventorychangeRecordMainConvert.INSTANCE.convert(mainDO, detailDO);
vo.setCreator(userApi.getUser(Long.valueOf(mainDO.getCreator())).getNickname());
vo.setCreatorDetail(userApi.getUser(Long.valueOf(detailDO.getCreator())).getNickname());
resultList.add(vo);
}
}
return resultList;
}
} }

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/vo/InventorychangeRecordDetailBaseVO.java

@ -154,4 +154,6 @@ public class InventorychangeRecordDetailBaseVO {
@Schema(description = "任务明细ID") @Schema(description = "任务明细ID")
private String jobDetailId; private String jobDetailId;
@Schema(description = "主表id")
private String masterId;
} }

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/vo/InventorychangeRecordDetailPageReqVO.java

@ -135,4 +135,6 @@ public class InventorychangeRecordDetailPageReqVO extends PageParam {
@Schema(description = "任务明细ID") @Schema(description = "任务明细ID")
private String jobDetailId; private String jobDetailId;
@Schema(description = "主表id")
private String masterId;
} }

7
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/vo/InventorychangeRecordMainBaseVO.java

@ -2,11 +2,6 @@ package com.win.module.wms.controller.inventorychangeRecord.vo;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import javax.validation.constraints.*; import javax.validation.constraints.*;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
@ -93,4 +88,6 @@ public class InventorychangeRecordMainBaseVO {
@NotNull(message = "是否可用不能为空") @NotNull(message = "是否可用不能为空")
private String available; private String available;
@Schema(description = "状态")
private String status;
} }

137
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/vo/InventorychangeRecordMainExcelVO.java

@ -1,7 +1,10 @@
package com.win.module.wms.controller.inventorychangeRecord.vo; package com.win.module.wms.controller.inventorychangeRecord.vo;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.*;
import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@ -22,6 +25,9 @@ import com.win.framework.excel.core.convert.DictConvert;
@Data @Data
public class InventorychangeRecordMainExcelVO { public class InventorychangeRecordMainExcelVO {
@ExcelProperty("单据号")
private String number;
@ExcelProperty("申请单号") @ExcelProperty("申请单号")
private String requestNumber; private String requestNumber;
@ -35,15 +41,19 @@ public class InventorychangeRecordMainExcelVO {
private String inTransactionType; private String inTransactionType;
@ExcelProperty("执行时间") @ExcelProperty("执行时间")
@ColumnWidth(value = 22)
private LocalDateTime executeTime; private LocalDateTime executeTime;
@ExcelProperty("生效日期") @ExcelProperty("生效日期")
@ColumnWidth(value = 22)
private LocalDateTime activeDate; private LocalDateTime activeDate;
@ExcelProperty("申请时间") @ExcelProperty("申请时间")
@ColumnWidth(value = 22)
private LocalDateTime requestTime; private LocalDateTime requestTime;
@ExcelProperty("截止时间") @ExcelProperty("截止时间")
@ColumnWidth(value = 22)
private LocalDateTime dueTime; private LocalDateTime dueTime;
@ExcelProperty("部门") @ExcelProperty("部门")
@ -56,9 +66,6 @@ public class InventorychangeRecordMainExcelVO {
@ExcelProperty("代码") @ExcelProperty("代码")
private String code; private String code;
@ExcelProperty("单据号")
private String number;
@ExcelProperty("业务类型") @ExcelProperty("业务类型")
private String businessType; private String businessType;
@ -66,12 +73,134 @@ public class InventorychangeRecordMainExcelVO {
private String remark; private String remark;
@ExcelProperty("创建时间") @ExcelProperty("创建时间")
@ColumnWidth(value = 22)
private LocalDateTime createTime; private LocalDateTime createTime;
@ExcelProperty("创建者Id") @ExcelProperty("创建者Id")
private String creator; private String creator;
@ExcelProperty("是否可用") @ExcelProperty(value = "是否可用", converter = DictConvert.class)
@DictFormat("true_false") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String available; private String available;
//子表数据
@ExcelProperty("库位代码")
private String locationCode;
@ExcelProperty("库位组代码")
private String locationGroupCode;
@ExcelProperty("库区代码")
private String areaCode;
@ExcelProperty("从数量")
private BigDecimal fromQty;
@ExcelProperty("从货主代码")
private String fromOwnerCode;
@ExcelProperty("从包装号")
private String fromPackingNumber;
@ExcelProperty("从器具号")
private String fromContainerNumber;
@ExcelProperty("从批次")
private String fromBatch;
@ExcelProperty("从替代批次")
private String fromAltBatch;
@ExcelProperty("从到货日期")
@ColumnWidth(value = 22)
private LocalDateTime fromArriveDate;
@ExcelProperty("从生产日期")
@ColumnWidth(value = 22)
private LocalDateTime fromProduceDate;
@ExcelProperty("从过期日期")
@ColumnWidth(value = 22)
private LocalDateTime fromExpireDate;
@ExcelProperty(value = "从库存状态", converter = DictConvert.class)
@DictFormat("inventory_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String fromInventoryStatus;
@ExcelProperty("到数量")
private BigDecimal toQty;
@ExcelProperty("到货主代码")
private String toOwnerCode;
@ExcelProperty("到包装号")
private String toPackingNumber;
@ExcelProperty("到器具号")
private String toContainerNumber;
@ExcelProperty("到批次")
private String toBatch;
@ExcelProperty("到替代批次")
private String toAltBatch;
@ExcelProperty("到到货日期")
@ColumnWidth(value = 22)
private LocalDateTime toArriveDate;
@ExcelProperty("到生产日期")
@ColumnWidth(value = 22)
private LocalDateTime toProduceDate;
@ExcelProperty("到过期日期")
@ColumnWidth(value = 22)
private LocalDateTime toExpireDate;
@ExcelProperty(value = "到库存状态", converter = DictConvert.class)
@DictFormat("inventory_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String toInventoryStatus;
@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("uom") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String uom;
@ExcelProperty("代码")
private String codeDetail;
@ExcelProperty(value = "接口类型", converter = DictConvert.class)
@DictFormat("interface_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String interfaceTypeDetail;
@ExcelProperty("物品代码")
private String itemCode;
@ExcelProperty("备注")
private String remarkDetail;
@ExcelProperty("创建时间")
@ColumnWidth(value = 22)
private LocalDateTime createTimeDetail;
@ExcelProperty("创建者Id")
private String creatorDetail;
@ExcelProperty("任务明细ID")
private String jobDetailId;
} }

6
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/vo/InventorychangeRecordMainExportReqVO.java

@ -69,4 +69,10 @@ public class InventorychangeRecordMainExportReqVO {
@Schema(description = "是否可用") @Schema(description = "是否可用")
private String available; private String available;
@Schema(description = "从库存状态")
private String fromInventoryStatus;
@Schema(description = "到库存状态")
private String toInventoryStatus;
} }

6
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/vo/InventorychangeRecordMainPageReqVO.java

@ -71,4 +71,10 @@ public class InventorychangeRecordMainPageReqVO extends PageParam {
@Schema(description = "是否可用") @Schema(description = "是否可用")
private String available; private String available;
@Schema(description = "从库存状态")
private String fromInventoryStatus;
@Schema(description = "到库存状态")
private String toInventoryStatus;
} }

132
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/InventorychangeRequestMainController.java

@ -3,14 +3,22 @@ package com.win.module.wms.controller.inventorychangeRequest;
import com.win.framework.common.pojo.CommonResult; import com.win.framework.common.pojo.CommonResult;
import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult; import com.win.framework.common.pojo.PageResult;
import com.win.framework.dict.core.util.DictFrameworkUtils;
import com.win.framework.excel.core.util.ConvertUtil; import com.win.framework.excel.core.util.ConvertUtil;
import com.win.framework.excel.core.util.ExcelUtils; import com.win.framework.excel.core.util.ExcelUtils;
import com.win.framework.operatelog.core.annotations.OperateLog; import com.win.framework.operatelog.core.annotations.OperateLog;
import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.AdminUserApi;
import com.win.module.system.api.user.dto.AdminUserRespDTO; import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.wms.controller.deliverRequest.vo.DeliverRequestMainExcelVO;
import com.win.module.wms.controller.inventorychangeRequest.vo.*; import com.win.module.wms.controller.inventorychangeRequest.vo.*;
import com.win.module.wms.convert.deliverRequest.DeliverRequestMainConvert;
import com.win.module.wms.convert.inventorychangeRequest.InventorychangeRequestMainConvert; import com.win.module.wms.convert.inventorychangeRequest.InventorychangeRequestMainConvert;
import com.win.module.wms.dal.dataobject.deliverRequest.DeliverRequestDetailDO;
import com.win.module.wms.dal.dataobject.deliverRequest.DeliverRequestMainDO;
import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestDetailDO;
import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestMainDO; import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestMainDO;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.inventorychangeRequest.InventorychangeRequestDetailService;
import com.win.module.wms.service.inventorychangeRequest.InventorychangeRequestMainService; import com.win.module.wms.service.inventorychangeRequest.InventorychangeRequestMainService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
@ -41,6 +49,9 @@ public class InventorychangeRequestMainController {
@Resource @Resource
private InventorychangeRequestMainService inventorychangeRequestMainService; private InventorychangeRequestMainService inventorychangeRequestMainService;
@Resource
private InventorychangeRequestDetailService inventorychangeRequestDetailService;
@Resource @Resource
private AdminUserApi userApi; private AdminUserApi userApi;
@ -54,7 +65,8 @@ public class InventorychangeRequestMainController {
@PutMapping("/update") @PutMapping("/update")
@Operation(summary = "更新库存修改申请主") @Operation(summary = "更新库存修改申请主")
@PreAuthorize("@ss.hasPermission('wms:inventorychange-request-main:update')") @PreAuthorize("@ss.hasPermission('wms:inventorychange-request-main:update')")
public CommonResult<Boolean> updateInventorychangeRequestMain(@Valid @RequestBody InventorychangeRequestMainUpdateReqVO updateReqVO) { public CommonResult<Boolean> updateInventorychangeRequestMain(
@Valid @RequestBody InventorychangeRequestMainUpdateReqVO updateReqVO) {
inventorychangeRequestMainService.updateInventorychangeRequestMain(updateReqVO); inventorychangeRequestMainService.updateInventorychangeRequestMain(updateReqVO);
return success(true); return success(true);
} }
@ -91,7 +103,13 @@ public class InventorychangeRequestMainController {
@PreAuthorize("@ss.hasPermission('wms:inventorychange-request-main:query')") @PreAuthorize("@ss.hasPermission('wms:inventorychange-request-main:query')")
public CommonResult<PageResult<InventorychangeRequestMainRespVO>> getInventorychangeRequestMainPage(@Valid InventorychangeRequestMainPageReqVO pageVO) { public CommonResult<PageResult<InventorychangeRequestMainRespVO>> getInventorychangeRequestMainPage(@Valid InventorychangeRequestMainPageReqVO pageVO) {
PageResult<InventorychangeRequestMainDO> pageResult = inventorychangeRequestMainService.getInventorychangeRequestMainPage(pageVO); PageResult<InventorychangeRequestMainDO> pageResult = inventorychangeRequestMainService.getInventorychangeRequestMainPage(pageVO);
return success(InventorychangeRequestMainConvert.INSTANCE.convertPage(pageResult)); PageResult<InventorychangeRequestMainRespVO> result = InventorychangeRequestMainConvert.INSTANCE.convertPage(pageResult);
for(InventorychangeRequestMainRespVO vo : result.getList()) {
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator()));
//后端创建个字段作为前端展示的虚拟字段
vo.setCreator(user.getNickname());
}
return success(result);
} }
@PostMapping("/senior") @PostMapping("/senior")
@Operation(summary = "高级搜索获得库存修改申请主分页") @Operation(summary = "高级搜索获得库存修改申请主分页")
@ -114,13 +132,23 @@ public class InventorychangeRequestMainController {
HttpServletResponse response) throws IOException { HttpServletResponse response) throws IOException {
List<InventorychangeRequestMainDO> list = inventorychangeRequestMainService.getInventorychangeRequestMainList(exportReqVO); List<InventorychangeRequestMainDO> list = inventorychangeRequestMainService.getInventorychangeRequestMainList(exportReqVO);
// 导出 Excel // 导出 Excel
List<InventorychangeRequestMainExcelVO> datas = InventorychangeRequestMainConvert.INSTANCE.convertList02(list); //组装vo
for(InventorychangeRequestMainExcelVO vo : datas) { Map<Integer, String[]> mapDropDown = new HashMap<>();
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator())); List<InventorychangeRequestMainExcelVO> resultList = this.getExcelVo(list, mapDropDown);
//后端创建个字段作为前端展示的虚拟字段 ExcelUtils.write(response, "库存修改申请主.xls", "数据", InventorychangeRequestMainExcelVO.class, resultList, mapDropDown);
vo.setCreator(user.getNickname());
} }
ExcelUtils.write(response, "库存修改申请主.xls", "数据", InventorychangeRequestMainExcelVO.class, datas);
@PostMapping("/export-excel-senior")
@Operation(summary = "导出库存修改申请主 Excel")
@PreAuthorize("@ss.hasPermission('wms:inventorychange-request-main:export')")
@OperateLog(type = EXPORT)
public void exportInventorychangeRequestMainSeniorExcel(@Valid @RequestBody CustomConditions conditions, HttpServletResponse response) throws IOException {
List<InventorychangeRequestMainDO> list = inventorychangeRequestMainService.getInventorychangeRequestMainList(conditions);
//组装vo
Map<Integer, String[]> mapDropDown = new HashMap<>();
List<InventorychangeRequestMainExcelVO> resultList = this.getExcelVo(list, mapDropDown);
// 导出 Excel
ExcelUtils.write(response, "库存修改申请主.xlsx", "数据", InventorychangeRequestMainExcelVO.class, resultList, mapDropDown);
} }
@GetMapping("/get-import-template") @GetMapping("/get-import-template")
@ -129,30 +157,53 @@ public class InventorychangeRequestMainController {
// 手动创建导出 demo // 手动创建导出 demo
List<InventorychangeRequestMainImportVO> list = new ArrayList<>(); List<InventorychangeRequestMainImportVO> list = new ArrayList<>();
Map<Integer, String[]> mapDropDown = new HashMap<>(); Map<Integer, String[]> mapDropDown = new HashMap<>();
// String[] purchaseReturnReason = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.PURCHASE_RETURN_REASON);
// mapDropDown.put(16, purchaseReturnReason);
// String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM);
// mapDropDown.put(25, uom);
// 输出 // 输出
ExcelUtils.write(response, "库存修改申请信息导入模板.xlsx", "发货计划信息列表", InventorychangeRequestMainImportVO.class, list, mapDropDown); ExcelUtils.write(response, "库存修改申请信息导入模板.xlsx", "发货计划信息列表", InventorychangeRequestMainImportVO.class, list, mapDropDown);
} }
private List<InventorychangeRequestMainExcelVO> getExcelVo(List<InventorychangeRequestMainDO> list, Map<Integer, String[]> mapDropDown) {
String[] requestStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.REQUEST_STATUS);
mapDropDown.put(9, requestStatus);
String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS);
mapDropDown.put(28, inventoryStatus);
mapDropDown.put(38, inventoryStatus);
String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM);
mapDropDown.put(47, uom);
List<InventorychangeRequestMainExcelVO> resultList = new ArrayList<>();
// 导出
for(InventorychangeRequestMainDO mainDO : list) {
List<InventorychangeRequestDetailDO> subList = inventorychangeRequestDetailService.selectListByID(mainDO.getId());
for(InventorychangeRequestDetailDO detailDO : subList) {
InventorychangeRequestMainExcelVO vo = InventorychangeRequestMainConvert.INSTANCE.convert(mainDO, detailDO);
vo.setCreator(userApi.getUser(Long.valueOf(mainDO.getCreator())).getNickname());
vo.setUpdater(userApi.getUser(Long.valueOf(mainDO.getUpdater())).getNickname());
vo.setCreatorDetail(userApi.getUser(Long.valueOf(detailDO.getCreator())).getNickname());
vo.setUpdaterDetail(userApi.getUser(Long.valueOf(detailDO.getUpdater())).getNickname());
resultList.add(vo);
}
}
return resultList;
}
@PostMapping("/import") @PostMapping("/import")
@Operation(summary = "导入库存修改申请") @Operation(summary = "导入库存修改申请")
@Parameters({ @Parameters({
@Parameter(name = "file", description = "Excel 文件", required = true), @Parameter(name = "file", description = "Excel 文件", required = true),
@Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"), @Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"),
@Parameter(name = "fromInventoryStatus", description = "从库存状态"),
@Parameter(name = "toInventoryStatus", description = "到库存状态"),
@Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true") @Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true")
}) })
@PreAuthorize("@ss.hasPermission('wms:deliver-plan-main:import')") @PreAuthorize("@ss.hasPermission('wms:inventorychange-request-main:import')")
public CommonResult<Map<String, Object>> importExcel(HttpServletResponse response, public CommonResult<Map<String, Object>> importExcel(HttpServletResponse response,
@RequestParam("file") MultipartFile file, @RequestParam("file") MultipartFile file,
@RequestParam(value = "mode") Integer mode, @RequestParam(value = "mode") Integer mode,
@RequestParam(value = "fromInventoryStatus") String fromInventoryStatus ,
@RequestParam(value = "toInventoryStatus") String toInventoryStatus ,
@RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception { @RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception {
List<InventorychangeRequestMainImportVO> list = ExcelUtils.read(file, InventorychangeRequestMainImportVO.class); List<InventorychangeRequestMainImportVO> list = ExcelUtils.read(file, InventorychangeRequestMainImportVO.class);
ConvertUtil<InventorychangeRequestMainCreateReqVO> convertUtil = new ConvertUtil<>(InventorychangeRequestMainCreateReqVO.class); ConvertUtil<InventorychangeRequestMainCreateReqVO> convertUtil = new ConvertUtil<>(InventorychangeRequestMainCreateReqVO.class);
List<InventorychangeRequestMainCreateReqVO> createReqVOList = convertUtil.invoke(list).getDataList(); List<InventorychangeRequestMainCreateReqVO> createReqVOList = convertUtil.invoke(list).getDataList();
List<InventorychangeRequestMainImportErrorVO> errorList = inventorychangeRequestMainService.importInventorychangeRequestMainList(createReqVOList, mode, updatePart); List<InventorychangeRequestMainImportErrorVO> errorList = inventorychangeRequestMainService.importInventorychangeRequestMainList(createReqVOList, mode, fromInventoryStatus, toInventoryStatus, updatePart);
Map<String, Object> returnMap = new HashMap<>(); Map<String, Object> returnMap = new HashMap<>();
returnMap.put("errorCount", errorList.size()); returnMap.put("errorCount", errorList.size());
if(!errorList.isEmpty()) { if(!errorList.isEmpty()) {
@ -162,4 +213,57 @@ public class InventorychangeRequestMainController {
return success(returnMap); return success(returnMap);
} }
@PutMapping("/close")
@Operation(summary = "关闭库存修改申请主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:inventorychange-request-main:close')")
public CommonResult<Boolean> closeInventorychangeRequestMain(@RequestParam("id") Long id) {
Integer count = inventorychangeRequestMainService.closeInventorychangeRequestMain(id);
return success(count > 0);
}
@PutMapping("/reAdd")
@Operation(summary = "重新添加库存修改申请主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:inventorychange-request-main:reAdd')")
public CommonResult<Boolean> reAddInventorychangeRequestMain(@RequestParam("id") Long id) {
Integer count = inventorychangeRequestMainService.reAddInventorychangeRequestMain(id);
return success(count > 0);
}
@PutMapping("/submit")
@Operation(summary = "提交库存修改申请主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:inventorychange-request-main:submit')")
public CommonResult<Boolean> submitInventorychangeRequestMain(@RequestParam("id") Long id) {
Integer count = inventorychangeRequestMainService.submitInventorychangeRequestMain(id);
return success(count > 0);
}
@PutMapping("/agree")
@Operation(summary = "审批通过库存修改申请主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:inventorychange-request-main:agree')")
public CommonResult<Boolean> agreeInventorychangeRequestMain(@RequestParam("id") Long id) {
Integer count = inventorychangeRequestMainService.agreeInventorychangeRequestMain(id);
return success(count > 0);
}
@PutMapping("/handle")
@Operation(summary = "处理库存修改申请主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:inventorychange-request-main:handle')")
public CommonResult<Boolean> handleInventorychangeRequestMain(@RequestParam("id") Long id) {
Integer count = inventorychangeRequestMainService.handleInventorychangeRequestMain(id);
return success(count > 0);
}
@PutMapping("/refused")
@Operation(summary = "审批拒绝库存修改申请主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:inventorychange-request-main:refused')")
public CommonResult<Boolean> abortInventorychangeRequestMain(@RequestParam("id") Long id) {
Integer count = inventorychangeRequestMainService.abortInventorychangeRequestMain(id);
return success(count > 0);
}
} }

10
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestMainBaseVO.java

@ -1,11 +1,8 @@
package com.win.module.wms.controller.inventorychangeRequest.vo; package com.win.module.wms.controller.inventorychangeRequest.vo;
import com.win.framework.excel.core.annotations.OnlyOne;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import javax.validation.constraints.*; import javax.validation.constraints.*;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
@ -23,22 +20,19 @@ public class InventorychangeRequestMainBaseVO {
private Long id; private Long id;
@Schema(description = "仓库代码", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "仓库代码", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "仓库代码不能为空")
private String warehouseCode; private String warehouseCode;
@Schema(description = "单据号", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "单据号", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "单据号不能为空") @OnlyOne
private String number; private String number;
@Schema(description = "业务类型", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "业务类型", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "业务类型不能为空")
private String businessType; private String businessType;
@Schema(description = "备注") @Schema(description = "备注")
private String remark; private String remark;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "创建时间不能为空")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime createTime; private LocalDateTime createTime;

129
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestMainExcelVO.java

@ -1,7 +1,10 @@
package com.win.module.wms.controller.inventorychangeRequest.vo; package com.win.module.wms.controller.inventorychangeRequest.vo;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.*;
import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@ -21,12 +24,12 @@ import com.win.framework.excel.core.convert.DictConvert;
@Data @Data
public class InventorychangeRequestMainExcelVO { public class InventorychangeRequestMainExcelVO {
@ExcelProperty("仓库代码")
private String warehouseCode;
@ExcelProperty("单据号") @ExcelProperty("单据号")
private String number; private String number;
@ExcelProperty("仓库代码")
private String warehouseCode;
@ExcelProperty("业务类型") @ExcelProperty("业务类型")
private String businessType; private String businessType;
@ -34,15 +37,18 @@ public class InventorychangeRequestMainExcelVO {
private String remark; private String remark;
@ExcelProperty("创建时间") @ExcelProperty("创建时间")
@ColumnWidth(value = 22)
private LocalDateTime createTime; private LocalDateTime createTime;
@ExcelProperty("创建者用户名") @ExcelProperty("创建者用户名")
private String creator; private String creator;
@ExcelProperty("申请时间") @ExcelProperty("申请时间")
@ColumnWidth(value = 22)
private LocalDateTime requestTime; private LocalDateTime requestTime;
@ExcelProperty("截止时间") @ExcelProperty("截止时间")
@ColumnWidth(value = 22)
private LocalDateTime dueTime; private LocalDateTime dueTime;
@ExcelProperty("部门") @ExcelProperty("部门")
@ -53,6 +59,7 @@ public class InventorychangeRequestMainExcelVO {
private String status; private String status;
@ExcelProperty("最后更新时间") @ExcelProperty("最后更新时间")
@ColumnWidth(value = 22)
private LocalDateTime updateTime; private LocalDateTime updateTime;
@ExcelProperty("最后更新者用户名") @ExcelProperty("最后更新者用户名")
@ -70,4 +77,120 @@ public class InventorychangeRequestMainExcelVO {
@ExcelProperty("直接生成记录") @ExcelProperty("直接生成记录")
private String directCreateRecord; private String directCreateRecord;
//子表数据
@ExcelProperty("库位组代码")
private String locationGroupCode;
@ExcelProperty("库位代码")
private String locationCode;
@ExcelProperty("库区代码")
private String areaCode;
@ExcelProperty("从数量")
private BigDecimal fromQty;
@ExcelProperty("从货主代码")
private String fromOwnerCode;
@ExcelProperty("从包装号")
private String fromPackingNumber;
@ExcelProperty("从器具号")
private String fromContainerNumber;
@ExcelProperty("从批次")
private String fromBatch;
@ExcelProperty("从替代批次")
private String fromAltbatch;
@ExcelProperty("从到货日期")
@ColumnWidth(value = 22)
private LocalDateTime fromArriveDate;
@ExcelProperty("从生产日期")
@ColumnWidth(value = 22)
private LocalDateTime fromProduceDate;
@ExcelProperty("从过期日期")
@ColumnWidth(value = 22)
private LocalDateTime fromExpireDate;
@ExcelProperty(value = "从库存状态", converter = DictConvert.class)
@DictFormat("inventory_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String fromInventoryStatus;
@ExcelProperty("到数量")
private BigDecimal toQty;
@ExcelProperty("到货主代码")
private String toOwnerCode;
@ExcelProperty("到包装号")
private String toPackingNumber;
@ExcelProperty("到器具号")
private String toContainerNumber;
@ExcelProperty("到批次")
private String toBatch;
@ExcelProperty("到替代批次")
private String toAltBatch;
@ExcelProperty("到到货日期")
@ColumnWidth(value = 22)
private LocalDateTime toArrivdAte;
@ExcelProperty("到生产日期")
@ColumnWidth(value = 22)
private LocalDateTime toProduceDate;
@ExcelProperty("到过期日期")
@ColumnWidth(value = 22)
private LocalDateTime toExpireDate;
@ExcelProperty(value = "到库存状态", converter = DictConvert.class)
@DictFormat("inventory_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String toInventoryStatus;
@ExcelProperty("备注")
private String remarkDetail;
@ExcelProperty("创建时间")
@ColumnWidth(value = 22)
private LocalDateTime createTimeDetail;
@ExcelProperty("创建者用户名")
private String creatorDetail;
@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("uom") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String uom;
@ExcelProperty("最后更新时间")
@ColumnWidth(value = 22)
private LocalDateTime updateTimeDetail;
@ExcelProperty("最后更新者用户名")
private String updaterDetail;
@ExcelProperty("物品代码")
private String itemCode;
} }

6
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestMainExportReqVO.java

@ -65,4 +65,10 @@ public class InventorychangeRequestMainExportReqVO {
@Schema(description = "直接生成记录") @Schema(description = "直接生成记录")
private String directCreateRecord; private String directCreateRecord;
@Schema(description = "从库存状态")
private String fromInventoryStatus;
@Schema(description = "到库存状态")
private String toInventoryStatus;
} }

7
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestMainImportVO.java

@ -18,6 +18,9 @@ import lombok.experimental.Accessors;
@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题 @Accessors(chain = false) // 设置 chain = false,避免用户导入有问题
public class InventorychangeRequestMainImportVO { public class InventorychangeRequestMainImportVO {
@ExcelProperty("单据号")
private String number;
//子表数据 //子表数据
@ExcelProperty("零件号") @ExcelProperty("零件号")
private String itemCode; private String itemCode;
@ -27,8 +30,6 @@ public class InventorychangeRequestMainImportVO {
private String fromContainerNumber; private String fromContainerNumber;
@ExcelProperty("批次") @ExcelProperty("批次")
private String fromBatch; private String fromBatch;
@ExcelProperty("库存状态")
private String fromInventoryStatus;
@ExcelProperty("来源库位") @ExcelProperty("来源库位")
private String fromLocationCode; private String locationCode;
} }

6
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestMainPageReqVO.java

@ -67,4 +67,10 @@ public class InventorychangeRequestMainPageReqVO extends PageParam {
@Schema(description = "直接生成记录") @Schema(description = "直接生成记录")
private String directCreateRecord; private String directCreateRecord;
@Schema(description = "从库存状态")
private String fromInventoryStatus;
@Schema(description = "到库存状态")
private String toInventoryStatus;
} }

31
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/location/LocationController.java

@ -1,6 +1,5 @@
package com.win.module.wms.controller.location; package com.win.module.wms.controller.location;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.win.framework.common.pojo.CommonResult; import com.win.framework.common.pojo.CommonResult;
import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult; import com.win.framework.common.pojo.PageResult;
@ -9,8 +8,8 @@ import com.win.framework.excel.core.util.ExcelUtils;
import com.win.framework.operatelog.core.annotations.OperateLog; import com.win.framework.operatelog.core.annotations.OperateLog;
import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.AdminUserApi;
import com.win.module.system.api.user.dto.AdminUserRespDTO; import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.wms.controller.bom.vo.BomImportErrorVO;
import com.win.module.wms.controller.location.vo.*; import com.win.module.wms.controller.location.vo.*;
import com.win.module.wms.controller.rule.vo.RuleRespVO;
import com.win.module.wms.convert.location.LocationConvert; import com.win.module.wms.convert.location.LocationConvert;
import com.win.module.wms.dal.dataobject.location.LocationDO; import com.win.module.wms.dal.dataobject.location.LocationDO;
import com.win.module.wms.dal.mysql.balance.BalanceMapper; import com.win.module.wms.dal.mysql.balance.BalanceMapper;
@ -29,17 +28,19 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.annotation.security.PermitAll;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid; import javax.validation.Valid;
import java.io.IOException; import java.io.IOException;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.ZoneOffset; import java.time.ZoneOffset;
import java.util.*; import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.framework.common.pojo.CommonResult.success; import static com.win.framework.common.pojo.CommonResult.success;
import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
import static com.win.module.wms.enums.ErrorCodeConstants.LOCATION_NOT_EXISTS;
@Tag(name = "管理后台 - 库位") @Tag(name = "管理后台 - 库位")
@RestController @RestController
@ -207,18 +208,14 @@ public class LocationController {
} }
return success(returnMap); return success(returnMap);
} }
public LocationDO selectLocation(String pcode) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("code",pcode);
LocationDO locationDO = locationMapper.selectOne(queryWrapper);
if(locationDO != null && "TRUE".equals(locationDO.getAvailable())){
return locationDO;
}else {
throw exception(LOCATION_NOT_EXISTS);
}
}
@PermitAll
@GetMapping("/inspectLocation")
@Operation(summary = "推荐库位(测试用)")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
public CommonResult<LocationDO> inspectLocation(@RequestParam("supplierCode") String supplierCode,@RequestParam("itemCode") String itemCode, @RequestParam("batch") String batch, @RequestParam("batch") String inventoryStatus) {
RuleRespVO ruleRespVO = ruleService.grounding(supplierCode, null, itemCode, inventoryStatus, null, null, null, null, null);
return success(locationService.inspectLocation(ruleRespVO, itemCode, batch, inventoryStatus));
}
} }

57
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/offlinesettlementRecord/OfflinesettlementRecordMainController.java

@ -1,8 +1,16 @@
package com.win.module.wms.controller.offlinesettlementRecord; package com.win.module.wms.controller.offlinesettlementRecord;
import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.dict.core.util.DictFrameworkUtils;
import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.AdminUserApi;
import com.win.module.system.api.user.dto.AdminUserRespDTO; import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.wms.controller.issueJob.vo.IssueJobMainExcelVO;
import com.win.module.wms.convert.issueJob.IssueJobMainConvert;
import com.win.module.wms.dal.dataobject.issueJob.IssueJobDetailDO;
import com.win.module.wms.dal.dataobject.issueJob.IssueJobMainDO;
import com.win.module.wms.dal.dataobject.offlinesettlementRecord.OfflinesettlementRecordDetailDO;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.offlinesettlementRecord.OfflinesettlementRecordDetailService;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -36,6 +44,8 @@ import com.win.module.wms.service.offlinesettlementRecord.OfflinesettlementRecor
@Validated @Validated
public class OfflinesettlementRecordMainController { public class OfflinesettlementRecordMainController {
@Resource
private OfflinesettlementRecordDetailService offlinesettlementRecordDetailService;
@Resource @Resource
private OfflinesettlementRecordMainService offlinesettlementRecordMainService; private OfflinesettlementRecordMainService offlinesettlementRecordMainService;
@ -105,21 +115,54 @@ public class OfflinesettlementRecordMainController {
} }
return success(result); return success(result);
} }
private List<OfflinesettlementRecordMainExcelVO> getExcelVo(List<OfflinesettlementRecordMainDO> list, Map<Integer, String[]> mapDropDown) {
String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS);
mapDropDown.put(21, inventoryStatus);
String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM);
mapDropDown.put(31, uom);
String[] trueFalse = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE);
mapDropDown.put(17, trueFalse);
List<OfflinesettlementRecordMainExcelVO> resultList = new ArrayList<>();
// 导出
for(OfflinesettlementRecordMainDO mainDO : list) {
List<OfflinesettlementRecordDetailDO> subList = offlinesettlementRecordDetailService.selectList(mainDO.getId());
for(OfflinesettlementRecordDetailDO detailDO : subList) {
OfflinesettlementRecordMainExcelVO vo = OfflinesettlementRecordMainConvert.INSTANCE.convert(mainDO, detailDO);
AdminUserRespDTO user = userApi.getUser(Long.valueOf(mainDO.getCreator()));
vo.setCreator(user.getNickname());
vo.setUpdater(user.getNickname());
resultList.add(vo);
}
}
return resultList;
}
@GetMapping("/export-excel") @GetMapping("/export-excel")
@Operation(summary = "导出下线结算记录主 Excel") @Operation(summary = "导出下线结算记录 Excel")
@PreAuthorize("@ss.hasPermission('wms:offlinesettlement-record-main:export')") @PreAuthorize("@ss.hasPermission('wms:offlinesettlement-record-main:export')")
@OperateLog(type = EXPORT) @OperateLog(type = EXPORT)
public void exportOfflinesettlementRecordMainExcel(@Valid OfflinesettlementRecordMainExportReqVO exportReqVO, public void exportOfflinesettlementRecordMainExcel(@Valid OfflinesettlementRecordMainExportReqVO exportReqVO,
HttpServletResponse response) throws IOException { HttpServletResponse response) throws IOException {
List<OfflinesettlementRecordMainDO> list = offlinesettlementRecordMainService.getOfflinesettlementRecordMainList(exportReqVO); List<OfflinesettlementRecordMainDO> list = offlinesettlementRecordMainService.getOfflinesettlementRecordMainList(exportReqVO);
//组装vo
Map<Integer, String[]> mapDropDown = new HashMap<>();
List<OfflinesettlementRecordMainExcelVO> resultList = this.getExcelVo(list, mapDropDown);
// 导出 Excel // 导出 Excel
List<OfflinesettlementRecordMainExcelVO> datas = OfflinesettlementRecordMainConvert.INSTANCE.convertList02(list); ExcelUtils.write(response, "下线结算记录.xlsx", "下线结算记录", OfflinesettlementRecordMainExcelVO.class, resultList, mapDropDown);
for(OfflinesettlementRecordMainExcelVO vo : datas) {
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator()));
//后端创建个字段作为前端展示的虚拟字段
vo.setCreator(user.getNickname());
} }
ExcelUtils.write(response, "下线结算记录主.xls", "数据", OfflinesettlementRecordMainExcelVO.class, datas);
@PostMapping("/export-excel-senior")
@Operation(summary = "导出下线结算记录 Excel")
@PreAuthorize("@ss.hasPermission('wms:offlinesettlement-record-main:export')")
@OperateLog(type = EXPORT)
public void exportOfflinesettlementRecordMainSeniorExcel(@Valid @RequestBody CustomConditions conditions, HttpServletResponse response) throws IOException {
List<OfflinesettlementRecordMainDO> list = offlinesettlementRecordMainService.getOfflinesettlementRecordMainList(conditions);
//组装vo
Map<Integer, String[]> mapDropDown = new HashMap<>();
List<OfflinesettlementRecordMainExcelVO> resultList = this.getExcelVo(list, mapDropDown);
// 导出 Excel
ExcelUtils.write(response, "发料任务.xlsx", "发料任务", OfflinesettlementRecordMainExcelVO.class, resultList, mapDropDown);
} }
} }

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/offlinesettlementRecord/vo/OfflinesettlementRecordDetailExportReqVO.java

@ -73,4 +73,7 @@ public class OfflinesettlementRecordDetailExportReqVO {
@Schema(description = "任务明细ID") @Schema(description = "任务明细ID")
private String jobDetailId; private String jobDetailId;
@Schema(description = "主表ID")
private String masterId;
} }

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/offlinesettlementRecord/vo/OfflinesettlementRecordDetailPageReqVO.java

@ -75,4 +75,8 @@ public class OfflinesettlementRecordDetailPageReqVO extends PageParam {
@Schema(description = "任务明细ID") @Schema(description = "任务明细ID")
private String jobDetailId; private String jobDetailId;
@Schema(description = "主表ID")
private String masterId;
} }

59
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/offlinesettlementRecord/vo/OfflinesettlementRecordMainExcelVO.java

@ -1,5 +1,6 @@
package com.win.module.wms.controller.offlinesettlementRecord.vo; package com.win.module.wms.controller.offlinesettlementRecord.vo;
import com.win.module.wms.enums.DictTypeConstants;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.*;
import java.util.*; import java.util.*;
@ -52,10 +53,6 @@ public class OfflinesettlementRecordMainExcelVO {
@ExcelProperty("部门") @ExcelProperty("部门")
private String departmentCode; private String departmentCode;
@ExcelProperty(value = "接口类型", converter = DictConvert.class)
@DictFormat("interface_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String interfaceType;
@ExcelProperty("单据号") @ExcelProperty("单据号")
private String number; private String number;
@ -71,7 +68,59 @@ public class OfflinesettlementRecordMainExcelVO {
@ExcelProperty("创建者Id") @ExcelProperty("创建者Id")
private String creator; private String creator;
@ExcelProperty("是否可用") @ExcelProperty("最后更新时间")
private LocalDateTime updateTime;
@ExcelProperty("最后更新者Id")
private String updater;
@ExcelProperty(value = "是否可用", converter = DictConvert.class)
@DictFormat(DictTypeConstants.UOM)
private String available; private String available;
// 子表数据
@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 locationCode;
@ExcelProperty("库位组代码")
private String locationGroupCode;
@ExcelProperty("库区代码")
private String areaCode;
@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;
} }

16
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchase/PurchaseDetailController.java

@ -1,5 +1,6 @@
package com.win.module.wms.controller.purchase; package com.win.module.wms.controller.purchase;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.win.framework.common.pojo.CommonResult; import com.win.framework.common.pojo.CommonResult;
import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult; import com.win.framework.common.pojo.PageResult;
@ -9,7 +10,9 @@ import com.win.module.system.api.user.AdminUserApi;
import com.win.module.system.api.user.dto.AdminUserRespDTO; import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.wms.controller.purchase.vo.*; import com.win.module.wms.controller.purchase.vo.*;
import com.win.module.wms.convert.purchase.PurchaseDetailConvert; import com.win.module.wms.convert.purchase.PurchaseDetailConvert;
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.PurchaseDetailDO;
import com.win.module.wms.dal.mysql.purchase.PurchaseDetailMapper;
import com.win.module.wms.service.purchase.PurchaseDetailService; import com.win.module.wms.service.purchase.PurchaseDetailService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
@ -36,6 +39,9 @@ public class PurchaseDetailController {
@Resource @Resource
private PurchaseDetailService purchaseDetailService; private PurchaseDetailService purchaseDetailService;
@Resource
private PurchaseDetailMapper purchaseDetailMapper;
@Resource @Resource
private AdminUserApi userApi; private AdminUserApi userApi;
@ -120,4 +126,14 @@ public class PurchaseDetailController {
ExcelUtils.write(response, "采购订单子.xls", "数据", PurchaseDetailExcelVO.class, datas); ExcelUtils.write(response, "采购订单子.xls", "数据", PurchaseDetailExcelVO.class, datas);
} }
@GetMapping("/selectAll")
@Operation(summary = "获得采购订单子分页")
@PreAuthorize("@ss.hasPermission('wms:purchase-detail:selectAll')")
public CommonResult<List<PurchaseDetailDO>> selectAll(@Valid PurchaseDetailPageReqVO pageVO) {
QueryWrapper<PurchaseDetailDO> purchaseDetailDOQueryWrapper = new QueryWrapper();
purchaseDetailDOQueryWrapper.eq("master_id", pageVO.getMasterId());
List<PurchaseDetailDO> purchaseDetailDOList = purchaseDetailMapper.selectList(purchaseDetailDOQueryWrapper);
return success(purchaseDetailDOList);
}
} }

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasePlan/PurchasePlanDetailController.java

@ -121,8 +121,8 @@ public class PurchasePlanDetailController {
@GetMapping("/allList") @GetMapping("/allList")
@Operation(summary = "高级搜索获得要货计划子信息") @Operation(summary = "高级搜索获得要货计划子信息")
@PreAuthorize("@ss.hasPermission('wms:purchase-plan-detail:allList')") @PreAuthorize("@ss.hasPermission('wms:purchase-plan-detail:allList')")
public CommonResult<List<PurchasePlanDetailRespVO>> selectAllList(@RequestParam String poNumber) { public CommonResult<List<PurchasePlanDetailRespVO>> selectAllList(@RequestParam String number) {
List<PurchasePlanDetailDO> list = purchasePlanDetailService.selectAllList(poNumber); List<PurchasePlanDetailDO> list = purchasePlanDetailService.selectAllList(number);
List<PurchasePlanDetailRespVO> result = PurchasePlanDetailConvert.INSTANCE.convertList(list); List<PurchasePlanDetailRespVO> result = PurchasePlanDetailConvert.INSTANCE.convertList(list);
return success(result); return success(result);
} }

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

@ -47,10 +47,6 @@ public interface DeliverRequestMainConvert {
@Mapping(source = "mainDO.updateTime", target = "updateTime"), @Mapping(source = "mainDO.updateTime", target = "updateTime"),
@Mapping(source = "mainDO.updater", target = "updater"), @Mapping(source = "mainDO.updater", target = "updater"),
@Mapping(source = "mainDO.remark", target = "remark"), @Mapping(source = "mainDO.remark", target = "remark"),
@Mapping(source = "detailDo.createTime", target = "createTimeDetail"),
@Mapping(source = "detailDo.creator", target = "creatorDetail"),
@Mapping(source = "detailDo.updateTime", target = "updateTimeDetail"),
@Mapping(source = "detailDo.updater", target = "updaterDetail"),
@Mapping(source = "detailDo.remark", target = "remarkDetail"), @Mapping(source = "detailDo.remark", target = "remarkDetail"),
}) })
DeliverRequestMainExcelVO convert(DeliverRequestMainDO mainDO, DeliverRequestDetailDO detailDo); DeliverRequestMainExcelVO convert(DeliverRequestMainDO mainDO, DeliverRequestDetailDO detailDo);

19
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorychangeRecord/InventorychangeRecordMainConvert.java

@ -8,7 +8,10 @@ import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRec
import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordMainExcelVO; import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordMainExcelVO;
import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordMainRespVO; import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordMainRespVO;
import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordMainUpdateReqVO; import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordMainUpdateReqVO;
import com.win.module.wms.dal.dataobject.inventorychangeRecord.InventorychangeRecordDetailDO;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers; import org.mapstruct.factory.Mappers;
import com.win.module.wms.dal.dataobject.inventorychangeRecord.InventorychangeRecordMainDO; import com.win.module.wms.dal.dataobject.inventorychangeRecord.InventorychangeRecordMainDO;
@ -34,4 +37,20 @@ public interface InventorychangeRecordMainConvert {
List<InventorychangeRecordMainExcelVO> convertList02(List<InventorychangeRecordMainDO> list); List<InventorychangeRecordMainExcelVO> convertList02(List<InventorychangeRecordMainDO> list);
@Mappings({
@Mapping(source = "mainDO.number", target = "number"),
@Mapping(source = "mainDO.createTime", target = "createTime"),
@Mapping(source = "mainDO.creator", target = "creator"),
@Mapping(source = "mainDO.interfaceType", target = "interfaceType"),
@Mapping(source = "mainDO.inTransactionType", target = "inTransactionType"),
@Mapping(source = "mainDO.outTransactionType", target = "outTransactionType"),
@Mapping(source = "mainDO.code", target = "code"),
@Mapping(source = "mainDO.remark", target = "remark"),
@Mapping(source = "detailDO.createTime", target = "createTimeDetail"),
@Mapping(source = "detailDO.creator", target = "creatorDetail"),
@Mapping(source = "detailDO.remark", target = "remarkDetail"),
@Mapping(source = "detailDO.interfaceType", target = "interfaceTypeDetail"),
@Mapping(source = "detailDO.code", target = "codeDetail"),
})
InventorychangeRecordMainExcelVO convert(InventorychangeRecordMainDO mainDO, InventorychangeRecordDetailDO detailDO);
} }

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorychangeRequest/InventorychangeRequestDetailConvert.java

@ -48,7 +48,4 @@ public interface InventorychangeRequestDetailConvert {
@Mapping(source = "mainDO.updater", target = "updater"), @Mapping(source = "mainDO.updater", target = "updater"),
}) })
InventorychangeRequestDetailExcelVO convert(InventorychangeRequestMainDO mainDO, InventorychangeRequestDetailDO detailDO); InventorychangeRequestDetailExcelVO convert(InventorychangeRequestMainDO mainDO, InventorychangeRequestDetailDO detailDO);
InventorychangeRequestMainImportErrorVO convert(InventorychangeRequestMainCreateReqVO mainVo, InventorychangeRequestDetailCreateReqVO detailVo);
} }

21
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorychangeRequest/InventorychangeRequestMainConvert.java

@ -5,6 +5,8 @@ import com.win.module.wms.controller.inventorychangeRequest.vo.*;
import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestDetailDO; import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestDetailDO;
import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestMainDO; import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestMainDO;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers; import org.mapstruct.factory.Mappers;
import java.util.List; import java.util.List;
@ -33,8 +35,23 @@ public interface InventorychangeRequestMainConvert {
List<InventorychangeRequestMainExcelVO> convertList02(List<InventorychangeRequestMainDO> list); List<InventorychangeRequestMainExcelVO> convertList02(List<InventorychangeRequestMainDO> list);
@Mappings({
@Mapping(source = "mainVo.number", target = "number"),
})
InventorychangeRequestMainImportErrorVO convert(InventorychangeRequestMainCreateReqVO mainVo, InventorychangeRequestDetailDO detailDo); InventorychangeRequestMainImportErrorVO convert(InventorychangeRequestMainCreateReqVO mainVo, InventorychangeRequestDetailDO detailDo);
@Mappings({
@Mapping(source = "mainDO.number", target = "number"),
@Mapping(source = "mainDO.createTime", target = "createTime"),
@Mapping(source = "mainDO.creator", target = "creator"),
@Mapping(source = "mainDO.updateTime", target = "updateTime"),
@Mapping(source = "mainDO.updater", target = "updater"),
@Mapping(source = "mainDO.remark", target = "remark"),
@Mapping(source = "detailDO.createTime", target = "createTimeDetail"),
@Mapping(source = "detailDO.creator", target = "creatorDetail"),
@Mapping(source = "detailDO.updateTime", target = "updateTimeDetail"),
@Mapping(source = "detailDO.updater", target = "updaterDetail"),
@Mapping(source = "detailDO.remark", target = "remarkDetail"),
})
InventorychangeRequestMainExcelVO convert(InventorychangeRequestMainDO mainDO, InventorychangeRequestDetailDO detailDO);
} }

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorymoveJob/InventorymoveJobMainConvert.java

@ -8,6 +8,7 @@ import com.win.module.wms.controller.inventorymoveJob.vo.InventorymoveJobMainCre
import com.win.module.wms.controller.inventorymoveJob.vo.InventorymoveJobMainExcelVO; import com.win.module.wms.controller.inventorymoveJob.vo.InventorymoveJobMainExcelVO;
import com.win.module.wms.controller.inventorymoveJob.vo.InventorymoveJobMainRespVO; import com.win.module.wms.controller.inventorymoveJob.vo.InventorymoveJobMainRespVO;
import com.win.module.wms.controller.inventorymoveJob.vo.InventorymoveJobMainUpdateReqVO; import com.win.module.wms.controller.inventorymoveJob.vo.InventorymoveJobMainUpdateReqVO;
import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestMainDO;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers; import org.mapstruct.factory.Mappers;
import com.win.module.wms.dal.dataobject.inventorymoveJob.InventorymoveJobMainDO; import com.win.module.wms.dal.dataobject.inventorymoveJob.InventorymoveJobMainDO;
@ -34,4 +35,5 @@ public interface InventorymoveJobMainConvert {
List<InventorymoveJobMainExcelVO> convertList02(List<InventorymoveJobMainDO> list); List<InventorymoveJobMainExcelVO> convertList02(List<InventorymoveJobMainDO> list);
InventorymoveJobMainDO convert(InventorymoveRequestMainDO mainDO);
} }

12
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/offlinesettlementRecord/OfflinesettlementRecordMainConvert.java

@ -8,7 +8,10 @@ import com.win.module.wms.controller.offlinesettlementRecord.vo.Offlinesettlemen
import com.win.module.wms.controller.offlinesettlementRecord.vo.OfflinesettlementRecordMainExcelVO; import com.win.module.wms.controller.offlinesettlementRecord.vo.OfflinesettlementRecordMainExcelVO;
import com.win.module.wms.controller.offlinesettlementRecord.vo.OfflinesettlementRecordMainRespVO; import com.win.module.wms.controller.offlinesettlementRecord.vo.OfflinesettlementRecordMainRespVO;
import com.win.module.wms.controller.offlinesettlementRecord.vo.OfflinesettlementRecordMainUpdateReqVO; import com.win.module.wms.controller.offlinesettlementRecord.vo.OfflinesettlementRecordMainUpdateReqVO;
import com.win.module.wms.dal.dataobject.offlinesettlementRecord.OfflinesettlementRecordDetailDO;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers; import org.mapstruct.factory.Mappers;
import com.win.module.wms.dal.dataobject.offlinesettlementRecord.OfflinesettlementRecordMainDO; import com.win.module.wms.dal.dataobject.offlinesettlementRecord.OfflinesettlementRecordMainDO;
@ -34,4 +37,13 @@ public interface OfflinesettlementRecordMainConvert {
List<OfflinesettlementRecordMainExcelVO> convertList02(List<OfflinesettlementRecordMainDO> list); List<OfflinesettlementRecordMainExcelVO> convertList02(List<OfflinesettlementRecordMainDO> list);
@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"),
})
OfflinesettlementRecordMainExcelVO convert(OfflinesettlementRecordMainDO mainDO, OfflinesettlementRecordDetailDO detailDO);
} }

1
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventorychangeRecord/InventorychangeRecordDetailDO.java

@ -1,5 +1,6 @@
package com.win.module.wms.dal.dataobject.inventorychangeRecord; package com.win.module.wms.dal.dataobject.inventorychangeRecord;
import com.sun.xml.bind.v2.TODO;
import lombok.*; import lombok.*;
import java.util.*; import java.util.*;
import java.math.BigDecimal; import java.math.BigDecimal;

10
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventorychangeRequest/InventorychangeRequestDetailDO.java

@ -2,16 +2,6 @@ package com.win.module.wms.dal.dataobject.inventorychangeRequest;
import com.sun.xml.bind.v2.TODO; import com.sun.xml.bind.v2.TODO;
import lombok.*; import lombok.*;
import java.util.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;

5
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventorychangeRequest/InventorychangeRequestMainDO.java

@ -1,10 +1,7 @@
package com.win.module.wms.dal.dataobject.inventorychangeRequest; package com.win.module.wms.dal.dataobject.inventorychangeRequest;
import com.sun.xml.bind.v2.TODO;
import lombok.*; import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import com.win.framework.mybatis.core.dataobject.BaseDO; import com.win.framework.mybatis.core.dataobject.BaseDO;

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/offlinesettlementRecord/OfflinesettlementRecordDetailDO.java

@ -89,7 +89,7 @@ public class OfflinesettlementRecordDetailDO extends BaseDO {
/** /**
* 主表ID * 主表ID
*/ */
private String masterId; private Long masterId;
/** /**
* 单据号 * 单据号
*/ */

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorychangeRecord/InventorychangeRecordDetailMapper.java

@ -106,4 +106,8 @@ public interface InventorychangeRecordDetailMapper extends BaseMapperX<Inventory
.orderByDesc(InventorychangeRecordDetailDO::getId)); .orderByDesc(InventorychangeRecordDetailDO::getId));
} }
default List<InventorychangeRecordDetailDO> selectList(Long masterId){
return selectList(new LambdaQueryWrapperX<InventorychangeRecordDetailDO>()
.eq(InventorychangeRecordDetailDO::getMasterId, masterId));
}
} }

40
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorychangeRecord/InventorychangeRecordMainMapper.java

@ -10,6 +10,7 @@ import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordMainExportReqVO; import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordMainExportReqVO;
import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordMainPageReqVO; import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordMainPageReqVO;
import com.win.module.wms.dal.dataobject.inventorychangeRecord.InventorychangeRecordMainDO; import com.win.module.wms.dal.dataobject.inventorychangeRecord.InventorychangeRecordMainDO;
import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestMainDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
/** /**
@ -21,8 +22,8 @@ import org.apache.ibatis.annotations.Mapper;
public interface InventorychangeRecordMainMapper extends BaseMapperX<InventorychangeRecordMainDO> { public interface InventorychangeRecordMainMapper extends BaseMapperX<InventorychangeRecordMainDO> {
default PageResult<InventorychangeRecordMainDO> selectPage(InventorychangeRecordMainPageReqVO reqVO) { default PageResult<InventorychangeRecordMainDO> selectPage(InventorychangeRecordMainPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<InventorychangeRecordMainDO>() LambdaQueryWrapperX< InventorychangeRecordMainDO > lambdaQueryWrapperX = new LambdaQueryWrapperX<>();
.eqIfPresent(InventorychangeRecordMainDO::getRequestNumber, reqVO.getRequestNumber()) lambdaQueryWrapperX.eqIfPresent(InventorychangeRecordMainDO::getRequestNumber, reqVO.getRequestNumber())
.eqIfPresent(InventorychangeRecordMainDO::getWarehouseCode, reqVO.getWarehouseCode()) .eqIfPresent(InventorychangeRecordMainDO::getWarehouseCode, reqVO.getWarehouseCode())
.eqIfPresent(InventorychangeRecordMainDO::getOutTransactionType, reqVO.getOutTransactionType()) .eqIfPresent(InventorychangeRecordMainDO::getOutTransactionType, reqVO.getOutTransactionType())
.eqIfPresent(InventorychangeRecordMainDO::getInTransactionType, reqVO.getInTransactionType()) .eqIfPresent(InventorychangeRecordMainDO::getInTransactionType, reqVO.getInTransactionType())
@ -39,14 +40,26 @@ public interface InventorychangeRecordMainMapper extends BaseMapperX<Inventorych
.betweenIfPresent(InventorychangeRecordMainDO::getCreateTime, reqVO.getCreateTime()) .betweenIfPresent(InventorychangeRecordMainDO::getCreateTime, reqVO.getCreateTime())
.eqIfPresent(InventorychangeRecordMainDO::getCreator, reqVO.getCreator()) .eqIfPresent(InventorychangeRecordMainDO::getCreator, reqVO.getCreator())
.eqIfPresent(InventorychangeRecordMainDO::getAvailable, reqVO.getAvailable()) .eqIfPresent(InventorychangeRecordMainDO::getAvailable, reqVO.getAvailable())
.orderByDesc(InventorychangeRecordMainDO::getId)); .orderByDesc(InventorychangeRecordMainDO::getId);
if("OK".equals(reqVO.getFromInventoryStatus()) && "HOLD".equals(reqVO.getToInventoryStatus())) {
lambdaQueryWrapperX.eq(InventorychangeRecordMainDO::getBusinessType,"OkToHoldRecord");
} else if("HOLD".equals(reqVO.getFromInventoryStatus()) && "OK".equals(reqVO.getToInventoryStatus())) {
lambdaQueryWrapperX.eq(InventorychangeRecordMainDO::getBusinessType,"HoldToOkRecord");
} else if("HOLD".equals(reqVO.getFromInventoryStatus()) && "SCRAP".equals(reqVO.getToInventoryStatus())) {
lambdaQueryWrapperX.eq(InventorychangeRecordMainDO::getBusinessType,"HoldToScrapRecord");
} else if("OK".equals(reqVO.getFromInventoryStatus()) && "SCRAP".equals(reqVO.getToInventoryStatus())) {
lambdaQueryWrapperX.eq(InventorychangeRecordMainDO::getBusinessType,"OkToScrapRecord");
} else if("SCRAP".equals(reqVO.getFromInventoryStatus()) && "HOLD".equals(reqVO.getToInventoryStatus())) {
lambdaQueryWrapperX.eq(InventorychangeRecordMainDO::getBusinessType,"ScrapToHoldRecord");
}
return selectPage(reqVO, lambdaQueryWrapperX);
} }
default PageResult<InventorychangeRecordMainDO> selectSenior(CustomConditions conditions) { default PageResult<InventorychangeRecordMainDO> selectSenior(CustomConditions conditions) {
return selectPage(conditions, QueryWrapperUtils.structure(conditions)); return selectPage(conditions, QueryWrapperUtils.structure(conditions));
} }
default List<InventorychangeRecordMainDO> selectList(InventorychangeRecordMainExportReqVO reqVO) { default List<InventorychangeRecordMainDO> selectList(InventorychangeRecordMainExportReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<InventorychangeRecordMainDO>() LambdaQueryWrapperX< InventorychangeRecordMainDO > lambdaQueryWrapperX = new LambdaQueryWrapperX<>();
.eqIfPresent(InventorychangeRecordMainDO::getRequestNumber, reqVO.getRequestNumber()) lambdaQueryWrapperX.eqIfPresent(InventorychangeRecordMainDO::getRequestNumber, reqVO.getRequestNumber())
.eqIfPresent(InventorychangeRecordMainDO::getWarehouseCode, reqVO.getWarehouseCode()) .eqIfPresent(InventorychangeRecordMainDO::getWarehouseCode, reqVO.getWarehouseCode())
.eqIfPresent(InventorychangeRecordMainDO::getOutTransactionType, reqVO.getOutTransactionType()) .eqIfPresent(InventorychangeRecordMainDO::getOutTransactionType, reqVO.getOutTransactionType())
.eqIfPresent(InventorychangeRecordMainDO::getInTransactionType, reqVO.getInTransactionType()) .eqIfPresent(InventorychangeRecordMainDO::getInTransactionType, reqVO.getInTransactionType())
@ -63,7 +76,22 @@ public interface InventorychangeRecordMainMapper extends BaseMapperX<Inventorych
.betweenIfPresent(InventorychangeRecordMainDO::getCreateTime, reqVO.getCreateTime()) .betweenIfPresent(InventorychangeRecordMainDO::getCreateTime, reqVO.getCreateTime())
.eqIfPresent(InventorychangeRecordMainDO::getCreator, reqVO.getCreator()) .eqIfPresent(InventorychangeRecordMainDO::getCreator, reqVO.getCreator())
.eqIfPresent(InventorychangeRecordMainDO::getAvailable, reqVO.getAvailable()) .eqIfPresent(InventorychangeRecordMainDO::getAvailable, reqVO.getAvailable())
.orderByDesc(InventorychangeRecordMainDO::getId)); .orderByDesc(InventorychangeRecordMainDO::getId);
if("OK".equals(reqVO.getFromInventoryStatus()) && "HOLD".equals(reqVO.getToInventoryStatus())) {
lambdaQueryWrapperX.eq(InventorychangeRecordMainDO::getBusinessType,"OkToHoldRecord");
} else if("HOLD".equals(reqVO.getFromInventoryStatus()) && "OK".equals(reqVO.getToInventoryStatus())) {
lambdaQueryWrapperX.eq(InventorychangeRecordMainDO::getBusinessType,"HoldToOkRecord");
} else if("HOLD".equals(reqVO.getFromInventoryStatus()) && "SCRAP".equals(reqVO.getToInventoryStatus())) {
lambdaQueryWrapperX.eq(InventorychangeRecordMainDO::getBusinessType,"HoldToScrapRecord");
} else if("OK".equals(reqVO.getFromInventoryStatus()) && "SCRAP".equals(reqVO.getToInventoryStatus())) {
lambdaQueryWrapperX.eq(InventorychangeRecordMainDO::getBusinessType,"OkToScrapRecord");
} else if("SCRAP".equals(reqVO.getFromInventoryStatus()) && "HOLD".equals(reqVO.getToInventoryStatus())) {
lambdaQueryWrapperX.eq(InventorychangeRecordMainDO::getBusinessType,"ScrapToHoldRecord");
}
return selectList(lambdaQueryWrapperX);
} }
default List<InventorychangeRecordMainDO> selectSeniorList(CustomConditions conditions){
return selectList(QueryWrapperUtils.structure(conditions));
}
} }

5
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorychangeRequest/InventorychangeRequestDetailMapper.java

@ -9,6 +9,7 @@ import com.win.framework.mybatis.core.mapper.BaseMapperX;
import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestDetailExportReqVO; import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestDetailExportReqVO;
import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestDetailPageReqVO; import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestDetailPageReqVO;
import com.win.module.wms.dal.dataobject.customersettleRequest.CustomersettleRequestDetailDO;
import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestDetailDO; import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestDetailDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@ -104,4 +105,8 @@ public interface InventorychangeRequestDetailMapper extends BaseMapperX<Inventor
.orderByDesc(InventorychangeRequestDetailDO::getId)); .orderByDesc(InventorychangeRequestDetailDO::getId));
} }
default List<InventorychangeRequestDetailDO> selectList(Long masterId){
return selectList(new LambdaQueryWrapperX<InventorychangeRequestDetailDO>()
.eq(InventorychangeRequestDetailDO::getMasterId, masterId));
}
} }

41
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorychangeRequest/InventorychangeRequestMainMapper.java

@ -9,7 +9,9 @@ import com.win.framework.mybatis.core.mapper.BaseMapperX;
import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestMainExportReqVO; import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestMainExportReqVO;
import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestMainPageReqVO; import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestMainPageReqVO;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestMainDO; import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestMainDO;
import com.win.module.wms.dal.dataobject.packageMassage.PackageDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
/** /**
@ -21,8 +23,8 @@ import org.apache.ibatis.annotations.Mapper;
public interface InventorychangeRequestMainMapper extends BaseMapperX<InventorychangeRequestMainDO> { public interface InventorychangeRequestMainMapper extends BaseMapperX<InventorychangeRequestMainDO> {
default PageResult<InventorychangeRequestMainDO> selectPage(InventorychangeRequestMainPageReqVO reqVO) { default PageResult<InventorychangeRequestMainDO> selectPage(InventorychangeRequestMainPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<InventorychangeRequestMainDO>() LambdaQueryWrapperX<InventorychangeRequestMainDO> lambdaQueryWrapperX = new LambdaQueryWrapperX<>();
.eqIfPresent(InventorychangeRequestMainDO::getWarehouseCode, reqVO.getWarehouseCode()) lambdaQueryWrapperX.eqIfPresent(InventorychangeRequestMainDO::getWarehouseCode, reqVO.getWarehouseCode())
.eqIfPresent(InventorychangeRequestMainDO::getNumber, reqVO.getNumber()) .eqIfPresent(InventorychangeRequestMainDO::getNumber, reqVO.getNumber())
.eqIfPresent(InventorychangeRequestMainDO::getBusinessType, reqVO.getBusinessType()) .eqIfPresent(InventorychangeRequestMainDO::getBusinessType, reqVO.getBusinessType())
.eqIfPresent(InventorychangeRequestMainDO::getRemark, reqVO.getRemark()) .eqIfPresent(InventorychangeRequestMainDO::getRemark, reqVO.getRemark())
@ -38,14 +40,26 @@ public interface InventorychangeRequestMainMapper extends BaseMapperX<Inventoryc
.eqIfPresent(InventorychangeRequestMainDO::getAutoAgree, reqVO.getAutoAgree()) .eqIfPresent(InventorychangeRequestMainDO::getAutoAgree, reqVO.getAutoAgree())
.eqIfPresent(InventorychangeRequestMainDO::getAutoExecute, reqVO.getAutoExecute()) .eqIfPresent(InventorychangeRequestMainDO::getAutoExecute, reqVO.getAutoExecute())
.eqIfPresent(InventorychangeRequestMainDO::getDirectCreateRecord, reqVO.getDirectCreateRecord()) .eqIfPresent(InventorychangeRequestMainDO::getDirectCreateRecord, reqVO.getDirectCreateRecord())
.orderByDesc(InventorychangeRequestMainDO::getId)); .orderByDesc(InventorychangeRequestMainDO::getId);
if("OK".equals(reqVO.getFromInventoryStatus()) && "HOLD".equals(reqVO.getToInventoryStatus())) {
lambdaQueryWrapperX.eq(InventorychangeRequestMainDO::getBusinessType,"OkToHoldRequest");
} else if("HOLD".equals(reqVO.getFromInventoryStatus()) && "OK".equals(reqVO.getToInventoryStatus())) {
lambdaQueryWrapperX.eq(InventorychangeRequestMainDO::getBusinessType,"HoldToOkRequest");
} else if("HOLD".equals(reqVO.getFromInventoryStatus()) && "SCRAP".equals(reqVO.getToInventoryStatus())) {
lambdaQueryWrapperX.eq(InventorychangeRequestMainDO::getBusinessType,"HoldToScrapRequest");
} else if("OK".equals(reqVO.getFromInventoryStatus()) && "SCRAP".equals(reqVO.getToInventoryStatus())) {
lambdaQueryWrapperX.eq(InventorychangeRequestMainDO::getBusinessType,"OkToScrapRequest");
} else if("SCRAP".equals(reqVO.getFromInventoryStatus()) && "HOLD".equals(reqVO.getToInventoryStatus())) {
lambdaQueryWrapperX.eq(InventorychangeRequestMainDO::getBusinessType,"ScrapToHoldRequest");
}
return selectPage(reqVO,lambdaQueryWrapperX);
} }
default PageResult<InventorychangeRequestMainDO> selectSenior(CustomConditions conditions) { default PageResult<InventorychangeRequestMainDO> selectSenior(CustomConditions conditions) {
return selectPage(conditions, QueryWrapperUtils.structure(conditions)); return selectPage(conditions, QueryWrapperUtils.structure(conditions));
} }
default List<InventorychangeRequestMainDO> selectList(InventorychangeRequestMainExportReqVO reqVO) { default List<InventorychangeRequestMainDO> selectList(InventorychangeRequestMainExportReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<InventorychangeRequestMainDO>() LambdaQueryWrapperX<InventorychangeRequestMainDO> lambdaQueryWrapperX = new LambdaQueryWrapperX<>();
.eqIfPresent(InventorychangeRequestMainDO::getWarehouseCode, reqVO.getWarehouseCode()) lambdaQueryWrapperX.eqIfPresent(InventorychangeRequestMainDO::getWarehouseCode, reqVO.getWarehouseCode())
.eqIfPresent(InventorychangeRequestMainDO::getNumber, reqVO.getNumber()) .eqIfPresent(InventorychangeRequestMainDO::getNumber, reqVO.getNumber())
.eqIfPresent(InventorychangeRequestMainDO::getBusinessType, reqVO.getBusinessType()) .eqIfPresent(InventorychangeRequestMainDO::getBusinessType, reqVO.getBusinessType())
.eqIfPresent(InventorychangeRequestMainDO::getRemark, reqVO.getRemark()) .eqIfPresent(InventorychangeRequestMainDO::getRemark, reqVO.getRemark())
@ -61,7 +75,22 @@ public interface InventorychangeRequestMainMapper extends BaseMapperX<Inventoryc
.eqIfPresent(InventorychangeRequestMainDO::getAutoAgree, reqVO.getAutoAgree()) .eqIfPresent(InventorychangeRequestMainDO::getAutoAgree, reqVO.getAutoAgree())
.eqIfPresent(InventorychangeRequestMainDO::getAutoExecute, reqVO.getAutoExecute()) .eqIfPresent(InventorychangeRequestMainDO::getAutoExecute, reqVO.getAutoExecute())
.eqIfPresent(InventorychangeRequestMainDO::getDirectCreateRecord, reqVO.getDirectCreateRecord()) .eqIfPresent(InventorychangeRequestMainDO::getDirectCreateRecord, reqVO.getDirectCreateRecord())
.orderByDesc(InventorychangeRequestMainDO::getId)); .orderByDesc(InventorychangeRequestMainDO::getId);
if("OK".equals(reqVO.getFromInventoryStatus()) && "HOLD".equals(reqVO.getToInventoryStatus())) {
lambdaQueryWrapperX.eq(InventorychangeRequestMainDO::getBusinessType,"OkToHoldRequest");
} else if("HOLD".equals(reqVO.getFromInventoryStatus()) && "OK".equals(reqVO.getToInventoryStatus())) {
lambdaQueryWrapperX.eq(InventorychangeRequestMainDO::getBusinessType,"HoldToOkRequest");
} else if("HOLD".equals(reqVO.getFromInventoryStatus()) && "SCRAP".equals(reqVO.getToInventoryStatus())) {
lambdaQueryWrapperX.eq(InventorychangeRequestMainDO::getBusinessType,"HoldToScrapRequest");
} else if("OK".equals(reqVO.getFromInventoryStatus()) && "SCRAP".equals(reqVO.getToInventoryStatus())) {
lambdaQueryWrapperX.eq(InventorychangeRequestMainDO::getBusinessType,"OkToScrapRequest");
} else if("SCRAP".equals(reqVO.getFromInventoryStatus()) && "HOLD".equals(reqVO.getToInventoryStatus())) {
lambdaQueryWrapperX.eq(InventorychangeRequestMainDO::getBusinessType,"ScrapToHoldRequest");
}
return selectList(lambdaQueryWrapperX);
} }
default List<InventorychangeRequestMainDO> selectSeniorList(CustomConditions conditions){
return selectList(QueryWrapperUtils.structure(conditions));
}
} }

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorymoveRequest/InventorymoveRequestDetailMapper.java

@ -82,4 +82,7 @@ public interface InventorymoveRequestDetailMapper extends BaseMapperX<Inventorym
.orderByDesc(InventorymoveRequestDetailDO::getId)); .orderByDesc(InventorymoveRequestDetailDO::getId));
} }
default List<InventorymoveRequestDetailDO> selectList(Long masterId){
return selectList(new LambdaQueryWrapperX<InventorymoveRequestDetailDO>().eq(InventorymoveRequestDetailDO::getMasterId,masterId));
}
} }

7
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/offlinesettlementRecord/OfflinesettlementRecordDetailMapper.java

@ -9,6 +9,7 @@ import com.win.framework.mybatis.core.mapper.BaseMapperX;
import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.offlinesettlementRecord.vo.OfflinesettlementRecordDetailExportReqVO; import com.win.module.wms.controller.offlinesettlementRecord.vo.OfflinesettlementRecordDetailExportReqVO;
import com.win.module.wms.controller.offlinesettlementRecord.vo.OfflinesettlementRecordDetailPageReqVO; import com.win.module.wms.controller.offlinesettlementRecord.vo.OfflinesettlementRecordDetailPageReqVO;
import com.win.module.wms.dal.dataobject.issueJob.IssueJobDetailDO;
import com.win.module.wms.dal.dataobject.offlinesettlementRecord.OfflinesettlementRecordDetailDO; import com.win.module.wms.dal.dataobject.offlinesettlementRecord.OfflinesettlementRecordDetailDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@ -22,6 +23,7 @@ public interface OfflinesettlementRecordDetailMapper extends BaseMapperX<Offline
default PageResult<OfflinesettlementRecordDetailDO> selectPage(OfflinesettlementRecordDetailPageReqVO reqVO) { default PageResult<OfflinesettlementRecordDetailDO> selectPage(OfflinesettlementRecordDetailPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<OfflinesettlementRecordDetailDO>() return selectPage(reqVO, new LambdaQueryWrapperX<OfflinesettlementRecordDetailDO>()
.eqIfPresent(OfflinesettlementRecordDetailDO::getMasterId, reqVO.getMasterId())
.eqIfPresent(OfflinesettlementRecordDetailDO::getPackingNumber, reqVO.getPackingNumber()) .eqIfPresent(OfflinesettlementRecordDetailDO::getPackingNumber, reqVO.getPackingNumber())
.eqIfPresent(OfflinesettlementRecordDetailDO::getContainerNumber, reqVO.getContainerNumber()) .eqIfPresent(OfflinesettlementRecordDetailDO::getContainerNumber, reqVO.getContainerNumber())
.eqIfPresent(OfflinesettlementRecordDetailDO::getBatch, reqVO.getBatch()) .eqIfPresent(OfflinesettlementRecordDetailDO::getBatch, reqVO.getBatch())
@ -48,6 +50,7 @@ public interface OfflinesettlementRecordDetailMapper extends BaseMapperX<Offline
} }
default List<OfflinesettlementRecordDetailDO> selectList(OfflinesettlementRecordDetailExportReqVO reqVO) { default List<OfflinesettlementRecordDetailDO> selectList(OfflinesettlementRecordDetailExportReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<OfflinesettlementRecordDetailDO>() return selectList(new LambdaQueryWrapperX<OfflinesettlementRecordDetailDO>()
.eqIfPresent(OfflinesettlementRecordDetailDO::getMasterId, reqVO.getMasterId())
.eqIfPresent(OfflinesettlementRecordDetailDO::getPackingNumber, reqVO.getPackingNumber()) .eqIfPresent(OfflinesettlementRecordDetailDO::getPackingNumber, reqVO.getPackingNumber())
.eqIfPresent(OfflinesettlementRecordDetailDO::getContainerNumber, reqVO.getContainerNumber()) .eqIfPresent(OfflinesettlementRecordDetailDO::getContainerNumber, reqVO.getContainerNumber())
.eqIfPresent(OfflinesettlementRecordDetailDO::getBatch, reqVO.getBatch()) .eqIfPresent(OfflinesettlementRecordDetailDO::getBatch, reqVO.getBatch())
@ -70,4 +73,8 @@ public interface OfflinesettlementRecordDetailMapper extends BaseMapperX<Offline
.orderByDesc(OfflinesettlementRecordDetailDO::getId)); .orderByDesc(OfflinesettlementRecordDetailDO::getId));
} }
default List<OfflinesettlementRecordDetailDO> selectList(Long masterId) {
return selectList(new LambdaQueryWrapperX<OfflinesettlementRecordDetailDO>()
.eq(OfflinesettlementRecordDetailDO::getMasterId, masterId));
}
} }

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/offlinesettlementRecord/OfflinesettlementRecordMainMapper.java

@ -9,6 +9,7 @@ import com.win.framework.mybatis.core.mapper.BaseMapperX;
import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.offlinesettlementRecord.vo.OfflinesettlementRecordMainExportReqVO; import com.win.module.wms.controller.offlinesettlementRecord.vo.OfflinesettlementRecordMainExportReqVO;
import com.win.module.wms.controller.offlinesettlementRecord.vo.OfflinesettlementRecordMainPageReqVO; import com.win.module.wms.controller.offlinesettlementRecord.vo.OfflinesettlementRecordMainPageReqVO;
import com.win.module.wms.dal.dataobject.issueJob.IssueJobMainDO;
import com.win.module.wms.dal.dataobject.offlinesettlementRecord.OfflinesettlementRecordMainDO; import com.win.module.wms.dal.dataobject.offlinesettlementRecord.OfflinesettlementRecordMainDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@ -66,4 +67,7 @@ public interface OfflinesettlementRecordMainMapper extends BaseMapperX<Offlinese
.orderByDesc(OfflinesettlementRecordMainDO::getId)); .orderByDesc(OfflinesettlementRecordMainDO::getId));
} }
default List<OfflinesettlementRecordMainDO> selectSeniorList(CustomConditions conditions) {
return selectList(QueryWrapperUtils.structure(conditions));
}
} }

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasePlan/PurchasePlanDetailMapper.java

@ -61,9 +61,9 @@ public interface PurchasePlanDetailMapper extends BaseMapperX<PurchasePlanDetail
.orderByDesc(PurchasePlanDetailDO::getId)); .orderByDesc(PurchasePlanDetailDO::getId));
} }
default List<PurchasePlanDetailDO> selectAllList(String poNumber) { default List<PurchasePlanDetailDO> selectAllList(String number) {
return selectList(new LambdaQueryWrapperX<PurchasePlanDetailDO>() return selectList(new LambdaQueryWrapperX<PurchasePlanDetailDO>()
.eq(PurchasePlanDetailDO::getPoNumber, poNumber)); .eq(PurchasePlanDetailDO::getNumber, number));
} }
} }

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countPlan/CountPlanMainServiceImpl.java

@ -278,7 +278,7 @@ public class CountPlanMainServiceImpl implements CountPlanMainService {
} else if (mainDO.getType().equals("CYCLE")) {//循环盘点 } else if (mainDO.getType().equals("CYCLE")) {//循环盘点
// 添加 Job 到 Quartz 中 // 添加 Job 到 Quartz 中
try { try {
schedulerManager.addJob(mainDO.getId() + 10000, "countPlanJob", String.valueOf(mainDO.getId()), mainDO.getCrontab(), 3, 60*10); schedulerManager.addJob(mainDO.getId() + 10000, "countPlanJob_" + mainDO.getId(), String.valueOf(mainDO.getId()), mainDO.getCrontab(), 3, 60*10);
} catch (SchedulerException e) { } catch (SchedulerException e) {
throw new ServiceException(COUNT_PLAN_CRON_ERROR); throw new ServiceException(COUNT_PLAN_CRON_ERROR);
} }

11
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countRequest/CountRequestMainServiceImpl.java

@ -479,7 +479,8 @@ public class CountRequestMainServiceImpl implements CountRequestMainService {
private void validateCountRequestDetailCreate(CountRequestDetailDO detailDO) { private void validateCountRequestDetailCreate(CountRequestDetailDO detailDO) {
//校验库位基础信息 //校验库位基础信息
locationService.selectLocation(detailDO.getLocationCode()); locationService.selectLocation(detailDO.getLocationCode());
// 校验物品基础信息 // 校验物品基础信息,空库位没有物品
if(detailDO.getItemCode() != null && !detailDO.getItemCode().isEmpty()) {
ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDO.getItemCode()); ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDO.getItemCode());
if (!Objects.equals(itembasicDO.getUom(), detailDO.getUom())) { if (!Objects.equals(itembasicDO.getUom(), detailDO.getUom())) {
throw new UtilException("计量单位" + detailDO.getUom() + "错误,应该是" + itembasicDO.getUom()); throw new UtilException("计量单位" + detailDO.getUom() + "错误,应该是" + itembasicDO.getUom());
@ -489,10 +490,11 @@ public class CountRequestMainServiceImpl implements CountRequestMainService {
detailDO.setItemName(itembasicDO.getName()); detailDO.setItemName(itembasicDO.getName());
detailDO.setProjectCode(itembasicDO.getProject()); detailDO.setProjectCode(itembasicDO.getProject());
} }
}
// 校验业务类型 // 校验业务类型
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CountRequest"); //BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CountRequest");
jobUtils.ifInToLocationType(detailDO.getLocationCode(), businesstypeDO); //jobUtils.ifInToLocationType(detailDO.getLocationCode(), businesstypeDO);
jobUtils.ifOutInventoryStatuses(detailDO.getInventoryStatus(), businesstypeDO); //jobUtils.ifOutInventoryStatuses(detailDO.getInventoryStatus(), businesstypeDO);
} }
private CountPlanDetailDO selectCountPlanExist(String pnumber){ private CountPlanDetailDO selectCountPlanExist(String pnumber){
@ -508,7 +510,6 @@ public class CountRequestMainServiceImpl implements CountRequestMainService {
} }
QueryWrapper<CountPlanDetailDO> queryWrapperDetail = new QueryWrapper<>(); QueryWrapper<CountPlanDetailDO> queryWrapperDetail = new QueryWrapper<>();
queryWrapperDetail.eq("number", pnumber); queryWrapperDetail.eq("number", pnumber);
queryWrapperDetail.eq("available","TRUE");
CountPlanDetailDO countPlanDetailDO = countPlanDetailMapper.selectOne(queryWrapperDetail); CountPlanDetailDO countPlanDetailDO = countPlanDetailMapper.selectOne(queryWrapperDetail);
if(countPlanDetailDO != null) { if(countPlanDetailDO != null) {
return countPlanDetailDO; return countPlanDetailDO;

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

@ -271,6 +271,10 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque
detailDO.setNumber(mainDo.getNumber()); detailDO.setNumber(mainDo.getNumber());
detailDO.setMasterId(mainDo.getId()); detailDO.setMasterId(mainDo.getId());
} }
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(mainDo.getStatus())) {
this.generateJob(mainDo, subDOList);
}
customerreturnRequestDetailMapper.insertBatch(subDOList); customerreturnRequestDetailMapper.insertBatch(subDOList);
} }
}); });

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

@ -263,7 +263,7 @@ public class CustomersettleRequestMainServiceImpl implements CustomersettleReque
BeanUtils.copyProperties(mainDO, customersettleRecordMainCreateReqVO); BeanUtils.copyProperties(mainDO, customersettleRecordMainCreateReqVO);
customersettleRecordMainCreateReqVO.setRequestNumber(mainDO.getNumber()); customersettleRecordMainCreateReqVO.setRequestNumber(mainDO.getNumber());
String number = serialNumberApi.generateCode(RuleCodeEnum.CUSTOMER_SETTLE_REQUEST.getCode()); String number = serialNumberApi.generateCode(RuleCodeEnum.CUSTOMER_SETTLE_RECORD.getCode());
customersettleRecordMainCreateReqVO.setNumber(number); customersettleRecordMainCreateReqVO.setNumber(number);
//增加业务类型 //增加业务类型
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CustomersettleRecord"); BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CustomersettleRecord");

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

@ -478,6 +478,10 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService
detailDO.setNumber(number); detailDO.setNumber(number);
detailDO.setInventoryStatus("OK"); detailDO.setInventoryStatus("OK");
} }
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(mainDo.getStatus())) {
this.generateJob(mainDo, subDOList);
}
deliverRequestDetailMapper.insertBatch(subDOList); deliverRequestDetailMapper.insertBatch(subDOList);
} }
}); });

1
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRecord/InventorychangeRecordDetailService.java

@ -81,4 +81,5 @@ public interface InventorychangeRecordDetailService {
*/ */
List<InventorychangeRecordDetailDO> getInventorychangeRecordDetailList(InventorychangeRecordDetailExportReqVO exportReqVO); List<InventorychangeRecordDetailDO> getInventorychangeRecordDetailList(InventorychangeRecordDetailExportReqVO exportReqVO);
List<InventorychangeRecordDetailDO> selectListByID(Long id);
} }

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRecord/InventorychangeRecordDetailServiceImpl.java

@ -87,4 +87,8 @@ public class InventorychangeRecordDetailServiceImpl implements InventorychangeRe
return inventorychangeRecordDetailMapper.selectList(exportReqVO); return inventorychangeRecordDetailMapper.selectList(exportReqVO);
} }
@Override
public List<InventorychangeRecordDetailDO> selectListByID(Long masterId){
return inventorychangeRecordDetailMapper.selectList(masterId);
}
} }

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRecord/InventorychangeRecordMainService.java

@ -10,6 +10,7 @@ import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRec
import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordMainUpdateReqVO; import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordMainUpdateReqVO;
import com.win.module.wms.dal.dataobject.inventorychangeRecord.InventorychangeRecordMainDO; import com.win.module.wms.dal.dataobject.inventorychangeRecord.InventorychangeRecordMainDO;
import com.win.framework.common.pojo.PageResult; import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestMainDO;
/** /**
* 库存修改记录主 Service 接口 * 库存修改记录主 Service 接口
@ -81,4 +82,5 @@ public interface InventorychangeRecordMainService {
*/ */
List<InventorychangeRecordMainDO> getInventorychangeRecordMainList(InventorychangeRecordMainExportReqVO exportReqVO); List<InventorychangeRecordMainDO> getInventorychangeRecordMainList(InventorychangeRecordMainExportReqVO exportReqVO);
List<InventorychangeRecordMainDO> getInventorychangeRecordMainList(CustomConditions conditions);
} }

5
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRecord/InventorychangeRecordMainServiceImpl.java

@ -5,6 +5,7 @@ import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRec
import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordMainExportReqVO; import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordMainExportReqVO;
import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordMainPageReqVO; import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordMainPageReqVO;
import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordMainUpdateReqVO; import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordMainUpdateReqVO;
import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestMainDO;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -87,4 +88,8 @@ public class InventorychangeRecordMainServiceImpl implements InventorychangeReco
return inventorychangeRecordMainMapper.selectList(exportReqVO); return inventorychangeRecordMainMapper.selectList(exportReqVO);
} }
@Override
public List<InventorychangeRecordMainDO> getInventorychangeRecordMainList(CustomConditions conditions) {
return inventorychangeRecordMainMapper.selectSeniorList(conditions);
}
} }

1
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestDetailService.java

@ -80,4 +80,5 @@ public interface InventorychangeRequestDetailService {
*/ */
List<InventorychangeRequestDetailDO> getInventorychangeRequestDetailList(InventorychangeRequestDetailExportReqVO exportReqVO); List<InventorychangeRequestDetailDO> getInventorychangeRequestDetailList(InventorychangeRequestDetailExportReqVO exportReqVO);
List<InventorychangeRequestDetailDO> selectListByID(Long id);
} }

5
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestDetailServiceImpl.java

@ -5,6 +5,7 @@ import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRe
import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestDetailExportReqVO; import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestDetailExportReqVO;
import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestDetailPageReqVO; import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestDetailPageReqVO;
import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestDetailUpdateReqVO; import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestDetailUpdateReqVO;
import com.win.module.wms.dal.dataobject.deliverRequest.DeliverRequestDetailDO;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -87,4 +88,8 @@ public class InventorychangeRequestDetailServiceImpl implements InventorychangeR
return inventorychangeRequestDetailMapper.selectList(exportReqVO); return inventorychangeRequestDetailMapper.selectList(exportReqVO);
} }
@Override
public List<InventorychangeRequestDetailDO> selectListByID(Long masterId){
return inventorychangeRequestDetailMapper.selectList(masterId);
}
} }

45
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestMainService.java

@ -84,6 +84,49 @@ public interface InventorychangeRequestMainService {
* @param updatePart 是否支持更新 * @param updatePart 是否支持更新
* @return 导入结果 * @return 导入结果
*/ */
public List<InventorychangeRequestMainImportErrorVO> importInventorychangeRequestMainList(List<InventorychangeRequestMainCreateReqVO> datas, Integer mode, boolean updatePart); public List<InventorychangeRequestMainImportErrorVO> importInventorychangeRequestMainList(List<InventorychangeRequestMainCreateReqVO> datas, Integer mode,String fromInventoryStatus , String toInventoryStatus , boolean updatePart);
/**
* 关闭
* @param id
* @return
*/
public Integer closeInventorychangeRequestMain(Long id);
/**
* 重新添加
* @param id
* @return
*/
public Integer reAddInventorychangeRequestMain(Long id);
/**
* 提交
* @param id
* @return
*/
public Integer submitInventorychangeRequestMain(Long id);
/**
* 审批通过
* @param id
* @return
*/
public Integer agreeInventorychangeRequestMain(Long id);
/**
* 执行
* @param id
* @return
*/
public Integer handleInventorychangeRequestMain(Long id);
/**
* 审批驳回
* @param id
* @return
*/
public Integer abortInventorychangeRequestMain(Long id);
List<InventorychangeRequestMainDO> getInventorychangeRequestMainList(CustomConditions conditions);
} }

569
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestMainServiceImpl.java

@ -1,6 +1,7 @@
package com.win.module.wms.service.inventorychangeRequest; package com.win.module.wms.service.inventorychangeRequest;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.win.framework.common.exception.ServiceException; import com.win.framework.common.exception.ServiceException;
import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult; import com.win.framework.common.pojo.PageResult;
@ -9,30 +10,45 @@ import com.win.module.infra.api.trends.TrendsApi;
import com.win.module.infra.enums.TrendsTypeEnum; import com.win.module.infra.enums.TrendsTypeEnum;
import com.win.module.system.api.serialnumber.SerialNumberApi; import com.win.module.system.api.serialnumber.SerialNumberApi;
import com.win.module.system.enums.serialNumber.RuleCodeEnum; import com.win.module.system.enums.serialNumber.RuleCodeEnum;
import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordDetailCreateReqVO;
import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordMainCreateReqVO;
import com.win.module.wms.controller.inventorychangeRequest.vo.*; import com.win.module.wms.controller.inventorychangeRequest.vo.*;
import com.win.module.wms.convert.inventorychangeRecord.InventorychangeRecordDetailConvert;
import com.win.module.wms.convert.inventorychangeRecord.InventorychangeRecordMainConvert;
import com.win.module.wms.convert.inventorychangeRequest.InventorychangeRequestDetailConvert; import com.win.module.wms.convert.inventorychangeRequest.InventorychangeRequestDetailConvert;
import com.win.module.wms.convert.inventorychangeRequest.InventorychangeRequestMainConvert; import com.win.module.wms.convert.inventorychangeRequest.InventorychangeRequestMainConvert;
import com.win.module.wms.dal.dataobject.balance.BalanceDO; 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.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.deliverRequest.DeliverRequestMainDO;
import com.win.module.wms.dal.dataobject.inventorychangeRecord.InventorychangeRecordMainDO;
import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestDetailDO; import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestDetailDO;
import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestMainDO; import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestMainDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.location.LocationDO; import com.win.module.wms.dal.dataobject.location.LocationDO;
import com.win.module.wms.dal.dataobject.recordsetting.RecordsettingDO;
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO;
import com.win.module.wms.dal.mysql.balance.BalanceMapper;
import com.win.module.wms.dal.mysql.inventorychangeRecord.InventorychangeRecordDetailMapper;
import com.win.module.wms.dal.mysql.inventorychangeRecord.InventorychangeRecordMainMapper;
import com.win.module.wms.dal.mysql.inventorychangeRequest.InventorychangeRequestDetailMapper; import com.win.module.wms.dal.mysql.inventorychangeRequest.InventorychangeRequestDetailMapper;
import com.win.module.wms.dal.mysql.inventorychangeRequest.InventorychangeRequestMainMapper; import com.win.module.wms.dal.mysql.inventorychangeRequest.InventorychangeRequestMainMapper;
import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.enums.request.RequestStatusEnum; import com.win.module.wms.enums.request.RequestStatusEnum;
import com.win.module.wms.enums.request.RequestStatusState;
import com.win.module.wms.service.itembasic.ItembasicService; import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.itempackaging.ItempackagingService; import com.win.module.wms.service.itempackaging.ItempackagingService;
import com.win.module.wms.service.location.LocationService; import com.win.module.wms.service.location.LocationService;
import com.win.module.wms.service.recordsetting.RecordsettingService;
import com.win.module.wms.service.requestsetting.RequestsettingService; import com.win.module.wms.service.requestsetting.RequestsettingService;
import com.win.module.wms.service.shift.ShiftService; import com.win.module.wms.service.shift.ShiftService;
import com.win.module.wms.util.JobUtils; import com.win.module.wms.util.JobUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
@ -54,6 +70,10 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
@Resource @Resource
private InventorychangeRequestDetailMapper inventorychangeRequestDetailMapper; private InventorychangeRequestDetailMapper inventorychangeRequestDetailMapper;
@Resource @Resource
private InventorychangeRecordMainMapper inventorychangeRecordMainMapper;
@Resource
private InventorychangeRecordDetailMapper inventorychangeRecordDetailMapper;
@Resource
private ItembasicService itembasicService; private ItembasicService itembasicService;
@Resource @Resource
private ItempackagingService itempackagingService; private ItempackagingService itempackagingService;
@ -69,6 +89,10 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
private TrendsApi trendsApi; private TrendsApi trendsApi;
@Resource @Resource
private RequestsettingService requestsettingService; private RequestsettingService requestsettingService;
@Resource
private BalanceMapper balanceMapper;
@Resource
private RecordsettingService recordsettingService;
@Override @Override
public Long createInventorychangeRequestMain(InventorychangeRequestMainCreateReqVO createReqVO) { public Long createInventorychangeRequestMain(InventorychangeRequestMainCreateReqVO createReqVO) {
@ -76,22 +100,22 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
InventorychangeRequestMainDO inventorychangeRequestMainDO = validatorToCreate(createReqVO); InventorychangeRequestMainDO inventorychangeRequestMainDO = validatorToCreate(createReqVO);
//调用自动执行方法 //调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(inventorychangeRequestMainDO.getStatus())) { if(RequestStatusEnum.HANDLING.getCode().equals(inventorychangeRequestMainDO.getStatus())) {
generateRecord(inventorychangeRequestMainDO,inventorychangeRequestDetailMapper.selectList(inventorychangeRequestMainDO.getId()));
} }
trendsApi.createTrends(requestsettingDO.getId(), "DeliverPlan", "增加了发货计划", TrendsTypeEnum.CREATE); trendsApi.createTrends(requestsettingDO.getId(), "InventorychangeRequest", "增加了库存修改申请", TrendsTypeEnum.CREATE);
return inventorychangeRequestMainDO.getId(); return inventorychangeRequestMainDO.getId();
} }
@Override @Override
public void updateInventorychangeRequestMain(InventorychangeRequestMainUpdateReqVO updateReqVO) { public void updateInventorychangeRequestMain(InventorychangeRequestMainUpdateReqVO updateReqVO) {
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("DeliverPlan"); RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("InventorychangeRequest");
// 校验存在 // 校验存在
validateInventorychangeRequestMainExists(updateReqVO.getId()); validateInventorychangeRequestMainExists(updateReqVO.getId());
InventorychangeRequestMainDO inventorychangeRequestMainDO = validatorToUpdate(updateReqVO); InventorychangeRequestMainDO inventorychangeRequestMainDO = validatorToUpdate(updateReqVO);
if(RequestStatusEnum.HANDLING.getCode().equals(inventorychangeRequestMainDO.getStatus())) { if(RequestStatusEnum.HANDLING.getCode().equals(inventorychangeRequestMainDO.getStatus())) {
} }
trendsApi.createTrends(requestsettingDO.getId(), "DeliverPlan", "修改了发货计划", TrendsTypeEnum.CREATE); trendsApi.createTrends(requestsettingDO.getId(), "InventorychangeRequest", "修改了库存修改申请", TrendsTypeEnum.UPDATE);
} }
@Override @Override
@ -102,10 +126,12 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
inventorychangeRequestMainMapper.deleteById(id); inventorychangeRequestMainMapper.deleteById(id);
} }
private void validateInventorychangeRequestMainExists(Long id) { private InventorychangeRequestMainDO validateInventorychangeRequestMainExists(Long id) {
if (inventorychangeRequestMainMapper.selectById(id) == null) { InventorychangeRequestMainDO inventorychangeRequestMainDO = inventorychangeRequestMainMapper.selectById(id);
if (inventorychangeRequestMainDO == null) {
throw exception(INVENTORYCHANGE_REQUEST_MAIN_NOT_EXISTS); throw exception(INVENTORYCHANGE_REQUEST_MAIN_NOT_EXISTS);
} }
return inventorychangeRequestMainDO;
} }
@Override @Override
@ -133,23 +159,172 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
return inventorychangeRequestMainMapper.selectList(exportReqVO); return inventorychangeRequestMainMapper.selectList(exportReqVO);
} }
//关闭
@Override
public Integer closeInventorychangeRequestMain(Long id) {
// 校验存在存在下级单据
InventorychangeRequestMainDO mainDO = validateInventorychangeRequestMainExists(id);
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.close();
if(!flag) {
throw new ServiceException(DELIVER_REQUEST_CANNOT_CLOSE);
}
mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录
trendsApi.createTrends(id, "inventorychangeRequest", "关闭了库存修改申请", TrendsTypeEnum.UPDATE);
return inventorychangeRequestMainMapper.updateById(mainDO);
}
//打开
@Override
@Transactional
public Integer reAddInventorychangeRequestMain(Long id) {
// 校验存在存在下级单据
InventorychangeRequestMainDO mainDO = validateInventorychangeRequestMainExists(id);
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.reAdd();
if(!flag) {
throw new ServiceException(DELIVER_REQUEST_CANNOT_RE_ADD);
}
mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录
trendsApi.createTrends(id, "inventorychangeRequest", "打开了库存修改申请", TrendsTypeEnum.UPDATE);
return inventorychangeRequestMainMapper.updateById(mainDO);
}
//提交
@Transactional
@Override
public Integer submitInventorychangeRequestMain(Long id) {
InventorychangeRequestMainDO mainDO = validateInventorychangeRequestMainExists(id);
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.submit(mainDO.getAutoAgree(), mainDO.getAutoExecute());
if(!flag) {
throw new ServiceException(DELIVER_REQUEST_CANNOT_SUBMIT);
}
mainDO.setStatus(requestStatusState.getState().getCode());
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) {
this.generateRecord(mainDO, inventorychangeRequestDetailMapper.selectList(mainDO.getId()));
}
trendsApi.createTrends(id, "inventorychangeRequest", "提交了库存修改申请", TrendsTypeEnum.UPDATE);
return inventorychangeRequestMainMapper.updateById(mainDO);
}
/**
* 生成库存修改记录不要改动事务传播方式否则会有事务问题
*
* @param mainDO 库存修改主
* @param detailDOList 库存修改子
*/
private void generateRecord(InventorychangeRequestMainDO mainDO, List<InventorychangeRequestDetailDO> detailDOList) {
InventorychangeRecordMainCreateReqVO inventorychangeRecordMainCreateReqVO = new InventorychangeRecordMainCreateReqVO();
BeanUtils.copyProperties(mainDO, inventorychangeRecordMainCreateReqVO);
inventorychangeRecordMainCreateReqVO.setRequestNumber(mainDO.getNumber());
String number = serialNumberApi.generateCode(RuleCodeEnum.INVENTORY_CHANGE_RECORD.getCode());
inventorychangeRecordMainCreateReqVO.setNumber(number);
inventorychangeRecordMainCreateReqVO.setExecuteTime(LocalDateTime.now());
inventorychangeRecordMainCreateReqVO.setActiveDate(mainDO.getCreateTime());
inventorychangeRecordMainCreateReqVO.setAvailable("TRUE");
String replace = inventorychangeRecordMainCreateReqVO.getBusinessType().replace("Request", "Record");
//增加业务类型
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType(replace);
RecordsettingDO recordsettingDO = recordsettingService.selectRecordsettingExist(replace);
inventorychangeRecordMainCreateReqVO.setInTransactionType(businesstypeDO.getInTransactionType());
inventorychangeRecordMainCreateReqVO.setOutTransactionType(businesstypeDO.getOutTransactionType());
inventorychangeRecordMainCreateReqVO.setBusinessType(businesstypeDO.getCode());
inventorychangeRecordMainCreateReqVO.setInterfaceType(recordsettingDO.getInterfaceType());
InventorychangeRecordMainDO convert = InventorychangeRecordMainConvert.INSTANCE.convert(inventorychangeRecordMainCreateReqVO);
inventorychangeRecordMainMapper.insert(convert);
for (InventorychangeRequestDetailDO inventorychangeRequestDetailDO : detailDOList) {
InventorychangeRecordDetailCreateReqVO inventorychangeRecordDetailCreateReqVO = new InventorychangeRecordDetailCreateReqVO();
BeanUtils.copyProperties(inventorychangeRequestDetailDO, inventorychangeRecordDetailCreateReqVO);
inventorychangeRecordDetailCreateReqVO.setNumber(number);
inventorychangeRecordDetailCreateReqVO.setInterfaceType(recordsettingDO.getInterfaceType());
inventorychangeRecordDetailCreateReqVO.setMasterId(convert.getId().toString());
ArrayList<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add(inventorychangeRequestDetailDO.getFromInventoryStatus());
validatorLocationReturnManagementAccuracy(mainDO,inventorychangeRequestDetailDO,inventoryStatus,true);
inventorychangeRecordDetailMapper.insert(InventorychangeRecordDetailConvert.INSTANCE.convert(inventorychangeRecordDetailCreateReqVO));
trendsApi.createTrends(mainDO.getId(), "InventorychangeRecord", "库存修改申请生成库存修改记录", TrendsTypeEnum.CREATE);
}
}
//审批同意
@Transactional
@Override
public Integer agreeInventorychangeRequestMain(Long id) {
// 校验存在
InventorychangeRequestMainDO mainDO = validateInventorychangeRequestMainExists(id);
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.agree(mainDO.getAutoAgree());
if(!flag) {
throw new ServiceException(DELIVER_REQUEST_CANNOT_AGREE);
}
mainDO.setStatus(requestStatusState.getState().getCode());
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) {
this.generateRecord(mainDO, inventorychangeRequestDetailMapper.selectList(mainDO.getId()));
}
trendsApi.createTrends(id, "inventorychangeRequest", "审批同意了库存修改申请", TrendsTypeEnum.UPDATE);
return inventorychangeRequestMainMapper.updateById(mainDO);
}
//执行
@Transactional
@Override
public Integer handleInventorychangeRequestMain(Long id) {
// 校验存在
InventorychangeRequestMainDO mainDO = validateInventorychangeRequestMainExists(id);
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.handle();
if(!flag) {
throw new ServiceException(DELIVER_REQUEST_CANNOT_HANDLE);
}
mainDO.setStatus(requestStatusState.getState().getCode());
//调用执行方法
this.generateRecord(mainDO, inventorychangeRequestDetailMapper.selectList(mainDO.getId()));
trendsApi.createTrends(id, "inventorychangeRequest", "执行了库存修改申请", TrendsTypeEnum.UPDATE);
return inventorychangeRequestMainMapper.updateById(mainDO);
}
//审批拒绝
@Transactional
@Override
public Integer abortInventorychangeRequestMain(Long id) {
// 校验存在
InventorychangeRequestMainDO mainDO = validateInventorychangeRequestMainExists(id);
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.refused();
if(!flag) {
throw new ServiceException(DELIVER_REQUEST_CANNOT_ABORT);
}
mainDO.setStatus(requestStatusState.getState().getCode());
trendsApi.createTrends(id, "inventorychangeRequest", "审批拒绝了库存修改申请", TrendsTypeEnum.UPDATE);
return inventorychangeRequestMainMapper.updateById(mainDO);
}
@Override
public List<InventorychangeRequestMainDO> getInventorychangeRequestMainList(CustomConditions conditions) {
return inventorychangeRequestMainMapper.selectSeniorList(conditions);
}
@Override @Override
public List<InventorychangeRequestMainImportErrorVO> importInventorychangeRequestMainList(List<InventorychangeRequestMainCreateReqVO> datas, Integer mode, boolean updatePart) { public List<InventorychangeRequestMainImportErrorVO> importInventorychangeRequestMainList(List<InventorychangeRequestMainCreateReqVO> datas, Integer mode, String fromInventoryStatus , String toInventoryStatus ,boolean updatePart) {
if (CollUtil.isEmpty(datas)) { if (CollUtil.isEmpty(datas)) {
throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY); throw exception(INVENTORYCHANGE_REQUEST_IMPORT_LIST_IS_EMPTY);
} }
List<InventorychangeRequestMainImportErrorVO> errorList = new ArrayList<>(); List<InventorychangeRequestMainImportErrorVO> errorList = new ArrayList<>();
datas.forEach(createReqVO -> { datas.forEach(createReqVO -> {
BusinesstypeDO businesstypeDO = new BusinesstypeDO();
InventorychangeRequestMainDO mainDo = InventorychangeRequestMainConvert.INSTANCE.convert(createReqVO); InventorychangeRequestMainDO mainDo = InventorychangeRequestMainConvert.INSTANCE.convert(createReqVO);
String messageMain = validateInventorychangeRequestMainImport(mainDo, businesstypeDO); String messageMain = validateInventorychangeRequestMainImport(mainDo);
List<InventorychangeRequestDetailCreateReqVO> subList = createReqVO.getSubList(); List<InventorychangeRequestDetailCreateReqVO> subList = createReqVO.getSubList();
List<InventorychangeRequestDetailDO> subDOList = InventorychangeRequestDetailConvert.INSTANCE.convertList03(subList); List<InventorychangeRequestDetailDO> subDOList = InventorychangeRequestDetailConvert.INSTANCE.convertList03(subList);
// 是否有错误数据 // 是否有错误数据
boolean flag = true; boolean flag = true;
for (InventorychangeRequestDetailDO detailDO : subDOList) { for (InventorychangeRequestDetailDO detailDO : subDOList) {
String messageDetail = validateInventorychangeRequestDetailImport(detailDO, mainDo, businesstypeDO); detailDO.setFromInventoryStatus(fromInventoryStatus);
if (!messageMain.isEmpty() || messageDetail.isEmpty()) { detailDO.setToInventoryStatus(toInventoryStatus);
String messageDetail = validateInventorychangeRequestDetailImport(detailDO, mainDo);
if (!messageMain.isEmpty() || !messageDetail.isEmpty()) {
InventorychangeRequestMainImportErrorVO importErrorVO = InventorychangeRequestMainConvert.INSTANCE.convert(createReqVO, detailDO); InventorychangeRequestMainImportErrorVO importErrorVO = InventorychangeRequestMainConvert.INSTANCE.convert(createReqVO, detailDO);
importErrorVO.setImportStatus("失败"); importErrorVO.setImportStatus("失败");
messageMain = messageMain + messageDetail; messageMain = messageMain + messageDetail;
@ -161,17 +336,15 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
//写入数据 //写入数据
if (flag) { if (flag) {
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InventoryChangeRequest");
if (businesstypeDO != null) {
mainDo.setBusinessType(businesstypeDO.getCode());
}
String number = serialNumberApi.generateCode(RuleCodeEnum.INVENTORY_CHANGE_REQUEST.getCode());
mainDo.setNumber(number);
inventorychangeRequestMainMapper.insert(mainDo); inventorychangeRequestMainMapper.insert(mainDo);
for (InventorychangeRequestDetailDO detailDO : subDOList) { for (InventorychangeRequestDetailDO detailDO : subDOList) {
detailDO.setNumber(mainDo.getNumber()); detailDO.setNumber(mainDo.getNumber());
detailDO.setMasterId(mainDo.getId()); detailDO.setMasterId(mainDo.getId());
} }
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(mainDo.getStatus())) {
this.generateRecord(mainDo, subDOList);
}
inventorychangeRequestDetailMapper.insertBatch(subDOList); inventorychangeRequestDetailMapper.insertBatch(subDOList);
} }
}); });
@ -184,7 +357,7 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
* @param mainDo * @param mainDo
* @return * @return
*/ */
private String validateInventorychangeRequestMainImport(InventorychangeRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { private String validateInventorychangeRequestMainImport(InventorychangeRequestMainDO mainDo) {
// 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList // 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList
String messageMain = ""; String messageMain = "";
//主表的验证 //主表的验证
@ -197,80 +370,70 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
* @param detailDo * @param detailDo
* @return * @return
*/ */
private String validateInventorychangeRequestDetailImport(InventorychangeRequestDetailDO detailDo, InventorychangeRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { private String validateInventorychangeRequestDetailImport(InventorychangeRequestDetailDO detailDo, InventorychangeRequestMainDO mainDo) {
String messageDetail = ""; String messageDetail = "";
//校验来源库位基础信息 ItembasicDO itembasicDO = null;
try { BusinesstypeDO businesstypeDO;
LocationDO locationDO = locationService.selectLocation(detailDo.getLocationCode());
if (locationDO != null) {
detailDo.setLocationCode(locationDO.getCode());
detailDo.setAreaCode(locationDO.getAreaCode());
detailDo.setLocationGroupCode(locationDO.getLocationGroupCode());
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
// 校验物品基础信息 // 校验物品基础信息
try { try {
ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode()); itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode());
if (itembasicDO.getUom() != detailDo.getUom()) {
messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + detailDo.getUom() + ",";
} else {
detailDo.setItemDesc1(itembasicDO.getDesc1()); detailDo.setItemDesc1(itembasicDO.getDesc1());
detailDo.setItemDesc2(itembasicDO.getDesc2()); detailDo.setItemDesc2(itembasicDO.getDesc2());
detailDo.setItemName(itembasicDO.getName()); detailDo.setItemName(itembasicDO.getName());
detailDo.setUom(itembasicDO.getUom());
detailDo.setProjectCode(itembasicDO.getProject()); detailDo.setProjectCode(itembasicDO.getProject());
}
} catch (ServiceException ex) { } catch (ServiceException ex) {
messageDetail += ex.getMessage() + ","; messageDetail += ex.getMessage() + ",";
} }
// 校验业务类型 //校验来源库位基础信息
try { try {
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToOk"); LocationDO locationDO = locationService.selectLocation(detailDo.getLocationCode());
jobUtils.selectItembasicExist(detailDo.getItemCode(), businesstypeDO); if (locationDO != null) {
jobUtils.ifOutInventoryStatuses(detailDo.getFromInventoryStatus(), businesstypeDO); detailDo.setLocationCode(locationDO.getCode());
detailDo.setAreaCode(locationDO.getAreaCode());
detailDo.setLocationGroupCode(locationDO.getLocationGroupCode());
}
} catch (ServiceException ex) { } catch (ServiceException ex) {
messageDetail += ex.getMessage() + ","; messageDetail += ex.getMessage() + ",";
} }
//隔离转合格申请 //隔离转合格申请
if ("Hold".equals(detailDo.getFromInventoryStatus())) { if ("HOLD".equals(detailDo.getFromInventoryStatus())) {
// 校验库存余额是否存在 // 校验库存余额是否存在
try { try {
List<String> inventoryStatus = new ArrayList<>(); List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add("Hold"); inventoryStatus.add("HOLD");
List<BalanceDO> balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getFromPackingNumber() validatorLocationReturnManagementAccuracy(mainDo,detailDo,inventoryStatus,false);
, detailDo.getFromBatch(), detailDo.getLocationCode(), inventoryStatus);
if (balanceDOList != null) {
BalanceDO balanceDO = balanceDOList.get(0);
detailDo.setFromQty(balanceDO.getQty());
detailDo.setToQty(balanceDO.getQty());
detailDo.setQty(balanceDO.getQty());
detailDo.setToArrivdAte(balanceDO.getArriveDate());
detailDo.setFromProduceDate(balanceDO.getProduceDate());
detailDo.setFromExpireDate(balanceDO.getExpireDate());
detailDo.setToArrivdAte(balanceDO.getArriveDate());
detailDo.setToProduceDate(balanceDO.getProduceDate());
detailDo.setToExpireDate(balanceDO.getExpireDate());
}
} catch (ServiceException ex) { } catch (ServiceException ex) {
messageDetail += ex.getMessage() + ","; messageDetail += ex.getMessage() + ",";
} }
detailDo.setToInventoryStatus("OK"); String number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_OK_REQUEST.getCode());
String number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_SCRAP_REQUEST.getCode());
detailDo.setNumber(number); detailDo.setNumber(number);
// 校验业务类型
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToScrapRequest"); try {
if (businesstypeDO != null) { businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToOkRequest");
mainDo.setBusinessType(businesstypeDO.getCode()); mainDo.setBusinessType(businesstypeDO.getCode());
try {
if (itembasicDO != null){
jobUtils.ifInType(itembasicDO.getType(), businesstypeDO);
}else {
messageDetail += "物品基本信息不存在,不能校验物品类型" + ",";
} }
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("HoldToScrapRequest"); }catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
jobUtils.ifOutInventoryStatuses(detailDo.getFromInventoryStatus(), businesstypeDO);
jobUtils.ifInFromLocationType(detailDo.getLocationCode(), businesstypeDO);
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("HoldToOkRequest");
if (requestsettingDO != null) { if (requestsettingDO != null) {
mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); mainDo.setAutoAgree(requestsettingDO.getAutoAgree());
mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); mainDo.setAutoCommit(requestsettingDO.getAutoCommit());
mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); mainDo.setAutoExecute(requestsettingDO.getAutoExecute());
mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
mainDo.setRequestTime(LocalDateTime.now());
} }
} }
@ -280,31 +443,29 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
try { try {
List<String> inventoryStatus = new ArrayList<>(); List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add("OK"); inventoryStatus.add("OK");
List<BalanceDO> balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getFromPackingNumber() validatorLocationReturnManagementAccuracy(mainDo,detailDo,inventoryStatus,false);
, detailDo.getFromBatch(), detailDo.getLocationCode(), inventoryStatus);
if (balanceDOList != null) {
BalanceDO balanceDO = balanceDOList.get(0);
detailDo.setFromQty(balanceDO.getQty());
detailDo.setToQty(balanceDO.getQty());
detailDo.setQty(balanceDO.getQty());
detailDo.setToArrivdAte(balanceDO.getArriveDate());
detailDo.setFromProduceDate(balanceDO.getProduceDate());
detailDo.setFromExpireDate(balanceDO.getExpireDate());
detailDo.setToArrivdAte(balanceDO.getArriveDate());
detailDo.setToProduceDate(balanceDO.getProduceDate());
detailDo.setToExpireDate(balanceDO.getExpireDate());
}
} catch (ServiceException ex) { } catch (ServiceException ex) {
messageDetail += ex.getMessage() + ","; messageDetail += ex.getMessage() + ",";
} }
detailDo.setToInventoryStatus("Hold");
String number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_HOLD_REQUEST.getCode()); String number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_HOLD_REQUEST.getCode());
mainDo.setNumber(number); mainDo.setNumber(number);
// 校验业务类型
try {
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToHoldRequest"); businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToHoldRequest");
if (businesstypeDO != null) {
mainDo.setBusinessType(businesstypeDO.getCode()); mainDo.setBusinessType(businesstypeDO.getCode());
try {
if (itembasicDO != null){
jobUtils.ifInType(itembasicDO.getType(), businesstypeDO);
}else {
messageDetail += "物品基本信息不存在,不能校验物品类型" + ",";
}
}catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
jobUtils.ifOutInventoryStatuses(detailDo.getFromInventoryStatus(), businesstypeDO);
jobUtils.ifInFromLocationType(detailDo.getLocationCode(), businesstypeDO);
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
} }
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("OkToHoldRequest"); RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("OkToHoldRequest");
if (requestsettingDO != null) { if (requestsettingDO != null) {
@ -313,45 +474,42 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); mainDo.setAutoExecute(requestsettingDO.getAutoExecute());
mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
} }
detailDo.setToPackingNumber(null); detailDo.setToPackingNumber(null);
detailDo.setToBatch(null); detailDo.setToBatch(null);
detailDo.setToContainerNumber(null); detailDo.setToContainerNumber(null);
} }
//隔离转报废申请 //隔离转报废申请
if ("Hold".equals(detailDo.getFromInventoryStatus())) { if ("HOLD".equals(detailDo.getFromInventoryStatus())) {
// 校验库存余额是否存在 // 校验库存余额是否存在
try { try {
List<String> inventoryStatus = new ArrayList<>(); List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add("Hold"); inventoryStatus.add("HOLD");
List<BalanceDO> balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getFromPackingNumber() validatorLocationReturnManagementAccuracy(mainDo,detailDo,inventoryStatus,false);
, detailDo.getFromBatch(), detailDo.getLocationCode(), inventoryStatus);
if (balanceDOList != null) {
BalanceDO balanceDO = balanceDOList.get(0);
detailDo.setFromQty(balanceDO.getQty());
detailDo.setToQty(balanceDO.getQty());
detailDo.setQty(balanceDO.getQty());
detailDo.setToArrivdAte(balanceDO.getArriveDate());
detailDo.setFromProduceDate(balanceDO.getProduceDate());
detailDo.setFromExpireDate(balanceDO.getExpireDate());
detailDo.setToArrivdAte(balanceDO.getArriveDate());
detailDo.setToProduceDate(balanceDO.getProduceDate());
detailDo.setToExpireDate(balanceDO.getExpireDate());
}
} catch (ServiceException ex) { } catch (ServiceException ex) {
messageDetail += ex.getMessage() + ","; messageDetail += ex.getMessage() + ",";
} }
detailDo.setToInventoryStatus("Scrap"); String number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_SCRAP_REQUEST.getCode());
String number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_HOLD_REQUEST.getCode());
mainDo.setNumber(number); mainDo.setNumber(number);
// 校验业务类型
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToHoldRequest"); try {
if (businesstypeDO != null) { businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToScrapRequest");
mainDo.setBusinessType(businesstypeDO.getCode()); mainDo.setBusinessType(businesstypeDO.getCode());
try {
if (itembasicDO != null){
jobUtils.ifInType(itembasicDO.getType(), businesstypeDO);
}else {
messageDetail += "物品基本信息不存在,不能校验物品类型" + ",";
} }
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("OkToHoldRequest"); }catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
jobUtils.ifOutInventoryStatuses(detailDo.getFromInventoryStatus(), businesstypeDO);
jobUtils.ifInFromLocationType(detailDo.getLocationCode(), businesstypeDO);
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("HoldToScrapRequest");
if (requestsettingDO != null) { if (requestsettingDO != null) {
mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); mainDo.setAutoAgree(requestsettingDO.getAutoAgree());
mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); mainDo.setAutoCommit(requestsettingDO.getAutoCommit());
@ -366,36 +524,34 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
//报废转隔离申请 //报废转隔离申请
if ("Scrap".equals(detailDo.getFromInventoryStatus())) { if ("SCRAP".equals(detailDo.getFromInventoryStatus())) {
// 校验库存余额是否存在 // 校验库存余额是否存在
try { try {
List<String> inventoryStatus = new ArrayList<>(); List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add("Scrap"); inventoryStatus.add("SCRAP");
List<BalanceDO> balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getFromPackingNumber() validatorLocationReturnManagementAccuracy(mainDo,detailDo,inventoryStatus,false);
, detailDo.getFromBatch(), detailDo.getLocationCode(), inventoryStatus);
if (balanceDOList != null) {
BalanceDO balanceDO = balanceDOList.get(0);
detailDo.setFromQty(balanceDO.getQty());
detailDo.setToQty(balanceDO.getQty());
detailDo.setQty(balanceDO.getQty());
detailDo.setToArrivdAte(balanceDO.getArriveDate());
detailDo.setFromProduceDate(balanceDO.getProduceDate());
detailDo.setFromExpireDate(balanceDO.getExpireDate());
detailDo.setToArrivdAte(balanceDO.getArriveDate());
detailDo.setToProduceDate(balanceDO.getProduceDate());
detailDo.setToExpireDate(balanceDO.getExpireDate());
}
} catch (ServiceException ex) { } catch (ServiceException ex) {
messageDetail += ex.getMessage() + ","; messageDetail += ex.getMessage() + ",";
} }
detailDo.setToInventoryStatus("Scrap");
String number = serialNumberApi.generateCode(RuleCodeEnum.SCRAP_TO_HOLD_REQUEST.getCode()); String number = serialNumberApi.generateCode(RuleCodeEnum.SCRAP_TO_HOLD_REQUEST.getCode());
mainDo.setNumber(number); mainDo.setNumber(number);
// 校验业务类型
try {
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ScrapToHoldRequest"); businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ScrapToHoldRequest");
if (businesstypeDO != null) {
mainDo.setBusinessType(businesstypeDO.getCode()); mainDo.setBusinessType(businesstypeDO.getCode());
try {
if (itembasicDO != null){
jobUtils.ifInType(itembasicDO.getType(), businesstypeDO);
}else {
messageDetail += "物品基本信息不存在,不能校验物品类型" + ",";
}
}catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
jobUtils.ifOutInventoryStatuses(detailDo.getFromInventoryStatus(), businesstypeDO);
jobUtils.ifInFromLocationType(detailDo.getLocationCode(), businesstypeDO);
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
} }
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ScrapToHoldRequest"); RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ScrapToHoldRequest");
if (requestsettingDO != null) { if (requestsettingDO != null) {
@ -415,32 +571,31 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
// 校验库存余额是否存在 // 校验库存余额是否存在
try { try {
List<String> inventoryStatus = new ArrayList<>(); List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add("Scrap"); inventoryStatus.add("SCRAP");
List<BalanceDO> balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getFromPackingNumber() validatorLocationReturnManagementAccuracy(mainDo,detailDo,inventoryStatus,false);
, detailDo.getFromBatch(), detailDo.getLocationCode(), inventoryStatus);
if (balanceDOList != null) {
BalanceDO balanceDO = balanceDOList.get(0);
detailDo.setFromQty(balanceDO.getQty());
detailDo.setToQty(balanceDO.getQty());
detailDo.setQty(balanceDO.getQty());
detailDo.setToArrivdAte(balanceDO.getArriveDate());
detailDo.setFromProduceDate(balanceDO.getProduceDate());
detailDo.setFromExpireDate(balanceDO.getExpireDate());
detailDo.setToArrivdAte(balanceDO.getArriveDate());
detailDo.setToProduceDate(balanceDO.getProduceDate());
detailDo.setToExpireDate(balanceDO.getExpireDate());
}
} catch (ServiceException ex) { } catch (ServiceException ex) {
messageDetail += ex.getMessage() + ","; messageDetail += ex.getMessage() + ",";
} }
detailDo.setToInventoryStatus("Scrap");
String number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_SCRAP_REQUEST.getCode()); String number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_SCRAP_REQUEST.getCode());
mainDo.setNumber(number); mainDo.setNumber(number);
// 校验业务类型
try {
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToScrapRequest"); businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToScrapRequest");
if (businesstypeDO != null) {
mainDo.setBusinessType(businesstypeDO.getCode()); mainDo.setBusinessType(businesstypeDO.getCode());
try {
if (itembasicDO != null){
jobUtils.ifInType(itembasicDO.getType(), businesstypeDO);
}else {
messageDetail += "物品基本信息不存在,不能校验物品类型" + ",";
}
}catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
jobUtils.ifOutInventoryStatuses(detailDo.getFromInventoryStatus(), businesstypeDO);
jobUtils.ifInFromLocationType(detailDo.getLocationCode(), businesstypeDO);
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
} }
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("OkToScrapRequest"); RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("OkToScrapRequest");
if (requestsettingDO != null) { if (requestsettingDO != null) {
@ -460,13 +615,12 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
//新增方法(主和子) //新增方法(主和子)
private InventorychangeRequestMainDO validatorToCreate(InventorychangeRequestMainCreateReqVO createReqVO) { private InventorychangeRequestMainDO validatorToCreate(InventorychangeRequestMainCreateReqVO createReqVO) {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverPlan"); InventorychangeRequestMainDO inventorychangeRequestMainDO = validateMainMethod(createReqVO);
InventorychangeRequestMainDO inventorychangeRequestMainDO = validateMainMethod(createReqVO, businesstypeDO);
//子表校验 //子表校验
List<InventorychangeRequestDetailCreateReqVO> subList = createReqVO.getSubList(); List<InventorychangeRequestDetailCreateReqVO> subList = createReqVO.getSubList();
List<InventorychangeRequestDetailDO> subDOList = InventorychangeRequestDetailConvert.INSTANCE.convertList03(subList); List<InventorychangeRequestDetailDO> subDOList = InventorychangeRequestDetailConvert.INSTANCE.convertList03(subList);
for (InventorychangeRequestDetailDO inventorychangeRequestDetailDO : subDOList) { for (InventorychangeRequestDetailDO inventorychangeRequestDetailDO : subDOList) {
validateDetailMethod(inventorychangeRequestDetailDO); validateDetailMethod(inventorychangeRequestMainDO,inventorychangeRequestDetailDO);
} }
String number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_SCRAP_REQUEST.getCode()); String number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_SCRAP_REQUEST.getCode());
inventorychangeRequestMainDO.setNumber(number); inventorychangeRequestMainDO.setNumber(number);
@ -481,35 +635,27 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
//修改方法(主和子) //修改方法(主和子)
private InventorychangeRequestMainDO validatorToUpdate(InventorychangeRequestMainUpdateReqVO updateReqVO) { private InventorychangeRequestMainDO validatorToUpdate(InventorychangeRequestMainUpdateReqVO updateReqVO) {
BusinesstypeDO businesstypeDO = new BusinesstypeDO(); InventorychangeRequestMainDO inventorychangeRequestMainDO = validateMainMethod(updateReqVO);
InventorychangeRequestMainDO deliverPlanMainDO = validateMainMethod(updateReqVO, businesstypeDO);
//子表校验 //子表校验
List<InventorychangeRequestDetailUpdateReqVO> subList = updateReqVO.getSubList(); List<InventorychangeRequestDetailUpdateReqVO> subList = updateReqVO.getSubList();
List<InventorychangeRequestDetailDO> subDOList = InventorychangeRequestDetailConvert.INSTANCE.convertList05(subList); List<InventorychangeRequestDetailDO> subDOList = InventorychangeRequestDetailConvert.INSTANCE.convertList05(subList);
for (InventorychangeRequestDetailDO inventorychangeRequestDetailDO : subDOList) { for (InventorychangeRequestDetailDO inventorychangeRequestDetailDO : subDOList) {
validateDetailMethod(inventorychangeRequestDetailDO); validateDetailMethod(inventorychangeRequestMainDO,inventorychangeRequestDetailDO);
} }
inventorychangeRequestMainMapper.updateById(deliverPlanMainDO); inventorychangeRequestMainMapper.updateById(inventorychangeRequestMainDO);
inventorychangeRequestDetailMapper.updateBatch(subDOList); inventorychangeRequestDetailMapper.updateBatch(subDOList);
return deliverPlanMainDO; return inventorychangeRequestMainDO;
} }
//校验主表公共方法(适用于新增/修改) //校验主表公共方法(适用于新增/修改)
private InventorychangeRequestMainDO validateMainMethod(InventorychangeRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO) { private InventorychangeRequestMainDO validateMainMethod(InventorychangeRequestMainBaseVO baseVO) {
InventorychangeRequestMainDO InventorychangeRequestMainDO = InventorychangeRequestMainConvert.INSTANCE.convert(baseVO); InventorychangeRequestMainDO InventorychangeRequestMainDO = InventorychangeRequestMainConvert.INSTANCE.convert(baseVO);
return InventorychangeRequestMainDO; return InventorychangeRequestMainDO;
} }
//校验子表公共方法(适用于新增/修改) //校验子表公共方法(适用于新增/修改)
private void validateDetailMethod(InventorychangeRequestDetailDO inventorychangeRequestDetailDO) { private void validateDetailMethod(InventorychangeRequestMainDO inventorychangeRequestMainDO,InventorychangeRequestDetailDO inventorychangeRequestDetailDO) {
LocationDO locationDO = this.validatorLocation(inventorychangeRequestDetailDO.getLocationCode());
if (locationDO != null) {
inventorychangeRequestDetailDO.setLocationCode(locationDO.getCode());
inventorychangeRequestDetailDO.setAreaCode(locationDO.getAreaCode());
inventorychangeRequestDetailDO.setLocationGroupCode(locationDO.getLocationGroupCode());
}
ItembasicDO itembasicDO = this.validatorItembasic(inventorychangeRequestDetailDO.getItemCode()); ItembasicDO itembasicDO = this.validatorItembasic(inventorychangeRequestDetailDO.getItemCode());
if (!inventorychangeRequestDetailDO.getUom().equals(itembasicDO.getUom())) { if (!inventorychangeRequestDetailDO.getUom().equals(itembasicDO.getUom())) {
throw exception(UOM_ERROR, inventorychangeRequestDetailDO.getUom()); throw exception(UOM_ERROR, inventorychangeRequestDetailDO.getUom());
@ -518,48 +664,71 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
inventorychangeRequestDetailDO.setItemDesc2(itembasicDO.getDesc2()); inventorychangeRequestDetailDO.setItemDesc2(itembasicDO.getDesc2());
inventorychangeRequestDetailDO.setItemName(itembasicDO.getName()); inventorychangeRequestDetailDO.setItemName(itembasicDO.getName());
inventorychangeRequestDetailDO.setProjectCode(itembasicDO.getProject()); inventorychangeRequestDetailDO.setProjectCode(itembasicDO.getProject());
inventorychangeRequestDetailDO.setUom(itembasicDO.getUom());
}
LocationDO locationDO = this.validatorLocation(inventorychangeRequestDetailDO.getLocationCode());
if (locationDO != null) {
inventorychangeRequestDetailDO.setLocationCode(locationDO.getCode());
inventorychangeRequestDetailDO.setAreaCode(locationDO.getAreaCode());
inventorychangeRequestDetailDO.setLocationGroupCode(locationDO.getLocationGroupCode());
} }
//校验库存余额是否存在 //校验库存余额是否存在
List<String> inventoryStatus = new ArrayList<>(); List<String> inventoryStatus = new ArrayList<>();
//隔离转合格申请 //隔离转合格申请
if ("Hold".equals(inventorychangeRequestDetailDO.getFromInventoryStatus())) { if ("HOLD".equals(inventorychangeRequestDetailDO.getFromInventoryStatus()) && "OK".equals(inventorychangeRequestDetailDO.getToInventoryStatus())) {
inventoryStatus.add("HOLD");
inventoryStatus.add("Hold"); String OkToScrapRequest = "HoldToOkRequest";
CreateBusinessTypeAndRequestSetting(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,itembasicDO,OkToScrapRequest);
validatorLocationReturnManagementAccuracy(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,inventoryStatus,false);
} }
//合格转隔离申请 //合格转隔离申请
if ("HOKold".equals(inventorychangeRequestDetailDO.getFromInventoryStatus())) { if ("OK".equals(inventorychangeRequestDetailDO.getFromInventoryStatus()) && "HOLD".equals(inventorychangeRequestDetailDO.getToInventoryStatus())) {
inventoryStatus.add("OK"); inventoryStatus.add("OK");
String OkToScrapRequest = "OkToHoldRequest";
CreateBusinessTypeAndRequestSetting(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,itembasicDO,OkToScrapRequest);
validatorLocationReturnManagementAccuracy(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,inventoryStatus,false);
} }
//隔离转报废申请 //隔离转报废申请
if ("Hold".equals(inventorychangeRequestDetailDO.getFromInventoryStatus())) { if ("HOLD".equals(inventorychangeRequestDetailDO.getFromInventoryStatus()) && "SCRAP".equals(inventorychangeRequestDetailDO.getToInventoryStatus())) {
inventoryStatus.add("Hold"); inventoryStatus.add("HOLD");
String OkToScrapRequest = "HoldToScrapRequest";
CreateBusinessTypeAndRequestSetting(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,itembasicDO,OkToScrapRequest);
validatorLocationReturnManagementAccuracy(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,inventoryStatus,false);
} }
//报废转隔离申请 //报废转隔离申请
if ("Scrap".equals(inventorychangeRequestDetailDO.getFromInventoryStatus())) { if ("SCRAP".equals(inventorychangeRequestDetailDO.getFromInventoryStatus())&& "HOLD".equals(inventorychangeRequestDetailDO.getToInventoryStatus())) {
inventoryStatus.add("Scrap"); inventoryStatus.add("SCRAP");
String OkToScrapRequest = "ScrapToHoldRequest";
CreateBusinessTypeAndRequestSetting(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,itembasicDO,OkToScrapRequest);
validatorLocationReturnManagementAccuracy(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,inventoryStatus,false);
} }
//合格转报废申请 //合格转报废申请
if ("Ok".equals(inventorychangeRequestDetailDO.getFromInventoryStatus())) { if ("OK".equals(inventorychangeRequestDetailDO.getFromInventoryStatus())&& "SCRAP".equals(inventorychangeRequestDetailDO.getToInventoryStatus())) {
inventoryStatus.add("Scrap"); inventoryStatus.add("SCRAP");
String OkToScrapRequest = "OkToScrapRequest";
CreateBusinessTypeAndRequestSetting(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,itembasicDO,OkToScrapRequest);
validatorLocationReturnManagementAccuracy(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,inventoryStatus,false);
} }
List<BalanceDO> balanceDOList = this.validatorLocationReturnManagementAccuracy(inventorychangeRequestDetailDO.getItemCode(), inventorychangeRequestDetailDO.getFromPackingNumber()
, inventorychangeRequestDetailDO.getFromBatch(), inventorychangeRequestDetailDO.getLocationCode(), inventoryStatus);
if (balanceDOList != null) {
BalanceDO balanceDO = balanceDOList.get(0);
inventorychangeRequestDetailDO.setFromQty(balanceDO.getQty());
inventorychangeRequestDetailDO.setToQty(balanceDO.getQty());
inventorychangeRequestDetailDO.setQty(balanceDO.getQty());
inventorychangeRequestDetailDO.setToArrivdAte(balanceDO.getArriveDate());
inventorychangeRequestDetailDO.setFromProduceDate(balanceDO.getProduceDate());
inventorychangeRequestDetailDO.setFromExpireDate(balanceDO.getExpireDate());
inventorychangeRequestDetailDO.setToArrivdAte(balanceDO.getArriveDate());
inventorychangeRequestDetailDO.setToProduceDate(balanceDO.getProduceDate());
inventorychangeRequestDetailDO.setToExpireDate(balanceDO.getExpireDate());
} }
//子表校验来源库位基础信息
private void CreateBusinessTypeAndRequestSetting(InventorychangeRequestMainDO inventorychangeRequestMainDO,InventorychangeRequestDetailDO inventorychangeRequestDetailDO, ItembasicDO itembasicDO, String businesstypeCode) {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType(businesstypeCode);
inventorychangeRequestMainDO.setBusinessType(businesstypeDO.getCode());
if (itembasicDO != null){
jobUtils.ifInType(itembasicDO.getType(), businesstypeDO);
}
jobUtils.ifOutInventoryStatuses(inventorychangeRequestDetailDO.getFromInventoryStatus(), businesstypeDO);
jobUtils.ifInFromLocationType(inventorychangeRequestDetailDO.getLocationCode(), businesstypeDO);
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist(businesstypeCode);
if (requestsettingDO != null) {
inventorychangeRequestMainDO.setAutoAgree(requestsettingDO.getAutoAgree());
inventorychangeRequestMainDO.setAutoCommit(requestsettingDO.getAutoCommit());
inventorychangeRequestMainDO.setAutoExecute(requestsettingDO.getAutoExecute());
inventorychangeRequestMainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
inventorychangeRequestMainDO.setRequestTime(LocalDateTime.now());
}
} }
//子表校验来源库位基础信息 //子表校验来源库位基础信息
private LocationDO validatorLocation(String locationCode) { private LocationDO validatorLocation(String locationCode) {
LocationDO locationDO = locationService.selectLocation(locationCode); LocationDO locationDO = locationService.selectLocation(locationCode);
@ -571,17 +740,27 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
return itembasicService.selectItembasic(itemCode); return itembasicService.selectItembasic(itemCode);
} }
//子表校验业务类型 private void validatorLocationReturnManagementAccuracy(InventorychangeRequestMainDO inventorychangeRequestMainDO,InventorychangeRequestDetailDO inventorychangeRequestDetailDO,List<String> inventoryStatus,Boolean flag) {
private void validatorItembasic(String itemCode, String fromInventoryStatus) { List<BalanceDO> balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(inventorychangeRequestDetailDO.getItemCode(), inventorychangeRequestDetailDO.getFromPackingNumber()
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToOk"); , inventorychangeRequestDetailDO.getFromBatch(), inventorychangeRequestDetailDO.getLocationCode(), inventoryStatus);
jobUtils.selectItembasicExist(itemCode, businesstypeDO); if (balanceDOList != null) {
jobUtils.ifOutInventoryStatuses(fromInventoryStatus, businesstypeDO); BalanceDO balanceDO = balanceDOList.get(0);
inventorychangeRequestMainDO.setWarehouseCode(balanceDO.getWarehouseCode());
inventorychangeRequestDetailDO.setFromQty(balanceDO.getQty());
inventorychangeRequestDetailDO.setToQty(balanceDO.getQty());
inventorychangeRequestDetailDO.setQty(balanceDO.getQty());
inventorychangeRequestDetailDO.setToArrivdAte(balanceDO.getArriveDate());
inventorychangeRequestDetailDO.setFromProduceDate(balanceDO.getProduceDate());
inventorychangeRequestDetailDO.setFromExpireDate(balanceDO.getExpireDate());
inventorychangeRequestDetailDO.setToArrivdAte(balanceDO.getArriveDate());
inventorychangeRequestDetailDO.setToProduceDate(balanceDO.getProduceDate());
inventorychangeRequestDetailDO.setToExpireDate(balanceDO.getExpireDate());
if(flag == true){
balanceDO.setInventoryStatus(inventorychangeRequestDetailDO.getToInventoryStatus());
balanceMapper.updateById(balanceDO);
trendsApi.createTrends(Long.valueOf(balanceDO.getId()), "transaction_balance", "库存修改申请生成库存修改记录时修改了库存余额库存状态", TrendsTypeEnum.UPDATE);
}
} }
private List<BalanceDO> validatorLocationReturnManagementAccuracy(String itemCode, String fromPackingNumber, String fromBatch, String locationCode, List<String> inventoryStatus) {
List<BalanceDO> balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(itemCode, fromPackingNumber
, fromBatch, locationCode, inventoryStatus);
return balanceDOList;
} }
} }

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

@ -11,32 +11,50 @@ import com.win.module.system.api.dict.DictDataApi;
import com.win.module.system.api.dict.dto.DictDataRespDTO; import com.win.module.system.api.dict.dto.DictDataRespDTO;
import com.win.module.system.api.serialnumber.SerialNumberApi; import com.win.module.system.api.serialnumber.SerialNumberApi;
import com.win.module.system.enums.serialNumber.RuleCodeEnum; import com.win.module.system.enums.serialNumber.RuleCodeEnum;
import com.win.module.wms.controller.expectin.vo.ExpectinCreateReqVO;
import com.win.module.wms.controller.expectout.vo.ExpectoutCreateReqVO;
import com.win.module.wms.controller.inventorymoveRequest.vo.*; import com.win.module.wms.controller.inventorymoveRequest.vo.*;
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestDetailUpdateReqVO; import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestDetailUpdateReqVO;
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainBaseVO; import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainBaseVO;
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainCreateReqVO; import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainCreateReqVO;
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainUpdateReqVO; import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainUpdateReqVO;
import com.win.module.wms.convert.deliverJob.DeliverJobMainConvert;
import com.win.module.wms.convert.inventorymoveJob.InventorymoveJobMainConvert;
import com.win.module.wms.convert.inventorymoveRequest.InventorymoveRequestDetailConvert; import com.win.module.wms.convert.inventorymoveRequest.InventorymoveRequestDetailConvert;
import com.win.module.wms.convert.inventorymoveRequest.InventorymoveRequestMainConvert; import com.win.module.wms.convert.inventorymoveRequest.InventorymoveRequestMainConvert;
import com.win.module.wms.convert.productputawayRequest.ProductputawayRequestDetailConvert; import com.win.module.wms.convert.productputawayRequest.ProductputawayRequestDetailConvert;
import com.win.module.wms.convert.productputawayRequest.ProductputawayRequestMainConvert; import com.win.module.wms.convert.productputawayRequest.ProductputawayRequestMainConvert;
import com.win.module.wms.dal.dataobject.balance.BalanceDO; 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.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.deliverJob.DeliverJobDetailDO;
import com.win.module.wms.dal.dataobject.deliverJob.DeliverJobMainDO;
import com.win.module.wms.dal.dataobject.deliverRequest.DeliverRequestDetailDO;
import com.win.module.wms.dal.dataobject.deliverRequest.DeliverRequestMainDO;
import com.win.module.wms.dal.dataobject.inventorymoveJob.InventorymoveJobDetailDO;
import com.win.module.wms.dal.dataobject.inventorymoveJob.InventorymoveJobMainDO;
import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestDetailDO; import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestDetailDO;
import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestMainDO; import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestMainDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; 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.location.LocationDO;
import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestDetailDO; import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestDetailDO;
import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestMainDO; import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestMainDO;
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO;
import com.win.module.wms.dal.mysql.inventorymoveJob.InventorymoveJobDetailMapper;
import com.win.module.wms.dal.mysql.inventorymoveJob.InventorymoveJobMainMapper;
import com.win.module.wms.dal.mysql.inventorymoveRequest.InventorymoveRequestDetailMapper; import com.win.module.wms.dal.mysql.inventorymoveRequest.InventorymoveRequestDetailMapper;
import com.win.module.wms.dal.mysql.inventorymoveRequest.InventorymoveRequestMainMapper; import com.win.module.wms.dal.mysql.inventorymoveRequest.InventorymoveRequestMainMapper;
import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.enums.job.JobStatusEnum;
import com.win.module.wms.enums.request.RequestStatusEnum; import com.win.module.wms.enums.request.RequestStatusEnum;
import com.win.module.wms.service.expectin.ExpectinService;
import com.win.module.wms.service.expectout.ExpectoutService;
import com.win.module.wms.service.itembasic.ItembasicService; import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.jobsetting.JobsettingService;
import com.win.module.wms.service.location.LocationService; import com.win.module.wms.service.location.LocationService;
import com.win.module.wms.service.requestsetting.RequestsettingService; import com.win.module.wms.service.requestsetting.RequestsettingService;
import com.win.module.wms.util.JobUtils; import com.win.module.wms.util.JobUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -62,6 +80,11 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest
@Resource @Resource
private InventorymoveRequestDetailMapper inventorymoveRequestDetailMapper; private InventorymoveRequestDetailMapper inventorymoveRequestDetailMapper;
@Resource
private InventorymoveJobMainMapper inventorymoveJobMainMapper;
@Resource
private InventorymoveJobDetailMapper inventorymoveJobDetailMapper;
@Resource @Resource
private Validator validator; private Validator validator;
@ -70,6 +93,8 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest
@Resource @Resource
private SerialNumberApi serialNumberApi; private SerialNumberApi serialNumberApi;
@Resource
private JobsettingService jobsettingService;
@Resource @Resource
private RequestsettingService requestsettingService; private RequestsettingService requestsettingService;
@ -79,13 +104,17 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest
private LocationService locationService; private LocationService locationService;
@Resource @Resource
private TrendsApi trendsApi; private TrendsApi trendsApi;
@Resource
private ExpectoutService expectoutService;
@Resource
private ExpectinService expectinService;
@Override @Override
public Long createInventorymoveRequestMain(InventorymoveRequestMainCreateReqVO createReqVO) { public Long createInventorymoveRequestMain(InventorymoveRequestMainCreateReqVO createReqVO) {
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("MoveRequest"); RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("MoveRequest");
// 插入 // 插入
InventorymoveRequestMainDO inventorymoveRequestMain = validatorToCreate(createReqVO,requestsettingDO); InventorymoveRequestMainDO inventorymoveRequestMain = validatorToCreate(createReqVO,requestsettingDO);
if(RequestStatusEnum.HANDLING.getCode().equals(inventorymoveRequestMain.getStatus())) { if(RequestStatusEnum.HANDLING.getCode().equals(inventorymoveRequestMain.getStatus())) {
generateJob(inventorymoveRequestMain,inventorymoveRequestDetailMapper.selectList(inventorymoveRequestMain.getId()));
} }
trendsApi.createTrends(requestsettingDO.getId(), "MoveRequest", "增加了库存移动申请", TrendsTypeEnum.CREATE); trendsApi.createTrends(requestsettingDO.getId(), "MoveRequest", "增加了库存移动申请", TrendsTypeEnum.CREATE);
return inventorymoveRequestMain.getId(); return inventorymoveRequestMain.getId();
@ -348,4 +377,103 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest
return errorList; return errorList;
} }
/**
* 生成采购收货任务不要改动事务传播方式否则会有事务问题
* @param mainDO 采购收货主
* @param detailDOList 采购收货子
*/
private void generateJob(InventorymoveRequestMainDO mainDO, List<InventorymoveRequestDetailDO> detailDOList) {
InventorymoveJobMainDO inventorymoveJobMainDO = InventorymoveJobMainConvert.INSTANCE.convert(mainDO);
BeanUtils.copyProperties(mainDO, inventorymoveJobMainDO);
inventorymoveJobMainDO.setRequestNumber(mainDO.getNumber());
inventorymoveJobMainDO.setStatus(JobStatusEnum.PENDING.getCode());
String number = serialNumberApi.generateCode(RuleCodeEnum.DELIVER_JOB.getCode());
inventorymoveJobMainDO.setNumber(number);
inventorymoveJobMainDO.setId(null);
inventorymoveJobMainDO.setRequestTime(mainDO.getRequestTime());
inventorymoveJobMainDO.setRequestDueTime(mainDO.getDueTime());
inventorymoveJobMainDO.setCreator(null);
inventorymoveJobMainDO.setCreateTime(null);
inventorymoveJobMainDO.setUpdater(null);
inventorymoveJobMainDO.setUpdateTime(null);
inventorymoveJobMainDO.setStatus("1");
// 获取任务单据设置
JobsettingDO jobsettingDO = jobsettingService.selectJobsettingExist("InventorymoveJob");
inventorymoveJobMainDO.setAutoComplete(jobsettingDO.getAutoComplete());
inventorymoveJobMainDO.setAllowModifyLocation(jobsettingDO.getAllowModifyLocation());
inventorymoveJobMainDO.setAllowModifyQty(jobsettingDO.getAllowModifyQty());
inventorymoveJobMainDO.setAllowBiggerQty(jobsettingDO.getAllowBiggerQty());
inventorymoveJobMainDO.setAllowSmallerQty(jobsettingDO.getAllowSmallerQty());
inventorymoveJobMainDO.setAllowModifyInventoryStatus(jobsettingDO.getAllowModifyInventoryStatus());
inventorymoveJobMainDO.setAllowContinuousScanning(jobsettingDO.getAllowContinuousScanning());
inventorymoveJobMainDO.setAllowPartialComplete(jobsettingDO.getAllowPartialComplete());
inventorymoveJobMainDO.setAllowModifyPackingNumber(jobsettingDO.getAllowModifyPackingNumber());
inventorymoveJobMainDO.setAllowModifyBatch(jobsettingDO.getAllowModifyBach());
//增加业务类型
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InventorymoveJob");
inventorymoveJobMainDO.setBusinessType(businesstypeDO.getCode());
inventorymoveJobMainMapper.insert(inventorymoveJobMainDO);
List<ExpectoutCreateReqVO> expectpoutCreateReqVOList = new ArrayList<>();
List<ExpectinCreateReqVO> expectpinCreateReqVOList = new ArrayList<>();
List<InventorymoveJobDetailDO> deliverJobDetailDOList = new ArrayList<>();
detailDOList.forEach(item -> {
// 根据批次策略/下架策略 返回 库存余额DO
List<BalanceDO> balanceDOListJob = jobUtils.getBalanceByBatchOffShelf(item.getItemCode(),"OK",item.getProjectCode(),item.getQty(),null);
// 根据 查询出所需数据 解析成 任务子表数据
balanceDOListJob.forEach(balanceDOItem -> {
InventorymoveJobDetailDO inventorymoveJobDetailDO = new InventorymoveJobDetailDO();
BeanUtils.copyProperties(item, inventorymoveJobDetailDO);
inventorymoveJobDetailDO.setId(null);
inventorymoveJobDetailDO.setCreateTime(null);
inventorymoveJobDetailDO.setCreator(null);
inventorymoveJobDetailDO.setUpdateTime(null);
inventorymoveJobDetailDO.setUpdater(null);
if("TRUE".equals(businesstypeDO.getUseOnTheWay())){
inventorymoveJobDetailDO.setToLocationCode("FAC_INTRANS");
}else {
inventorymoveJobDetailDO.setToLocationCode(null);
}
inventorymoveJobDetailDO.setPackingNumber(balanceDOItem.getPackingNumber());
inventorymoveJobDetailDO.setContainerNumber(balanceDOItem.getContainerNumber());
inventorymoveJobDetailDO.setBatch(balanceDOItem.getBatch());
inventorymoveJobDetailDO.setFromLocationCode(balanceDOItem.getLocationCode());
inventorymoveJobDetailDO.setToLocationCode(item.getToLocationCode());
inventorymoveJobDetailDO.setItemCode(item.getItemCode());
inventorymoveJobDetailDO.setItemName(item.getItemName());
inventorymoveJobDetailDO.setItemDesc1(item.getItemDesc1());
inventorymoveJobDetailDO.setItemDesc2(item.getItemDesc2());
inventorymoveJobDetailDO.setProjectCode(item.getProjectCode());
inventorymoveJobDetailDO.setQty(item.getQty());
inventorymoveJobDetailDO.setUom(item.getUom());
inventorymoveJobDetailDO.setNumber(inventorymoveJobMainDO.getNumber());
inventorymoveJobDetailDO.setMasterId(inventorymoveJobMainDO.getId());
inventorymoveJobDetailDO.setInventoryStatus(balanceDOItem.getInventoryStatus());
deliverJobDetailDOList.add(inventorymoveJobDetailDO);
//预计出
ExpectoutCreateReqVO expectoutCreateReqVO = new ExpectoutCreateReqVO();
BeanUtils.copyProperties(inventorymoveJobDetailDO, expectoutCreateReqVO);
expectoutCreateReqVO.setJobNumber(number);
expectoutCreateReqVO.setBusinessType(inventorymoveJobMainDO.getBusinessType());
expectoutCreateReqVO.setLocationCode(inventorymoveJobDetailDO.getFromLocationCode());
expectoutCreateReqVO.setBatch(inventorymoveJobDetailDO.getBatch());
expectoutCreateReqVO.setQty(inventorymoveJobDetailDO.getQty());
expectoutCreateReqVO.setInventoryStatus(balanceDOItem.getInventoryStatus());
expectpoutCreateReqVOList.add(expectoutCreateReqVO);
ExpectinCreateReqVO expectinCreateReqVO = new ExpectinCreateReqVO();
BeanUtils.copyProperties(inventorymoveJobDetailDO, expectinCreateReqVO);
expectinCreateReqVO.setJobNumber(number);
expectinCreateReqVO.setBusinessType(inventorymoveJobMainDO.getBusinessType());
expectinCreateReqVO.setLocationCode(inventorymoveJobDetailDO.getFromLocationCode());
expectinCreateReqVO.setBatch(inventorymoveJobDetailDO.getBatch());
expectinCreateReqVO.setQty(inventorymoveJobDetailDO.getQty());
expectinCreateReqVO.setInventoryStatus(balanceDOItem.getInventoryStatus());
expectpinCreateReqVOList.add(expectinCreateReqVO);
});
});
inventorymoveJobDetailMapper.insertBatch(deliverJobDetailDOList);
//增加预计入
expectoutService.createExpectout(expectpoutCreateReqVOList);
expectinService.createExpectin(expectpinCreateReqVOList);
trendsApi.createTrends(inventorymoveJobMainDO.getId(), "InventorymoveJob", "成品发货申请生成成品发货任务", TrendsTypeEnum.CREATE);
}
} }

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

@ -394,7 +394,7 @@ public class LocationServiceImpl implements LocationService {
* @param enableMixStatus 可以混状态 * @param enableMixStatus 可以混状态
* @return 过滤之后的库位list * @return 过滤之后的库位list
*/ */
private List<LocationDO> locationFirst(List<LocationDO> locationDOList, Object emptyLocationFirst, Object notEmptyLocationFirst, String itemCode, String batch, String inventoryStatus, String enableMixItem, String enableMixLot, String enableMixStatus) { private List<LocationDO> locationFirst(List<LocationDO> locationDOList, String emptyLocationFirst, String notEmptyLocationFirst, String itemCode, String batch, String inventoryStatus, String enableMixItem, String enableMixLot, String enableMixStatus) {
List<LocationDO> emptyList = new ArrayList<>(); List<LocationDO> emptyList = new ArrayList<>();
List<LocationDO> notEmptyList = new ArrayList<>(); List<LocationDO> notEmptyList = new ArrayList<>();
for (LocationDO locationDO : locationDOList) { for (LocationDO locationDO : locationDOList) {

1
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/offlinesettlementRecord/OfflinesettlementRecordDetailService.java

@ -80,4 +80,5 @@ public interface OfflinesettlementRecordDetailService {
*/ */
List<OfflinesettlementRecordDetailDO> getOfflinesettlementRecordDetailList(OfflinesettlementRecordDetailExportReqVO exportReqVO); List<OfflinesettlementRecordDetailDO> getOfflinesettlementRecordDetailList(OfflinesettlementRecordDetailExportReqVO exportReqVO);
List<OfflinesettlementRecordDetailDO> selectList(Long id);
} }

5
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/offlinesettlementRecord/OfflinesettlementRecordDetailServiceImpl.java

@ -88,4 +88,9 @@ public class OfflinesettlementRecordDetailServiceImpl implements Offlinesettleme
return offlinesettlementRecordDetailMapper.selectList(exportReqVO); return offlinesettlementRecordDetailMapper.selectList(exportReqVO);
} }
@Override
public List<OfflinesettlementRecordDetailDO> selectList(Long masterId) {
return offlinesettlementRecordDetailMapper.selectList(masterId);
}
} }

1
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/offlinesettlementRecord/OfflinesettlementRecordMainService.java

@ -80,4 +80,5 @@ public interface OfflinesettlementRecordMainService {
*/ */
List<OfflinesettlementRecordMainDO> getOfflinesettlementRecordMainList(OfflinesettlementRecordMainExportReqVO exportReqVO); List<OfflinesettlementRecordMainDO> getOfflinesettlementRecordMainList(OfflinesettlementRecordMainExportReqVO exportReqVO);
List<OfflinesettlementRecordMainDO> getOfflinesettlementRecordMainList(CustomConditions conditions);
} }

5
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/offlinesettlementRecord/OfflinesettlementRecordMainServiceImpl.java

@ -87,4 +87,9 @@ public class OfflinesettlementRecordMainServiceImpl implements Offlinesettlement
return offlinesettlementRecordMainMapper.selectList(exportReqVO); return offlinesettlementRecordMainMapper.selectList(exportReqVO);
} }
@Override
public List<OfflinesettlementRecordMainDO> getOfflinesettlementRecordMainList(CustomConditions conditions) {
return offlinesettlementRecordMainMapper.selectSeniorList(conditions);
}
} }

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

@ -25,6 +25,7 @@ import com.win.module.wms.dal.dataobject.productionreceiptJob.ProductionreceiptJ
import com.win.module.wms.dal.dataobject.productionreceiptJob.ProductionreceiptJobMainDO; import com.win.module.wms.dal.dataobject.productionreceiptJob.ProductionreceiptJobMainDO;
import com.win.module.wms.dal.dataobject.productionreceiptRecord.ProductionreceiptRecordDetailDO; import com.win.module.wms.dal.dataobject.productionreceiptRecord.ProductionreceiptRecordDetailDO;
import com.win.module.wms.dal.dataobject.productionreceiptRecord.ProductionreceiptRecordMainDO; import com.win.module.wms.dal.dataobject.productionreceiptRecord.ProductionreceiptRecordMainDO;
import com.win.module.wms.dal.dataobject.supplieritem.SupplieritemDO;
import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO; import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO;
import com.win.module.wms.dal.mysql.onlinesettlementRecord.OnlinesettlementRecordDetailMapper; import com.win.module.wms.dal.mysql.onlinesettlementRecord.OnlinesettlementRecordDetailMapper;
import com.win.module.wms.dal.mysql.onlinesettlementRecord.OnlinesettlementRecordMainMapper; import com.win.module.wms.dal.mysql.onlinesettlementRecord.OnlinesettlementRecordMainMapper;
@ -33,6 +34,7 @@ import com.win.module.wms.dal.mysql.productionreceiptRecord.ProductionreceiptRec
import com.win.module.wms.dal.mysql.productionreceiptRecord.ProductionreceiptRecordMainMapper; import com.win.module.wms.dal.mysql.productionreceiptRecord.ProductionreceiptRecordMainMapper;
import com.win.module.wms.enums.job.JobStatusState; import com.win.module.wms.enums.job.JobStatusState;
import com.win.module.wms.service.expectin.ExpectinService; import com.win.module.wms.service.expectin.ExpectinService;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.location.LocationService; import com.win.module.wms.service.location.LocationService;
import com.win.module.wms.service.production.ProductionMainService; import com.win.module.wms.service.production.ProductionMainService;
import com.win.module.wms.service.supplieritem.SupplieritemService; import com.win.module.wms.service.supplieritem.SupplieritemService;
@ -61,6 +63,8 @@ import static com.win.module.wms.enums.ErrorCodeConstants.*;
@Validated @Validated
public class ProductionreceiptJobMainServiceImpl implements ProductionreceiptJobMainService { public class ProductionreceiptJobMainServiceImpl implements ProductionreceiptJobMainService {
@Resource
private ItembasicService itembasicService;
@Resource @Resource
private OnlinesettlementRecordDetailMapper onlinesettlementRecordDetailMapper; private OnlinesettlementRecordDetailMapper onlinesettlementRecordDetailMapper;
@Resource @Resource
@ -280,6 +284,8 @@ public class ProductionreceiptJobMainServiceImpl implements ProductionreceiptJob
List<ProductionreceiptJobDetailUpdateReqVO> productionreceiptJobDetailUpdateReqVOList = updateReqVO.getSubList(); List<ProductionreceiptJobDetailUpdateReqVO> productionreceiptJobDetailUpdateReqVOList = updateReqVO.getSubList();
//发料记录子 //发料记录子
List<ProductionreceiptRecordDetailDO> productionreceiptRecordDetailDOList = new ArrayList<>(); List<ProductionreceiptRecordDetailDO> productionreceiptRecordDetailDOList = new ArrayList<>();
// 上线结算 物品
List<ProductionreceiptRecordDetailDO> OnlineDetailDOList = new ArrayList<>();
//库存事务 //库存事务
List<TransactionCreateReqVO> transactionCreateReqVOList = new ArrayList<>(); List<TransactionCreateReqVO> transactionCreateReqVOList = new ArrayList<>();
subList.forEach(subListItem -> { subList.forEach(subListItem -> {
@ -317,6 +323,10 @@ public class ProductionreceiptJobMainServiceImpl implements ProductionreceiptJob
productionreceiptRecordDetailDO.setUpdater(null); productionreceiptRecordDetailDO.setUpdater(null);
productionreceiptRecordDetailDO.setUpdateTime(null); productionreceiptRecordDetailDO.setUpdateTime(null);
productionreceiptRecordDetailDOList.add(productionreceiptRecordDetailDO); productionreceiptRecordDetailDOList.add(productionreceiptRecordDetailDO);
// 判断 物品 是否为 上线结算物品
if (itembasicService.isOnlines(productionreceiptRecordDetailDO.getItemCode())) {
OnlineDetailDOList.add(productionreceiptRecordDetailDO);
}
//添加库存事务list //添加库存事务list
// 入动作 // 入动作
TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO(); TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO();
@ -355,12 +365,13 @@ public class ProductionreceiptJobMainServiceImpl implements ProductionreceiptJob
} }
}); });
}); });
if(!productionreceiptRecordDetailDOList.isEmpty()) { if(productionreceiptRecordDetailDOList != null && productionreceiptRecordDetailDOList.size() > 0) {
productionreceiptRecordDetailMapper.insertBatch(productionreceiptRecordDetailDOList); productionreceiptRecordDetailMapper.insertBatch(productionreceiptRecordDetailDOList);
} }
// TODO:判断 物品 是否为 上线结算物品
// 创建 上线结算记录 // 创建 上线结算记录
createOnlinesettlementRecord(productionreceiptRecordMainDO,productionreceiptRecordDetailDOList); if (OnlineDetailDOList != null && OnlineDetailDOList.size() > 0) {
createOnlinesettlementRecord(productionreceiptRecordMainDO,OnlineDetailDOList);
}
//增加库存事务 //增加库存事务
transactionService.createTransaction(transactionCreateReqVOList); transactionService.createTransaction(transactionCreateReqVOList);
//移除预计入 //移除预计入
@ -415,7 +426,7 @@ public class ProductionreceiptJobMainServiceImpl implements ProductionreceiptJob
onlinesettlementRecordDetailDO.setUpdateTime(null); onlinesettlementRecordDetailDO.setUpdateTime(null);
onlinesettlementRecordDetailDOList.add(onlinesettlementRecordDetailDO); onlinesettlementRecordDetailDOList.add(onlinesettlementRecordDetailDO);
}); });
if(!onlinesettlementRecordDetailDOList.isEmpty()) { if(onlinesettlementRecordDetailDOList != null && onlinesettlementRecordDetailDOList.size() > 0) {
onlinesettlementRecordDetailMapper.insertBatch(onlinesettlementRecordDetailDOList); onlinesettlementRecordDetailMapper.insertBatch(onlinesettlementRecordDetailDOList);
} }
} }

57
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptJob/ProductreceiptJobMainServiceImpl.java

@ -24,6 +24,9 @@ import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordDetailDO;
import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordMainDO; import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordMainDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.location.LocationDO; import com.win.module.wms.dal.dataobject.location.LocationDO;
import com.win.module.wms.dal.dataobject.offlinesettlementRecord.OfflinesettlementRecordDetailDO;
import com.win.module.wms.dal.dataobject.offlinesettlementRecord.OfflinesettlementRecordMainDO;
import com.win.module.wms.dal.dataobject.onlinesettlementRecord.OnlinesettlementRecordDetailDO;
import com.win.module.wms.dal.dataobject.production.ProductionDetailDO; import com.win.module.wms.dal.dataobject.production.ProductionDetailDO;
import com.win.module.wms.dal.dataobject.productreceiptJob.ProductreceiptJobDetailDO; import com.win.module.wms.dal.dataobject.productreceiptJob.ProductreceiptJobDetailDO;
import com.win.module.wms.dal.dataobject.productreceiptJob.ProductreceiptJobMainDO; import com.win.module.wms.dal.dataobject.productreceiptJob.ProductreceiptJobMainDO;
@ -32,9 +35,12 @@ import com.win.module.wms.dal.dataobject.productreceiptRecord.ProductreceiptReco
import com.win.module.wms.dal.dataobject.productreceiptRecord.ProductreceiptRecordMainDO; import com.win.module.wms.dal.dataobject.productreceiptRecord.ProductreceiptRecordMainDO;
import com.win.module.wms.dal.dataobject.productreceiptRequest.ProductreceiptRequestDetailDO; import com.win.module.wms.dal.dataobject.productreceiptRequest.ProductreceiptRequestDetailDO;
import com.win.module.wms.dal.dataobject.productreceiptRequest.ProductreceiptRequestMainDO; import com.win.module.wms.dal.dataobject.productreceiptRequest.ProductreceiptRequestMainDO;
import com.win.module.wms.dal.dataobject.supplieritem.SupplieritemDO;
import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO; import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO;
import com.win.module.wms.dal.dataobject.workstation.WorkstationDO; import com.win.module.wms.dal.dataobject.workstation.WorkstationDO;
import com.win.module.wms.dal.mysql.backflushRequest.BackflushRequestDetailbMapper; import com.win.module.wms.dal.mysql.backflushRequest.BackflushRequestDetailbMapper;
import com.win.module.wms.dal.mysql.offlinesettlementRecord.OfflinesettlementRecordDetailMapper;
import com.win.module.wms.dal.mysql.offlinesettlementRecord.OfflinesettlementRecordMainMapper;
import com.win.module.wms.dal.mysql.productreceiptJob.ProductreceiptJobMainMapper; import com.win.module.wms.dal.mysql.productreceiptJob.ProductreceiptJobMainMapper;
import com.win.module.wms.dal.mysql.productreceiptRecord.BackflushRecordDetailbMapper; import com.win.module.wms.dal.mysql.productreceiptRecord.BackflushRecordDetailbMapper;
import com.win.module.wms.dal.mysql.productreceiptRecord.ProductreceiptRecordDetailMapper; import com.win.module.wms.dal.mysql.productreceiptRecord.ProductreceiptRecordDetailMapper;
@ -47,10 +53,12 @@ import com.win.module.wms.service.documentSwitch.SwitchService;
import com.win.module.wms.service.expectin.ExpectinService; import com.win.module.wms.service.expectin.ExpectinService;
import com.win.module.wms.service.itembasic.ItembasicService; import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.location.LocationService; import com.win.module.wms.service.location.LocationService;
import com.win.module.wms.service.offlinesettlementRecord.OfflinesettlementRecordMainService;
import com.win.module.wms.service.production.ProductionMainService; import com.win.module.wms.service.production.ProductionMainService;
import com.win.module.wms.service.productreceiptRequest.ProductreceiptRequestDetailService; import com.win.module.wms.service.productreceiptRequest.ProductreceiptRequestDetailService;
import com.win.module.wms.service.productreceiptRequest.ProductreceiptRequestMainService; import com.win.module.wms.service.productreceiptRequest.ProductreceiptRequestMainService;
import com.win.module.wms.service.recordsetting.RecordsettingService; import com.win.module.wms.service.recordsetting.RecordsettingService;
import com.win.module.wms.service.supplieritem.SupplieritemService;
import com.win.module.wms.service.transaction.TransactionService; import com.win.module.wms.service.transaction.TransactionService;
import com.win.module.wms.service.transactiontype.TransactiontypeService; import com.win.module.wms.service.transactiontype.TransactiontypeService;
import com.win.module.wms.service.workstation.WorkstationService; import com.win.module.wms.service.workstation.WorkstationService;
@ -79,6 +87,12 @@ import static com.win.module.wms.enums.ErrorCodeConstants.*;
@Validated @Validated
public class ProductreceiptJobMainServiceImpl implements ProductreceiptJobMainService { public class ProductreceiptJobMainServiceImpl implements ProductreceiptJobMainService {
@Resource
private OfflinesettlementRecordDetailMapper offlinesettlementRecordDetailMapper;
@Resource
private OfflinesettlementRecordMainMapper offlinesettlementRecordMainMapper;
@Resource
private SupplieritemService supplieritemService;
@Resource @Resource
private ItembasicService itembasicService; private ItembasicService itembasicService;
@Resource @Resource
@ -453,19 +467,19 @@ public class ProductreceiptJobMainServiceImpl implements ProductreceiptJobMainSe
transactionCreateReqVO.setLocationCode(backflushRecordDetailbDO.getFromLocationCode()); transactionCreateReqVO.setLocationCode(backflushRecordDetailbDO.getFromLocationCode());
transactionCreateReqVOList.add(transactionCreateReqVO); transactionCreateReqVOList.add(transactionCreateReqVO);
// 判断 物品 是否为 下线结算物品 创建 下线结算记录 // 判断 物品 是否为 下线结算物品 创建 下线结算记录
// ItembasicDO itembasicDO = itembasicService.s if (itembasicService.isOfflines(backflushRecordDetailbDO.getItemCode())) {
// if (backflushRecordDetailbDO.getItemCode()) {
//
// }
offlinesettlementRecordList.add(backflushRecordDetailbDO); offlinesettlementRecordList.add(backflushRecordDetailbDO);
} }
} }
}
backflushRecordDetailbMapper.insertBatch(backflushRecordDetailbDOList); backflushRecordDetailbMapper.insertBatch(backflushRecordDetailbDOList);
//增加库存事务 //增加库存事务
transactionService.createTransaction(transactionCreateReqVOList); transactionService.createTransaction(transactionCreateReqVOList);
// TODO:判断 物品 是否为 下线结算物品 创建 下线结算记录 // 创建 下线结算记录
if (offlinesettlementRecordList != null && offlinesettlementRecordList.size() > 0) {
generateOfflinesettlementRecord(productreceiptRecordMainDO, offlinesettlementRecordList); generateOfflinesettlementRecord(productreceiptRecordMainDO, offlinesettlementRecordList);
} }
}
/** /**
* 创建 下线结算 记录 * 创建 下线结算 记录
@ -473,5 +487,38 @@ public class ProductreceiptJobMainServiceImpl implements ProductreceiptJobMainSe
* @param offlinesettlementRecordList * @param offlinesettlementRecordList
*/ */
private void generateOfflinesettlementRecord(ProductreceiptRecordMainDO productreceiptRecordMainDO, List<BackflushRecordDetailbDO> offlinesettlementRecordList) { private void generateOfflinesettlementRecord(ProductreceiptRecordMainDO productreceiptRecordMainDO, List<BackflushRecordDetailbDO> offlinesettlementRecordList) {
OfflinesettlementRecordMainDO offlinesettlementRecordMainDO = new OfflinesettlementRecordMainDO();
BeanUtils.copyProperties(productreceiptRecordMainDO,offlinesettlementRecordMainDO);
String number = serialNumberApi.generateCode(RuleCodeEnum.OFFLINE_SETTLEMENT_RECORD.getCode());
offlinesettlementRecordMainDO.setNumber(number);
offlinesettlementRecordMainDO.setProductReceiptRecordNumber(productreceiptRecordMainDO.getNumber());
offlinesettlementRecordMainDO.setBusinessType("");
offlinesettlementRecordMainDO.setInTransactionType("");
offlinesettlementRecordMainDO.setOutTransactionType("");
offlinesettlementRecordMainDO.setId(null);
offlinesettlementRecordMainDO.setCreator(null);
offlinesettlementRecordMainDO.setCreateTime(null);
offlinesettlementRecordMainDO.setUpdater(null);
offlinesettlementRecordMainDO.setUpdateTime(null);
offlinesettlementRecordMainMapper.insert(offlinesettlementRecordMainDO);
//上线结算记录子 集合
List<OfflinesettlementRecordDetailDO> offlinesettlementRecordDetailDOList = new ArrayList<>();
for(BackflushRecordDetailbDO backflushRecordDetailbDO : offlinesettlementRecordList ) {
OfflinesettlementRecordDetailDO offlinesettlementRecordDetailDO = new OfflinesettlementRecordDetailDO();
BeanUtils.copyProperties(backflushRecordDetailbDO,offlinesettlementRecordDetailDO);
offlinesettlementRecordDetailDO.setLocationCode(backflushRecordDetailbDO.getFromLocationCode());
offlinesettlementRecordDetailDO.setLocationGroupCode(backflushRecordDetailbDO.getFromLocationGroupCode());
offlinesettlementRecordDetailDO.setAreaCode(backflushRecordDetailbDO.getFromAreaCode());
offlinesettlementRecordDetailDO.setMasterId(offlinesettlementRecordMainDO.getId());
offlinesettlementRecordDetailDO.setId(null);
offlinesettlementRecordDetailDO.setCreator(null);
offlinesettlementRecordDetailDO.setCreateTime(null);
offlinesettlementRecordDetailDO.setUpdater(null);
offlinesettlementRecordDetailDO.setUpdateTime(null);
offlinesettlementRecordDetailDOList.add(offlinesettlementRecordDetailDO);
}
if(offlinesettlementRecordDetailDOList != null && offlinesettlementRecordDetailDOList.size() > 0) {
offlinesettlementRecordDetailMapper.insertBatch(offlinesettlementRecordDetailDOList);
}
} }
} }

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

@ -162,4 +162,11 @@ public interface PurchaseMainService {
* @param returnedQty * @param returnedQty
*/ */
void updateOrderPurchaseReturnQty(String poNumber , String poLine, String itemCode, BigDecimal returnedQty); void updateOrderPurchaseReturnQty(String poNumber , String poLine, String itemCode, BigDecimal returnedQty);
/**
* 放订单数
* @param isOpen 是否开放true开放false全部
* @return
*/
long getPurchaseCount(boolean isOpen);
} }

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

@ -343,6 +343,11 @@ public class PurchaseMainServiceImpl implements PurchaseMainService {
//子表校验 //子表校验
List<PurchaseDetailCreateReqVO> subList = createReqVO.getSubList(); List<PurchaseDetailCreateReqVO> subList = createReqVO.getSubList();
List<PurchaseDetailDO> subDOList = PurchaseDetailConvert.INSTANCE.convertList03(subList); List<PurchaseDetailDO> subDOList = PurchaseDetailConvert.INSTANCE.convertList03(subList);
purchaseMainDO.setId(null);
purchaseMainDO.setCreator(null);
purchaseMainDO.setCreateTime(null);
purchaseMainDO.setUpdater(null);
purchaseMainDO.setUpdateTime(null);
purchaseMainMapper.insert(purchaseMainDO); purchaseMainMapper.insert(purchaseMainDO);
for (PurchaseDetailDO purchaseDetailDO : subDOList) { for (PurchaseDetailDO purchaseDetailDO : subDOList) {
validatorDetailMethod(purchaseDetailDO, purchaseMainDO); validatorDetailMethod(purchaseDetailDO, purchaseMainDO);
@ -356,6 +361,11 @@ public class PurchaseMainServiceImpl implements PurchaseMainService {
purchaseDetailDO.setErpLocationCode(null); purchaseDetailDO.setErpLocationCode(null);
purchaseDetailDO.setAvailable("TRUE"); purchaseDetailDO.setAvailable("TRUE");
purchaseDetailDO.setStatus(OrderStatusEnum.READY.getCode()); purchaseDetailDO.setStatus(OrderStatusEnum.READY.getCode());
purchaseDetailDO.setId(null);
purchaseDetailDO.setCreator(null);
purchaseDetailDO.setCreateTime(null);
purchaseDetailDO.setUpdater(null);
purchaseDetailDO.setUpdateTime(null);
} }
purchaseDetailMapper.insertBatch(subDOList); purchaseDetailMapper.insertBatch(subDOList);
return purchaseMainDO; return purchaseMainDO;
@ -535,6 +545,11 @@ public class PurchaseMainServiceImpl implements PurchaseMainService {
purchasePlanMainDO.setEndTime(String.valueOf(conditionObject.get("EndTime"))); purchasePlanMainDO.setEndTime(String.valueOf(conditionObject.get("EndTime")));
purchasePlanMainDO.setTimeWindow(purchasePlanMainDO.getBeginTime() + "-" + purchasePlanMainDO.getEndTime()); purchasePlanMainDO.setTimeWindow(purchasePlanMainDO.getBeginTime() + "-" + purchasePlanMainDO.getEndTime());
} }
purchasePlanMainDO.setId(null);
purchasePlanMainDO.setCreator(null);
purchasePlanMainDO.setCreateTime(null);
purchasePlanMainDO.setUpdater(null);
purchasePlanMainDO.setUpdateTime(null);
purchasePlanMainMapper.insert(purchasePlanMainDO); purchasePlanMainMapper.insert(purchasePlanMainDO);
//新增要货计划子表 //新增要货计划子表
QueryWrapper<PurchaseDetailDO> purchaseDetailDOQueryWrapper = new QueryWrapper<>(); QueryWrapper<PurchaseDetailDO> purchaseDetailDOQueryWrapper = new QueryWrapper<>();
@ -551,6 +566,11 @@ public class PurchaseMainServiceImpl implements PurchaseMainService {
purchasePlanDetailDO.setShippedQty(BigDecimal.ZERO); purchasePlanDetailDO.setShippedQty(BigDecimal.ZERO);
purchasePlanDetailDO.setAvailable("TRUE"); purchasePlanDetailDO.setAvailable("TRUE");
purchasePlanDetailDO.setTenantId(1L); purchasePlanDetailDO.setTenantId(1L);
purchasePlanDetailDO.setId(null);
purchasePlanDetailDO.setCreator(null);
purchasePlanDetailDO.setCreateTime(null);
purchasePlanDetailDO.setUpdater(null);
purchasePlanDetailDO.setUpdateTime(null);
purchasePlanDetailMapper.insert(purchasePlanDetailDO); purchasePlanDetailMapper.insert(purchasePlanDetailDO);
} }
} }
@ -735,4 +755,14 @@ public class PurchaseMainServiceImpl implements PurchaseMainService {
} }
} }
@Override
public long getPurchaseCount(boolean isOpen) {
QueryWrapper<PurchaseMainDO> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("available", "TRUE");
if(isOpen) {
queryWrapper.ne("status", OrderStatusEnum.CLOSED.getCode());
}
return purchaseMainMapper.selectCount(queryWrapper);
}
} }

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanDetailService.java

@ -83,9 +83,9 @@ public interface PurchasePlanDetailService {
/** /**
* 根据主表number查询 * 根据主表number查询
* @param poNumber * @param number
* @return * @return
*/ */
List<PurchasePlanDetailDO> selectAllList(String poNumber); List<PurchasePlanDetailDO> selectAllList(String number);
} }

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanDetailServiceImpl.java

@ -92,9 +92,9 @@ public class PurchasePlanDetailServiceImpl implements PurchasePlanDetailService
return purchasePlanDetailMapper.selectList(exportReqVO); return purchasePlanDetailMapper.selectList(exportReqVO);
} }
@Override @Override
public List<PurchasePlanDetailDO> selectAllList(String poNumber) { public List<PurchasePlanDetailDO> selectAllList(String number) {
List<PurchasePlanDetailDO> newList = new ArrayList<>(); List<PurchasePlanDetailDO> newList = new ArrayList<>();
List<PurchasePlanDetailDO> purchasePlanDetailDOList = purchasePlanDetailMapper.selectAllList(poNumber); List<PurchasePlanDetailDO> purchasePlanDetailDOList = purchasePlanDetailMapper.selectAllList(number);
for (PurchasePlanDetailDO purchasePlanDetailDO : purchasePlanDetailDOList) { for (PurchasePlanDetailDO purchasePlanDetailDO : purchasePlanDetailDOList) {
if(purchasePlanDetailDO.getPlanQty().compareTo(purchasePlanDetailDO.getShippedQty())> 0){ if(purchasePlanDetailDO.getPlanQty().compareTo(purchasePlanDetailDO.getShippedQty())> 0){
newList.add(purchasePlanDetailDO); newList.add(purchasePlanDetailDO);

6
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanMainService.java

@ -156,4 +156,10 @@ public interface PurchasePlanMainService {
*/ */
void updatePlanPurchaseShippedQty(String number, String poNumber,String poLine, String itemCode, BigDecimal shippedQty); void updatePlanPurchaseShippedQty(String number, String poNumber,String poLine, String itemCode, BigDecimal shippedQty);
/**
* 计划数
* @param isOpen 是否开放true开放false全部
* @return
*/
long getPurchasePlanCount(boolean isOpen);
} }

36
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanMainServiceImpl.java

@ -22,7 +22,6 @@ 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.purchase.PurchaseMainDO;
import com.win.module.wms.dal.dataobject.purchasePlan.PurchasePlanDetailDO; import com.win.module.wms.dal.dataobject.purchasePlan.PurchasePlanDetailDO;
import com.win.module.wms.dal.dataobject.purchasePlan.PurchasePlanMainDO; import com.win.module.wms.dal.dataobject.purchasePlan.PurchasePlanMainDO;
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO;
import com.win.module.wms.dal.dataobject.shift.ShiftDO; import com.win.module.wms.dal.dataobject.shift.ShiftDO;
import com.win.module.wms.dal.dataobject.supplier.SupplierDO; import com.win.module.wms.dal.dataobject.supplier.SupplierDO;
import com.win.module.wms.dal.dataobject.supplieritem.SupplieritemDO; import com.win.module.wms.dal.dataobject.supplieritem.SupplieritemDO;
@ -31,6 +30,7 @@ import com.win.module.wms.dal.mysql.purchase.PurchaseMainMapper;
import com.win.module.wms.dal.mysql.purchasePlan.PurchasePlanDetailMapper; import com.win.module.wms.dal.mysql.purchasePlan.PurchasePlanDetailMapper;
import com.win.module.wms.dal.mysql.purchasePlan.PurchasePlanMainMapper; import com.win.module.wms.dal.mysql.purchasePlan.PurchasePlanMainMapper;
import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.enums.order.OrderStatusEnum;
import com.win.module.wms.enums.plan.PlanStatusEnum; import com.win.module.wms.enums.plan.PlanStatusEnum;
import com.win.module.wms.enums.plan.PurchasePlanStatusEnum; import com.win.module.wms.enums.plan.PurchasePlanStatusEnum;
import com.win.module.wms.enums.request.RequestStatusEnum; import com.win.module.wms.enums.request.RequestStatusEnum;
@ -257,6 +257,11 @@ public class PurchasePlanMainServiceImpl implements PurchasePlanMainService {
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_PLAN.getCode()); String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_PLAN.getCode());
mainDo.setNumber(number); mainDo.setNumber(number);
mainDo.setAvailable("TRUE"); mainDo.setAvailable("TRUE");
mainDo.setId(null);
mainDo.setCreator(null);
mainDo.setCreateTime(null);
mainDo.setUpdater(null);
mainDo.setUpdateTime(null);
purchasePlanMainMapper.insert(mainDo); purchasePlanMainMapper.insert(mainDo);
for (PurchasePlanDetailDO detailDO : subDOList) { for (PurchasePlanDetailDO detailDO : subDOList) {
detailDO.setMasterId(mainDo.getId()); detailDO.setMasterId(mainDo.getId());
@ -278,6 +283,11 @@ public class PurchasePlanMainServiceImpl implements PurchasePlanMainService {
detailDO.setPlanQty(purchaseDetailDO.getOrderQty().subtract(purchaseDetailDO.getPlannedQty())); detailDO.setPlanQty(purchaseDetailDO.getOrderQty().subtract(purchaseDetailDO.getPlannedQty()));
} }
} }
detailDO.setId(null);
detailDO.setCreator(null);
detailDO.setCreateTime(null);
detailDO.setUpdater(null);
detailDO.setUpdateTime(null);
} }
purchasePlanDetailMapper.insertBatch(subDOList); purchasePlanDetailMapper.insertBatch(subDOList);
} }
@ -329,6 +339,11 @@ public class PurchasePlanMainServiceImpl implements PurchasePlanMainService {
//子表校验 //子表校验
List<PurchasePlanDetailCreateReqVO> subList = createReqVO.getSubList(); List<PurchasePlanDetailCreateReqVO> subList = createReqVO.getSubList();
List<PurchasePlanDetailDO> subDOList = PurchasePlanDetailConvert.INSTANCE.convertList03(subList); List<PurchasePlanDetailDO> subDOList = PurchasePlanDetailConvert.INSTANCE.convertList03(subList);
purchasePlanMainDO.setId(null);
purchasePlanMainDO.setCreator(null);
purchasePlanMainDO.setCreateTime(null);
purchasePlanMainDO.setUpdater(null);
purchasePlanMainDO.setUpdateTime(null);
purchasePlanMainMapper.insert(purchasePlanMainDO); purchasePlanMainMapper.insert(purchasePlanMainDO);
for (PurchasePlanDetailDO purchasePlanDetailDO : subDOList) { for (PurchasePlanDetailDO purchasePlanDetailDO : subDOList) {
validatorDetailMethod(purchasePlanDetailDO, purchasePlanMainDO); validatorDetailMethod(purchasePlanDetailDO, purchasePlanMainDO);
@ -349,6 +364,11 @@ public class PurchasePlanMainServiceImpl implements PurchasePlanMainService {
purchasePlanDetailDO.setNumber(purchasePlanMainDO.getNumber()); purchasePlanDetailDO.setNumber(purchasePlanMainDO.getNumber());
purchasePlanDetailDO.setShippedQty(BigDecimal.ZERO); purchasePlanDetailDO.setShippedQty(BigDecimal.ZERO);
purchasePlanDetailDO.setAvailable("TRUE"); purchasePlanDetailDO.setAvailable("TRUE");
purchasePlanDetailDO.setId(null);
purchasePlanDetailDO.setCreator(null);
purchasePlanDetailDO.setCreateTime(null);
purchasePlanDetailDO.setUpdater(null);
purchasePlanDetailDO.setUpdateTime(null);
} }
purchasePlanDetailMapper.insertBatch(subDOList); purchasePlanDetailMapper.insertBatch(subDOList);
return purchasePlanMainDO; return purchasePlanMainDO;
@ -432,7 +452,7 @@ public class PurchasePlanMainServiceImpl implements PurchasePlanMainService {
purchasePlanMainDOQueryWrapper.eq("number", poNumber); purchasePlanMainDOQueryWrapper.eq("number", poNumber);
purchasePlanMainDOQueryWrapper.eq("status", PurchasePlanStatusEnum.ACCEPTED.getCode()); purchasePlanMainDOQueryWrapper.eq("status", PurchasePlanStatusEnum.ACCEPTED.getCode());
List<PurchasePlanMainDO> purchasePlanMainDOList = purchasePlanMainMapper.selectList(purchasePlanMainDOQueryWrapper); List<PurchasePlanMainDO> purchasePlanMainDOList = purchasePlanMainMapper.selectList(purchasePlanMainDOQueryWrapper);
if (purchasePlanMainDOList != null && purchasePlanMainDOList.size() > 0) { if (purchasePlanMainDOList != null && !purchasePlanMainDOList.isEmpty()) {
for (PurchasePlanMainDO purchasePlanMainDO : purchasePlanMainDOList) { for (PurchasePlanMainDO purchasePlanMainDO : purchasePlanMainDOList) {
int i = 0; int i = 0;
QueryWrapper<PurchasePlanDetailDO> purchasePlanDetailDOQueryWrapper = new QueryWrapper(); QueryWrapper<PurchasePlanDetailDO> purchasePlanDetailDOQueryWrapper = new QueryWrapper();
@ -441,7 +461,7 @@ public class PurchasePlanMainServiceImpl implements PurchasePlanMainService {
purchasePlanDetailDOQueryWrapper.eq("item_code", itemCode); purchasePlanDetailDOQueryWrapper.eq("item_code", itemCode);
purchasePlanDetailDOQueryWrapper.eq("available", "TRUE"); purchasePlanDetailDOQueryWrapper.eq("available", "TRUE");
List<PurchasePlanDetailDO> purchasePlanDetailDOList = purchasePlanDetailMapper.selectList(purchasePlanDetailDOQueryWrapper); List<PurchasePlanDetailDO> purchasePlanDetailDOList = purchasePlanDetailMapper.selectList(purchasePlanDetailDOQueryWrapper);
if (purchasePlanDetailDOList != null && purchasePlanDetailDOList.size() > 0) { if (purchasePlanDetailDOList != null && !purchasePlanDetailDOList.isEmpty()) {
for (PurchasePlanDetailDO purchasePlanDetailDO : purchasePlanDetailDOList) { for (PurchasePlanDetailDO purchasePlanDetailDO : purchasePlanDetailDOList) {
purchasePlanDetailDO.setShippedQty(shippedQty); purchasePlanDetailDO.setShippedQty(shippedQty);
if (purchasePlanDetailDO.getPlanQty().compareTo(purchasePlanDetailDO.getShippedQty()) == 0) { if (purchasePlanDetailDO.getPlanQty().compareTo(purchasePlanDetailDO.getShippedQty()) == 0) {
@ -465,4 +485,14 @@ public class PurchasePlanMainServiceImpl implements PurchasePlanMainService {
} }
} }
@Override
public long getPurchasePlanCount(boolean isOpen) {
QueryWrapper<PurchasePlanMainDO> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("available", "TRUE");
if(isOpen) {
queryWrapper.ne("status", OrderStatusEnum.CLOSED.getCode());
}
return purchasePlanMainMapper.selectCount(queryWrapper);
}
} }

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/putawayRequest/PutawayRequestMainServiceImpl.java

@ -355,7 +355,7 @@ public class PutawayRequestMainServiceImpl implements PutawayRequestMainService
putawayJobMainDO.setAllowPartialComplete(jobsettingDO.getAllowPartialComplete()); putawayJobMainDO.setAllowPartialComplete(jobsettingDO.getAllowPartialComplete());
putawayJobMainDO.setAllowModifyPackingNumber(jobsettingDO.getAllowModifyPackingNumber()); putawayJobMainDO.setAllowModifyPackingNumber(jobsettingDO.getAllowModifyPackingNumber());
putawayJobMainDO.setAllowModifyBatch(jobsettingDO.getAllowModifyBach()); putawayJobMainDO.setAllowModifyBatch(jobsettingDO.getAllowModifyBach());
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseReturnRequest"); BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchasePutawayJob");
putawayJobMainDO.setBusinessType(businesstypeDO.getCode()); putawayJobMainDO.setBusinessType(businesstypeDO.getCode());
putawayJobMainDO.setInInventoryStatuses(businesstypeDO.getInInventoryStatuses()); putawayJobMainDO.setInInventoryStatuses(businesstypeDO.getInInventoryStatuses());
putawayJobMainDO.setOutInventoryStatuses(businesstypeDO.getOutInventoryStatuses()); putawayJobMainDO.setOutInventoryStatuses(businesstypeDO.getOutInventoryStatuses());

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/recordsetting/RecordsettingServiceImpl.java

@ -197,8 +197,9 @@ public class RecordsettingServiceImpl implements RecordsettingService {
public RecordsettingDO selectRecordsettingExist(String pcode){ public RecordsettingDO selectRecordsettingExist(String pcode){
QueryWrapper queryWrapper = new QueryWrapper(); QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("code",pcode); queryWrapper.eq("code",pcode);
queryWrapper.eq("available","TRUE");
RecordsettingDO recordsettingDO = recordsettingMapper.selectOne(queryWrapper); RecordsettingDO recordsettingDO = recordsettingMapper.selectOne(queryWrapper);
if(recordsettingDO != null && "TRUE".equals(recordsettingDO.getAvailable())){ if(recordsettingDO != null){
return recordsettingDO; return recordsettingDO;
}else { }else {
throw exception(RECORDSETTING_NOT_EXISTS); throw exception(RECORDSETTING_NOT_EXISTS);

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

@ -288,6 +288,9 @@ public class RepleinshJobMainServiceImpl implements RepleinshJobMainService {
repleinshRecordDetailDO.setToLocationCode(recordLstItem.get("toLocationCode")); repleinshRecordDetailDO.setToLocationCode(recordLstItem.get("toLocationCode"));
repleinshRecordDetailDO.setInventoryStatus(recordLstItem.get("toInventoryStatus")); repleinshRecordDetailDO.setInventoryStatus(recordLstItem.get("toInventoryStatus"));
repleinshRecordDetailDO.setSupplierCode(recordLstItem.get("supplierCode")); repleinshRecordDetailDO.setSupplierCode(recordLstItem.get("supplierCode"));
repleinshRecordDetailDO.setFromPackingNumber(recordLstItem.get("fromPackingNumber")==null?"":recordLstItem.get("fromPackingNumber"));
repleinshRecordDetailDO.setFromContainerNumber(recordLstItem.get("fromContainerNumber")==null?"":recordLstItem.get("fromContainerNumber"));
repleinshRecordDetailDO.setFromBatch(recordLstItem.get("fromBatch")==null?"":recordLstItem.get("fromBatch"));
// 根据 to库位 查询 库位组 库区 // 根据 to库位 查询 库位组 库区
LocationDO locationDO = locationService.selectLocation(recordLstItem.get("toLocationCode")); LocationDO locationDO = locationService.selectLocation(recordLstItem.get("toLocationCode"));
repleinshRecordDetailDO.setToLocationGroupCode(locationDO.getLocationGroupCode()); repleinshRecordDetailDO.setToLocationGroupCode(locationDO.getLocationGroupCode());
@ -326,11 +329,11 @@ public class RepleinshJobMainServiceImpl implements RepleinshJobMainService {
transactionCreateReqVOOut.setOwnerCode(repleinshRecordDetailDO.getFromOwnerCode()); transactionCreateReqVOOut.setOwnerCode(repleinshRecordDetailDO.getFromOwnerCode());
transactionCreateReqVOOut.setRecordNumber(number); transactionCreateReqVOOut.setRecordNumber(number);
transactionCreateReqVOOut.setId(null); transactionCreateReqVOOut.setId(null);
transactionCreateReqVOOut.setPackingNumber(repleinshRecordDetailDO.getToPackingNumber()); transactionCreateReqVOOut.setPackingNumber(recordLstItem.get("fromPackingNumber")==null?"":recordLstItem.get("fromPackingNumber"));
transactionCreateReqVOOut.setBatch(repleinshRecordDetailDO.getToBatch()); transactionCreateReqVOOut.setBatch(recordLstItem.get("fromBatch")==null?"":recordLstItem.get("fromBatch"));
transactionCreateReqVOOut.setContainerNumber(repleinshRecordDetailDO.getToContainerNumber()); transactionCreateReqVOOut.setContainerNumber(recordLstItem.get("fromContainerNumber")==null?"":recordLstItem.get("fromContainerNumber"));
transactionCreateReqVOOut.setAmount(BigDecimal.ZERO); transactionCreateReqVOOut.setAmount(BigDecimal.ZERO);
transactionCreateReqVOOut.setLocationCode(recordLstItem.get("toLocationCode").toString()); transactionCreateReqVOOut.setLocationCode(subListItem.getFromLocationCode());
transactionCreateReqVOList.add(transactionCreateReqVOOut); transactionCreateReqVOList.add(transactionCreateReqVOOut);
}); });
} }

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

@ -124,6 +124,7 @@ public class SupplierdeliverRequestMainServiceImpl implements SupplierdeliverReq
private LocationService locationService; private LocationService locationService;
@Override @Override
@Transactional
public Long createSupplierdeliverRequestMain(SupplierdeliverRequestMainCreateReqVO createReqVO) { public Long createSupplierdeliverRequestMain(SupplierdeliverRequestMainCreateReqVO createReqVO) {
// 插入主表 // 插入主表
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("SupplierDeliverRequest"); BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("SupplierDeliverRequest");
@ -142,6 +143,7 @@ public class SupplierdeliverRequestMainServiceImpl implements SupplierdeliverReq
} }
@Override @Override
@Transactional
public Long updateSupplierdeliverRequestMain(SupplierdeliverRequestMainUpdateReqVO updateReqVO) { public Long updateSupplierdeliverRequestMain(SupplierdeliverRequestMainUpdateReqVO updateReqVO) {
// 校验存在,如子表需要也再此校验 // 校验存在,如子表需要也再此校验
validateSupplierdeliverRequestMainExists(updateReqVO.getId()); validateSupplierdeliverRequestMainExists(updateReqVO.getId());
@ -197,7 +199,8 @@ public class SupplierdeliverRequestMainServiceImpl implements SupplierdeliverReq
return supplierdeliverRequestMainMapper.selectList(exportReqVO); return supplierdeliverRequestMainMapper.selectList(exportReqVO);
} }
@Override
@Transactional
public List<SupplierdeliverRequestMainImportErrorVO> importSupplierdeliverRequestMainList(List<SupplierdeliverRequestMainCreateReqVO> datas, Integer mode, boolean updatePart) { public List<SupplierdeliverRequestMainImportErrorVO> importSupplierdeliverRequestMainList(List<SupplierdeliverRequestMainCreateReqVO> datas, Integer mode, boolean updatePart) {
if (CollUtil.isEmpty(datas)) { if (CollUtil.isEmpty(datas)) {
throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY); throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY);
@ -234,10 +237,20 @@ public class SupplierdeliverRequestMainServiceImpl implements SupplierdeliverReq
//写入数据 //写入数据
if (flag) { if (flag) {
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
mainDo.setId(null);
mainDo.setCreator(null);
mainDo.setCreateTime(null);
mainDo.setUpdater(null);
mainDo.setUpdateTime(null);
supplierdeliverRequestMainMapper.insert(mainDo); supplierdeliverRequestMainMapper.insert(mainDo);
for (SupplierdeliverRequestDetailDO detailDO : subDOList) { for (SupplierdeliverRequestDetailDO detailDO : subDOList) {
detailDO.setMasterId(mainDo.getId()); detailDO.setMasterId(mainDo.getId());
detailDO.setNumber(mainDo.getNumber()); detailDO.setNumber(mainDo.getNumber());
detailDO.setId(null);
detailDO.setCreator(null);
detailDO.setCreateTime(null);
detailDO.setUpdater(null);
detailDO.setUpdateTime(null);
} }
supplierdeliverRequestDetailMapper.insertBatch(subDOList); supplierdeliverRequestDetailMapper.insertBatch(subDOList);
} }
@ -277,6 +290,8 @@ public class SupplierdeliverRequestMainServiceImpl implements SupplierdeliverReq
} }
//校验主表公共方法(适用于新增/修改) //校验主表公共方法(适用于新增/修改)
@Transactional
private SupplierdeliverRequestMainDO validatorMainMethod(SupplierdeliverRequestMainBaseVO baseVO) { private SupplierdeliverRequestMainDO validatorMainMethod(SupplierdeliverRequestMainBaseVO baseVO) {
SupplierdeliverRequestMainDO mainDo = SupplierdeliverRequestMainConvert.INSTANCE.convert(baseVO); SupplierdeliverRequestMainDO mainDo = SupplierdeliverRequestMainConvert.INSTANCE.convert(baseVO);
SupplierDO supplierDO = this.validatorSupplier(mainDo.getSupplierCode()); SupplierDO supplierDO = this.validatorSupplier(mainDo.getSupplierCode());
@ -297,6 +312,8 @@ public class SupplierdeliverRequestMainServiceImpl implements SupplierdeliverReq
} }
//校验子表公共方法(适用于新增/修改) //校验子表公共方法(适用于新增/修改)
@Transactional
private void validatorDetailMethod(SupplierdeliverRequestDetailDO detailDo, SupplierdeliverRequestMainDO mainDo) { private void validatorDetailMethod(SupplierdeliverRequestDetailDO detailDo, SupplierdeliverRequestMainDO mainDo) {
this.validatorItembasic(detailDo.getItemCode()); this.validatorItembasic(detailDo.getItemCode());
this.validatorSupplierItemExist(mainDo.getSupplierCode(), detailDo.getItemCode()); this.validatorSupplierItemExist(mainDo.getSupplierCode(), detailDo.getItemCode());
@ -312,23 +329,35 @@ public class SupplierdeliverRequestMainServiceImpl implements SupplierdeliverReq
} }
//新增校验 //新增校验
@Transactional
private SupplierdeliverRequestMainDO validatorToCreate(SupplierdeliverRequestMainCreateReqVO createReqVO) { private SupplierdeliverRequestMainDO validatorToCreate(SupplierdeliverRequestMainCreateReqVO createReqVO) {
SupplierdeliverRequestMainDO supplierdeliverRequestMainDO = validatorMainMethod(createReqVO); SupplierdeliverRequestMainDO supplierdeliverRequestMainDO = validatorMainMethod(createReqVO);
//子表校验 //子表校验
List<SupplierdeliverRequestDetailCreateReqVO> subList = createReqVO.getSubList(); List<SupplierdeliverRequestDetailCreateReqVO> subList = createReqVO.getSubList();
List<SupplierdeliverRequestDetailDO> subDOList = SupplierdeliverRequestDetailConvert.INSTANCE.convertList03(subList); List<SupplierdeliverRequestDetailDO> subDOList = SupplierdeliverRequestDetailConvert.INSTANCE.convertList03(subList);
supplierdeliverRequestMainDO.setId(null);
supplierdeliverRequestMainDO.setCreator(null);
supplierdeliverRequestMainDO.setCreateTime(null);
supplierdeliverRequestMainDO.setUpdater(null);
supplierdeliverRequestMainDO.setUpdateTime(null);
supplierdeliverRequestMainMapper.insert(supplierdeliverRequestMainDO); supplierdeliverRequestMainMapper.insert(supplierdeliverRequestMainDO);
for (SupplierdeliverRequestDetailDO supplierdeliverRequestDetailDO : subDOList) { for (SupplierdeliverRequestDetailDO supplierdeliverRequestDetailDO : subDOList) {
validatorDetailMethod(supplierdeliverRequestDetailDO, supplierdeliverRequestMainDO); validatorDetailMethod(supplierdeliverRequestDetailDO, supplierdeliverRequestMainDO);
supplierdeliverRequestDetailDO.setMasterId(supplierdeliverRequestMainDO.getId()); supplierdeliverRequestDetailDO.setMasterId(supplierdeliverRequestMainDO.getId());
supplierdeliverRequestDetailDO.setNumber(supplierdeliverRequestMainDO.getNumber()); supplierdeliverRequestDetailDO.setNumber(supplierdeliverRequestMainDO.getNumber());
supplierdeliverRequestDetailDO.setConvertRate(new BigDecimal(0)); supplierdeliverRequestDetailDO.setConvertRate(new BigDecimal(0));
supplierdeliverRequestDetailDO.setId(null);
supplierdeliverRequestDetailDO.setCreator(null);
supplierdeliverRequestDetailDO.setCreateTime(null);
supplierdeliverRequestDetailDO.setUpdater(null);
supplierdeliverRequestDetailDO.setUpdateTime(null);
} }
supplierdeliverRequestDetailMapper.insertBatch(subDOList); supplierdeliverRequestDetailMapper.insertBatch(subDOList);
return supplierdeliverRequestMainDO; return supplierdeliverRequestMainDO;
} }
//修改校验 //修改校验
@Transactional
private SupplierdeliverRequestMainDO validatorToUpdate(SupplierdeliverRequestMainUpdateReqVO updateReqVO) { private SupplierdeliverRequestMainDO validatorToUpdate(SupplierdeliverRequestMainUpdateReqVO updateReqVO) {
SupplierdeliverRequestMainDO supplierdeliverRequestMainDO = validatorMainMethod(updateReqVO); SupplierdeliverRequestMainDO supplierdeliverRequestMainDO = validatorMainMethod(updateReqVO);
//子表校验 //子表校验
@ -350,6 +379,8 @@ public class SupplierdeliverRequestMainServiceImpl implements SupplierdeliverReq
* @param createReqVO * @param createReqVO
* @return * @return
*/ */
@Transactional
private String validatorSupplierdeliverRequestMainImport(SupplierdeliverRequestMainDO createReqVO) { private String validatorSupplierdeliverRequestMainImport(SupplierdeliverRequestMainDO createReqVO) {
String messageMain = ""; String messageMain = "";
//校验供应商基础信息 //校验供应商基础信息
@ -378,6 +409,8 @@ public class SupplierdeliverRequestMainServiceImpl implements SupplierdeliverReq
* @param supplierdeliverRequestMainDO * @param supplierdeliverRequestMainDO
* @return * @return
*/ */
@Transactional
private String validatorSupplierdeliverRequestDetailImport(SupplierdeliverRequestDetailDO supplierdeliverRequestDetailDO, SupplierdeliverRequestMainDO supplierdeliverRequestMainDO) { private String validatorSupplierdeliverRequestDetailImport(SupplierdeliverRequestDetailDO supplierdeliverRequestDetailDO, SupplierdeliverRequestMainDO supplierdeliverRequestMainDO) {
String messageDetail = ""; String messageDetail = "";
// 校验物品基础信息 // 校验物品基础信息
@ -621,8 +654,6 @@ public class SupplierdeliverRequestMainServiceImpl implements SupplierdeliverReq
QueryWrapper<SupplierdeliverRequestMainDO> queryWrapper = new QueryWrapper(); QueryWrapper<SupplierdeliverRequestMainDO> queryWrapper = new QueryWrapper();
queryWrapper.eq("id", id); queryWrapper.eq("id", id);
SupplierdeliverRequestMainDO mainDO = supplierdeliverRequestMainMapper.selectOne(queryWrapper); SupplierdeliverRequestMainDO mainDO = supplierdeliverRequestMainMapper.selectOne(queryWrapper);
mainDO.setStatus(RequestStatusEnum.COMPLETED.getCode());
supplierdeliverRequestMainMapper.updateBatch(mainDO);
//子表 //子表
QueryWrapper<SupplierdeliverRequestDetailDO> supplierdeliverRequestDetailDOQueryWrapper = new QueryWrapper(); QueryWrapper<SupplierdeliverRequestDetailDO> supplierdeliverRequestDetailDOQueryWrapper = new QueryWrapper();
supplierdeliverRequestDetailDOQueryWrapper.eq("master_id", id); supplierdeliverRequestDetailDOQueryWrapper.eq("master_id", id);
@ -702,7 +733,11 @@ public class SupplierdeliverRequestMainServiceImpl implements SupplierdeliverReq
//更新要货计划的已发货数量 //更新要货计划的已发货数量
purchaseMainService.updateOrderPurchaseShippedQty(detailDO.getPoNumber(), detailDO.getPoLine(), detailDO.getItemCode(), detailDO.getQty()); purchaseMainService.updateOrderPurchaseShippedQty(detailDO.getPoNumber(), detailDO.getPoLine(), detailDO.getItemCode(), detailDO.getQty());
} }
trendsApi.createTrends(mainDO.getId(), "SupplierdeliverRequest", "处理了供应商发货申请", TrendsTypeEnum.CREATE);
SupplierdeliverRequestMainDO supplierdeliverRequestMain = supplierdeliverRequestMainMapper.selectById(id);
supplierdeliverRequestMain.setStatus(RequestStatusEnum.COMPLETED.getCode());
supplierdeliverRequestMainMapper.updateById(supplierdeliverRequestMain);
trendsApi.createTrends(supplierdeliverRequestMain.getId(), "SupplierdeliverRequest", "处理了供应商发货申请", TrendsTypeEnum.CREATE);
return result; return result;
} }

1
win-server/src/main/resources/application.yaml

@ -149,6 +149,7 @@ win:
- /magic/web/* # magic-api 和租户无关 - /magic/web/* # magic-api 和租户无关
- /magic-api/* # magic-api 和租户无关 - /magic-api/* # magic-api 和租户无关
- /admin-api/profile/* # 静态资源 和租户无关 - /admin-api/profile/* # 静态资源 和租户无关
- /admin-api/wms/location/inspectLocation # 静态资源 和租户无关
ignore-tables: ignore-tables:
- system_tenant - system_tenant
- system_tenant_package - system_tenant_package

Loading…
Cancel
Save