叶佳兴 2 years ago
parent
commit
7909d2777d
  1. 16
      win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java
  2. 14
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRecord/InventorychangeRecordMainController.java
  3. 14
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/InventorychangeRequestDetailController.java
  4. 16
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/InventorychangeRequestMainController.java
  5. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestDetailExportReqVO.java
  6. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestDetailPageReqVO.java
  7. 13
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestMainImportVO.java
  8. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestMainPageReqVO.java
  9. 96
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveJob/InventorymoveJobMainController.java
  10. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveJob/vo/InventorymoveJobDetailBaseVO.java
  11. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveJob/vo/InventorymoveJobDetailPageReqVO.java
  12. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveJob/vo/InventorymoveJobDetailUpdateReqVO.java
  13. 74
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveJob/vo/InventorymoveJobMainExcelVO.java
  14. 7
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveJob/vo/InventorymoveJobMainUpdateReqVO.java
  15. 54
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRecord/InventorymoveRecordMainController.java
  16. 111
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRecord/vo/InventorymoveRecordMainExcelVO.java
  17. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRecord/vo/InventorymoveRecordMainExportReqVO.java
  18. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRecord/vo/InventorymoveRecordMainPageReqVO.java
  19. 133
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/InventorymoveRequestMainController.java
  20. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestDetailExportReqVO.java
  21. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestDetailPageReqVO.java
  22. 84
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainExcelVO.java
  23. 8
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainImportVO.java
  24. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainPageReqVO.java
  25. 14
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorymoveJob/InventorymoveJobMainConvert.java
  26. 13
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorymoveRecord/InventorymoveRecordMainConvert.java
  27. 10
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorymoveRequest/InventorymoveRequestMainConvert.java
  28. 10
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventorymoveJob/InventorymoveJobMainDO.java
  29. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventorymoveRecord/InventorymoveRecordMainDO.java
  30. 9
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventorymoveRequest/InventorymoveRequestMainDO.java
  31. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorychangeRequest/InventorychangeRequestDetailMapper.java
  32. 18
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorychangeRequest/InventorychangeRequestMainMapper.java
  33. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorymoveJob/InventorymoveJobDetailMapper.java
  34. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorymoveJob/InventorymoveJobMainMapper.java
  35. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorymoveRecord/InventorymoveRecordDetailMapper.java
  36. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorymoveRecord/InventorymoveRecordMainMapper.java
  37. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorymoveRequest/InventorymoveRequestDetailMapper.java
  38. 23
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorymoveRequest/InventorymoveRequestMainMapper.java
  39. 9
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreceiptRequest/CustomerreceiptRequestMainServiceImpl.java
  40. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestMainService.java
  41. 324
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestMainServiceImpl.java
  42. 1
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveJob/InventorymoveJobDetailService.java
  43. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveJob/InventorymoveJobDetailServiceImpl.java
  44. 31
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveJob/InventorymoveJobMainService.java
  45. 270
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveJob/InventorymoveJobMainServiceImpl.java
  46. 1
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRecord/InventorymoveRecordDetailService.java
  47. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRecord/InventorymoveRecordDetailServiceImpl.java
  48. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRecord/InventorymoveRecordMainService.java
  49. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRecord/InventorymoveRecordMainServiceImpl.java
  50. 1
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRequest/InventorymoveRequestDetailService.java
  51. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRequest/InventorymoveRequestDetailServiceImpl.java
  52. 44
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRequest/InventorymoveRequestMainService.java
  53. 700
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRequest/InventorymoveRequestMainServiceImpl.java

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

@ -135,6 +135,7 @@ public interface ErrorCodeConstants {
ErrorCode WAREHOUSE_AVAIABLE_NOT_EXISTS = new ErrorCode(1_033_000_003, "是否可用不存在");
ErrorCode WAREHOUSE_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_033_000_004, "导入仓库不能为空");
ErrorCode WAREHOUSE_STOCK_EXCEPTION = new ErrorCode(1_033_000_005, "库存问题【{}】");
ErrorCode WAREHOUSE_AND_LOCATION_RELATION_EXCEPTION = new ErrorCode(1_033_000_006, "仓库与库位关系问题【{}】");
//月台ErrorCode
ErrorCode DOCK_NOT_EXISTS = new ErrorCode(1_000_034_000, "月台(收货口)不存在");
ErrorCode DOCK_CODE_NOT_EXISTS = new ErrorCode(1_000_034_001, "代码不存在");
@ -855,6 +856,13 @@ public interface ErrorCodeConstants {
//库存转移申请ErrorCode
ErrorCode INVENTORYMOVE_REQUEST_MAIN_NOT_EXISTS = new ErrorCode(1_000_131_000, "库存转移申请主不存在");
ErrorCode INVENTORYMOVE_REQUEST_DETAIL_NOT_EXISTS = new ErrorCode(1_000_131_001, "库存转移申请子不存在");
ErrorCode INVENTORYMOVE_REQUEST_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_000_131_002, "导入库存转移申请不能为空");
ErrorCode INVENTORYMOVE_REQUEST_CANNOT_CLOSE = new ErrorCode(1_000_131_003, "库存转移申请状态不支持关闭");
ErrorCode INVENTORYMOVE_REQUEST_CANNOT_SUBMIT = new ErrorCode(1_000_131_004, "库存转移申请状态不支持提交");
ErrorCode INVENTORYMOVE_REQUEST_CANNOT_AGREE = new ErrorCode(1_000_131_005, "库存转移申请状态不支持审批同意");
ErrorCode INVENTORYMOVE_REQUEST_CANNOT_HANDLE = new ErrorCode(1_000_131_006, "库存转移申请状态不支持处理");
ErrorCode INVENTORYMOVE_REQUEST_CANNOT_ABORT = new ErrorCode(1_000_131_007, "库存转移申请状态不支持审批拒绝");
ErrorCode INVENTORYMOVE_REQUEST_CANNOT_RE_ADD = new ErrorCode(1_000_131_008, "库存转移申请状态不支持重新添加");
//库存转移任务ErrorCode
ErrorCode INVENTORYMOVE_JOB_MAIN_NOT_EXISTS = new ErrorCode(1_000_132_000, "库存转移任务主不存在");
ErrorCode INVENTORYMOVE_JOB_DETAIL_NOT_EXISTS = new ErrorCode(1_000_132_001, "库存转移任务子不存在");
@ -865,7 +873,13 @@ public interface ErrorCodeConstants {
//库存修改申请ErrorCode
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_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_000_134_001, "导入库存修改申请不能为空");
ErrorCode INVENTORYCHANGE_REQUEST_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_000_134_002, "导入库存修改申请不能为空");
ErrorCode INVENTORYCHANGE_REQUEST_CANNOT_CLOSE = new ErrorCode(1_000_134_003, "库存修改申请状态不支持关闭");
ErrorCode INVENTORYCHANGE_REQUEST_CANNOT_SUBMIT = new ErrorCode(1_000_134_004, "库存修改申请状态不支持提交");
ErrorCode INVENTORYCHANGE_REQUEST_CANNOT_AGREE = new ErrorCode(1_000_134_005, "库存修改申请状态不支持审批同意");
ErrorCode INVENTORYCHANGE_REQUEST_CANNOT_HANDLE = new ErrorCode(1_000_134_006, "库存修改申请状态不支持处理");
ErrorCode INVENTORYCHANGE_REQUEST_CANNOT_ABORT = new ErrorCode(1_000_134_007, "库存修改申请状态不支持审批拒绝");
ErrorCode INVENTORYCHANGE_REQUEST_CANNOT_RE_ADD = new ErrorCode(1_000_134_008, "库存修改申请状态不支持重新添加");
//库存修改记录ErrorCode
ErrorCode INVENTORYCHANGE_RECORD_MAIN_NOT_EXISTS = new ErrorCode(1_000_135_000, "库存修改记录主不存在");
ErrorCode INVENTORYCHANGE_RECORD_DETAIL_NOT_EXISTS = new ErrorCode(1_000_135_001, "库存修改记录子不存在");

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

@ -2,6 +2,7 @@ package com.win.module.wms.controller.inventorychangeRecord;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.dict.core.util.DictFrameworkUtils;
import com.win.module.system.api.dept.DeptApi;
import com.win.module.system.api.user.AdminUserApi;
import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestMainExcelVO;
@ -51,6 +52,8 @@ public class InventorychangeRecordMainController {
@Resource
private AdminUserApi userApi;
@Resource
private DeptApi deptApi;
@PostMapping("/create")
@Operation(summary = "创建库存修改记录主")
@ -99,7 +102,14 @@ public class InventorychangeRecordMainController {
@PreAuthorize("@ss.hasPermission('wms:inventorychange-record-main:query')")
public CommonResult<PageResult<InventorychangeRecordMainRespVO>> getInventorychangeRecordMainPage(@Valid InventorychangeRecordMainPageReqVO pageVO) {
PageResult<InventorychangeRecordMainDO> pageResult = inventorychangeRecordMainService.getInventorychangeRecordMainPage(pageVO);
return success(InventorychangeRecordMainConvert.INSTANCE.convertPage(pageResult));
PageResult<InventorychangeRecordMainRespVO> result = InventorychangeRecordMainConvert.INSTANCE.convertPage(pageResult);
for(InventorychangeRecordMainRespVO vo : result.getList()) {
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator()));
//后端创建个字段作为前端展示的虚拟字段
vo.setCreator(user.getNickname());
vo.setDepartmentCode(deptApi.getDept(user.getDeptId()).toString());
}
return success(result);
}
@PostMapping("/senior")
@ -112,6 +122,7 @@ public class InventorychangeRecordMainController {
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator()));
//后端创建个字段作为前端展示的虚拟字段
vo.setCreator(user.getNickname());
vo.setDepartmentCode(deptApi.getDept(user.getDeptId()).toString());
}
return success(result);
}
@ -162,6 +173,7 @@ public class InventorychangeRecordMainController {
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());
vo.setDepartmentCode(deptApi.getDept(userApi.getUser(Long.valueOf(mainDO.getCreator())).getDeptId()).toString());
resultList.add(vo);
}
}

14
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/InventorychangeRequestDetailController.java

@ -3,6 +3,7 @@ package com.win.module.wms.controller.inventorychangeRequest;
import com.win.framework.common.pojo.CustomConditions;
import com.win.module.system.api.user.AdminUserApi;
import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.wms.convert.inventorychangeRequest.InventorychangeRequestMainConvert;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
@ -89,7 +90,13 @@ public class InventorychangeRequestDetailController {
@PreAuthorize("@ss.hasPermission('wms:inventorychange-request-detail:query')")
public CommonResult<PageResult<InventorychangeRequestDetailRespVO>> getInventorychangeRequestDetailPage(@Valid InventorychangeRequestDetailPageReqVO pageVO) {
PageResult<InventorychangeRequestDetailDO> pageResult = inventorychangeRequestDetailService.getInventorychangeRequestDetailPage(pageVO);
return success(InventorychangeRequestDetailConvert.INSTANCE.convertPage(pageResult));
PageResult<InventorychangeRequestDetailRespVO> result = InventorychangeRequestDetailConvert.INSTANCE.convertPage(pageResult);
for(InventorychangeRequestDetailRespVO vo : result.getList()) {
//后端创建个字段作为前端展示的虚拟字段
vo.setCreator(userApi.getUser(Long.valueOf(vo.getCreator())).getNickname());
vo.setUpdater(userApi.getUser(Long.valueOf(vo.getUpdater())).getNickname());
}
return success(result);
}
@PostMapping("/senior")
@Operation(summary = "高级搜索获得库存修改申请子分页")
@ -98,9 +105,8 @@ public class InventorychangeRequestDetailController {
PageResult<InventorychangeRequestDetailDO> pageResult = inventorychangeRequestDetailService.getInventorychangeRequestDetailSenior(conditions);
PageResult<InventorychangeRequestDetailRespVO> result = InventorychangeRequestDetailConvert.INSTANCE.convertPage(pageResult);
for(InventorychangeRequestDetailRespVO vo : result.getList()) {
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator()));
//后端创建个字段作为前端展示的虚拟字段
vo.setCreator(user.getNickname());
vo.setCreator(userApi.getUser(Long.valueOf(vo.getCreator())).getNickname());
vo.setUpdater(userApi.getUser(Long.valueOf(vo.getUpdater())).getNickname());
}
return success(result);
}

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

@ -7,6 +7,7 @@ import com.win.framework.dict.core.util.DictFrameworkUtils;
import com.win.framework.excel.core.util.ConvertUtil;
import com.win.framework.excel.core.util.ExcelUtils;
import com.win.framework.operatelog.core.annotations.OperateLog;
import com.win.module.system.api.dept.DeptApi;
import com.win.module.system.api.user.AdminUserApi;
import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.wms.controller.deliverRequest.vo.DeliverRequestMainExcelVO;
@ -55,6 +56,9 @@ public class InventorychangeRequestMainController {
@Resource
private AdminUserApi userApi;
@Resource
private DeptApi deptApi;
@PostMapping("/create")
@Operation(summary = "创建库存修改申请主")
@PreAuthorize("@ss.hasPermission('wms:inventorychange-request-main:create')")
@ -105,9 +109,8 @@ public class InventorychangeRequestMainController {
PageResult<InventorychangeRequestMainDO> pageResult = inventorychangeRequestMainService.getInventorychangeRequestMainPage(pageVO);
PageResult<InventorychangeRequestMainRespVO> result = InventorychangeRequestMainConvert.INSTANCE.convertPage(pageResult);
for(InventorychangeRequestMainRespVO vo : result.getList()) {
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator()));
//后端创建个字段作为前端展示的虚拟字段
vo.setCreator(user.getNickname());
vo.setCreator(userApi.getUser(Long.valueOf(vo.getCreator())).getNickname());
vo.setUpdater(userApi.getUser(Long.valueOf(vo.getUpdater())).getNickname());
}
return success(result);
}
@ -121,6 +124,8 @@ public class InventorychangeRequestMainController {
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator()));
//后端创建个字段作为前端展示的虚拟字段
vo.setCreator(user.getNickname());
vo.setUpdater(userApi.getUser(Long.valueOf(vo.getUpdater())).getNickname());
vo.setDepartmentCode(deptApi.getDept(user.getDeptId()).getName());
}
return success(result);
}
@ -179,6 +184,7 @@ public class InventorychangeRequestMainController {
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());
vo.setDepartmentCode(deptApi.getDept(userApi.getUser(Long.valueOf(mainDO.getCreator())).getDeptId()).getName());
resultList.add(vo);
}
}
@ -197,13 +203,11 @@ public class InventorychangeRequestMainController {
public CommonResult<Map<String, Object>> importExcel(HttpServletResponse response,
@RequestParam("file") MultipartFile file,
@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 {
List<InventorychangeRequestMainImportVO> list = ExcelUtils.read(file, InventorychangeRequestMainImportVO.class);
ConvertUtil<InventorychangeRequestMainCreateReqVO> convertUtil = new ConvertUtil<>(InventorychangeRequestMainCreateReqVO.class);
List<InventorychangeRequestMainCreateReqVO> createReqVOList = convertUtil.invoke(list).getDataList();
List<InventorychangeRequestMainImportErrorVO> errorList = inventorychangeRequestMainService.importInventorychangeRequestMainList(createReqVOList, mode, fromInventoryStatus, toInventoryStatus, updatePart);
List<InventorychangeRequestMainImportErrorVO> errorList = inventorychangeRequestMainService.importInventorychangeRequestMainList(createReqVOList, mode, updatePart);
Map<String, Object> returnMap = new HashMap<>();
returnMap.put("errorCount", errorList.size());
if(!errorList.isEmpty()) {

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestDetailExportReqVO.java

@ -131,4 +131,7 @@ public class InventorychangeRequestDetailExportReqVO {
@Schema(description = "物品代码")
private String itemCode;
@Schema(description = "主表id")
private Long masterId;
}

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestDetailPageReqVO.java

@ -133,4 +133,6 @@ public class InventorychangeRequestDetailPageReqVO extends PageParam {
@Schema(description = "物品代码")
private String itemCode;
@Schema(description = "主表id")
private Long masterId;
}

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

@ -1,11 +1,16 @@
package com.win.module.wms.controller.inventorychangeRequest.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.win.framework.excel.core.annotations.DictFormat;
import com.win.framework.excel.core.convert.DictConvert;
import com.win.module.wms.enums.DictTypeConstants;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
/**
* 采购索赔申请子 Excel VO
@ -30,6 +35,14 @@ public class InventorychangeRequestMainImportVO {
private String fromContainerNumber;
@ExcelProperty("批次")
private String fromBatch;
@ExcelProperty(value = "从库存状态",converter = DictConvert.class)
@DictFormat(DictTypeConstants.INVENTORY_STATUS)
private String fromInventoryStatus;
@ExcelProperty(value = "到库存状态",converter = DictConvert.class)
@DictFormat(DictTypeConstants.INVENTORY_STATUS)
private String toInventoryStatus;
@ExcelProperty("来源库位")
private String locationCode;
@ExcelProperty("截止时间")
private LocalDateTime dueTime;
}

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

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

96
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveJob/InventorymoveJobMainController.java

@ -1,10 +1,16 @@
package com.win.module.wms.controller.inventorymoveJob;
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.dto.AdminUserRespDTO;
import com.win.module.wms.controller.inventorymoveRequest.vo.InventorymoveRequestMainExcelVO;
import com.win.module.wms.convert.inventorymoveJob.InventorymoveJobDetailConvert;
import com.win.module.wms.convert.inventorymoveRequest.InventorymoveRequestMainConvert;
import com.win.module.wms.dal.dataobject.inventorymoveJob.InventorymoveJobDetailDO;
import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestDetailDO;
import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestMainDO;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.inventorymoveJob.InventorymoveJobDetailService;
import jodd.util.StringUtil;
import org.springframework.web.bind.annotation.*;
@ -106,30 +112,63 @@ public class InventorymoveJobMainController {
PageResult<InventorymoveJobMainDO> pageResult = inventorymoveJobMainService.getInventorymoveJobMainSenior(conditions);
PageResult<InventorymoveJobMainRespVO> result = InventorymoveJobMainConvert.INSTANCE.convertPage(pageResult);
for(InventorymoveJobMainRespVO vo : result.getList()) {
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator()));
//后端创建个字段作为前端展示的虚拟字段
vo.setCreator(user.getNickname());
}
vo.setCreator(userApi.getUser(Long.valueOf(vo.getCreator())).getNickname());
vo.setUpdater(userApi.getUser(Long.valueOf(vo.getUpdater())).getNickname()); }
return success(result);
}
@GetMapping("/export-excel")
@Operation(summary = "导出库存转移任务 Excel")
@Operation(summary = "导出库存转移任务 Excel")
@PreAuthorize("@ss.hasPermission('wms:inventorymove-job-main:export')")
@OperateLog(type = EXPORT)
public void exportInventorymoveJobMainExcel(@Valid InventorymoveJobMainExportReqVO exportReqVO,
HttpServletResponse response) throws IOException {
List<InventorymoveJobMainDO> list = inventorymoveJobMainService.getInventorymoveJobMainList(exportReqVO);
// 导出 Excel
List<InventorymoveJobMainExcelVO> datas = InventorymoveJobMainConvert.INSTANCE.convertList02(list);
for(InventorymoveJobMainExcelVO vo : datas) {
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator()));
//后端创建个字段作为前端展示的虚拟字段
vo.setCreator(user.getNickname());
Map<Integer, String[]> mapDropDown = new HashMap<>();
List<InventorymoveJobMainExcelVO> resultList = this.getExcelVo(list, mapDropDown);
ExcelUtils.write(response, "库存转移任务.xlsx", "库存转移任务数据", InventorymoveJobMainExcelVO.class, resultList, mapDropDown);
}
ExcelUtils.write(response, "库存转移任务主.xls", "数据", InventorymoveJobMainExcelVO.class, datas);
@GetMapping("/export-excel-senior")
@Operation(summary = "导出库存转移任务 Excel")
@PreAuthorize("@ss.hasPermission('wms:inventorymove-job-main:export')")
@OperateLog(type = EXPORT)
public void exportInventorymoveJobMainSeniorExcel(@Valid @RequestBody CustomConditions conditions, HttpServletResponse response) throws IOException {
List<InventorymoveJobMainDO> list = inventorymoveJobMainService.getInventorymoveJobMainList(conditions);
//组装vo
Map<Integer, String[]> mapDropDown = new HashMap<>();
List<InventorymoveJobMainExcelVO> resultList = this.getExcelVo(list, mapDropDown);
ExcelUtils.write(response, "库存转移任务.xlsx", "库存转移任务数据", InventorymoveJobMainExcelVO.class, resultList, mapDropDown);
}
private List<InventorymoveJobMainExcelVO> getExcelVo(List<InventorymoveJobMainDO> list, Map<Integer, String[]> mapDropDown) {
String[] requestStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.REQUEST_STATUS);
mapDropDown.put(8, requestStatus);
String[] locationType = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.LOCATION_TYPE);
mapDropDown.put(12, locationType);
mapDropDown.put(15, locationType);
String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS);
mapDropDown.put(27, inventoryStatus);
mapDropDown.put(33, inventoryStatus);
String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM);
mapDropDown.put(42, uom);
List<InventorymoveJobMainExcelVO> resultList = new ArrayList<>();
// 导出
for(InventorymoveJobMainDO mainDO : list) {
List<InventorymoveJobDetailDO> subList = inventorymoveJobDetailService.selectList(mainDO.getId());
for(InventorymoveJobDetailDO detailDO : subList) {
InventorymoveJobMainExcelVO vo = InventorymoveJobMainConvert.INSTANCE.convert(mainDO, detailDO);
vo.setCreator(userApi.getUser(Long.valueOf(mainDO.getCreator())).getNickname());
vo.setUpdater(userApi.getUser(Long.valueOf(mainDO.getUpdater())).getNickname());
vo.setAcceptUserId(userApi.getUser(Long.valueOf(mainDO.getAcceptUserId())).getNickname());
vo.setCompleteUserId(userApi.getUser(Long.valueOf(mainDO.getCompleteUserId())).getNickname());
vo.setCreatorDetail(userApi.getUser(Long.valueOf(detailDO.getCreator())).getNickname());
resultList.add(vo);
}
}
return resultList;
}
@GetMapping("/getInventorymoveJobById")
@Operation(summary = "APP获得库存转移主子表明细列表")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@ -163,4 +202,39 @@ public class InventorymoveJobMainController {
return success(countByStatus);
}
@PutMapping("/accept")
@Operation(summary = "承接库存转移任务")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:inventorymove-job-main:accept')")
public CommonResult<Boolean> acceptInventorymoveJobMain(@RequestParam("id") Long id) {
Integer count = inventorymoveJobMainService.acceptInventorymoveJobMain(id);
return success(count > 0);
}
@PutMapping("/abandon")
@Operation(summary = "取消承接库存转移任务")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:inventorymove-job-main:abandon')")
public CommonResult<Boolean> abandonInventorymoveJobMain(@RequestParam("id") Long id) {
Integer count = inventorymoveJobMainService.abandonInventorymoveJobMain(id);
return success(count > 0);
}
@PutMapping("/close")
@Operation(summary = "关闭库存转移任务主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:inventorymove-job-main:close')")
public CommonResult<Boolean> closeInventorymoveJobMain(@RequestParam("id") Long id) {
Integer count = inventorymoveJobMainService.closeInventorymoveJobMain(id);
return success(count > 0);
}
@PutMapping("/execute")
@Operation(summary = "执行库存转移任务主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:inventorymove-job-main:execute')")
public CommonResult<String> executeInventorymoveJobMain(@Valid @RequestBody InventorymoveJobMainUpdateReqVO updateReqVO) {
String number = inventorymoveJobMainService.executeInventorymoveJobMain(updateReqVO);
return success(number);
}
}

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveJob/vo/InventorymoveJobDetailBaseVO.java

@ -49,7 +49,7 @@ public class InventorymoveJobDetailBaseVO {
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime createtime;
private LocalDateTime createTime;
@Schema(description = "创建者Id")
private String creator;

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveJob/vo/InventorymoveJobDetailPageReqVO.java

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

6
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveJob/vo/InventorymoveJobDetailUpdateReqVO.java

@ -3,10 +3,14 @@ package com.win.module.wms.controller.inventorymoveJob.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.List;
import java.util.Map;
@Schema(description = "管理后台 - 库存转移任务子更新 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class InventorymoveJobDetailUpdateReqVO extends InventorymoveJobDetailBaseVO {
@Schema(description = "子表记录数据")
private List<Map<String,String>> recordList;
}

74
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveJob/vo/InventorymoveJobMainExcelVO.java

@ -1,7 +1,10 @@
package com.win.module.wms.controller.inventorymoveJob.vo;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.math.BigDecimal;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
@ -24,6 +27,7 @@ import com.win.framework.excel.core.convert.DictConvert;
@Data
public class InventorymoveJobMainExcelVO {
//主表数据
@ExcelProperty("申请单号")
private String requestNumber;
@ -35,9 +39,11 @@ public class InventorymoveJobMainExcelVO {
private String fromWarehouseCode;
@ExcelProperty("申请时间")
@ColumnWidth(value = 22)
private LocalDateTime requestTime;
@ExcelProperty("要求截止时间")
@ColumnWidth(value = 22)
private LocalDateTime requestDueTime;
@ExcelProperty(value = "状态", converter = DictConvert.class)
@ -45,9 +51,11 @@ public class InventorymoveJobMainExcelVO {
private String status;
@ExcelProperty("过期时间")
@ColumnWidth(value = 22)
private LocalDateTime expiredTime;
@ExcelProperty("最后更新时间")
@ColumnWidth(value = 22)
private LocalDateTime updateTime;
@ExcelProperty("最后更新者Id")
@ -70,12 +78,14 @@ public class InventorymoveJobMainExcelVO {
private String acceptUserId;
@ExcelProperty("承接时间")
@ColumnWidth(value = 22)
private LocalDateTime acceptTime;
@ExcelProperty("完成人用户ID")
private String completeUserId;
@ExcelProperty("完成时间")
@ColumnWidth(value = 22)
private LocalDateTime completeTime;
@ExcelProperty(value = "从库位类型范围", converter = DictConvert.class)
@ -96,6 +106,7 @@ public class InventorymoveJobMainExcelVO {
private String remark;
@ExcelProperty("创建时间")
@ColumnWidth(value = 22)
private LocalDateTime createTime;
@ExcelProperty("创建者id")
@ -143,4 +154,67 @@ public class InventorymoveJobMainExcelVO {
@ExcelProperty("允许修改箱码")
private String allowModifyPackingNumber;
//子表数据
@ExcelProperty("物品代码")
private String itemCode;
@ExcelProperty("物品名称")
private String itemName;
@ExcelProperty("物品描述1")
private String itemDesc1;
@ExcelProperty("物品描述2")
private String itemDesc2;
@ExcelProperty("项目代码")
private String projectCode;
@ExcelProperty("数量")
private BigDecimal qty;
@ExcelProperty(value = "计量单位", converter = DictConvert.class)
@DictFormat("uom") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String uom;
@ExcelProperty("备注")
private String remarkDetail;
@ExcelProperty("创建时间")
@ColumnWidth(value = 22)
private LocalDateTime createTimeDetail;
@ExcelProperty("创建者Id")
private String creatorDetail;
@ExcelProperty("包装号")
private String packingNumber;
@ExcelProperty("器具号")
private String containerNumber;
@ExcelProperty("批次")
private String batch;
@ExcelProperty(value = "库存状态", converter = DictConvert.class)
@DictFormat("inventory_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String inventoryStatus;
@ExcelProperty("订单号")
private String poNumber;
@ExcelProperty("订单行")
private String poLine;
@ExcelProperty("从库位代码")
private String fromLocationCode;
@ExcelProperty("到库位代码")
private String toLocationCode;
@ExcelProperty("从货主代码")
private String fromOwnerCode;
@ExcelProperty("到货主代码")
private String toOwnerCode;
}

7
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveJob/vo/InventorymoveJobMainUpdateReqVO.java

@ -1,12 +1,17 @@
package com.win.module.wms.controller.inventorymoveJob.vo;
import com.win.module.wms.controller.deliverJob.vo.DeliverJobDetailUpdateReqVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import javax.validation.Valid;
import java.util.List;
@Schema(description = "管理后台 - 库存转移任务主更新 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class InventorymoveJobMainUpdateReqVO extends InventorymoveJobMainBaseVO {
@Schema(description = "子表数据")
private List<@Valid InventorymoveJobDetailUpdateReqVO> subList;
}

54
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRecord/InventorymoveRecordMainController.java

@ -1,8 +1,17 @@
package com.win.module.wms.controller.inventorymoveRecord;
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.dto.AdminUserRespDTO;
import com.win.module.wms.controller.inventorymoveRequest.vo.InventorymoveRequestMainExcelVO;
import com.win.module.wms.controller.inventorymoveRequest.vo.InventorymoveRequestMainRespVO;
import com.win.module.wms.convert.inventorymoveRequest.InventorymoveRequestMainConvert;
import com.win.module.wms.dal.dataobject.inventorymoveRecord.InventorymoveRecordDetailDO;
import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestDetailDO;
import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestMainDO;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.inventorymoveRecord.InventorymoveRecordDetailService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
@ -38,6 +47,8 @@ public class InventorymoveRecordMainController {
@Resource
private InventorymoveRecordMainService inventorymoveRecordMainService;
@Resource
private InventorymoveRecordDetailService inventorymoveRecordDetailService;
@Resource
private AdminUserApi userApi;
@ -99,9 +110,8 @@ public class InventorymoveRecordMainController {
PageResult<InventorymoveRecordMainDO> pageResult = inventorymoveRecordMainService.getInventorymoveRecordMainSenior(conditions);
PageResult<InventorymoveRecordMainRespVO> result = InventorymoveRecordMainConvert.INSTANCE.convertPage(pageResult);
for(InventorymoveRecordMainRespVO vo : result.getList()) {
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator()));
//后端创建个字段作为前端展示的虚拟字段
vo.setCreator(user.getNickname());
vo.setCreator(userApi.getUser(Long.valueOf(vo.getCreator())).getNickname());
}
return success(result);
}
@ -122,4 +132,44 @@ public class InventorymoveRecordMainController {
ExcelUtils.write(response, "库存转移记录主.xls", "数据", InventorymoveRecordMainExcelVO.class, datas);
}
@GetMapping("/export-excel-senior")
@Operation(summary = "导出库存转移申请 Excel")
@PreAuthorize("@ss.hasPermission('wms:inventorymove-record-main:export')")
@OperateLog(type = EXPORT)
public void exportInventorymoveRecordMainSeniorExcel(@Valid @RequestBody CustomConditions conditions, HttpServletResponse response) throws IOException {
List<InventorymoveRecordMainDO> list = inventorymoveRecordMainService.getInventorymoveRecordMainList(conditions);
//组装vo
Map<Integer, String[]> mapDropDown = new HashMap<>();
List<InventorymoveRecordMainExcelVO> resultList = this.getExcelVo(list, mapDropDown);
ExcelUtils.write(response, "库存转移申请.xlsx", "库存转移申请数据", InventorymoveRecordMainExcelVO.class, resultList, mapDropDown);
}
private List<InventorymoveRecordMainExcelVO> getExcelVo(List<InventorymoveRecordMainDO> list, Map<Integer, String[]> mapDropDown) {
String[] trueFalse = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE);
mapDropDown.put(3, trueFalse);
mapDropDown.put(23, trueFalse);
String[] interfaceType = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INTERFACE_TYPE);
mapDropDown.put(11, interfaceType);
mapDropDown.put(48, interfaceType);
String[] locationType = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.LOCATION_TYPE);
mapDropDown.put(18, locationType);
mapDropDown.put(21, locationType);
String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS);
mapDropDown.put(32, inventoryStatus);
mapDropDown.put(40, inventoryStatus);
String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM);
mapDropDown.put(46, uom);
List<InventorymoveRecordMainExcelVO> resultList = new ArrayList<>();
// 导出
for(InventorymoveRecordMainDO mainDO : list) {
List<InventorymoveRecordDetailDO> subList = inventorymoveRecordDetailService.selectList(mainDO.getId());
for(InventorymoveRecordDetailDO detailDO : subList) {
InventorymoveRecordMainExcelVO vo = InventorymoveRecordMainConvert.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;
}
}

111
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRecord/vo/InventorymoveRecordMainExcelVO.java

@ -1,7 +1,10 @@
package com.win.module.wms.controller.inventorymoveRecord.vo;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.math.BigDecimal;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
@ -22,6 +25,9 @@ import com.win.framework.excel.core.convert.DictConvert;
@Data
public class InventorymoveRecordMainExcelVO {
@ExcelProperty("单据号")
private String number;
@ExcelProperty("申请单号")
private String requestNumber;
@ -39,15 +45,19 @@ public class InventorymoveRecordMainExcelVO {
private String inTransactionType;
@ExcelProperty("执行时间")
@ColumnWidth(value = 22)
private LocalDateTime executeTime;
@ExcelProperty("生效日期")
@ColumnWidth(value = 22)
private LocalDateTime activeDate;
@ExcelProperty("申请时间")
@ColumnWidth(value = 22)
private LocalDateTime requestTime;
@ExcelProperty("截止时间")
@ColumnWidth(value = 22)
private LocalDateTime dueTime;
@ExcelProperty("部门")
@ -60,9 +70,6 @@ public class InventorymoveRecordMainExcelVO {
@ExcelProperty("代码")
private String code;
@ExcelProperty("单据号")
private String number;
@ExcelProperty("业务类型")
private String businessType;
@ -70,6 +77,7 @@ public class InventorymoveRecordMainExcelVO {
private String remark;
@ExcelProperty("创建时间")
@ColumnWidth(value = 22)
private LocalDateTime createTime;
@ExcelProperty("创建者Id")
@ -95,7 +103,102 @@ public class InventorymoveRecordMainExcelVO {
@ExcelProperty("到库区代码范围")
private String toAreaCodes;
@ExcelProperty("是否可用")
@ExcelProperty(value = "是否可用", converter = DictConvert.class)
@DictFormat("true_false") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String available;
//子表
@ExcelProperty("在途库库位")
private String onTheWayLocationCode;
@ExcelProperty("从货主代码")
private String fromOwnerCode;
@ExcelProperty("从包装号")
private String fromPackingNumber;
@ExcelProperty("从器具号")
private String fromContainerNumber;
@ExcelProperty("从批次")
private String fromBatch;
@ExcelProperty("从库位代码")
private String fromLocationCode;
@ExcelProperty("从库位组代码")
private String fromLocationGroupCode;
@ExcelProperty("从库区代码")
private String fromAreaCode;
@ExcelProperty(value = "从库存状态", converter = DictConvert.class)
@DictFormat("inventory_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String fromInventoryStatus;
@ExcelProperty("到货主代码")
private String toOwnerCode;
@ExcelProperty("到包装号")
private String toPackingNumber;
@ExcelProperty("到器具号")
private String toContainerNumber;
@ExcelProperty("到批次")
private String toBatch;
@ExcelProperty("到库位代码")
private String toLocationCode;
@ExcelProperty("到库位组代码")
private String toLocationGroupCode;
@ExcelProperty("到库区代码")
private String toAreaCode;
@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;
}

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRecord/vo/InventorymoveRecordMainExportReqVO.java

@ -90,4 +90,6 @@ public class InventorymoveRecordMainExportReqVO {
@Schema(description = "是否可用")
private String available;
@Schema(description = "主表id")
private String masterId;
}

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRecord/vo/InventorymoveRecordMainPageReqVO.java

@ -92,4 +92,7 @@ public class InventorymoveRecordMainPageReqVO extends PageParam {
@Schema(description = "是否可用")
private String available;
@Schema(description = "主表id")
private String masterId;
}

133
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/InventorymoveRequestMainController.java

@ -7,12 +7,14 @@ import com.win.framework.dict.core.util.DictFrameworkUtils;
import com.win.framework.excel.core.util.ConvertUtil;
import com.win.framework.excel.core.util.ExcelUtils;
import com.win.framework.operatelog.core.annotations.OperateLog;
import com.win.module.system.api.dept.DeptApi;
import com.win.module.system.api.user.AdminUserApi;
import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.wms.controller.inventorymoveRequest.vo.*;
import com.win.module.wms.convert.inventorymoveRequest.InventorymoveRequestMainConvert;
import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestDetailDO;
import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestMainDO;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.inventorymoveRequest.InventorymoveRequestDetailService;
import com.win.module.wms.service.inventorymoveRequest.InventorymoveRequestMainService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@ -42,9 +44,13 @@ public class InventorymoveRequestMainController {
@Resource
private InventorymoveRequestMainService inventorymoveRequestMainService;
@Resource
private InventorymoveRequestDetailService inventorymoveRequestDetailService;
@Resource
private AdminUserApi userApi;
@Resource
private DeptApi deptApi;
@PostMapping("/create")
@Operation(summary = "创建库存转移申请主")
@ -93,7 +99,14 @@ public class InventorymoveRequestMainController {
@PreAuthorize("@ss.hasPermission('wms:inventorymove-request-main:query')")
public CommonResult<PageResult<InventorymoveRequestMainRespVO>> getInventorymoveRequestMainPage(@Valid InventorymoveRequestMainPageReqVO pageVO) {
PageResult<InventorymoveRequestMainDO> pageResult = inventorymoveRequestMainService.getInventorymoveRequestMainPage(pageVO);
return success(InventorymoveRequestMainConvert.INSTANCE.convertPage(pageResult));
PageResult<InventorymoveRequestMainRespVO> result = InventorymoveRequestMainConvert.INSTANCE.convertPage(pageResult);
for(InventorymoveRequestMainRespVO vo : result.getList()) {
//后端创建个字段作为前端展示的虚拟字段
vo.setCreator(userApi.getUser(Long.valueOf(vo.getCreator())).getNickname());
vo.setUpdater(userApi.getUser(Long.valueOf(vo.getUpdater())).getNickname());
vo.setDepartmentCode(deptApi.getDept(userApi.getUser(Long.valueOf(vo.getCreator())).getDeptId()).getName());
}
return success(result);
}
@PostMapping("/senior")
@ -103,27 +116,64 @@ public class InventorymoveRequestMainController {
PageResult<InventorymoveRequestMainDO> pageResult = inventorymoveRequestMainService.getInventorymoveRequestMainSenior(conditions);
PageResult<InventorymoveRequestMainRespVO> result = InventorymoveRequestMainConvert.INSTANCE.convertPage(pageResult);
for(InventorymoveRequestMainRespVO vo : result.getList()) {
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator()));
//后端创建个字段作为前端展示的虚拟字段
vo.setCreator(user.getNickname());
vo.setCreator(userApi.getUser(Long.valueOf(vo.getCreator())).getNickname());
vo.setUpdater(userApi.getUser(Long.valueOf(vo.getUpdater())).getNickname());
vo.setDepartmentCode(deptApi.getDept(userApi.getUser(Long.valueOf(vo.getCreator())).getDeptId()).getName());
}
return success(result);
}
@GetMapping("/export-excel")
@Operation(summary = "导出库存转移申请 Excel")
@Operation(summary = "导出库存转移申请 Excel")
@PreAuthorize("@ss.hasPermission('wms:inventorymove-request-main:export')")
@OperateLog(type = EXPORT)
public void exportInventorymoveRequestMainExcel(@Valid InventorymoveRequestMainExportReqVO exportReqVO,
HttpServletResponse response) throws IOException {
List<InventorymoveRequestMainDO> list = inventorymoveRequestMainService.getInventorymoveRequestMainList(exportReqVO);
// 导出 Excel
List<InventorymoveRequestMainExcelVO> datas = InventorymoveRequestMainConvert.INSTANCE.convertList02(list);
for(InventorymoveRequestMainExcelVO vo : datas) {
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator()));
//后端创建个字段作为前端展示的虚拟字段
vo.setCreator(user.getNickname());
//组装vo
Map<Integer, String[]> mapDropDown = new HashMap<>();
List<InventorymoveRequestMainExcelVO> resultList = this.getExcelVo(list, mapDropDown);
ExcelUtils.write(response, "库存转移申请.xlsx", "库存转移申请数据", InventorymoveRequestMainExcelVO.class, resultList, mapDropDown);
}
@GetMapping("/export-excel-senior")
@Operation(summary = "导出库存转移申请 Excel")
@PreAuthorize("@ss.hasPermission('wms:inventorymove-request-main:export')")
@OperateLog(type = EXPORT)
public void exportInventorymoveRequestMainSeniorExcel(@Valid @RequestBody CustomConditions conditions, HttpServletResponse response) throws IOException {
List<InventorymoveRequestMainDO> list = inventorymoveRequestMainService.getInventorymoveRequestMainList(conditions);
//组装vo
Map<Integer, String[]> mapDropDown = new HashMap<>();
List<InventorymoveRequestMainExcelVO> resultList = this.getExcelVo(list, mapDropDown);
ExcelUtils.write(response, "库存转移申请.xlsx", "库存转移申请数据", InventorymoveRequestMainExcelVO.class, resultList, mapDropDown);
}
private List<InventorymoveRequestMainExcelVO> getExcelVo(List<InventorymoveRequestMainDO> list, Map<Integer, String[]> mapDropDown) {
String[] requestStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.REQUEST_STATUS);
mapDropDown.put(8, requestStatus);
String[] locationType = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.LOCATION_TYPE);
mapDropDown.put(12, locationType);
mapDropDown.put(15, locationType);
String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS);
mapDropDown.put(27, inventoryStatus);
mapDropDown.put(33, inventoryStatus);
String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM);
mapDropDown.put(42, uom);
List<InventorymoveRequestMainExcelVO> resultList = new ArrayList<>();
// 导出
for(InventorymoveRequestMainDO mainDO : list) {
List<InventorymoveRequestDetailDO> subList = inventorymoveRequestDetailService.selectList(mainDO.getId());
for(InventorymoveRequestDetailDO detailDO : subList) {
InventorymoveRequestMainExcelVO vo = InventorymoveRequestMainConvert.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());
vo.setDepartmentCode(deptApi.getDept(userApi.getUser(Long.valueOf(vo.getCreator())).getDeptId()).getName());
resultList.add(vo);
}
}
ExcelUtils.write(response, "库存转移申请主.xls", "数据", InventorymoveRequestMainExcelVO.class, datas);
return resultList;
}
@GetMapping("/get-import-template")
@ -145,15 +195,17 @@ public class InventorymoveRequestMainController {
@Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"),
@Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true")
})
@PreAuthorize("@ss.hasPermission('wms:deliver-plan-main:import')")
@PreAuthorize("@ss.hasPermission('wms:inventorymove-request-main:import')")
public CommonResult<Map<String, Object>> importExcel(HttpServletResponse response,
@RequestParam("file") MultipartFile file,
@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 {
List<InventorymoveRequestMainImportVO> list = ExcelUtils.read(file, InventorymoveRequestMainImportVO.class);
ConvertUtil<InventorymoveRequestMainCreateReqVO> convertUtil = new ConvertUtil<>(InventorymoveRequestMainCreateReqVO.class);
List<InventorymoveRequestMainCreateReqVO> createReqVOList = convertUtil.invoke(list).getDataList();
List<InventorymoveRequestMainImportErrorVO> errorList = inventorymoveRequestMainService.importInventorymoveRequestMainList(createReqVOList, mode, updatePart);
List<InventorymoveRequestMainImportErrorVO> errorList = inventorymoveRequestMainService.importInventorymoveRequestMainList(createReqVOList, mode, fromInventoryStatus, toInventoryStatus, updatePart);
Map<String, Object> returnMap = new HashMap<>();
returnMap.put("errorCount", errorList.size());
if(!errorList.isEmpty()) {
@ -163,4 +215,57 @@ public class InventorymoveRequestMainController {
return success(returnMap);
}
@PutMapping("/close")
@Operation(summary = "关闭库存修改申请主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:inventorymove-request-main:close')")
public CommonResult<Boolean> closeInventorymoveRequestMain(@RequestParam("id") Long id) {
Integer count = inventorymoveRequestMainService.closeInventorymoveRequestMain(id);
return success(count > 0);
}
@PutMapping("/reAdd")
@Operation(summary = "重新添加库存修改申请主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:inventorymove-request-main:reAdd')")
public CommonResult<Boolean> reAddInventorymoveRequestMain(@RequestParam("id") Long id) {
Integer count = inventorymoveRequestMainService.reAddInventorymoveRequestMain(id);
return success(count > 0);
}
@PutMapping("/submit")
@Operation(summary = "提交库存修改申请主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:inventorymove-request-main:submit')")
public CommonResult<Boolean> submitInventorymoveRequestMain(@RequestParam("id") Long id) {
Integer count = inventorymoveRequestMainService.submitInventorymoveRequestMain(id);
return success(count > 0);
}
@PutMapping("/agree")
@Operation(summary = "审批通过库存修改申请主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:inventorymove-request-main:agree')")
public CommonResult<Boolean> agreeInventorymoveRequestMain(@RequestParam("id") Long id) {
Integer count = inventorymoveRequestMainService.agreeInventorymoveRequestMain(id);
return success(count > 0);
}
@PutMapping("/handle")
@Operation(summary = "处理库存修改申请主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:inventorymove-request-main:handle')")
public CommonResult<Boolean> handleInventorymoveRequestMain(@RequestParam("id") Long id) {
Integer count = inventorymoveRequestMainService.handleInventorymoveRequestMain(id);
return success(count > 0);
}
@PutMapping("/refused")
@Operation(summary = "审批拒绝库存修改申请主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:inventorymove-request-main:refused')")
public CommonResult<Boolean> abortInventorymoveRequestMain(@RequestParam("id") Long id) {
Integer count = inventorymoveRequestMainService.abortInventorymoveRequestMain(id);
return success(count > 0);
}
}

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestDetailExportReqVO.java

@ -92,4 +92,6 @@ public class InventorymoveRequestDetailExportReqVO {
@Schema(description = "物品代码")
private String itemCode;
@Schema(description = "主表id")
private String masterId;
}

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestDetailPageReqVO.java

@ -94,4 +94,7 @@ public class InventorymoveRequestDetailPageReqVO extends PageParam {
@Schema(description = "物品代码")
private String itemCode;
@Schema(description = "主表id")
private String masterId;
}

84
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainExcelVO.java

@ -1,7 +1,10 @@
package com.win.module.wms.controller.inventorymoveRequest.vo;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.math.BigDecimal;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
@ -31,15 +34,18 @@ public class InventorymoveRequestMainExcelVO {
private String remark;
@ExcelProperty("创建时间")
@ColumnWidth(value = 22)
private LocalDateTime createTime;
@ExcelProperty("创建者用户名")
private String creator;
@ExcelProperty("申请时间")
@ColumnWidth(value = 22)
private LocalDateTime requestTime;
@ExcelProperty("截止时间")
@ColumnWidth(value = 22)
private LocalDateTime dueTime;
@ExcelProperty("部门")
@ -50,6 +56,7 @@ public class InventorymoveRequestMainExcelVO {
private String status;
@ExcelProperty("最后更新时间")
@ColumnWidth(value = 22)
private LocalDateTime updateTime;
@ExcelProperty("最后更新者用户名")
@ -90,4 +97,81 @@ public class InventorymoveRequestMainExcelVO {
@ExcelProperty("直接生成记录")
private String directCreateRecord;
//子表
@ExcelProperty("从货主代码")
private String fromOwnerCode;
@ExcelProperty("从包装号")
private String fromPackingNumber;
@ExcelProperty("从器具号")
private String fromContainerNumber;
@ExcelProperty("从批次")
private String fromBatch;
@ExcelProperty("从库位代码")
private String fromLocationCode;
@ExcelProperty(value = "从库存状态", converter = DictConvert.class)
@DictFormat("inventory_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String fromInventoryStatus;
@ExcelProperty("到货主代码")
private String toOwnerCode;
@ExcelProperty("到包装号")
private String toPackingNumber;
@ExcelProperty("到器具号")
private String toContainerNumber;
@ExcelProperty("到批次")
private String toBatch;
@ExcelProperty("到库位代码")
private String toLocationCode;
@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;
}

8
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainImportVO.java

@ -26,11 +26,9 @@ import java.time.LocalDateTime;
public class InventorymoveRequestMainImportVO {
//主表数据
@ExcelProperty("单据号")
private String number;
//子表数据
@ExcelProperty("物品代码")
private String itemCode;
@ -53,4 +51,10 @@ public class InventorymoveRequestMainImportVO {
@ExcelProperty("到库位代码")
private String toLocationCode;
@ExcelProperty("数量")
private BigDecimal qty;
@ExcelProperty("截止时间")
private LocalDateTime dueTime;
}

5
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainPageReqVO.java

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

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

@ -8,8 +8,11 @@ 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.InventorymoveJobMainRespVO;
import com.win.module.wms.controller.inventorymoveJob.vo.InventorymoveJobMainUpdateReqVO;
import com.win.module.wms.dal.dataobject.inventorymoveJob.InventorymoveJobDetailDO;
import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestMainDO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
import com.win.module.wms.dal.dataobject.inventorymoveJob.InventorymoveJobMainDO;
@ -36,4 +39,15 @@ public interface InventorymoveJobMainConvert {
List<InventorymoveJobMainExcelVO> convertList02(List<InventorymoveJobMainDO> list);
InventorymoveJobMainDO convert(InventorymoveRequestMainDO mainDO);
@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.creatorName", target = "creatorName"),
@Mapping(source = "mainDO.updateTime", target = "updateTime"),
@Mapping(source = "mainDO.updater", target = "updater"),
@Mapping(source = "detailDO.creator", target = "creatorDetail"),
})
InventorymoveJobMainExcelVO convert(InventorymoveJobMainDO mainDO, InventorymoveJobDetailDO detailDO);
}

13
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorymoveRecord/InventorymoveRecordMainConvert.java

@ -8,7 +8,10 @@ import com.win.module.wms.controller.inventorymoveRecord.vo.InventorymoveRecordM
import com.win.module.wms.controller.inventorymoveRecord.vo.InventorymoveRecordMainExcelVO;
import com.win.module.wms.controller.inventorymoveRecord.vo.InventorymoveRecordMainRespVO;
import com.win.module.wms.controller.inventorymoveRecord.vo.InventorymoveRecordMainUpdateReqVO;
import com.win.module.wms.dal.dataobject.inventorymoveRecord.InventorymoveRecordDetailDO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
import com.win.module.wms.dal.dataobject.inventorymoveRecord.InventorymoveRecordMainDO;
@ -33,5 +36,13 @@ public interface InventorymoveRecordMainConvert {
PageResult<InventorymoveRecordMainRespVO> convertPage(PageResult<InventorymoveRecordMainDO> page);
List<InventorymoveRecordMainExcelVO> convertList02(List<InventorymoveRecordMainDO> 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.interfaceType", target = "interfaceType"),
@Mapping(source = "mainDO.code", target = "code"),
})
InventorymoveRecordMainExcelVO convert(InventorymoveRecordMainDO mainDO, InventorymoveRecordDetailDO detailDO);
}

10
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorymoveRequest/InventorymoveRequestMainConvert.java

@ -44,5 +44,13 @@ public interface InventorymoveRequestMainConvert {
@Mapping(source = "mainVo.number", target = "number"),
})
InventorymoveRequestMainImportErrorVO convert(InventorymoveRequestMainCreateReqVO mainVo, InventorymoveRequestDetailDO detailDo);
@Mappings({
@Mapping(source = "mainDO.number", target = "number"),
@Mapping(source = "mainDO.remark", target = "remark"),
@Mapping(source = "mainDO.createTime", target = "createTime"),
@Mapping(source = "mainDO.creator", target = "creator"),
@Mapping(source = "mainDO.updateTime", target = "updateTime"),
@Mapping(source = "mainDO.updater", target = "updater"),
})
InventorymoveRequestMainExcelVO convert(InventorymoveRequestMainDO mainDO, InventorymoveRequestDetailDO detailDO);
}

10
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventorymoveJob/InventorymoveJobMainDO.java

@ -1,5 +1,6 @@
package com.win.module.wms.dal.dataobject.inventorymoveJob;
import com.sun.xml.bind.v2.TODO;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
@ -217,5 +218,12 @@ public class InventorymoveJobMainDO extends BaseDO {
* 允许修改箱码
*/
private String allowModifyPackingNumber;
/**
* 入库库存状态范围
*/
private String inInventoryStatuses;
/**
* 出库库存状态范围
*/
private String outInventoryStatuses;
}

5
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventorymoveRecord/InventorymoveRecordMainDO.java

@ -1,5 +1,6 @@
package com.win.module.wms.dal.dataobject.inventorymoveRecord;
import com.sun.xml.bind.v2.TODO;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
@ -145,5 +146,9 @@ public class InventorymoveRecordMainDO extends BaseDO {
* 是否可用
*/
private String available;
/**
* 主表id
*/
private String masterId;
}

9
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventorymoveRequest/InventorymoveRequestMainDO.java

@ -1,5 +1,6 @@
package com.win.module.wms.dal.dataobject.inventorymoveRequest;
import com.sun.xml.bind.v2.TODO;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
@ -130,5 +131,13 @@ public class InventorymoveRequestMainDO extends BaseDO {
* 直接生成记录
*/
private String directCreateRecord;
/**
* 入库库存状态范围
*/
private String inInventoryStatuses;
/**
* 出库库存状态范围
*/
private String outInventoryStatuses;
}

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

@ -23,6 +23,7 @@ public interface InventorychangeRequestDetailMapper extends BaseMapperX<Inventor
default PageResult<InventorychangeRequestDetailDO> selectPage(InventorychangeRequestDetailPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<InventorychangeRequestDetailDO>()
.eqIfPresent(InventorychangeRequestDetailDO::getMasterId, reqVO.getMasterId())
.eqIfPresent(InventorychangeRequestDetailDO::getLocationGroupCode, reqVO.getLocationGroupCode())
.eqIfPresent(InventorychangeRequestDetailDO::getLocationCode, reqVO.getLocationCode())
.eqIfPresent(InventorychangeRequestDetailDO::getAreaCode, reqVO.getAreaCode())
@ -66,6 +67,7 @@ public interface InventorychangeRequestDetailMapper extends BaseMapperX<Inventor
}
default List<InventorychangeRequestDetailDO> selectList(InventorychangeRequestDetailExportReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<InventorychangeRequestDetailDO>()
.eqIfPresent(InventorychangeRequestDetailDO::getMasterId, reqVO.getMasterId())
.eqIfPresent(InventorychangeRequestDetailDO::getLocationGroupCode, reqVO.getLocationGroupCode())
.eqIfPresent(InventorychangeRequestDetailDO::getLocationCode, reqVO.getLocationCode())
.eqIfPresent(InventorychangeRequestDetailDO::getAreaCode, reqVO.getAreaCode())

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

@ -23,8 +23,8 @@ import org.apache.ibatis.annotations.Mapper;
public interface InventorychangeRequestMainMapper extends BaseMapperX<InventorychangeRequestMainDO> {
default PageResult<InventorychangeRequestMainDO> selectPage(InventorychangeRequestMainPageReqVO reqVO) {
LambdaQueryWrapperX<InventorychangeRequestMainDO> lambdaQueryWrapperX = new LambdaQueryWrapperX<>();
lambdaQueryWrapperX.eqIfPresent(InventorychangeRequestMainDO::getWarehouseCode, reqVO.getWarehouseCode())
return selectPage(reqVO, new LambdaQueryWrapperX<InventorychangeRequestMainDO>()
.eqIfPresent(InventorychangeRequestMainDO::getWarehouseCode, reqVO.getWarehouseCode())
.eqIfPresent(InventorychangeRequestMainDO::getNumber, reqVO.getNumber())
.eqIfPresent(InventorychangeRequestMainDO::getBusinessType, reqVO.getBusinessType())
.eqIfPresent(InventorychangeRequestMainDO::getRemark, reqVO.getRemark())
@ -40,19 +40,7 @@ public interface InventorychangeRequestMainMapper extends BaseMapperX<Inventoryc
.eqIfPresent(InventorychangeRequestMainDO::getAutoAgree, reqVO.getAutoAgree())
.eqIfPresent(InventorychangeRequestMainDO::getAutoExecute, reqVO.getAutoExecute())
.eqIfPresent(InventorychangeRequestMainDO::getDirectCreateRecord, reqVO.getDirectCreateRecord())
.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);
.orderByDesc(InventorychangeRequestMainDO::getId));
}
default PageResult<InventorychangeRequestMainDO> selectSenior(CustomConditions conditions) {
return selectPage(conditions, QueryWrapperUtils.structure(conditions));

6
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorymoveJob/InventorymoveJobDetailMapper.java

@ -9,6 +9,7 @@ import com.win.framework.mybatis.core.mapper.BaseMapperX;
import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.inventorymoveJob.vo.InventorymoveJobDetailExportReqVO;
import com.win.module.wms.controller.inventorymoveJob.vo.InventorymoveJobDetailPageReqVO;
import com.win.module.wms.dal.dataobject.deliverJob.DeliverJobDetailDO;
import com.win.module.wms.dal.dataobject.inventorymoveJob.InventorymoveJobDetailDO;
import org.apache.ibatis.annotations.Mapper;
@ -22,6 +23,7 @@ public interface InventorymoveJobDetailMapper extends BaseMapperX<InventorymoveJ
default PageResult<InventorymoveJobDetailDO> selectPage(InventorymoveJobDetailPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<InventorymoveJobDetailDO>()
.eqIfPresent(InventorymoveJobDetailDO::getMasterId, reqVO.getMasterId())
.eqIfPresent(InventorymoveJobDetailDO::getItemCode, reqVO.getItemCode())
.likeIfPresent(InventorymoveJobDetailDO::getItemName, reqVO.getItemName())
.eqIfPresent(InventorymoveJobDetailDO::getItemDesc1, reqVO.getItemDesc1())
@ -75,4 +77,8 @@ public interface InventorymoveJobDetailMapper extends BaseMapperX<InventorymoveJ
.orderByDesc(InventorymoveJobDetailDO::getId));
}
default List<InventorymoveJobDetailDO> selectList(Long masterId){
return selectList(new LambdaQueryWrapperX<InventorymoveJobDetailDO>()
.eq(InventorymoveJobDetailDO::getMasterId,masterId));
}
}

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorymoveJob/InventorymoveJobMainMapper.java

@ -10,6 +10,7 @@ import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.inventorymoveJob.vo.InventorymoveJobMainExportReqVO;
import com.win.module.wms.controller.inventorymoveJob.vo.InventorymoveJobMainPageReqVO;
import com.win.module.wms.dal.dataobject.inventorymoveJob.InventorymoveJobMainDO;
import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestMainDO;
import com.win.module.wms.dal.dataobject.productdismantleJob.ProductdismantleJobMainDO;
import org.apache.ibatis.annotations.Mapper;
@ -120,4 +121,7 @@ public interface InventorymoveJobMainMapper extends BaseMapperX<InventorymoveJob
}
default List<InventorymoveJobMainDO> 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/inventorymoveRecord/InventorymoveRecordDetailMapper.java

@ -10,6 +10,7 @@ import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.inventorymoveRecord.vo.InventorymoveRecordDetailExportReqVO;
import com.win.module.wms.controller.inventorymoveRecord.vo.InventorymoveRecordDetailPageReqVO;
import com.win.module.wms.dal.dataobject.inventorymoveRecord.InventorymoveRecordDetailDO;
import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestDetailDO;
import org.apache.ibatis.annotations.Mapper;
/**
@ -93,5 +94,7 @@ public interface InventorymoveRecordDetailMapper extends BaseMapperX<Inventorymo
.eqIfPresent(InventorymoveRecordDetailDO::getJobDetailId, reqVO.getJobDetailId())
.orderByDesc(InventorymoveRecordDetailDO::getId));
}
default List<InventorymoveRecordDetailDO> selectList(Long masterId) {
return selectList(new LambdaQueryWrapperX<InventorymoveRecordDetailDO>().eq(InventorymoveRecordDetailDO::getMasterId, masterId));
}
}

6
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorymoveRecord/InventorymoveRecordMainMapper.java

@ -10,6 +10,7 @@ import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.inventorymoveRecord.vo.InventorymoveRecordMainExportReqVO;
import com.win.module.wms.controller.inventorymoveRecord.vo.InventorymoveRecordMainPageReqVO;
import com.win.module.wms.dal.dataobject.inventorymoveRecord.InventorymoveRecordMainDO;
import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestMainDO;
import org.apache.ibatis.annotations.Mapper;
/**
@ -23,6 +24,7 @@ public interface InventorymoveRecordMainMapper extends BaseMapperX<Inventorymove
default PageResult<InventorymoveRecordMainDO> selectPage(InventorymoveRecordMainPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<InventorymoveRecordMainDO>()
.eqIfPresent(InventorymoveRecordMainDO::getRequestNumber, reqVO.getRequestNumber())
.eqIfPresent(InventorymoveRecordMainDO::getMasterId, reqVO.getMasterId())
.eqIfPresent(InventorymoveRecordMainDO::getJobNumber, reqVO.getJobNumber())
.eqIfPresent(InventorymoveRecordMainDO::getUseOnTheWayLocation, reqVO.getUseOnTheWayLocation())
.eqIfPresent(InventorymoveRecordMainDO::getOutTransactionType, reqVO.getOutTransactionType())
@ -53,6 +55,7 @@ public interface InventorymoveRecordMainMapper extends BaseMapperX<Inventorymove
}
default List<InventorymoveRecordMainDO> selectList(InventorymoveRecordMainExportReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<InventorymoveRecordMainDO>()
.eqIfPresent(InventorymoveRecordMainDO::getMasterId, reqVO.getMasterId())
.eqIfPresent(InventorymoveRecordMainDO::getRequestNumber, reqVO.getRequestNumber())
.eqIfPresent(InventorymoveRecordMainDO::getJobNumber, reqVO.getJobNumber())
.eqIfPresent(InventorymoveRecordMainDO::getUseOnTheWayLocation, reqVO.getUseOnTheWayLocation())
@ -80,4 +83,7 @@ public interface InventorymoveRecordMainMapper extends BaseMapperX<Inventorymove
.orderByDesc(InventorymoveRecordMainDO::getId));
}
default List<InventorymoveRecordMainDO> 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

@ -9,6 +9,7 @@ import com.win.framework.mybatis.core.mapper.BaseMapperX;
import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.inventorymoveRequest.vo.InventorymoveRequestDetailExportReqVO;
import com.win.module.wms.controller.inventorymoveRequest.vo.InventorymoveRequestDetailPageReqVO;
import com.win.module.wms.dal.dataobject.inventorymoveJob.InventorymoveJobDetailDO;
import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestDetailDO;
import org.apache.ibatis.annotations.Mapper;
@ -22,6 +23,7 @@ public interface InventorymoveRequestDetailMapper extends BaseMapperX<Inventorym
default PageResult<InventorymoveRequestDetailDO> selectPage(InventorymoveRequestDetailPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<InventorymoveRequestDetailDO>()
.eqIfPresent(InventorymoveRequestDetailDO::getMasterId, reqVO.getMasterId())
.eqIfPresent(InventorymoveRequestDetailDO::getFromOwnerCode, reqVO.getFromOwnerCode())
.eqIfPresent(InventorymoveRequestDetailDO::getFromPackingNumber, reqVO.getFromPackingNumber())
.eqIfPresent(InventorymoveRequestDetailDO::getFromContainerNumber, reqVO.getFromContainerNumber())
@ -54,6 +56,7 @@ public interface InventorymoveRequestDetailMapper extends BaseMapperX<Inventorym
}
default List<InventorymoveRequestDetailDO> selectList(InventorymoveRequestDetailExportReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<InventorymoveRequestDetailDO>()
.eqIfPresent(InventorymoveRequestDetailDO::getMasterId, reqVO.getMasterId())
.eqIfPresent(InventorymoveRequestDetailDO::getFromOwnerCode, reqVO.getFromOwnerCode())
.eqIfPresent(InventorymoveRequestDetailDO::getFromPackingNumber, reqVO.getFromPackingNumber())
.eqIfPresent(InventorymoveRequestDetailDO::getFromContainerNumber, reqVO.getFromContainerNumber())

23
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorymoveRequest/InventorymoveRequestMainMapper.java

@ -9,7 +9,9 @@ import com.win.framework.mybatis.core.mapper.BaseMapperX;
import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.inventorymoveRequest.vo.InventorymoveRequestMainExportReqVO;
import com.win.module.wms.controller.inventorymoveRequest.vo.InventorymoveRequestMainPageReqVO;
import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestMainDO;
import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestMainDO;
import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO;
import org.apache.ibatis.annotations.Mapper;
/**
@ -21,8 +23,8 @@ import org.apache.ibatis.annotations.Mapper;
public interface InventorymoveRequestMainMapper extends BaseMapperX<InventorymoveRequestMainDO> {
default PageResult<InventorymoveRequestMainDO> selectPage(InventorymoveRequestMainPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<InventorymoveRequestMainDO>()
.eqIfPresent(InventorymoveRequestMainDO::getNumber, reqVO.getNumber())
LambdaQueryWrapperX<InventorymoveRequestMainDO> lambdaQueryWrapperX = new LambdaQueryWrapperX<>();
lambdaQueryWrapperX.eqIfPresent(InventorymoveRequestMainDO::getNumber, reqVO.getNumber())
.eqIfPresent(InventorymoveRequestMainDO::getBusinessType, reqVO.getBusinessType())
.eqIfPresent(InventorymoveRequestMainDO::getRemark, reqVO.getRemark())
.betweenIfPresent(InventorymoveRequestMainDO::getCreateTime, reqVO.getCreateTime())
@ -44,7 +46,19 @@ public interface InventorymoveRequestMainMapper extends BaseMapperX<Inventorymov
.eqIfPresent(InventorymoveRequestMainDO::getAutoAgree, reqVO.getAutoAgree())
.eqIfPresent(InventorymoveRequestMainDO::getAutoExecute, reqVO.getAutoExecute())
.eqIfPresent(InventorymoveRequestMainDO::getDirectCreateRecord, reqVO.getDirectCreateRecord())
.orderByDesc(InventorymoveRequestMainDO::getId));
.orderByDesc(InventorymoveRequestMainDO::getId);
if("OK".equals(reqVO.getFromInventoryStatus()) && "HOLD".equals(reqVO.getToInventoryStatus())) {
lambdaQueryWrapperX.eq(InventorymoveRequestMainDO::getBusinessType,"OkToHoldRequest");
} else if("HOLD".equals(reqVO.getFromInventoryStatus()) && "OK".equals(reqVO.getToInventoryStatus())) {
lambdaQueryWrapperX.eq(InventorymoveRequestMainDO::getBusinessType,"HoldToOkRequest");
} else if("HOLD".equals(reqVO.getFromInventoryStatus()) && "SCRAP".equals(reqVO.getToInventoryStatus())) {
lambdaQueryWrapperX.eq(InventorymoveRequestMainDO::getBusinessType,"HoldToScrapRequest");
} else if("OK".equals(reqVO.getFromInventoryStatus()) && "SCRAP".equals(reqVO.getToInventoryStatus())) {
lambdaQueryWrapperX.eq(InventorymoveRequestMainDO::getBusinessType,"OkToScrapRequest");
} else if("SCRAP".equals(reqVO.getFromInventoryStatus()) && "HOLD".equals(reqVO.getToInventoryStatus())) {
lambdaQueryWrapperX.eq(InventorymoveRequestMainDO::getBusinessType,"ScrapToHoldRequest");
}
return selectPage(reqVO,lambdaQueryWrapperX);
}
default PageResult<InventorymoveRequestMainDO> selectSenior(CustomConditions conditions) {
return selectPage(conditions, QueryWrapperUtils.structure(conditions));
@ -76,4 +90,7 @@ public interface InventorymoveRequestMainMapper extends BaseMapperX<Inventorymov
.orderByDesc(InventorymoveRequestMainDO::getId));
}
default List<InventorymoveRequestMainDO> selectSeniorList(CustomConditions conditions) {
return selectList(QueryWrapperUtils.structure(conditions));
}
}

9
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreceiptRequest/CustomerreceiptRequestMainServiceImpl.java

@ -13,6 +13,9 @@ import com.win.module.wms.controller.customerreceiptRequest.vo.CustomerreceiptRe
import com.win.module.wms.controller.customerreceiptRequest.vo.CustomerreceiptRequestMainExportReqVO;
import com.win.module.wms.controller.customerreceiptRequest.vo.CustomerreceiptRequestMainPageReqVO;
import com.win.module.wms.controller.customerreceiptRequest.vo.CustomerreceiptRequestMainUpdateReqVO;
import com.win.module.wms.controller.expectin.vo.ExpectinCreateReqVO;
import com.win.module.wms.controller.expectout.vo.ExpectoutCreateReqVO;
import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO;
import com.win.module.wms.convert.customerreceiptRecord.CustomerreceiptRecordDetailConvert;
import com.win.module.wms.convert.customerreceiptRecord.CustomerreceiptRecordMainConvert;
import com.win.module.wms.convert.customerreceiptRequest.CustomerreceiptRequestDetailConvert;
@ -36,6 +39,7 @@ import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@ -312,13 +316,16 @@ public class CustomerreceiptRequestMainServiceImpl implements CustomerreceiptReq
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CustomerreceiptRecord");
customerreceiptRecordMainCreateReqVO.setBusinessType(businesstypeDO.getCode());
customerreceiptRecordMainMapper.insert(CustomerreceiptRecordMainConvert.INSTANCE.convert(customerreceiptRecordMainCreateReqVO));
List<ExpectinCreateReqVO> expectinCreateReqVOList = new ArrayList<>();
List<ExpectoutCreateReqVO> expectoutCreateReqVOList = new ArrayList<>();
List<TransactionCreateReqVO> transactionCreateReqVOList = new ArrayList<>();
for (CustomerreceiptRequestDetailDO customerreceiptRequestDetailDO : detailDOList) {
CustomerreceiptRecordDetailCreateReqVO customerreceiptRecordDetailCreateReqVO = new CustomerreceiptRecordDetailCreateReqVO();
BeanUtils.copyProperties(customerreceiptRequestDetailDO, customerreceiptRecordDetailCreateReqVO);
customerreceiptRecordDetailCreateReqVO.setNumber(number);
customerreceiptRecordDetailMapper.insert(CustomerreceiptRecordDetailConvert.INSTANCE.convert(customerreceiptRecordDetailCreateReqVO));
trendsApi.createTrends(mainDO.getId(), "CustomerreceiptRecord", "客户收货申请生成客户收货记录", TrendsTypeEnum.CREATE);
}
trendsApi.createTrends(mainDO.getId(), "CustomerreceiptRecord", "客户收货申请生成客户收货记录", TrendsTypeEnum.CREATE);
}
}
}

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

@ -84,7 +84,7 @@ public interface InventorychangeRequestMainService {
* @param updatePart 是否支持更新
* @return 导入结果
*/
public List<InventorychangeRequestMainImportErrorVO> importInventorychangeRequestMainList(List<InventorychangeRequestMainCreateReqVO> datas, Integer mode,String fromInventoryStatus , String toInventoryStatus , boolean updatePart);
public List<InventorychangeRequestMainImportErrorVO> importInventorychangeRequestMainList(List<InventorychangeRequestMainCreateReqVO> datas, Integer mode,boolean updatePart);
/**
* 关闭

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

@ -1,15 +1,18 @@
package com.win.module.wms.service.inventorychangeRequest;
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.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.dict.core.util.DictFrameworkUtils;
import com.win.framework.common.util.validation.ValidationUtils;
import com.win.module.infra.api.trends.TrendsApi;
import com.win.module.infra.enums.TrendsTypeEnum;
import com.win.module.system.api.dept.DeptApi;
import com.win.module.system.api.serialnumber.SerialNumberApi;
import com.win.module.system.api.user.AdminUserApi;
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.inventorychangeRecord.vo.InventorychangeRecordDetailCreateReqVO;
import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordMainCreateReqVO;
import com.win.module.wms.controller.inventorychangeRequest.vo.*;
@ -19,7 +22,7 @@ import com.win.module.wms.convert.inventorychangeRequest.InventorychangeRequestD
import com.win.module.wms.convert.inventorychangeRequest.InventorychangeRequestMainConvert;
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.deliverRequest.DeliverRequestMainDO;
import com.win.module.wms.dal.dataobject.inventorychangeRecord.InventorychangeRecordDetailDO;
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.InventorychangeRequestMainDO;
@ -32,15 +35,17 @@ import com.win.module.wms.dal.mysql.inventorychangeRecord.InventorychangeRecordD
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.InventorychangeRequestMainMapper;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.enums.request.RequestStatusEnum;
import com.win.module.wms.enums.request.RequestStatusState;
import com.win.module.wms.service.expectin.ExpectinService;
import com.win.module.wms.service.expectout.ExpectoutService;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.itempackaging.ItempackagingService;
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.shift.ShiftService;
import com.win.module.wms.service.transaction.TransactionService;
import com.win.module.wms.util.JobUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
@ -48,6 +53,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import javax.validation.Validator;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Collection;
@ -74,6 +80,12 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
@Resource
private InventorychangeRecordDetailMapper inventorychangeRecordDetailMapper;
@Resource
private TransactionService transactionService;
@Resource
private ExpectoutService expectoutService;
@Resource
private ExpectinService expectinService;
@Resource
private ItembasicService itembasicService;
@Resource
private ItempackagingService itempackagingService;
@ -93,6 +105,10 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
private BalanceMapper balanceMapper;
@Resource
private RecordsettingService recordsettingService;
@Resource
private Validator validator;
@Resource
private AdminUserApi userApi;
@Override
public Long createInventorychangeRequestMain(InventorychangeRequestMainCreateReqVO createReqVO) {
@ -167,7 +183,7 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.close();
if (!flag) {
throw new ServiceException(DELIVER_REQUEST_CANNOT_CLOSE);
throw new ServiceException(INVENTORYCHANGE_REQUEST_CANNOT_CLOSE);
}
mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录
trendsApi.createTrends(id, "inventorychangeRequest", "关闭了库存修改申请", TrendsTypeEnum.UPDATE);
@ -183,7 +199,7 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.reAdd();
if (!flag) {
throw new ServiceException(DELIVER_REQUEST_CANNOT_RE_ADD);
throw new ServiceException(INVENTORYCHANGE_REQUEST_CANNOT_RE_ADD);
}
mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录
trendsApi.createTrends(id, "inventorychangeRequest", "打开了库存修改申请", TrendsTypeEnum.UPDATE);
@ -198,7 +214,7 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.submit(mainDO.getAutoAgree(), mainDO.getAutoExecute());
if (!flag) {
throw new ServiceException(DELIVER_REQUEST_CANNOT_SUBMIT);
throw new ServiceException(INVENTORYCHANGE_REQUEST_CANNOT_SUBMIT);
}
mainDO.setStatus(requestStatusState.getState().getCode());
//调用自动执行方法
@ -224,16 +240,16 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
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);
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("inventorychangeRecord");
RecordsettingDO recordsettingDO = recordsettingService.selectRecordsettingExist("inventorychangeRecord");
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);
List<InventorychangeRecordDetailDO> iinventorychangeRecordDetailCreateReqVOlDOList = new ArrayList<>();
for (InventorychangeRequestDetailDO inventorychangeRequestDetailDO : detailDOList) {
InventorychangeRecordDetailCreateReqVO inventorychangeRecordDetailCreateReqVO = new InventorychangeRecordDetailCreateReqVO();
BeanUtils.copyProperties(inventorychangeRequestDetailDO, inventorychangeRecordDetailCreateReqVO);
@ -242,10 +258,12 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
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);
validatorLocationReturnManagementAccuracy(mainDO, inventorychangeRequestDetailDO, inventoryStatus);
iinventorychangeRecordDetailCreateReqVOlDOList.add(InventorychangeRecordDetailConvert.INSTANCE.convert(inventorychangeRecordDetailCreateReqVO));
}
inventorychangeRecordDetailMapper.insertBatch(iinventorychangeRecordDetailCreateReqVOlDOList);
//增加库存事务
trendsApi.createTrends(mainDO.getId(), "InventorychangeRecord", "库存修改申请生成库存修改记录", TrendsTypeEnum.CREATE);
}
//审批同意
@ -257,7 +275,7 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.agree(mainDO.getAutoAgree());
if (!flag) {
throw new ServiceException(DELIVER_REQUEST_CANNOT_AGREE);
throw new ServiceException(INVENTORYCHANGE_REQUEST_CANNOT_AGREE);
}
mainDO.setStatus(requestStatusState.getState().getCode());
//调用自动执行方法
@ -277,7 +295,7 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.handle();
if (!flag) {
throw new ServiceException(DELIVER_REQUEST_CANNOT_HANDLE);
throw new ServiceException(INVENTORYCHANGE_REQUEST_CANNOT_HANDLE);
}
mainDO.setStatus(requestStatusState.getState().getCode());
//调用执行方法
@ -295,7 +313,7 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.refused();
if (!flag) {
throw new ServiceException(DELIVER_REQUEST_CANNOT_ABORT);
throw new ServiceException(INVENTORYCHANGE_REQUEST_CANNOT_ABORT);
}
mainDO.setStatus(requestStatusState.getState().getCode());
trendsApi.createTrends(id, "inventorychangeRequest", "审批拒绝了库存修改申请", TrendsTypeEnum.UPDATE);
@ -308,7 +326,7 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
}
@Override
public List<InventorychangeRequestMainImportErrorVO> importInventorychangeRequestMainList(List<InventorychangeRequestMainCreateReqVO> datas, Integer mode, String fromInventoryStatus , String toInventoryStatus ,boolean updatePart) {
public List<InventorychangeRequestMainImportErrorVO> importInventorychangeRequestMainList(List<InventorychangeRequestMainCreateReqVO> datas, Integer mode, boolean updatePart) {
if (CollUtil.isEmpty(datas)) {
throw exception(INVENTORYCHANGE_REQUEST_IMPORT_LIST_IS_EMPTY);
}
@ -321,8 +339,6 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
// 是否有错误数据
boolean flag = true;
for (InventorychangeRequestDetailDO detailDO : subDOList) {
detailDO.setFromInventoryStatus(fromInventoryStatus);
detailDO.setToInventoryStatus(toInventoryStatus);
String messageDetail = validateInventorychangeRequestDetailImport(detailDO, mainDo);
if (!messageMain.isEmpty() || !messageDetail.isEmpty()) {
InventorychangeRequestMainImportErrorVO importErrorVO = InventorychangeRequestMainConvert.INSTANCE.convert(createReqVO, detailDO);
@ -335,11 +351,20 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
}
//写入数据
if (flag) {
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("InventoryChangeRequest");
RequestStatusState requestStatusState = new RequestStatusState();
requestStatusState.newObject(requestsettingDO.getAutoCommit(), requestsettingDO.getAutoAgree(), requestsettingDO.getAutoExecute());
mainDo.setStatus(requestStatusState.getState().getCode());
String number = serialNumberApi.generateCode(RuleCodeEnum.INVENTORY_CHANGE_REQUEST.getCode());
mainDo.setNumber(number);
mainDo.setDepartmentCode(userApi.getUser(Long.valueOf(mainDo.getCreator())).getDeptId().toString());
inventorychangeRequestMainMapper.insert(mainDo);
for (InventorychangeRequestDetailDO detailDO : subDOList) {
detailDO.setNumber(mainDo.getNumber());
detailDO.setMasterId(mainDo.getId());
detailDO.setToBatch(detailDO.getFromBatch());
detailDO.setToPackingNumber(detailDO.getFromPackingNumber());
detailDO.setToContainerNumber(detailDO.getFromContainerNumber());
}
//调用自动执行方法
if (RequestStatusEnum.HANDLING.getCode().equals(mainDo.getStatus())) {
@ -360,6 +385,11 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
private String validateInventorychangeRequestMainImport(InventorychangeRequestMainDO mainDo) {
// 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList
String messageMain = "";
try {
ValidationUtils.validate(validator, mainDo);
} catch (Exception ex) {
messageMain += ex.getMessage() + ",";
}
//主表的验证
return messageMain;
}
@ -373,7 +403,7 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
private String validateInventorychangeRequestDetailImport(InventorychangeRequestDetailDO detailDo, InventorychangeRequestMainDO mainDo) {
String messageDetail = "";
ItembasicDO itembasicDO = null;
BusinesstypeDO businesstypeDO;
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InventoryChangeRequest");
// 校验物品基础信息
try {
itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode());
@ -396,23 +426,6 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
//隔离转合格申请
if ("HOLD".equals(detailDo.getFromInventoryStatus())) {
// 校验库存余额是否存在
try {
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add("HOLD");
validatorLocationReturnManagementAccuracy(mainDo,detailDo,inventoryStatus,false);
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
String number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_OK_REQUEST.getCode());
detailDo.setNumber(number);
// 校验业务类型
try {
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToOkRequest");
mainDo.setBusinessType(businesstypeDO.getCode());
try {
if (itembasicDO != null) {
jobUtils.ifInType(itembasicDO.getType(), businesstypeDO);
@ -422,193 +435,41 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
} 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) {
mainDo.setAutoAgree(requestsettingDO.getAutoAgree());
mainDo.setAutoCommit(requestsettingDO.getAutoCommit());
mainDo.setAutoExecute(requestsettingDO.getAutoExecute());
mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
mainDo.setRequestTime(LocalDateTime.now());
}
}
//合格转隔离申请
if ("OK".equals(detailDo.getFromInventoryStatus())) {
// 校验库存余额是否存在
try {
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add("OK");
validatorLocationReturnManagementAccuracy(mainDo,detailDo,inventoryStatus,false);
jobUtils.ifInInventoryStatuses(detailDo.getFromInventoryStatus(), businesstypeDO);
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
String number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_HOLD_REQUEST.getCode());
mainDo.setNumber(number);
// 校验业务类型
try {
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToHoldRequest");
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");
if (requestsettingDO != null) {
mainDo.setAutoAgree(requestsettingDO.getAutoAgree());
mainDo.setAutoCommit(requestsettingDO.getAutoCommit());
mainDo.setAutoExecute(requestsettingDO.getAutoExecute());
mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
detailDo.setToPackingNumber(null);
detailDo.setToBatch(null);
detailDo.setToContainerNumber(null);
}
//隔离转报废申请
if ("HOLD".equals(detailDo.getFromInventoryStatus())) {
// 校验库存余额是否存在
try {
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add("HOLD");
validatorLocationReturnManagementAccuracy(mainDo,detailDo,inventoryStatus,false);
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
String number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_SCRAP_REQUEST.getCode());
mainDo.setNumber(number);
// 校验业务类型
try {
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToScrapRequest");
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("HoldToScrapRequest");
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("InventoryChangeRequest");
if (requestsettingDO != null) {
mainDo.setAutoAgree(requestsettingDO.getAutoAgree());
mainDo.setAutoCommit(requestsettingDO.getAutoCommit());
mainDo.setAutoExecute(requestsettingDO.getAutoExecute());
mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
detailDo.setFromPackingNumber(null);
detailDo.setFromBatch(null);
detailDo.setFromContainerNumber(null);
}
//报废转隔离申请
if ("SCRAP".equals(detailDo.getFromInventoryStatus())) {
// 校验库存余额是否存在
try {
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add("SCRAP");
validatorLocationReturnManagementAccuracy(mainDo,detailDo,inventoryStatus,false);
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
String number = serialNumberApi.generateCode(RuleCodeEnum.SCRAP_TO_HOLD_REQUEST.getCode());
mainDo.setNumber(number);
// 校验业务类型
try {
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ScrapToHoldRequest");
mainDo.setRequestTime(LocalDateTime.now());
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");
if (requestsettingDO != null) {
mainDo.setAutoAgree(requestsettingDO.getAutoAgree());
mainDo.setAutoCommit(requestsettingDO.getAutoCommit());
mainDo.setAutoExecute(requestsettingDO.getAutoExecute());
mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
detailDo.setFromPackingNumber(null);
detailDo.setFromBatch(null);
detailDo.setFromContainerNumber(null);
}
//合格转报废
if ("Ok".equals(detailDo.getFromInventoryStatus())) {
// 校验库存余额是否存在
try {
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add("SCRAP");
validatorLocationReturnManagementAccuracy(mainDo,detailDo,inventoryStatus,false);
} catch (ServiceException ex) {
ArrayList<String> inventoryStatusList = new ArrayList<>();
inventoryStatusList.add(detailDo.getFromInventoryStatus());
validatorLocationReturnManagementAccuracy(mainDo, detailDo, inventoryStatusList);
} catch (Exception ex) {
messageDetail += ex.getMessage() + ",";
}
String number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_SCRAP_REQUEST.getCode());
mainDo.setNumber(number);
// 校验业务类型
try {
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToScrapRequest");
mainDo.setBusinessType(businesstypeDO.getCode());
try {
if (itembasicDO != null){
jobUtils.ifInType(itembasicDO.getType(), businesstypeDO);
}else {
messageDetail += "物品基本信息不存在,不能校验物品类型" + ",";
}
}catch (ServiceException ex) {
ValidationUtils.validate(validator, detailDo);
} catch (Exception 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");
if (requestsettingDO != null) {
mainDo.setAutoAgree(requestsettingDO.getAutoAgree());
mainDo.setAutoCommit(requestsettingDO.getAutoCommit());
mainDo.setAutoExecute(requestsettingDO.getAutoExecute());
mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
detailDo.setFromPackingNumber(null);
detailDo.setFromBatch(null);
detailDo.setFromContainerNumber(null);
}
return messageDetail;
}
@ -624,6 +485,7 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
}
String number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_SCRAP_REQUEST.getCode());
inventorychangeRequestMainDO.setNumber(number);
inventorychangeRequestMainDO.setDepartmentCode(userApi.getUser(Long.valueOf(inventorychangeRequestMainDO.getCreator())).getDeptId().toString());
inventorychangeRequestMainMapper.insert(inventorychangeRequestMainDO);
for (InventorychangeRequestDetailDO inventorychangeRequestDetailDO : subDOList) {
inventorychangeRequestDetailDO.setNumber(inventorychangeRequestMainDO.getNumber());
@ -674,61 +536,36 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
}
//校验库存余额是否存在
List<String> inventoryStatus = new ArrayList<>();
//隔离转合格申请
if ("HOLD".equals(inventorychangeRequestDetailDO.getFromInventoryStatus()) && "OK".equals(inventorychangeRequestDetailDO.getToInventoryStatus())) {
inventoryStatus.add("HOLD");
String OkToScrapRequest = "HoldToOkRequest";
CreateBusinessTypeAndRequestSetting(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,itembasicDO,OkToScrapRequest);
validatorLocationReturnManagementAccuracy(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,inventoryStatus,false);
}
//合格转隔离申请
if ("OK".equals(inventorychangeRequestDetailDO.getFromInventoryStatus()) && "HOLD".equals(inventorychangeRequestDetailDO.getToInventoryStatus())) {
inventoryStatus.add("OK");
String OkToScrapRequest = "OkToHoldRequest";
CreateBusinessTypeAndRequestSetting(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,itembasicDO,OkToScrapRequest);
validatorLocationReturnManagementAccuracy(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,inventoryStatus,false);
}
//隔离转报废申请
if ("HOLD".equals(inventorychangeRequestDetailDO.getFromInventoryStatus()) && "SCRAP".equals(inventorychangeRequestDetailDO.getToInventoryStatus())) {
inventoryStatus.add("HOLD");
String OkToScrapRequest = "HoldToScrapRequest";
CreateBusinessTypeAndRequestSetting(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,itembasicDO,OkToScrapRequest);
validatorLocationReturnManagementAccuracy(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,inventoryStatus,false);
}
//报废转隔离申请
if ("SCRAP".equals(inventorychangeRequestDetailDO.getFromInventoryStatus())&& "HOLD".equals(inventorychangeRequestDetailDO.getToInventoryStatus())) {
inventoryStatus.add("SCRAP");
String OkToScrapRequest = "ScrapToHoldRequest";
CreateBusinessTypeAndRequestSetting(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,itembasicDO,OkToScrapRequest);
validatorLocationReturnManagementAccuracy(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,inventoryStatus,false);
}
//合格转报废申请
if ("OK".equals(inventorychangeRequestDetailDO.getFromInventoryStatus())&& "SCRAP".equals(inventorychangeRequestDetailDO.getToInventoryStatus())) {
inventoryStatus.add("SCRAP");
String OkToScrapRequest = "OkToScrapRequest";
CreateBusinessTypeAndRequestSetting(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,itembasicDO,OkToScrapRequest);
validatorLocationReturnManagementAccuracy(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,inventoryStatus,false);
}
inventoryStatus.add(inventorychangeRequestDetailDO.getFromInventoryStatus());
CreateBusinessTypeAndRequestSetting(inventorychangeRequestMainDO, inventorychangeRequestDetailDO, itembasicDO);
validatorLocationReturnManagementAccuracy(inventorychangeRequestMainDO, inventorychangeRequestDetailDO, inventoryStatus);
inventorychangeRequestDetailDO.setToBatch(inventorychangeRequestDetailDO.getFromBatch());
inventorychangeRequestDetailDO.setToPackingNumber(inventorychangeRequestDetailDO.getFromPackingNumber());
inventorychangeRequestDetailDO.setToContainerNumber(inventorychangeRequestDetailDO.getFromContainerNumber());
}
//子表校验来源库位基础信息
private void CreateBusinessTypeAndRequestSetting(InventorychangeRequestMainDO inventorychangeRequestMainDO,InventorychangeRequestDetailDO inventorychangeRequestDetailDO, ItembasicDO itembasicDO, String businesstypeCode) {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType(businesstypeCode);
private void CreateBusinessTypeAndRequestSetting(InventorychangeRequestMainDO inventorychangeRequestMainDO, InventorychangeRequestDetailDO inventorychangeRequestDetailDO, ItembasicDO itembasicDO) {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InventoryChangeRequest");
inventorychangeRequestMainDO.setBusinessType(businesstypeDO.getCode());
if (itembasicDO != null) {
jobUtils.ifInType(itembasicDO.getType(), businesstypeDO);
}
jobUtils.ifOutInventoryStatuses(inventorychangeRequestDetailDO.getFromInventoryStatus(), businesstypeDO);
jobUtils.ifOutInventoryStatuses(inventorychangeRequestDetailDO.getToInventoryStatus(), businesstypeDO);
jobUtils.ifInFromLocationType(inventorychangeRequestDetailDO.getLocationCode(), businesstypeDO);
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist(businesstypeCode);
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("InventoryChangeRequest");
if (requestsettingDO != null) {
inventorychangeRequestMainDO.setAutoAgree(requestsettingDO.getAutoAgree());
inventorychangeRequestMainDO.setAutoCommit(requestsettingDO.getAutoCommit());
inventorychangeRequestMainDO.setAutoExecute(requestsettingDO.getAutoExecute());
inventorychangeRequestMainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
inventorychangeRequestMainDO.setRequestTime(LocalDateTime.now());
RequestStatusState requestStatusState = new RequestStatusState();
requestStatusState.newObject(requestsettingDO.getAutoCommit(), requestsettingDO.getAutoAgree(), requestsettingDO.getAutoExecute());
inventorychangeRequestMainDO.setStatus(requestStatusState.getState().getCode());
}
}
//子表校验来源库位基础信息
private LocationDO validatorLocation(String locationCode) {
LocationDO locationDO = locationService.selectLocation(locationCode);
@ -740,7 +577,7 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
return itembasicService.selectItembasic(itemCode);
}
private void validatorLocationReturnManagementAccuracy(InventorychangeRequestMainDO inventorychangeRequestMainDO,InventorychangeRequestDetailDO inventorychangeRequestDetailDO,List<String> inventoryStatus,Boolean flag) {
private void validatorLocationReturnManagementAccuracy(InventorychangeRequestMainDO inventorychangeRequestMainDO, InventorychangeRequestDetailDO inventorychangeRequestDetailDO, List<String> inventoryStatus) {
List<BalanceDO> balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(inventorychangeRequestDetailDO.getItemCode(), inventorychangeRequestDetailDO.getFromPackingNumber()
, inventorychangeRequestDetailDO.getFromBatch(), inventorychangeRequestDetailDO.getLocationCode(), inventoryStatus);
if (balanceDOList != null) {
@ -755,12 +592,9 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
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);
// balanceDO.setInventoryStatus(inventorychangeRequestDetailDO.getToInventoryStatus());
// balanceMapper.updateById(balanceDO);
// trendsApi.createTrends(Long.valueOf(balanceDO.getId()), "transaction_balance", "库存修改申请生成库存修改记录时修改了库存余额库存状态", TrendsTypeEnum.UPDATE);
}
}
}
}

1
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveJob/InventorymoveJobDetailService.java

@ -80,4 +80,5 @@ public interface InventorymoveJobDetailService {
*/
List<InventorymoveJobDetailDO> getInventorymoveJobDetailList(InventorymoveJobDetailExportReqVO exportReqVO);
List<InventorymoveJobDetailDO> selectList(Long masterId);
}

5
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveJob/InventorymoveJobDetailServiceImpl.java

@ -5,6 +5,7 @@ import com.win.module.wms.controller.inventorymoveJob.vo.InventorymoveJobDetailC
import com.win.module.wms.controller.inventorymoveJob.vo.InventorymoveJobDetailExportReqVO;
import com.win.module.wms.controller.inventorymoveJob.vo.InventorymoveJobDetailPageReqVO;
import com.win.module.wms.controller.inventorymoveJob.vo.InventorymoveJobDetailUpdateReqVO;
import com.win.module.wms.dal.dataobject.deliverJob.DeliverJobDetailDO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
@ -88,4 +89,8 @@ public class InventorymoveJobDetailServiceImpl implements InventorymoveJobDetail
return inventorymoveJobDetailMapper.selectList(exportReqVO);
}
@Override
public List<InventorymoveJobDetailDO> selectList(Long masterId) {
return inventorymoveJobDetailMapper.selectList(masterId);
}
}

31
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveJob/InventorymoveJobMainService.java

@ -10,6 +10,7 @@ import com.win.module.wms.controller.inventorymoveJob.vo.InventorymoveJobMainPag
import com.win.module.wms.controller.inventorymoveJob.vo.InventorymoveJobMainUpdateReqVO;
import com.win.module.wms.dal.dataobject.inventorymoveJob.InventorymoveJobMainDO;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestMainDO;
import org.springframework.lang.Nullable;
/**
@ -95,4 +96,34 @@ public interface InventorymoveJobMainService {
* @return
*/
Map<String,Integer> getCountByStatus(@Nullable Collection<String> types);
/**
* 关闭
* @param id
* @return
*/
public Integer closeInventorymoveJobMain(Long id);
/**
* 承接
* @param id
* @return
*/
public Integer acceptInventorymoveJobMain(Long id);
/**
* 取消
* @param id
* @return
*/
public Integer abandonInventorymoveJobMain(Long id);
/**
* 执行
* @param updateReqVO
* @return
*/
public String executeInventorymoveJobMain(InventorymoveJobMainUpdateReqVO updateReqVO);
List<InventorymoveJobMainDO> getInventorymoveJobMainList(CustomConditions conditions);
}

270
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveJob/InventorymoveJobMainServiceImpl.java

@ -1,15 +1,45 @@
package com.win.module.wms.service.inventorymoveJob;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.win.framework.common.exception.ServiceException;
import com.win.framework.common.pojo.CustomConditions;
import com.win.module.wms.controller.inventorymoveJob.vo.InventorymoveJobMainCreateReqVO;
import com.win.module.wms.controller.inventorymoveJob.vo.InventorymoveJobMainExportReqVO;
import com.win.module.wms.controller.inventorymoveJob.vo.InventorymoveJobMainPageReqVO;
import com.win.module.wms.controller.inventorymoveJob.vo.InventorymoveJobMainUpdateReqVO;
import com.win.module.infra.api.trends.TrendsApi;
import com.win.module.infra.enums.TrendsTypeEnum;
import com.win.module.system.api.serialnumber.SerialNumberApi;
import com.win.module.system.api.user.AdminUserApi;
import com.win.module.system.api.user.dto.AdminUserRespDTO;
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.inventorymoveJob.vo.*;
import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.inventorymoveJob.InventorymoveJobDetailDO;
import com.win.module.wms.dal.dataobject.inventorymoveRecord.InventorymoveRecordDetailDO;
import com.win.module.wms.dal.dataobject.inventorymoveRecord.InventorymoveRecordMainDO;
import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestMainDO;
import com.win.module.wms.dal.dataobject.recordsetting.RecordsettingDO;
import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO;
import com.win.module.wms.dal.mysql.inventorymoveJob.InventorymoveJobDetailMapper;
import com.win.module.wms.dal.mysql.inventorymoveRecord.InventorymoveRecordDetailMapper;
import com.win.module.wms.dal.mysql.inventorymoveRecord.InventorymoveRecordMainMapper;
import com.win.module.wms.enums.job.JobStatusEnum;
import com.win.module.wms.enums.job.JobStatusState;
import com.win.module.wms.service.expectin.ExpectinService;
import com.win.module.wms.service.expectout.ExpectoutService;
import com.win.module.wms.service.recordsetting.RecordsettingService;
import com.win.module.wms.service.transaction.TransactionService;
import com.win.module.wms.util.JobUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.*;
import com.win.module.wms.dal.dataobject.inventorymoveJob.InventorymoveJobMainDO;
@ -19,6 +49,7 @@ import com.win.module.wms.convert.inventorymoveJob.InventorymoveJobMainConvert;
import com.win.module.wms.dal.mysql.inventorymoveJob.InventorymoveJobMainMapper;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
import static com.win.module.wms.enums.ErrorCodeConstants.*;
/**
@ -32,6 +63,30 @@ public class InventorymoveJobMainServiceImpl implements InventorymoveJobMainServ
@Resource
private InventorymoveJobMainMapper inventorymoveJobMainMapper;
@Resource
private AdminUserApi userApi;
@Resource
private TrendsApi trendsApi;
@Resource
private SerialNumberApi serialNumberApi;
@Resource
private InventorymoveJobDetailService inventorymoveJobDetailService;
@Resource
private JobUtils jobUtils;
@Resource
private RecordsettingService recordsettingService;
@Resource
private InventorymoveJobDetailMapper inventorymoveJobDetailMapper;
@Resource
private InventorymoveRecordMainMapper inventorymoveRecordMainMapper;
@Resource
private InventorymoveRecordDetailMapper inventorymoveRecordDetailMapper;
@Resource
private ExpectoutService expectoutService;
@Resource
private ExpectinService expectinService;
@Resource
private TransactionService transactionService;
@Override
public Long createInventorymoveJobMain(InventorymoveJobMainCreateReqVO createReqVO) {
@ -59,9 +114,12 @@ public class InventorymoveJobMainServiceImpl implements InventorymoveJobMainServ
inventorymoveJobMainMapper.deleteById(id);
}
private void validateInventorymoveJobMainExists(Long id) {
if (inventorymoveJobMainMapper.selectById(id) == null) {
private InventorymoveJobMainDO validateInventorymoveJobMainExists(Long id) {
InventorymoveJobMainDO inventorymoveJobMainDO = inventorymoveJobMainMapper.selectById(id);
if (inventorymoveJobMainDO == null) {
throw exception(INVENTORYMOVE_JOB_MAIN_NOT_EXISTS);
} else {
return inventorymoveJobMainDO;
}
}
@ -84,10 +142,12 @@ public class InventorymoveJobMainServiceImpl implements InventorymoveJobMainServ
public List<InventorymoveJobMainDO> getInventorymoveJobMainList(InventorymoveJobMainExportReqVO exportReqVO) {
return inventorymoveJobMainMapper.selectList(exportReqVO);
}
@Override
public PageResult<InventorymoveJobMainDO> getInventorymoveJobMainSenior(CustomConditions conditions) {
return inventorymoveJobMainMapper.selectSenior(conditions);
}
@Override
public InventorymoveJobMainDO inventorymoveJobMainDoStatusRight(String pnumber, String pstatus) {
QueryWrapper queryWrapper = new QueryWrapper();
@ -101,6 +161,11 @@ public class InventorymoveJobMainServiceImpl implements InventorymoveJobMainServ
}
}
@Override
public List<InventorymoveJobMainDO> getInventorymoveJobMainList(CustomConditions conditions) {
return inventorymoveJobMainMapper.selectSeniorList(conditions);
}
@Override
public Map<String, Integer> getCountByStatus(Collection<String> types) {
Long l = inventorymoveJobMainMapper.selectListCount(types);
@ -109,4 +174,197 @@ public class InventorymoveJobMainServiceImpl implements InventorymoveJobMainServ
map.put("count", l.intValue());
return map;
}
@Override
@Transactional
public Integer acceptInventorymoveJobMain(Long id) {
InventorymoveJobMainDO inventorymoveJobMainDO = this.validateInventorymoveJobMainExists(id);
JobStatusState jobStatusState = new JobStatusState(inventorymoveJobMainDO.getStatus());
if (!jobStatusState.accept()) {
throw exception(DELIVER_JOB_MAIN_STATUS_ERROR);
}
Long userId = getLoginUserId();
AdminUserRespDTO userRespDTO = userApi.getUser(userId);
inventorymoveJobMainDO.setStatus(jobStatusState.getState().getCode());
inventorymoveJobMainDO.setAcceptUserId(String.valueOf(userId));
inventorymoveJobMainDO.setAcceptUserName(userRespDTO.getNickname());
inventorymoveJobMainDO.setAcceptTime(LocalDateTime.now());
trendsApi.createTrends(id, "MoveJob", "承接了库存转移任务", TrendsTypeEnum.UPDATE);
return inventorymoveJobMainMapper.updateById(inventorymoveJobMainDO);
}
@Override
@Transactional
public Integer abandonInventorymoveJobMain(Long id) {
InventorymoveJobMainDO inventorymoveJobMainDO = this.validateInventorymoveJobMainExists(id);
JobStatusState jobStatusState = new JobStatusState(inventorymoveJobMainDO.getStatus());
if (!jobStatusState.cancelAccept()) {
throw exception(DELIVER_JOB_MAIN_STATUS_ERROR);
}
inventorymoveJobMainDO.setStatus(jobStatusState.getState().getCode());
inventorymoveJobMainDO.setAcceptUserId(null);
inventorymoveJobMainDO.setAcceptUserName(null);
inventorymoveJobMainDO.setAcceptTime(null);
trendsApi.createTrends(id, "MoveJob", "取消了库存转移任务", TrendsTypeEnum.UPDATE);
return inventorymoveJobMainMapper.updateById(inventorymoveJobMainDO);
}
@Override
@Transactional
public Integer closeInventorymoveJobMain(Long id) {
InventorymoveJobMainDO inventorymoveJobMainDO = this.validateInventorymoveJobMainExists(id);
JobStatusState jobStatusState = new JobStatusState(inventorymoveJobMainDO.getStatus());
if (!jobStatusState.close()) {
throw exception(DELIVER_JOB_MAIN_STATUS_ERROR);
}
inventorymoveJobMainDO.setStatus(jobStatusState.getState().getCode());
trendsApi.createTrends(id, "MoveJob", "关闭了库存转移任务", TrendsTypeEnum.UPDATE);
return inventorymoveJobMainMapper.updateById(inventorymoveJobMainDO);
}
@Override
@Transactional
public String executeInventorymoveJobMain(InventorymoveJobMainUpdateReqVO inventorymoveJobMainUpdateReqVO) {
RecordsettingDO recordsettingDO = null;
BusinesstypeDO businesstypeDO = null;
String number = "";
//查询数据
InventorymoveJobMainDO inventorymoveJobMainDO = this.validateInventorymoveJobMainExists(inventorymoveJobMainUpdateReqVO.getId());
List<InventorymoveJobDetailDO> subList = inventorymoveJobDetailService.selectList(inventorymoveJobMainDO.getId());
JobStatusState jobStatusState = new JobStatusState(inventorymoveJobMainDO.getStatus());
boolean flag = jobStatusState.execute();
if (!flag) {
throw new ServiceException(INVENTORYMOVE_JOB_MAIN_STATUS_ERROR);
}
//更新完成信息
Long userId = getLoginUserId();
AdminUserRespDTO userRespDTO = userApi.getUser(userId);
inventorymoveJobMainDO.setStatus(jobStatusState.getState().getCode());
inventorymoveJobMainDO.setCompleteTime(LocalDateTime.now());
inventorymoveJobMainDO.setCompleteUserId(String.valueOf(userRespDTO.getId()));
inventorymoveJobMainDO.setCompleteUserName(userRespDTO.getNickname());
//更新任务表状态
int result = inventorymoveJobMainMapper.updateById(inventorymoveJobMainDO);
//创建客户收货记录主表
InventorymoveRecordMainDO inventorymoveRecordMainDO = new InventorymoveRecordMainDO();
BeanUtils.copyProperties(inventorymoveJobMainDO, inventorymoveRecordMainDO);
inventorymoveRecordMainDO.setJobNumber(inventorymoveJobMainDO.getNumber());
inventorymoveRecordMainDO.setId(null);
inventorymoveRecordMainDO.setAvailable("TRUE");
inventorymoveRecordMainDO.setExecuteTime(LocalDateTime.now());
inventorymoveRecordMainDO.setActiveDate(LocalDateTime.now());
inventorymoveRecordMainDO.setDueTime(inventorymoveJobMainDO.getRequestDueTime());
if("HoldToOkJob".equals(inventorymoveRecordMainDO.getBusinessType())){
number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_OK_RECORD.getCode());
recordsettingDO = recordsettingService.selectRecordsettingExist("HoldToOkRecord");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToOkRecord");
} else if("OkToHoldJob".equals(inventorymoveRecordMainDO.getBusinessType())){
number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_HOLD_RECORD.getCode());
recordsettingDO = recordsettingService.selectRecordsettingExist("OkToHoldRecord");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToHoldRecord");
} else if("HoldToScrapJob".equals(inventorymoveRecordMainDO.getBusinessType())){
number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_SCRAP_RECORD.getCode());
recordsettingDO = recordsettingService.selectRecordsettingExist("HoldToScrapRecord");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToScrapRecord");
} else if("ScrapToHoldJob".equals(inventorymoveRecordMainDO.getBusinessType())){
number = serialNumberApi.generateCode(RuleCodeEnum.SCRAP_TO_HOLD_RECORD.getCode());
recordsettingDO = recordsettingService.selectRecordsettingExist("ScrapToHoldRecord");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ScrapToHoldRecord");
} else if("OkToScrapJob".equals(inventorymoveRecordMainDO.getBusinessType())){
number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_SCRAP_RECORD.getCode());
recordsettingDO = recordsettingService.selectRecordsettingExist("OkToScrapRecord");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToScrapRecord");
}
inventorymoveRecordMainDO.setNumber(number);
inventorymoveRecordMainDO.setBusinessType(businesstypeDO.getCode());
inventorymoveRecordMainDO.setOutTransactionType(businesstypeDO.getOutTransactionType());
inventorymoveRecordMainDO.setInTransactionType(businesstypeDO.getInTransactionType());
inventorymoveRecordMainDO.setInterfaceType(recordsettingDO.getInterfaceType());
inventorymoveRecordMainMapper.insert(inventorymoveRecordMainDO);
List<InventorymoveJobDetailUpdateReqVO> inventorymoveJobDetailUpdateReqVOList = inventorymoveJobMainUpdateReqVO.getSubList();
List<InventorymoveRecordDetailDO> inventorymoveRecordDetailDOList = new ArrayList<>();
//库存事务
List<TransactionCreateReqVO> transactionCreateReqVOList = new ArrayList<>();
subList.forEach(subListItem -> {
inventorymoveJobDetailUpdateReqVOList.forEach(DetailUpdateItem -> {
// 匹配任务子表与参数中子表
if (DetailUpdateItem.getId().equals(subListItem.getId())) {
List<Map<String,String>> recordList = DetailUpdateItem.getRecordList();
recordList.forEach(recordLstItem -> {InventorymoveRecordDetailDO inventorymoveRecordDetailDO = new InventorymoveRecordDetailDO();
BeanUtils.copyProperties(DetailUpdateItem, inventorymoveRecordDetailDO);
inventorymoveRecordDetailDO.setJobDetailId(DetailUpdateItem.getId().toString());
inventorymoveRecordDetailDO.setId(null);
inventorymoveRecordDetailDO.setCreator(null);
inventorymoveRecordDetailDO.setCreateTime(null);
inventorymoveRecordDetailDO.setUpdater(null);
inventorymoveRecordDetailDO.setUpdateTime(null);
inventorymoveRecordDetailDO.setNumber(inventorymoveRecordMainDO.getNumber());
inventorymoveRecordDetailDO.setInterfaceType(inventorymoveRecordMainDO.getInterfaceType());
inventorymoveRecordDetailDO.setMasterId(inventorymoveRecordMainDO.getId().toString());
inventorymoveRecordDetailDO.setQty(new BigDecimal(recordLstItem.get("handleQty")));
inventorymoveRecordDetailDO.setToPackingNumber(recordLstItem.get("toPackingNumber")==null?"":recordLstItem.get("toPackingNumber"));
inventorymoveRecordDetailDO.setToContainerNumber(recordLstItem.get("toContainerNumber")==null?"":recordLstItem.get("toContainerNumber"));
inventorymoveRecordDetailDO.setToBatch(recordLstItem.get("toBatch")==null?"":recordLstItem.get("toBatch"));
inventorymoveRecordDetailDO.setToLocationCode(recordLstItem.get("toLocationCode"));
inventorymoveRecordDetailDO.setToInventoryStatus(recordLstItem.get("toInventoryStatus"));
inventorymoveRecordDetailDO.setFromPackingNumber(DetailUpdateItem.getPackingNumber());
inventorymoveRecordDetailDO.setFromContainerNumber(DetailUpdateItem.getContainerNumber());
inventorymoveRecordDetailDO.setFromAreaCode(inventorymoveJobMainDO.getFromAreaCodes());
inventorymoveRecordDetailDO.setToAreaCode(inventorymoveJobMainDO.getToAreaCodes());
inventorymoveRecordDetailDO.setFromBatch(DetailUpdateItem.getBatch());
inventorymoveRecordDetailDO.setFromInventoryStatus(DetailUpdateItem.getInventoryStatus());
inventorymoveRecordDetailDOList.add(inventorymoveRecordDetailDO);
//添加库存事务list
// 入动作
TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO();
BeanUtils.copyProperties(inventorymoveRecordDetailDO, transactionCreateReqVO);
TransactiontypeDO transactiontypeDO = jobUtils.selectDocumentFromTransactionType(inventorymoveRecordMainDO.getInTransactionType());
transactionCreateReqVO.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId()));
transactionCreateReqVO.setInventoryAction(transactiontypeDO.getInventoryAction());
transactionCreateReqVO.setTransactionType(transactiontypeDO.getCode());
transactionCreateReqVO.setBusinessType(inventorymoveJobMainDO.getBusinessType());
transactionCreateReqVO.setOwnerCode(inventorymoveRecordDetailDO.getFromOwnerCode());
transactionCreateReqVO.setRecordNumber(inventorymoveRecordMainDO.getNumber());
transactionCreateReqVO.setId(null);
transactionCreateReqVO.setPackingNumber(DetailUpdateItem.getPackingNumber());
transactionCreateReqVO.setBatch(DetailUpdateItem.getBatch());
transactionCreateReqVO.setContainerNumber(DetailUpdateItem.getContainerNumber());
transactionCreateReqVO.setInventoryStatus(DetailUpdateItem.getInventoryStatus());
transactionCreateReqVO.setAmount(BigDecimal.ZERO);
transactionCreateReqVO.setLocationCode(recordLstItem.get("toLocationCode").toString());
transactionCreateReqVOList.add(transactionCreateReqVO);
// 出动作
TransactionCreateReqVO transactionCreateReqVOOut = new TransactionCreateReqVO();
BeanUtils.copyProperties(inventorymoveRecordDetailDO, transactionCreateReqVOOut);
TransactiontypeDO transactiontypeDOOut = jobUtils.selectDocumentFromTransactionType(inventorymoveRecordMainDO.getOutTransactionType());
transactionCreateReqVOOut.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId()));
transactionCreateReqVOOut.setInventoryAction(transactiontypeDOOut.getInventoryAction());
transactionCreateReqVOOut.setTransactionType(transactiontypeDOOut.getCode());
transactionCreateReqVOOut.setBusinessType(inventorymoveJobMainDO.getBusinessType());
transactionCreateReqVOOut.setOwnerCode(inventorymoveRecordDetailDO.getFromOwnerCode());
transactionCreateReqVOOut.setRecordNumber(inventorymoveRecordMainDO.getNumber());
transactionCreateReqVOOut.setId(null);
transactionCreateReqVOOut.setPackingNumber(DetailUpdateItem.getPackingNumber());
transactionCreateReqVOOut.setBatch(DetailUpdateItem.getBatch());
transactionCreateReqVOOut.setContainerNumber(DetailUpdateItem.getContainerNumber());
transactionCreateReqVOOut.setInventoryStatus(DetailUpdateItem.getInventoryStatus());
transactionCreateReqVOOut.setAmount(BigDecimal.ZERO);
transactionCreateReqVOOut.setLocationCode(subListItem.getFromLocationCode());
transactionCreateReqVOList.add(transactionCreateReqVOOut);});
}
});
});
if(!inventorymoveRecordDetailDOList.isEmpty()) {
inventorymoveRecordDetailMapper.insertBatch(inventorymoveRecordDetailDOList);
}
//增加库存事务
transactionService.createTransaction(transactionCreateReqVOList);
//移除预计入
expectinService.deleteExpectinByJobNumber(inventorymoveJobMainDO.getNumber());
//移除预计出
expectoutService.deleteExpectoutByJobNumber(inventorymoveJobMainDO.getNumber());
//变更记录
trendsApi.createTrends(inventorymoveJobMainDO.getId(), inventorymoveJobMainDO.getBusinessType(), "执行了库存转移任务", TrendsTypeEnum.UPDATE);
return number;
}
}

1
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRecord/InventorymoveRecordDetailService.java

@ -80,4 +80,5 @@ public interface InventorymoveRecordDetailService {
*/
List<InventorymoveRecordDetailDO> getInventorymoveRecordDetailList(InventorymoveRecordDetailExportReqVO exportReqVO);
List<InventorymoveRecordDetailDO> selectList(Long masterId);
}

5
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRecord/InventorymoveRecordDetailServiceImpl.java

@ -5,6 +5,7 @@ import com.win.module.wms.controller.inventorymoveRecord.vo.InventorymoveRecordD
import com.win.module.wms.controller.inventorymoveRecord.vo.InventorymoveRecordDetailExportReqVO;
import com.win.module.wms.controller.inventorymoveRecord.vo.InventorymoveRecordDetailPageReqVO;
import com.win.module.wms.controller.inventorymoveRecord.vo.InventorymoveRecordDetailUpdateReqVO;
import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestDetailDO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
@ -87,4 +88,8 @@ public class InventorymoveRecordDetailServiceImpl implements InventorymoveRecord
return inventorymoveRecordDetailMapper.selectList(exportReqVO);
}
@Override
public List<InventorymoveRecordDetailDO> selectList(Long masterId) {
return inventorymoveRecordDetailMapper.selectList(masterId);
}
}

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRecord/InventorymoveRecordMainService.java

@ -10,6 +10,7 @@ import com.win.module.wms.controller.inventorymoveRecord.vo.InventorymoveRecordM
import com.win.module.wms.controller.inventorymoveRecord.vo.InventorymoveRecordMainUpdateReqVO;
import com.win.module.wms.dal.dataobject.inventorymoveRecord.InventorymoveRecordMainDO;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestMainDO;
/**
* 库存转移记录主 Service 接口
@ -80,4 +81,5 @@ public interface InventorymoveRecordMainService {
*/
List<InventorymoveRecordMainDO> getInventorymoveRecordMainList(InventorymoveRecordMainExportReqVO exportReqVO);
List<InventorymoveRecordMainDO> getInventorymoveRecordMainList(CustomConditions conditions);
}

5
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRecord/InventorymoveRecordMainServiceImpl.java

@ -5,6 +5,7 @@ import com.win.module.wms.controller.inventorymoveRecord.vo.InventorymoveRecordM
import com.win.module.wms.controller.inventorymoveRecord.vo.InventorymoveRecordMainExportReqVO;
import com.win.module.wms.controller.inventorymoveRecord.vo.InventorymoveRecordMainPageReqVO;
import com.win.module.wms.controller.inventorymoveRecord.vo.InventorymoveRecordMainUpdateReqVO;
import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestMainDO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
@ -88,4 +89,8 @@ public class InventorymoveRecordMainServiceImpl implements InventorymoveRecordMa
return inventorymoveRecordMainMapper.selectList(exportReqVO);
}
@Override
public List<InventorymoveRecordMainDO> getInventorymoveRecordMainList(CustomConditions conditions) {
return inventorymoveRecordMainMapper.selectSeniorList(conditions);
}
}

1
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRequest/InventorymoveRequestDetailService.java

@ -80,4 +80,5 @@ public interface InventorymoveRequestDetailService {
*/
List<InventorymoveRequestDetailDO> getInventorymoveRequestDetailList(InventorymoveRequestDetailExportReqVO exportReqVO);
List<InventorymoveRequestDetailDO> selectList(Long masterId);
}

5
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRequest/InventorymoveRequestDetailServiceImpl.java

@ -12,6 +12,7 @@ import com.win.module.wms.convert.productputawayRequest.ProductputawayRequestMai
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.inventorymoveRequest.InventorymoveRequestMainDO;
import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestDetailDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestMainDO;
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO;
@ -159,4 +160,8 @@ public class InventorymoveRequestDetailServiceImpl implements InventorymoveReque
return inventorymoveRequestDetailMapper.selectList(exportReqVO);
}
@Override
public List<InventorymoveRequestDetailDO> selectList(Long masterId) {
return inventorymoveRequestDetailMapper.selectList(masterId);
}
}

44
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRequest/InventorymoveRequestMainService.java

@ -85,7 +85,49 @@ public interface InventorymoveRequestMainService {
* @param updatePart 是否支持更新
* @return 导入结果
*/
public List<InventorymoveRequestMainImportErrorVO> importInventorymoveRequestMainList(List<InventorymoveRequestMainCreateReqVO> datas, Integer mode, boolean updatePart);
public List<InventorymoveRequestMainImportErrorVO> importInventorymoveRequestMainList(List<InventorymoveRequestMainCreateReqVO> datas, Integer mode, String fromInventoryStatus , String toInventoryStatus ,boolean updatePart);
/**
* 关闭
* @param id
* @return
*/
public Integer closeInventorymoveRequestMain(Long id);
/**
* 重新添加
* @param id
* @return
*/
public Integer reAddInventorymoveRequestMain(Long id);
/**
* 提交
* @param id
* @return
*/
public Integer submitInventorymoveRequestMain(Long id);
/**
* 审批通过
* @param id
* @return
*/
public Integer agreeInventorymoveRequestMain(Long id);
/**
* 执行
* @param id
* @return
*/
public Integer handleInventorymoveRequestMain(Long id);
/**
* 审批驳回
* @param id
* @return
*/
public Integer abortInventorymoveRequestMain(Long id);
List<InventorymoveRequestMainDO> getInventorymoveRequestMainList(CustomConditions conditions);
}

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

@ -1,68 +1,68 @@
package com.win.module.wms.service.inventorymoveRequest;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.exceptions.UtilException;
import com.win.framework.common.exception.ServiceException;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.common.util.validation.ValidationUtils;
import com.win.framework.dict.core.util.DictFrameworkUtils;
import com.win.module.infra.api.trends.TrendsApi;
import com.win.module.infra.enums.TrendsTypeEnum;
import com.win.module.system.api.dict.DictDataApi;
import com.win.module.system.api.dict.dto.DictDataRespDTO;
import com.win.module.system.api.serialnumber.SerialNumberApi;
import com.win.module.system.api.user.AdminUserApi;
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.inventorymoveRecord.vo.InventorymoveRecordDetailCreateReqVO;
import com.win.module.wms.controller.inventorymoveRecord.vo.InventorymoveRecordMainCreateReqVO;
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.ProductputawayRequestMainBaseVO;
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainCreateReqVO;
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.inventorymoveRecord.InventorymoveRecordDetailConvert;
import com.win.module.wms.convert.inventorymoveRecord.InventorymoveRecordMainConvert;
import com.win.module.wms.convert.inventorymoveRequest.InventorymoveRequestDetailConvert;
import com.win.module.wms.convert.inventorymoveRequest.InventorymoveRequestMainConvert;
import com.win.module.wms.convert.productputawayRequest.ProductputawayRequestDetailConvert;
import com.win.module.wms.convert.productputawayRequest.ProductputawayRequestMainConvert;
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.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.inventorymoveRequest.InventorymoveRequestMainDO;
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.InventorymoveRequestMainDO;
import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.jobsetting.JobsettingDO;
import com.win.module.wms.dal.dataobject.location.LocationDO;
import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestDetailDO;
import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestMainDO;
import com.win.module.wms.dal.dataobject.recordsetting.RecordsettingDO;
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.inventorymoveRecord.InventorymoveRecordDetailMapper;
import com.win.module.wms.dal.mysql.inventorymoveRecord.InventorymoveRecordMainMapper;
import com.win.module.wms.dal.mysql.inventorymoveRequest.InventorymoveRequestDetailMapper;
import com.win.module.wms.dal.mysql.inventorymoveRequest.InventorymoveRequestMainMapper;
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.RequestStatusState;
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.jobsetting.JobsettingService;
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.util.JobUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import javax.validation.Validator;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.module.wms.enums.ErrorCodeConstants.*;
@ -90,12 +90,16 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest
@Resource
private ItembasicService itembasicService;
@Resource
private InventorymoveRecordMainMapper inventorymoveRecordMainMapper;
@Resource
private InventorymoveRecordDetailMapper inventorymoveRecordDetailMapper;
@Resource
private SerialNumberApi serialNumberApi;
@Resource
private JobsettingService jobsettingService;
@Resource
private RecordsettingService recordsettingService;
@Resource
private RequestsettingService requestsettingService;
@Resource
@ -108,24 +112,26 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest
private ExpectoutService expectoutService;
@Resource
private ExpectinService expectinService;
@Resource
private AdminUserApi userApi;
@Override
public Long createInventorymoveRequestMain(InventorymoveRequestMainCreateReqVO createReqVO) {
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("MoveRequest");
// 插入
InventorymoveRequestMainDO inventorymoveRequestMain = validatorToCreate(createReqVO,requestsettingDO);
InventorymoveRequestMainDO inventorymoveRequestMain = validatorToCreate(createReqVO);
if (RequestStatusEnum.HANDLING.getCode().equals(inventorymoveRequestMain.getStatus())) {
generateJob(inventorymoveRequestMain, inventorymoveRequestDetailMapper.selectList(inventorymoveRequestMain.getId()));
}
trendsApi.createTrends(requestsettingDO.getId(), "MoveRequest", "增加了库存移动申请", TrendsTypeEnum.CREATE);
trendsApi.createTrends(inventorymoveRequestMain.getId(), inventorymoveRequestMain.getBusinessType(), "增加了库存移动申请", TrendsTypeEnum.CREATE);
return inventorymoveRequestMain.getId();
}
private InventorymoveRequestMainDO validatorToCreate(InventorymoveRequestMainCreateReqVO createReqVO, RequestsettingDO requestsettingDO) {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("MoveRequest");
InventorymoveRequestMainDO inventorymoveRequestMainDO = validateMainMethod(createReqVO,businesstypeDO,requestsettingDO);
private InventorymoveRequestMainDO validatorToCreate(InventorymoveRequestMainCreateReqVO createReqVO) {
InventorymoveRequestMainDO inventorymoveRequestMainDO = validateMainMethod(createReqVO);
List<InventorymoveRequestDetailCreateReqVO> subList = createReqVO.getSubList();
List<InventorymoveRequestDetailDO> subDOList = InventorymoveRequestDetailConvert.INSTANCE.convertList03(subList);
for (InventorymoveRequestDetailDO inventorymoveRequestDetailDO : subDOList) {
validateDetailMethod(inventorymoveRequestDetailDO,businesstypeDO,inventorymoveRequestMainDO);
validateDetailMethod(inventorymoveRequestDetailDO, inventorymoveRequestMainDO);
}
String number = serialNumberApi.generateCode(RuleCodeEnum.INVENTORY_MOVE_REQUEST.getCode());
inventorymoveRequestMainDO.setNumber(number);
@ -138,37 +144,81 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest
return inventorymoveRequestMainDO;
}
private void validateDetailMethod(InventorymoveRequestDetailDO inventorymoveRequestDetailDO, BusinesstypeDO businesstypeDO, InventorymoveRequestMainDO productputawayRequestMainDO) {
private void validateDetailMethod(InventorymoveRequestDetailDO inventorymoveRequestDetailDO, InventorymoveRequestMainDO inventorymoveRequestMainDO) {
inventorymoveRequestDetailDO.setCreateTime(LocalDateTime.now());
ItembasicDO itembasic = validteitem(inventorymoveRequestDetailDO);
inventorymoveRequestDetailDO.setItemDesc1(itembasic.getDesc1());
inventorymoveRequestDetailDO.setItemDesc2(itembasic.getDesc2());
inventorymoveRequestDetailDO.setItemName(itembasic.getName());
inventorymoveRequestDetailDO.setProjectCode(itembasic.getProject());
inventorymoveRequestDetailDO.setUom(itembasic.getUom());
jobUtils.ifInToLocationType(inventorymoveRequestDetailDO.getFromLocationCode(), businesstypeDO);
jobUtils.ifOutInventoryStatuses(inventorymoveRequestDetailDO.getFromInventoryStatus(), businesstypeDO);
validatelocation(inventorymoveRequestMainDO, inventorymoveRequestDetailDO);
ItembasicDO itembasicDO = validteitembasic(inventorymoveRequestDetailDO);
//校验库存余额是否存在
List<String> inventoryStatus = new ArrayList<>();
//隔离转合格申请
if ("HOLD".equals(inventorymoveRequestDetailDO.getFromInventoryStatus()) && "OK".equals(inventorymoveRequestDetailDO.getToInventoryStatus())) {
inventoryStatus.add("HOLD");
String OkToScrapRequest = "HoldToOkRequest";
CreateBusinessTypeAndRequestSetting(inventorymoveRequestMainDO,inventorymoveRequestDetailDO,itembasicDO,OkToScrapRequest);
}
//合格转隔离申请
if ("OK".equals(inventorymoveRequestDetailDO.getFromInventoryStatus()) && "HOLD".equals(inventorymoveRequestDetailDO.getToInventoryStatus())) {
inventoryStatus.add("OK");
String OkToScrapRequest = "OkToHoldRequest";
CreateBusinessTypeAndRequestSetting(inventorymoveRequestMainDO,inventorymoveRequestDetailDO,itembasicDO,OkToScrapRequest);
}
//隔离转报废申请
if ("HOLD".equals(inventorymoveRequestDetailDO.getFromInventoryStatus()) && "SCRAP".equals(inventorymoveRequestDetailDO.getToInventoryStatus())) {
inventoryStatus.add("HOLD");
String OkToScrapRequest = "HoldToScrapRequest";
CreateBusinessTypeAndRequestSetting(inventorymoveRequestMainDO,inventorymoveRequestDetailDO,itembasicDO,OkToScrapRequest);
}
//报废转隔离申请
if ("SCRAP".equals(inventorymoveRequestDetailDO.getFromInventoryStatus())&& "HOLD".equals(inventorymoveRequestDetailDO.getToInventoryStatus())) {
inventoryStatus.add("SCRAP");
String OkToScrapRequest = "ScrapToHoldRequest";
CreateBusinessTypeAndRequestSetting(inventorymoveRequestMainDO,inventorymoveRequestDetailDO,itembasicDO,OkToScrapRequest);
}
//合格转报废申请
if ("OK".equals(inventorymoveRequestDetailDO.getFromInventoryStatus())&& "SCRAP".equals(inventorymoveRequestDetailDO.getToInventoryStatus())) {
inventoryStatus.add("SCRAP");
String OkToScrapRequest = "OkToScrapRequest";
CreateBusinessTypeAndRequestSetting(inventorymoveRequestMainDO,inventorymoveRequestDetailDO,itembasicDO,OkToScrapRequest);
}
validtebalance(inventorymoveRequestDetailDO);
inventorymoveRequestDetailDO.setToBatch(inventorymoveRequestDetailDO.getFromBatch());
inventorymoveRequestDetailDO.setToContainerNumber(inventorymoveRequestDetailDO.getFromContainerNumber());
inventorymoveRequestDetailDO.setToPackingNumber(inventorymoveRequestDetailDO.getFromPackingNumber());
}
private InventorymoveRequestMainDO validateMainMethod(InventorymoveRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO){
InventorymoveRequestMainDO inventorymoveRequestMainDO = InventorymoveRequestMainConvert.INSTANCE.convert(baseVO);
inventorymoveRequestMainDO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
inventorymoveRequestMainDO.setCreateTime(LocalDateTime.now());
inventorymoveRequestMainDO.setAutoAgree(requestsettingDO.getAutoAgree());
//子表校验来源库位基础信息
private void CreateBusinessTypeAndRequestSetting(InventorymoveRequestMainDO inventorymoveRequestMainDO, InventorymoveRequestDetailDO inventorymoveRequestDetailDO, ItembasicDO itembasicDO, String businesstypeCode) {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType(businesstypeCode);
inventorymoveRequestMainDO.setBusinessType(businesstypeDO.getCode());
if (itembasicDO != null){
jobUtils.ifInType(itembasicDO.getType(), businesstypeDO);
}
jobUtils.ifInInventoryStatuses(inventorymoveRequestDetailDO.getFromInventoryStatus(), businesstypeDO);
jobUtils.ifInFromLocationType(inventorymoveRequestDetailDO.getFromLocationCode(), businesstypeDO);
jobUtils.ifInToLocationType(inventorymoveRequestDetailDO.getToLocationCode(), businesstypeDO);
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist(businesstypeCode);
if (requestsettingDO != null) {
RequestStatusState requestStatusState = new RequestStatusState();
requestStatusState.newObject(requestsettingDO.getAutoCommit(), requestsettingDO.getAutoAgree(), requestsettingDO.getAutoExecute());
inventorymoveRequestMainDO.setStatus(requestStatusState.getState().getCode());inventorymoveRequestMainDO.setAutoAgree(requestsettingDO.getAutoAgree());
inventorymoveRequestMainDO.setAutoCommit(requestsettingDO.getAutoCommit());
inventorymoveRequestMainDO.setAutoExecute(requestsettingDO.getAutoExecute());
inventorymoveRequestMainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
inventorymoveRequestMainDO.setBusinessType(businesstypeDO.getCode());
inventorymoveRequestMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes());
inventorymoveRequestMainDO.setToLocationTypes(businesstypeDO.getInLocationTypes());
inventorymoveRequestMainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes());
inventorymoveRequestMainDO.setToAreaCodes(businesstypeDO.getInAreaCodes());
return inventorymoveRequestMainDO;
inventorymoveRequestMainDO.setInInventoryStatuses(businesstypeDO.getInInventoryStatuses());
inventorymoveRequestMainDO.setOutInventoryStatuses(businesstypeDO.getOutInventoryStatuses());
inventorymoveRequestMainDO.setRequestTime(LocalDateTime.now());
}
RequestStatusState requestStatusState = new RequestStatusState();
requestStatusState.newObject(requestsettingDO.getAutoCommit(), requestsettingDO.getAutoAgree(), requestsettingDO.getAutoExecute());
inventorymoveRequestMainDO.setStatus(requestStatusState.getState().getCode());
}
private InventorymoveRequestMainDO validateMainMethod(InventorymoveRequestMainBaseVO baseVO) {
InventorymoveRequestMainDO inventorymoveRequestMainDO = InventorymoveRequestMainConvert.INSTANCE.convert(baseVO);
inventorymoveRequestMainDO.setCreateTime(LocalDateTime.now());
return inventorymoveRequestMainDO;
}
@Override
public void updateInventorymoveRequestMain(InventorymoveRequestMainUpdateReqVO updateReqVO) {
@ -176,22 +226,22 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest
// 校验存在
validateInventorymoveRequestMainExists(updateReqVO.getId());
// 更新
InventorymoveRequestMainDO inventorymoveRequestMainDO = validatorToUpdate(updateReqVO, requestsettingDO);
InventorymoveRequestMainDO inventorymoveRequestMainDO = validatorToUpdate(updateReqVO);
if (RequestStatusEnum.HANDLING.getCode().equals(inventorymoveRequestMainDO.getStatus())) {
}
trendsApi.createTrends(requestsettingDO.getId(), "MoveRequest", "增加了库存移动申请", TrendsTypeEnum.CREATE);
}
private InventorymoveRequestMainDO validatorToUpdate(InventorymoveRequestMainUpdateReqVO updateReqVO, RequestsettingDO requestsettingDO) {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("MoveRequest");
InventorymoveRequestMainDO inventorymoveRequestMainDO = validateMainMethod(updateReqVO,businesstypeDO,requestsettingDO);
private InventorymoveRequestMainDO validatorToUpdate(InventorymoveRequestMainUpdateReqVO updateReqVO) {
InventorymoveRequestMainDO inventorymoveRequestMainDO = validateMainMethod(updateReqVO);
//子表校验
List<InventorymoveRequestDetailUpdateReqVO> subList = updateReqVO.getSubList();
if (!subList.isEmpty()) {
List<InventorymoveRequestDetailDO> subDOList = InventorymoveRequestDetailConvert.INSTANCE.convertList05(subList);
for (InventorymoveRequestDetailDO inventorymoveRequestDetailDO : subDOList) {
validateDetailMethod(inventorymoveRequestDetailDO, businesstypeDO, inventorymoveRequestMainDO);
validateDetailMethod(inventorymoveRequestDetailDO, inventorymoveRequestMainDO);
}
inventorymoveRequestDetailMapper.updateBatch(subDOList);
}
@ -200,7 +250,6 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest
}
@Override
public void deleteInventorymoveRequestMain(Long id) {
// 校验存在
@ -209,15 +258,15 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest
inventorymoveRequestMainMapper.deleteById(id);
}
private void validateInventorymoveRequestMainExists(Long id) {
if (inventorymoveRequestMainMapper.selectById(id) == null) {
private InventorymoveRequestMainDO validateInventorymoveRequestMainExists(Long id) {
InventorymoveRequestMainDO inventorymoveRequestMainDO = inventorymoveRequestMainMapper.selectById(id);
if (inventorymoveRequestMainDO == null) {
throw exception(INVENTORYMOVE_REQUEST_MAIN_NOT_EXISTS);
} else {
return inventorymoveRequestMainDO;
}
}
@Resource
private DictDataApi dictDataApi;
@Override
public InventorymoveRequestMainDO getInventorymoveRequestMain(Long id) {
return inventorymoveRequestMainMapper.selectById(id);
@ -243,27 +292,14 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest
return inventorymoveRequestMainMapper.selectList(exportReqVO);
}
private String validateInventorymoveRequestMainImport(InventorymoveRequestMainDO mainDo, BusinesstypeDO businesstypeDO) {
/**
* 主表导入验证
*
* @param mainDo
* @return
*/
private String validateInventorymoveRequestMainImport(InventorymoveRequestMainDO mainDo) {
StringBuilder message = new StringBuilder();
mainDo.setCreateTime(LocalDateTime.now());
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("MoveRequest");
if (requestsettingDO == null) {
message.append("未查找到制品上架申请的相关申请设置");
} else {
mainDo.setAutoAgree(requestsettingDO.getAutoAgree());
mainDo.setAutoCommit(requestsettingDO.getAutoCommit());
mainDo.setAutoExecute(requestsettingDO.getAutoExecute());
mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
if (businesstypeDO == null) {
message.append("根据单据设置未查找到制品上架申请的相关业务类型");
} else {
mainDo.setBusinessType(businesstypeDO.getCode());
mainDo.setFromLocationTypes(businesstypeDO.getOutLocationTypes());
mainDo.setToLocationTypes(businesstypeDO.getInLocationTypes());
mainDo.setFromAreaCodes(businesstypeDO.getOutAreaCodes());
mainDo.setToAreaCodes(businesstypeDO.getInAreaCodes());
}
try {
ValidationUtils.validate(validator, mainDo);
} catch (Exception ex) {
@ -271,89 +307,273 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest
}
return message.toString();
}
private InventorymoveRequestDetailDO validatelocation(InventorymoveRequestDetailDO detailDo){
LocationDO locationDO = locationService.selectLocation(detailDo.getFromLocationCode());
if (locationDO != null) {
detailDo.setFromLocationCode(locationDO.getCode());
/**
* 校验来源/目标库位基础信息
*
* @param detailDo
* @return
*/
private void validatelocation(InventorymoveRequestMainDO mainDO, InventorymoveRequestDetailDO detailDo) {
LocationDO fromLocationDO = locationService.selectLocation(detailDo.getFromLocationCode());
if (fromLocationDO != null) {
detailDo.setFromLocationCode(fromLocationDO.getCode());
mainDO.setFromWarehouseCode(fromLocationDO.getWarehouseCode());
mainDO.setFromLocationTypes(fromLocationDO.getType());
mainDO.setFromAreaCodes(fromLocationDO.getAreaCode());
}
LocationDO toLocationDO = locationService.selectLocation(detailDo.getToLocationCode());
if (toLocationDO != null) {
detailDo.setToLocationCode(toLocationDO.getCode());
mainDO.setToWarehouseCode(toLocationDO.getWarehouseCode());
mainDO.setToLocationTypes(fromLocationDO.getType());
mainDO.setToAreaCodes(toLocationDO.getAreaCode());
}
return detailDo;
}
private ItembasicDO validteitem(InventorymoveRequestDetailDO detailDo) {
/**
* 校验物品基础信息
*
* @param detailDo
* @return
*/
private ItembasicDO validteitembasic(InventorymoveRequestDetailDO detailDo) {
ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode());
detailDo.setItemDesc1(itembasicDO.getDesc1());
detailDo.setItemDesc2(itembasicDO.getDesc2());
detailDo.setItemName(itembasicDO.getName());
detailDo.setUom(itembasicDO.getUom());
detailDo.setProjectCode(itembasicDO.getProject());
return itembasicDO;
}
/**
* 校验库存余额是否存在
*
* @param detailDo
*/
private void validtebalance(InventorymoveRequestDetailDO detailDo) {
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add(detailDo.getFromInventoryStatus());
List<BalanceDO> balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getFromPackingNumber()
jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getFromPackingNumber()
, detailDo.getFromBatch(), detailDo.getFromLocationCode(), inventoryStatus);
}
private String validateInventorymoveRequestDetailImport(InventorymoveRequestDetailDO detailDo, InventorymoveRequestMainDO mainDo, BusinesstypeDO businesstypeDO) {
StringBuilder message = new StringBuilder();
/**
* 导入子表校验
* @param mainDO
* @param detailDo
* @return
*/
private String validateInventorymoveRequestDetailImport(InventorymoveRequestMainDO mainDO, InventorymoveRequestDetailDO detailDo) {
String messageDetail = new String();
BusinesstypeDO businesstypeDO;
// 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList
try {
detailDo.setCreateTime(LocalDateTime.now());
detailDo = validatelocation(detailDo);
validatelocation(mainDO, detailDo);
} catch (Exception ex) {
message.append(ex.getMessage()).append(",");
messageDetail += ex.getMessage() + ",";
}
try {
validteitembasic(detailDo);
} catch (Exception ex) {
messageDetail += ex.getMessage() + ",";
}
// mainDo.setRequestTime(LocalDateTime.now());
// if (businesstypeDO == null) {
// message.append("根据单据设置未查找到制品上架申请的相关业务类型");
// } else {
// mainDo.setBusinessType(businesstypeDO.getCode());
// mainDo.setFromLocationTypes(businesstypeDO.getOutLocationTypes());
// mainDo.setToLocationTypes(businesstypeDO.getInLocationTypes());
// mainDo.setFromAreaCodes(businesstypeDO.getOutAreaCodes());
// mainDo.setToAreaCodes(businesstypeDO.getInAreaCodes());
// mainDo.setInInventoryStatuses(businesstypeDO.getInInventoryStatuses());
// mainDo.setOutInventoryStatuses(businesstypeDO.getOutInventoryStatuses());
// }
//隔离转合格申请
if ("HOLD".equals(detailDo.getFromInventoryStatus())) {
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add("HOLD");
String number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_OK_REQUEST.getCode());
detailDo.setNumber(number);
// 校验业务类型
try {
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToOkRequest");
mainDO.setBusinessType(businesstypeDO.getCode());
validationBusinesstype(detailDo,businesstypeDO,messageDetail);
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("HoldToOkRequest");
if (requestsettingDO != null) {
mainDO.setAutoAgree(requestsettingDO.getAutoAgree());
mainDO.setAutoCommit(requestsettingDO.getAutoCommit());
mainDO.setAutoExecute(requestsettingDO.getAutoExecute());
mainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
mainDO.setRequestTime(LocalDateTime.now());
}
}
//合格转隔离申请
if ("OK".equals(detailDo.getFromInventoryStatus())) {
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add("OK");
String number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_HOLD_REQUEST.getCode());
mainDO.setNumber(number);
// 校验业务类型
try {
ItembasicDO itembasic = validteitem(detailDo);
detailDo.setItemDesc1(itembasic.getDesc1());
detailDo.setItemDesc2(itembasic.getDesc2());
detailDo.setItemName(itembasic.getName());
detailDo.setProjectCode(itembasic.getProject());
detailDo.setUom(itembasic.getUom());
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToHoldRequest");
mainDO.setBusinessType(businesstypeDO.getCode());
validationBusinesstype(detailDo,businesstypeDO,messageDetail);
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("OkToHoldRequest");
if (requestsettingDO != null) {
mainDO.setAutoAgree(requestsettingDO.getAutoAgree());
mainDO.setAutoCommit(requestsettingDO.getAutoCommit());
mainDO.setAutoExecute(requestsettingDO.getAutoExecute());
mainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
}
//隔离转报废申请
if ("HOLD".equals(detailDo.getFromInventoryStatus())) {
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add("HOLD");
String number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_SCRAP_REQUEST.getCode());
mainDO.setNumber(number);
// 校验业务类型
try {
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToScrapRequest");
mainDO.setBusinessType(businesstypeDO.getCode());
validationBusinesstype(detailDo,businesstypeDO,messageDetail);
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("HoldToScrapRequest");
if (requestsettingDO != null) {
mainDO.setAutoAgree(requestsettingDO.getAutoAgree());
mainDO.setAutoCommit(requestsettingDO.getAutoCommit());
mainDO.setAutoExecute(requestsettingDO.getAutoExecute());
mainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
}
//报废转隔离申请
if ("SCRAP".equals(detailDo.getFromInventoryStatus())) {
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add("SCRAP");
String number = serialNumberApi.generateCode(RuleCodeEnum.SCRAP_TO_HOLD_REQUEST.getCode());
mainDO.setNumber(number);
// 校验业务类型
try {
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ScrapToHoldRequest");
mainDO.setBusinessType(businesstypeDO.getCode());
validationBusinesstype(detailDo,businesstypeDO,messageDetail);
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ScrapToHoldRequest");
if (requestsettingDO != null) {
mainDO.setAutoAgree(requestsettingDO.getAutoAgree());
mainDO.setAutoCommit(requestsettingDO.getAutoCommit());
mainDO.setAutoExecute(requestsettingDO.getAutoExecute());
mainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
}
//合格转报废
if ("Ok".equals(detailDo.getFromInventoryStatus())) {
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add("SCRAP");
String number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_SCRAP_REQUEST.getCode());
mainDO.setNumber(number);
// 校验业务类型
try {
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToScrapRequest");
mainDO.setBusinessType(businesstypeDO.getCode());
validationBusinesstype(detailDo,businesstypeDO,messageDetail);
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("OkToScrapRequest");
if (requestsettingDO != null) {
mainDO.setAutoAgree(requestsettingDO.getAutoAgree());
mainDO.setAutoCommit(requestsettingDO.getAutoCommit());
mainDO.setAutoExecute(requestsettingDO.getAutoExecute());
mainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
}
try {
validtebalance(detailDo);
} catch (Exception ex) {
message.append(ex.getMessage()).append(",");
messageDetail += ex.getMessage() + ",";
}
try {
jobUtils.ifInToLocationType(detailDo.getFromLocationCode(), businesstypeDO);
ValidationUtils.validate(validator, detailDo);
} catch (Exception ex) {
message.append(ex.getMessage()).append(",");
messageDetail += ex.getMessage() + ",";
}
return messageDetail.toString();
}
//根据业务类型进行对应校验
private void validationBusinesstype(InventorymoveRequestDetailDO detailDo, BusinesstypeDO businesstypeDO, String messageDetail) {
try {
jobUtils.ifOutInventoryStatuses(detailDo.getFromInventoryStatus(), businesstypeDO);
jobUtils.ifInFromLocationType(detailDo.getFromLocationCode(), businesstypeDO);
} catch (Exception ex) {
message.append(ex.getMessage()).append(",");
messageDetail += ex.getMessage() + ",";
}
try {
validtebalance(detailDo);
jobUtils.ifInToLocationType(detailDo.getToLocationCode(), businesstypeDO);
} catch (Exception ex) {
message.append(ex.getMessage()).append(",");
messageDetail += ex.getMessage() + ",";
}
try {
jobUtils.ifOutInventoryStatuses(detailDo.getFromInventoryStatus(), businesstypeDO);
} catch (Exception ex) {
messageDetail += ex.getMessage() + ",";
}
return message.toString();
}
/**
* 导入功能
* @param datas 导入库存转移申请信息列表
* @param mode 导入模式1更新2追加3覆盖
* @param fromInventoryStatus
* @param toInventoryStatus
* @param updatePart 是否支持更新
* @return
*/
@Override
public List<InventorymoveRequestMainImportErrorVO> importInventorymoveRequestMainList(List<InventorymoveRequestMainCreateReqVO> datas, Integer mode, boolean updatePart) {
public List<InventorymoveRequestMainImportErrorVO> importInventorymoveRequestMainList(List<InventorymoveRequestMainCreateReqVO> datas, Integer mode, String fromInventoryStatus , String toInventoryStatus ,boolean updatePart) {
if (CollUtil.isEmpty(datas)) {
throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY);
throw exception(INVENTORYMOVE_REQUEST_IMPORT_LIST_IS_EMPTY);
}
List<InventorymoveRequestMainImportErrorVO> errorList = new ArrayList<>();
datas.forEach(createReqVO -> {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("MoveRequest");
// 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList
//主表的验证
InventorymoveRequestMainDO mainDo = InventorymoveRequestMainConvert.INSTANCE.convert(createReqVO);
String messageMain = validateInventorymoveRequestMainImport(mainDo, businesstypeDO);
String messageMain = validateInventorymoveRequestMainImport(mainDo);
//TODO 暂时不考虑在途库
// if ("TRUE".equals(businesstypeDO.getUseOnTheWay())) {
// mainDo.setUseOnTheWayLocation("FAC_INTRANSIT");
// }
//子表的验证
List<InventorymoveRequestDetailCreateReqVO> subList = createReqVO.getSubList();
List<InventorymoveRequestDetailDO> subDOList = InventorymoveRequestDetailConvert.INSTANCE.convertList03(subList);
boolean flag = true;
for (InventorymoveRequestDetailDO purchaseDetailDO : subDOList) {
String messageDetail = validateInventorymoveRequestDetailImport(purchaseDetailDO, mainDo, businesstypeDO);
for (InventorymoveRequestDetailDO detailDO : subDOList) {
detailDO.setFromInventoryStatus(fromInventoryStatus);
detailDO.setToInventoryStatus(toInventoryStatus);
String messageDetail = validateInventorymoveRequestDetailImport(mainDo, detailDO);
//校验来源/目标库位基础信息
if (!"".equals(messageMain) || !"".equals(messageDetail)) {
InventorymoveRequestMainImportErrorVO importErrorVO = InventorymoveRequestMainConvert.INSTANCE.convert(createReqVO, purchaseDetailDO);
InventorymoveRequestMainImportErrorVO importErrorVO = InventorymoveRequestMainConvert.INSTANCE.convert(createReqVO, detailDO);
importErrorVO.setImportStatus("失败");
messageMain = messageMain + messageDetail;
importErrorVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1));
@ -363,13 +583,18 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest
}
//写入数据
if (flag) {
String number = serialNumberApi.generateCode(RuleCodeEnum.INVENTORY_CHANGE_REQUEST.getCode());
mainDo.setNumber(number);
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
RequestStatusState requestStatusState = new RequestStatusState();
requestStatusState.newObject(mainDo.getAutoCommit(), mainDo.getAutoAgree(), mainDo.getAutoExecute());
mainDo.setStatus(requestStatusState.getState().getCode());
mainDo.setRequestTime(LocalDateTime.now());
mainDo.setDepartmentCode(userApi.getUser(Long.valueOf(mainDo.getCreator())).getDeptId().toString());
inventorymoveRequestMainMapper.insert(mainDo);
for (InventorymoveRequestDetailDO detailDO : subDOList) {
detailDO.setMasterId(mainDo.getId());
detailDO.setNumber(number);
detailDO.setNumber(mainDo.getNumber());
detailDO.setToBatch(detailDO.getFromBatch());
detailDO.setToPackingNumber(detailDO.getFromPackingNumber());
detailDO.setToContainerNumber(detailDO.getFromContainerNumber());
}
inventorymoveRequestDetailMapper.insertBatch(subDOList);
}
@ -378,27 +603,95 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest
}
/**
* 生成采购收货任务不要改动事务传播方式否则会有事务问题
* @param mainDO 采购收货主
* @param detailDOList 采购收货子
* 生成库存转移任务不要改动事务传播方式否则会有事务问题
*
* @param mainDO 库存转移申请主
* @param detailDOList 库存转移申请子
*/
private void generateJob(InventorymoveRequestMainDO mainDO, List<InventorymoveRequestDetailDO> detailDOList) {
String number = "";
JobsettingDO jobsettingDO = null;
RecordsettingDO recordsettingDO = null;
BusinesstypeDO businesstypeDO = null;
//跳过任务直接生成记录
if ("TRUE".equals(mainDO.getDirectCreateRecord())) {
InventorymoveRecordMainCreateReqVO inventorymoveRecordMainCreateReqVO = new InventorymoveRecordMainCreateReqVO();
BeanUtils.copyProperties(mainDO, inventorymoveRecordMainCreateReqVO);
inventorymoveRecordMainCreateReqVO.setId(null);
inventorymoveRecordMainCreateReqVO.setCreator(null);
inventorymoveRecordMainCreateReqVO.setCreateTime(null);
inventorymoveRecordMainCreateReqVO.setRequestNumber(mainDO.getNumber());
if("HoldToOkRequest".equals(mainDO.getBusinessType())){
number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_OK_RECORD.getCode());
recordsettingDO = recordsettingService.selectRecordsettingExist("HoldToOkRecord");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToOkRecord");
} else if("OkToHoldRequest".equals(mainDO.getBusinessType())){
number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_HOLD_RECORD.getCode());
recordsettingDO = recordsettingService.selectRecordsettingExist("OkToHoldRecord");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToHoldRecord");
} else if("HoldToScrapRequest".equals(mainDO.getBusinessType())){
number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_SCRAP_RECORD.getCode());
recordsettingDO = recordsettingService.selectRecordsettingExist("HoldToScrapRecord");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToScrapRecord");
} else if("ScrapToHoldRequest".equals(mainDO.getBusinessType())){
number = serialNumberApi.generateCode(RuleCodeEnum.SCRAP_TO_HOLD_RECORD.getCode());
recordsettingDO = recordsettingService.selectRecordsettingExist("ScrapToHoldRecord");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ScrapToHoldRecord");
} else if("OkToScrapRequest".equals(mainDO.getBusinessType())){
number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_SCRAP_RECORD.getCode());
recordsettingDO = recordsettingService.selectRecordsettingExist("OkToScrapRecord");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToScrapRecord");
}
inventorymoveRecordMainCreateReqVO.setNumber(number);
inventorymoveRecordMainCreateReqVO.setBusinessType(businesstypeDO.getCode());
inventorymoveRecordMainCreateReqVO.setInterfaceType(recordsettingDO.getInterfaceType());
inventorymoveRecordMainMapper.insert(InventorymoveRecordMainConvert.INSTANCE.convert(inventorymoveRecordMainCreateReqVO));
for (InventorymoveRequestDetailDO inventorymoveRequestDetailDO : detailDOList) {
InventorymoveRecordDetailCreateReqVO inventorymoveRecordDetailCreateReqVO = new InventorymoveRecordDetailCreateReqVO();
BeanUtils.copyProperties(inventorymoveRequestDetailDO, inventorymoveRecordDetailCreateReqVO);
inventorymoveRecordDetailCreateReqVO.setId(null);
inventorymoveRecordDetailCreateReqVO.setCreator(null);
inventorymoveRecordDetailCreateReqVO.setCreateTime(null);
inventorymoveRecordDetailCreateReqVO.setNumber(number);
inventorymoveRecordDetailMapper.insert(InventorymoveRecordDetailConvert.INSTANCE.convert(inventorymoveRecordDetailCreateReqVO));
}
trendsApi.createTrends(InventorymoveRecordMainConvert.INSTANCE.convert(inventorymoveRecordMainCreateReqVO).getId(), recordsettingDO.getCode(), "库存转移申请生成库存转移记录", TrendsTypeEnum.CREATE);
return;
}
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());
if("HoldToOkRequest".equals(mainDO.getBusinessType())){
number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_OK_JOB.getCode());
jobsettingDO = jobsettingService.selectJobsettingExist("HoldToOkJob");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToOkJob");
} else if("OkToHoldRequest".equals(mainDO.getBusinessType())){
number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_HOLD_JOB.getCode());
jobsettingDO = jobsettingService.selectJobsettingExist("OkToHoldJob");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToHoldJob");
} else if("HoldToScrapRequest".equals(mainDO.getBusinessType())){
number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_SCRAP_JOB.getCode());
jobsettingDO = jobsettingService.selectJobsettingExist("HoldToScrapJob");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToScrapJob");
} else if("ScrapToHoldRequest".equals(mainDO.getBusinessType())){
number = serialNumberApi.generateCode(RuleCodeEnum.SCRAP_TO_HOLD_JOB.getCode());
jobsettingDO = jobsettingService.selectJobsettingExist("ScrapToHoldJob");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ScrapToHoldJob");
} else if("OkToScrapRequest".equals(mainDO.getBusinessType())){
number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_SCRAP_JOB.getCode());
jobsettingDO = jobsettingService.selectJobsettingExist("OkToScrapJob");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToScrapJob");
}
inventorymoveJobMainDO.setNumber(number);
inventorymoveJobMainDO.setId(null);
inventorymoveJobMainDO.setRequestTime(mainDO.getRequestTime());
inventorymoveJobMainDO.setRequestDueTime(mainDO.getDueTime());
inventorymoveJobMainDO.setId(null);
inventorymoveJobMainDO.setCreator(null);
inventorymoveJobMainDO.setCreateTime(null);
inventorymoveJobMainDO.setUpdater(null);
inventorymoveJobMainDO.setUpdateTime(null);
inventorymoveJobMainDO.setStatus("1");
// 获取任务单据设置
JobsettingDO jobsettingDO = jobsettingService.selectJobsettingExist("InventorymoveJob");
inventorymoveJobMainDO.setExpiredTime(inventorymoveJobMainDO.getRequestDueTime());
inventorymoveJobMainDO.setAutoComplete(jobsettingDO.getAutoComplete());
inventorymoveJobMainDO.setAllowModifyLocation(jobsettingDO.getAllowModifyLocation());
inventorymoveJobMainDO.setAllowModifyQty(jobsettingDO.getAllowModifyQty());
@ -410,33 +703,31 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest
inventorymoveJobMainDO.setAllowModifyPackingNumber(jobsettingDO.getAllowModifyPackingNumber());
inventorymoveJobMainDO.setAllowModifyBatch(jobsettingDO.getAllowModifyBach());
//增加业务类型
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InventorymoveJob");
inventorymoveJobMainDO.setBusinessType(businesstypeDO.getCode());
inventorymoveJobMainDO.setInInventoryStatuses(businesstypeDO.getInInventoryStatuses());
inventorymoveJobMainDO.setOutInventoryStatuses(businesstypeDO.getOutInventoryStatuses());
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.setCreateTime(LocalDateTime.now());
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());
// if ("TRUE".equals(businesstypeDO.getUseOnTheWay())) {
// inventorymoveJobDetailDO.setToLocationCode("FAC_INTRANS");
// } else {
// inventorymoveJobDetailDO.setToLocationCode(null);
// }
inventorymoveJobDetailDO.setPackingNumber(item.getFromPackingNumber());
inventorymoveJobDetailDO.setContainerNumber(item.getFromContainerNumber());
inventorymoveJobDetailDO.setBatch(item.getFromBatch());
inventorymoveJobDetailDO.setFromLocationCode(item.getFromLocationCode());
inventorymoveJobDetailDO.setToLocationCode(item.getToLocationCode());
inventorymoveJobDetailDO.setItemCode(item.getItemCode());
inventorymoveJobDetailDO.setItemName(item.getItemName());
@ -447,33 +738,142 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest
inventorymoveJobDetailDO.setUom(item.getUom());
inventorymoveJobDetailDO.setNumber(inventorymoveJobMainDO.getNumber());
inventorymoveJobDetailDO.setMasterId(inventorymoveJobMainDO.getId());
inventorymoveJobDetailDO.setInventoryStatus(balanceDOItem.getInventoryStatus());
inventorymoveJobDetailDO.setInventoryStatus(item.getFromInventoryStatus());
deliverJobDetailDOList.add(inventorymoveJobDetailDO);
//预计出
ExpectoutCreateReqVO expectoutCreateReqVO = new ExpectoutCreateReqVO();
BeanUtils.copyProperties(inventorymoveJobDetailDO, expectoutCreateReqVO);
expectoutCreateReqVO.setJobNumber(number);
expectoutCreateReqVO.setJobNumber(inventorymoveJobMainDO.getNumber());
expectoutCreateReqVO.setBusinessType(inventorymoveJobMainDO.getBusinessType());
expectoutCreateReqVO.setLocationCode(inventorymoveJobDetailDO.getFromLocationCode());
expectoutCreateReqVO.setBatch(inventorymoveJobDetailDO.getBatch());
expectoutCreateReqVO.setQty(inventorymoveJobDetailDO.getQty());
expectoutCreateReqVO.setInventoryStatus(balanceDOItem.getInventoryStatus());
expectoutCreateReqVO.setInventoryStatus(item.getFromInventoryStatus());
expectpoutCreateReqVOList.add(expectoutCreateReqVO);
//预计入
ExpectinCreateReqVO expectinCreateReqVO = new ExpectinCreateReqVO();
BeanUtils.copyProperties(inventorymoveJobDetailDO, expectinCreateReqVO);
expectinCreateReqVO.setJobNumber(number);
expectinCreateReqVO.setJobNumber(inventorymoveJobMainDO.getNumber());
expectinCreateReqVO.setBusinessType(inventorymoveJobMainDO.getBusinessType());
expectinCreateReqVO.setLocationCode(inventorymoveJobDetailDO.getFromLocationCode());
expectinCreateReqVO.setLocationCode(inventorymoveJobDetailDO.getToLocationCode());
expectinCreateReqVO.setBatch(inventorymoveJobDetailDO.getBatch());
expectinCreateReqVO.setQty(inventorymoveJobDetailDO.getQty());
expectinCreateReqVO.setInventoryStatus(balanceDOItem.getInventoryStatus());
expectinCreateReqVO.setInventoryStatus(item.getToInventoryStatus());
expectpinCreateReqVOList.add(expectinCreateReqVO);
});
});
inventorymoveJobDetailMapper.insertBatch(deliverJobDetailDOList);
//增加预计入
expectoutService.createExpectout(expectpoutCreateReqVOList);
expectinService.createExpectin(expectpinCreateReqVOList);
trendsApi.createTrends(inventorymoveJobMainDO.getId(), "InventorymoveJob", "成品发货申请生成成品发货任务", TrendsTypeEnum.CREATE);
trendsApi.createTrends(inventorymoveJobMainDO.getId(), jobsettingDO.getCode(), "库存转移申请生成库存转移任务", TrendsTypeEnum.CREATE);
}
//关闭
@Override
public Integer closeInventorymoveRequestMain(Long id) {
// 校验存在存在下级单据
InventorymoveRequestMainDO mainDO = validateInventorymoveRequestMainExists(id);
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.close();
if (!flag) {
throw new ServiceException(INVENTORYMOVE_REQUEST_CANNOT_CLOSE);
}
mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录
trendsApi.createTrends(id, mainDO.getBusinessType(), "关闭了库存转移申请", TrendsTypeEnum.UPDATE);
return inventorymoveRequestMainMapper.updateById(mainDO);
}
//打开
@Override
@Transactional
public Integer reAddInventorymoveRequestMain(Long id) {
// 校验存在存在下级单据
InventorymoveRequestMainDO mainDO = validateInventorymoveRequestMainExists(id);
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.reAdd();
if (!flag) {
throw new ServiceException(INVENTORYMOVE_REQUEST_CANNOT_RE_ADD);
}
mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录
trendsApi.createTrends(id, mainDO.getBusinessType(), "打开了库存转移申请", TrendsTypeEnum.UPDATE);
return inventorymoveRequestMainMapper.updateById(mainDO);
}
//提交
@Transactional
@Override
public Integer submitInventorymoveRequestMain(Long id) {
InventorymoveRequestMainDO mainDO = validateInventorymoveRequestMainExists(id);
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.submit(mainDO.getAutoAgree(), mainDO.getAutoExecute());
if (!flag) {
throw new ServiceException(INVENTORYMOVE_REQUEST_CANNOT_SUBMIT);
}
mainDO.setStatus(requestStatusState.getState().getCode());
//调用自动执行方法
if (RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) {
this.generateJob(mainDO, inventorymoveRequestDetailMapper.selectList(mainDO.getId()));
}
trendsApi.createTrends(id, mainDO.getBusinessType(), "提交了库存转移申请", TrendsTypeEnum.UPDATE);
return inventorymoveRequestMainMapper.updateById(mainDO);
}
//审批同意
@Transactional
@Override
public Integer agreeInventorymoveRequestMain(Long id) {
// 校验存在
InventorymoveRequestMainDO mainDO = validateInventorymoveRequestMainExists(id);
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.agree(mainDO.getAutoAgree());
if (!flag) {
throw new ServiceException(INVENTORYMOVE_REQUEST_CANNOT_AGREE);
}
mainDO.setStatus(requestStatusState.getState().getCode());
//调用自动执行方法
if (RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) {
this.generateJob(mainDO, inventorymoveRequestDetailMapper.selectList(mainDO.getId()));
}
trendsApi.createTrends(id, mainDO.getBusinessType(), "审批同意了库存转移申请", TrendsTypeEnum.UPDATE);
return inventorymoveRequestMainMapper.updateById(mainDO);
}
//执行
@Transactional
@Override
public Integer handleInventorymoveRequestMain(Long id) {
// 校验存在
InventorymoveRequestMainDO mainDO = validateInventorymoveRequestMainExists(id);
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.handle();
if (!flag) {
throw new ServiceException(INVENTORYMOVE_REQUEST_CANNOT_HANDLE);
}
mainDO.setStatus(requestStatusState.getState().getCode());
//调用执行方法
this.generateJob(mainDO, inventorymoveRequestDetailMapper.selectList(mainDO.getId()));
trendsApi.createTrends(id, mainDO.getBusinessType(), "执行了库存转移申请", TrendsTypeEnum.UPDATE);
return inventorymoveRequestMainMapper.updateById(mainDO);
}
//审批拒绝
@Transactional
@Override
public Integer abortInventorymoveRequestMain(Long id) {
// 校验存在
InventorymoveRequestMainDO mainDO = validateInventorymoveRequestMainExists(id);
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.refused();
if (!flag) {
throw new ServiceException(INVENTORYMOVE_REQUEST_CANNOT_ABORT);
}
mainDO.setStatus(requestStatusState.getState().getCode());
trendsApi.createTrends(id, mainDO.getBusinessType(), "审批拒绝了库存转移申请", TrendsTypeEnum.UPDATE);
return inventorymoveRequestMainMapper.updateById(mainDO);
}
@Override
public List<InventorymoveRequestMainDO> getInventorymoveRequestMainList(CustomConditions conditions) {
return inventorymoveRequestMainMapper.selectSeniorList(conditions);
}
}

Loading…
Cancel
Save