Browse Source

Merge remote-tracking branch 'origin/master'

master
刘忱 2 years ago
parent
commit
f49ea4b51e
  1. 24
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueJob/IssueJobDetailController.java
  2. 121
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueJob/IssueJobMainController.java
  3. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueJob/vo/IssueJobDetailUpdateReqVO.java
  4. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueJob/vo/IssueJobMainBaseVO.java
  5. 119
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueJob/vo/IssueJobMainExcelVO.java
  6. 7
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueJob/vo/IssueJobMainUpdateReqVO.java
  7. 24
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRecord/IssueRecordDetailController.java
  8. 78
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRecord/IssueRecordMainController.java
  9. 99
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRecord/vo/IssueRecordMainExcelVO.java
  10. 16
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueJob/IssueJobMainConvert.java
  11. 16
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRecord/IssueRecordMainConvert.java
  12. 7
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/issueRecord/IssueRecordDetailDO.java
  13. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/onlinesettlementRecord/OnlinesettlementRecordDetailDO.java
  14. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productionreceiptJob/ProductionreceiptJobMainDO.java
  15. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/issueJob/IssueJobDetailMapper.java
  16. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/issueJob/IssueJobMainMapper.java
  17. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/issueRecord/IssueRecordDetailMapper.java
  18. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/issueRecord/IssueRecordMainMapper.java
  19. 23
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueJob/IssueJobDetailService.java
  20. 31
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueJob/IssueJobDetailServiceImpl.java
  21. 54
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueJob/IssueJobMainService.java
  22. 401
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueJob/IssueJobMainServiceImpl.java
  23. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRecord/IssueRecordDetailService.java
  24. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRecord/IssueRecordDetailServiceImpl.java
  25. 9
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRecord/IssueRecordMainService.java
  26. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRecord/IssueRecordMainServiceImpl.java

24
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueJob/IssueJobDetailController.java

@ -41,30 +41,6 @@ public class IssueJobDetailController {
@Resource @Resource
private AdminUserApi userApi; private AdminUserApi userApi;
@PostMapping("/create")
@Operation(summary = "创建发料任务子")
@PreAuthorize("@ss.hasPermission('wms:issue-job-detail:create')")
public CommonResult<Long> createIssueJobDetail(@Valid @RequestBody IssueJobDetailCreateReqVO createReqVO) {
return success(issueJobDetailService.createIssueJobDetail(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新发料任务子")
@PreAuthorize("@ss.hasPermission('wms:issue-job-detail:update')")
public CommonResult<Boolean> updateIssueJobDetail(@Valid @RequestBody IssueJobDetailUpdateReqVO updateReqVO) {
issueJobDetailService.updateIssueJobDetail(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除发料任务子")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:issue-job-detail:delete')")
public CommonResult<Boolean> deleteIssueJobDetail(@RequestParam("id") Long id) {
issueJobDetailService.deleteIssueJobDetail(id);
return success(true);
}
@GetMapping("/get") @GetMapping("/get")
@Operation(summary = "获得发料任务子") @Operation(summary = "获得发料任务子")
@Parameter(name = "id", description = "编号", required = true, example = "1024") @Parameter(name = "id", description = "编号", required = true, example = "1024")

121
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueJob/IssueJobMainController.java

@ -1,10 +1,17 @@
package com.win.module.wms.controller.issueJob; package com.win.module.wms.controller.issueJob;
import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.dict.core.util.DictFrameworkUtils;
import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.AdminUserApi;
import com.win.module.system.api.user.dto.AdminUserRespDTO; import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.wms.controller.purchasereceiptJob.vo.PurchasereceiptJobMainUpdateReqVO;
import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestMainExcelVO;
import com.win.module.wms.convert.issueJob.IssueJobDetailConvert; import com.win.module.wms.convert.issueJob.IssueJobDetailConvert;
import com.win.module.wms.convert.purchasereceiptRequest.PurchasereceiptRequestMainConvert;
import com.win.module.wms.dal.dataobject.issueJob.IssueJobDetailDO; import com.win.module.wms.dal.dataobject.issueJob.IssueJobDetailDO;
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO;
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestMainDO;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.issueJob.IssueJobDetailService; import com.win.module.wms.service.issueJob.IssueJobDetailService;
import jodd.util.StringUtil; import jodd.util.StringUtil;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -48,30 +55,6 @@ public class IssueJobMainController {
@Resource @Resource
private AdminUserApi userApi; private AdminUserApi userApi;
@PostMapping("/create")
@Operation(summary = "创建发料任务主")
@PreAuthorize("@ss.hasPermission('wms:issue-job-main:create')")
public CommonResult<Long> createIssueJobMain(@Valid @RequestBody IssueJobMainCreateReqVO createReqVO) {
return success(issueJobMainService.createIssueJobMain(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新发料任务主")
@PreAuthorize("@ss.hasPermission('wms:issue-job-main:update')")
public CommonResult<Boolean> updateIssueJobMain(@Valid @RequestBody IssueJobMainUpdateReqVO updateReqVO) {
issueJobMainService.updateIssueJobMain(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除发料任务主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:issue-job-main:delete')")
public CommonResult<Boolean> deleteIssueJobMain(@RequestParam("id") Long id) {
issueJobMainService.deleteIssueJobMain(id);
return success(true);
}
@GetMapping("/get") @GetMapping("/get")
@Operation(summary = "获得发料任务主") @Operation(summary = "获得发料任务主")
@Parameter(name = "id", description = "编号", required = true, example = "1024") @Parameter(name = "id", description = "编号", required = true, example = "1024")
@ -111,6 +94,40 @@ public class IssueJobMainController {
} }
return success(result); return success(result);
} }
private List<IssueJobMainExcelVO> getExcelVo(List<IssueJobMainDO> list, Map<Integer, String[]> mapDropDown) {
String[] locationType = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.LOCATION_TYPE);
mapDropDown.put(17, locationType);
mapDropDown.put(18, locationType);
String[] areaType = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.AREA_TYPE);
mapDropDown.put(24, areaType);
mapDropDown.put(25, areaType);
String[] trueFalse = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE);
mapDropDown.put(26, trueFalse);
mapDropDown.put(27, trueFalse);
mapDropDown.put(28, trueFalse);
mapDropDown.put(29, trueFalse);
mapDropDown.put(30, trueFalse);
mapDropDown.put(31, trueFalse);
mapDropDown.put(32, trueFalse);
mapDropDown.put(33, trueFalse);
mapDropDown.put(34, trueFalse);
mapDropDown.put(35, trueFalse);
mapDropDown.put(36, trueFalse);
List<IssueJobMainExcelVO> resultList = new ArrayList<>();
// 导出
for(IssueJobMainDO mainDO : list) {
List<IssueJobDetailDO> subList = issueJobDetailService.selectList(mainDO.getId());
for(IssueJobDetailDO detailDO : subList) {
IssueJobMainExcelVO vo = IssueJobMainConvert.INSTANCE.convert(mainDO, detailDO);
AdminUserRespDTO user = userApi.getUser(Long.valueOf(mainDO.getCreator()));
vo.setCreator(user.getNickname());
resultList.add(vo);
}
}
return resultList;
}
@GetMapping("/export-excel") @GetMapping("/export-excel")
@Operation(summary = "导出发料任务主 Excel") @Operation(summary = "导出发料任务主 Excel")
@PreAuthorize("@ss.hasPermission('wms:issue-job-main:export')") @PreAuthorize("@ss.hasPermission('wms:issue-job-main:export')")
@ -118,14 +135,24 @@ public class IssueJobMainController {
public void exportIssueJobMainExcel(@Valid IssueJobMainExportReqVO exportReqVO, public void exportIssueJobMainExcel(@Valid IssueJobMainExportReqVO exportReqVO,
HttpServletResponse response) throws IOException { HttpServletResponse response) throws IOException {
List<IssueJobMainDO> list = issueJobMainService.getIssueJobMainList(exportReqVO); List<IssueJobMainDO> list = issueJobMainService.getIssueJobMainList(exportReqVO);
//组装vo
Map<Integer, String[]> mapDropDown = new HashMap<>();
List<IssueJobMainExcelVO> resultList = this.getExcelVo(list, mapDropDown);
// 导出 Excel // 导出 Excel
List<IssueJobMainExcelVO> datas = IssueJobMainConvert.INSTANCE.convertList02(list); ExcelUtils.write(response, "发料任务.xlsx", "发料任务", IssueJobMainExcelVO.class, resultList, mapDropDown);
for(IssueJobMainExcelVO vo : datas) { }
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator()));
//后端创建个字段作为前端展示的虚拟字段 @PostMapping("/export-excel-senior")
vo.setCreator(user.getNickname()); @Operation(summary = "导出发料任务 Excel")
} @PreAuthorize("@ss.hasPermission('wms:issue-job-main:export')")
ExcelUtils.write(response, "发料任务主.xls", "数据", IssueJobMainExcelVO.class, datas); @OperateLog(type = EXPORT)
public void exportIssueJobMainSeniorExcel(@Valid @RequestBody CustomConditions conditions, HttpServletResponse response) throws IOException {
List<IssueJobMainDO> list = issueJobMainService.getIssueJobMainList(conditions);
//组装vo
Map<Integer, String[]> mapDropDown = new HashMap<>();
List<IssueJobMainExcelVO> resultList = this.getExcelVo(list, mapDropDown);
// 导出 Excel
ExcelUtils.write(response, "发料任务.xlsx", "发料任务", IssueJobMainExcelVO.class, resultList, mapDropDown);
} }
@GetMapping("/getIssueJobById") @GetMapping("/getIssueJobById")
@ -161,4 +188,36 @@ public class IssueJobMainController {
return success(countByStatus); return success(countByStatus);
} }
@GetMapping(value = "/accept")
@Operation(summary = "承接任务")
@PreAuthorize("@ss.hasPermission('wms:issue-job-main:accept')")
public CommonResult<Boolean> acceptIssueJobMain(@RequestParam("id") Long id) {
int result = issueJobMainService.acceptIssueJobMain(id);
return success(result > 0);
}
@GetMapping(value = "/abandon")
@Operation(summary = "放弃任务")
@PreAuthorize("@ss.hasPermission('wms:issue-job-main:abandon')")
public CommonResult<Boolean> abandonIssueJobMain(@RequestParam("id") Long id) {
int result = issueJobMainService.abandonIssueJobMain(id);
return success(result > 0);
}
@GetMapping(value = "/close")
@Operation(summary = "关闭任务")
@PreAuthorize("@ss.hasPermission('wms:issue-job-main:close')")
public CommonResult<Boolean> closeIssueJobMain(@RequestParam("id") Long id) {
int result = issueJobMainService.closeIssueJobMain(id);
return success(result > 0);
}
@PutMapping("/execute")
@Operation(summary = "执行任务")
@PreAuthorize("@ss.hasPermission('wms:issue-job-main:execute')")
public CommonResult<Boolean> executeIssueJobMain(@Valid @RequestBody IssueJobMainUpdateReqVO updateReqVO) {
Integer count = issueJobMainService.executeIssueJobMain(updateReqVO);
return success(count > 0);
}
} }

6
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueJob/vo/IssueJobDetailUpdateReqVO.java

@ -3,10 +3,16 @@ package com.win.module.wms.controller.issueJob.vo;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.*;
import javax.validation.Valid;
import java.util.List;
import java.util.Map;
@Schema(description = "管理后台 - 发料任务子更新 Request VO") @Schema(description = "管理后台 - 发料任务子更新 Request VO")
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true) @ToString(callSuper = true)
public class IssueJobDetailUpdateReqVO extends IssueJobDetailBaseVO { public class IssueJobDetailUpdateReqVO extends IssueJobDetailBaseVO {
@Schema(description = "子表记录数据")
private List<Map<String,Object>> recordLst;
} }

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueJob/vo/IssueJobMainBaseVO.java

@ -60,9 +60,6 @@ public class IssueJobMainBaseVO {
@Schema(description = "最后更新者Id") @Schema(description = "最后更新者Id")
private String updater; private String updater;
@Schema(description = "状态")
private String jobStageStatus;
@Schema(description = "优先级") @Schema(description = "优先级")
private Integer priority; private Integer priority;

119
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueJob/vo/IssueJobMainExcelVO.java

@ -1,5 +1,7 @@
package com.win.module.wms.controller.issueJob.vo; package com.win.module.wms.controller.issueJob.vo;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.enums.job.JobStatusConverter;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.*;
import java.util.*; import java.util.*;
@ -42,8 +44,7 @@ public class IssueJobMainExcelVO {
@ExcelProperty("要求截止时间") @ExcelProperty("要求截止时间")
private LocalDateTime requestDueTime; private LocalDateTime requestDueTime;
@ExcelProperty(value = "状态", converter = DictConvert.class) @ExcelProperty(value = "状态", converter = JobStatusConverter.class)
@DictFormat("job_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String status; private String status;
@ExcelProperty("过期时间") @ExcelProperty("过期时间")
@ -55,10 +56,6 @@ public class IssueJobMainExcelVO {
@ExcelProperty("最后更新者Id") @ExcelProperty("最后更新者Id")
private String updater; private String updater;
@ExcelProperty(value = "状态", converter = DictConvert.class)
@DictFormat("job_stage_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String jobStageStatus;
@ExcelProperty("优先级") @ExcelProperty("优先级")
private Integer priority; private Integer priority;
@ -81,11 +78,11 @@ public class IssueJobMainExcelVO {
private LocalDateTime completeTime; private LocalDateTime completeTime;
@ExcelProperty(value = "从库位类型范围", converter = DictConvert.class) @ExcelProperty(value = "从库位类型范围", converter = DictConvert.class)
@DictFormat("location_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 @DictFormat(DictTypeConstants.LOCATION_TYPE)
private String fromLocationTypes; private String fromLocationTypes;
@ExcelProperty(value = "到库位类型范围", converter = DictConvert.class) @ExcelProperty(value = "到库位类型范围", converter = DictConvert.class)
@DictFormat("location_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 @DictFormat(DictTypeConstants.LOCATION_TYPE)
private String toLocationTypes; private String toLocationTypes;
@ExcelProperty("单据号") @ExcelProperty("单据号")
@ -103,43 +100,123 @@ public class IssueJobMainExcelVO {
@ExcelProperty("创建者id") @ExcelProperty("创建者id")
private String creator; private String creator;
@ExcelProperty("从库区代码范围") @ExcelProperty(value = "从库区代码范围", converter = DictConvert.class)
@DictFormat(DictTypeConstants.AREA_TYPE)
private String fromAreaCodes; private String fromAreaCodes;
@ExcelProperty("到库区代码范围") @ExcelProperty(value = "到库区代码范围", converter = DictConvert.class)
@DictFormat(DictTypeConstants.AREA_TYPE)
private String toAreaCodes; private String toAreaCodes;
@ExcelProperty("使用在途库") @ExcelProperty(value = "使用在途库", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String useOnTheWayLocation; private String useOnTheWayLocation;
@ExcelProperty("自动完成") @ExcelProperty(value = "自动完成", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String autoComplete; private String autoComplete;
@ExcelProperty("允许修改库位") @ExcelProperty(value = "允许修改库位", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String allowModifyLocation; private String allowModifyLocation;
@ExcelProperty("允许修改数量") @ExcelProperty(value = "允许修改数量", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String allowModifyQty; private String allowModifyQty;
@ExcelProperty("允许大于推荐数量") @ExcelProperty(value = "允许大于推荐数量", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String allowBiggerQty; private String allowBiggerQty;
@ExcelProperty("允许小于推荐数量") @ExcelProperty(value = "允许小于推荐数量", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String allowSmallerQty; private String allowSmallerQty;
@ExcelProperty("允许修改库存状态") @ExcelProperty(value = "允许修改库存状态", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String allowModifyInventoryStatus; private String allowModifyInventoryStatus;
@ExcelProperty("允许连续扫描") @ExcelProperty(value = "允许连续扫描", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String allowContinuousScanning; private String allowContinuousScanning;
@ExcelProperty("允许部分完成") @ExcelProperty(value = "允许部分完成", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String allowPartialComplete; private String allowPartialComplete;
@ExcelProperty("允许修改箱码") @ExcelProperty(value = "允许修改箱码", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String allowModifyPackingNumber; private String allowModifyPackingNumber;
@ExcelProperty("允许修改批次") @ExcelProperty(value = "允许修改批次", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String allowModifyBatch; private String allowModifyBatch;
@ExcelProperty("生产线代码")
private String productionLineCode;
@ExcelProperty("工位代码")
private String workStationCode;
@ExcelProperty(value = "库存状态", converter = DictConvert.class)
@DictFormat(DictTypeConstants.INVENTORY_STATUS)
private String inventoryStatus;
@ExcelProperty(value = "在途库库位", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String onTheWayLocationCode;
@ExcelProperty("包装号")
private String packingNumber;
@ExcelProperty("器具号")
private String containerNumber;
@ExcelProperty("批次")
private String batch;
@ExcelProperty("从库位代码")
private String fromLocationCode;
@ExcelProperty("到库位代码")
private String toLocationCode;
@ExcelProperty("物品代码")
private String itemCode;
@ExcelProperty("物品名称")
private String itemName;
@ExcelProperty("物品描述1")
private String itemDesc1;
@ExcelProperty("物品描述2")
private String itemDesc2;
@ExcelProperty("标包数量")
private String stdPackQty;
@ExcelProperty("标包单位")
private String stdPackUnit;
@ExcelProperty("供应商计量数量")
private String supplierQty;
@ExcelProperty("供应商计量单位")
private String supplierUom;
@ExcelProperty("项目代码")
private String projectCode;
@ExcelProperty("数量")
private String qty;
@ExcelProperty("计量单位")
private String uom;
@ExcelProperty("从货主代码")
private String fromOwnerCode;
@ExcelProperty("到货主代码")
private String toOwnerCode;
} }

7
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueJob/vo/IssueJobMainUpdateReqVO.java

@ -1,12 +1,17 @@
package com.win.module.wms.controller.issueJob.vo; package com.win.module.wms.controller.issueJob.vo;
import com.win.module.wms.controller.purchasereceiptJob.vo.PurchasereceiptJobDetailUpdateReqVO;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.*;
import javax.validation.Valid;
import java.util.List;
@Schema(description = "管理后台 - 发料任务主更新 Request VO") @Schema(description = "管理后台 - 发料任务主更新 Request VO")
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true) @ToString(callSuper = true)
public class IssueJobMainUpdateReqVO extends IssueJobMainBaseVO { public class IssueJobMainUpdateReqVO extends IssueJobMainBaseVO {
@Schema(description = "子表数据")
private List<@Valid IssueJobDetailUpdateReqVO> subList;
} }

24
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRecord/IssueRecordDetailController.java

@ -41,30 +41,6 @@ public class IssueRecordDetailController {
@Resource @Resource
private AdminUserApi userApi; private AdminUserApi userApi;
@PostMapping("/create")
@Operation(summary = "创建发料记录子")
@PreAuthorize("@ss.hasPermission('wms:issue-record-detail:create')")
public CommonResult<Long> createIssueRecordDetail(@Valid @RequestBody IssueRecordDetailCreateReqVO createReqVO) {
return success(issueRecordDetailService.createIssueRecordDetail(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新发料记录子")
@PreAuthorize("@ss.hasPermission('wms:issue-record-detail:update')")
public CommonResult<Boolean> updateIssueRecordDetail(@Valid @RequestBody IssueRecordDetailUpdateReqVO updateReqVO) {
issueRecordDetailService.updateIssueRecordDetail(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除发料记录子")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:issue-record-detail:delete')")
public CommonResult<Boolean> deleteIssueRecordDetail(@RequestParam("id") Long id) {
issueRecordDetailService.deleteIssueRecordDetail(id);
return success(true);
}
@GetMapping("/get") @GetMapping("/get")
@Operation(summary = "获得发料记录子") @Operation(summary = "获得发料记录子")
@Parameter(name = "id", description = "编号", required = true, example = "1024") @Parameter(name = "id", description = "编号", required = true, example = "1024")

78
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRecord/IssueRecordMainController.java

@ -1,8 +1,12 @@
package com.win.module.wms.controller.issueRecord; package com.win.module.wms.controller.issueRecord;
import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.dict.core.util.DictFrameworkUtils;
import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.AdminUserApi;
import com.win.module.system.api.user.dto.AdminUserRespDTO; import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordDetailDO;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.issueRecord.IssueRecordDetailService;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -36,36 +40,14 @@ import com.win.module.wms.service.issueRecord.IssueRecordMainService;
@Validated @Validated
public class IssueRecordMainController { public class IssueRecordMainController {
@Resource
private IssueRecordDetailService issueRecordDetailService;
@Resource @Resource
private IssueRecordMainService issueRecordMainService; private IssueRecordMainService issueRecordMainService;
@Resource @Resource
private AdminUserApi userApi; private AdminUserApi userApi;
@PostMapping("/create")
@Operation(summary = "创建发料记录主")
@PreAuthorize("@ss.hasPermission('wms:issue-record-main:create')")
public CommonResult<Long> createIssueRecordMain(@Valid @RequestBody IssueRecordMainCreateReqVO createReqVO) {
return success(issueRecordMainService.createIssueRecordMain(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新发料记录主")
@PreAuthorize("@ss.hasPermission('wms:issue-record-main:update')")
public CommonResult<Boolean> updateIssueRecordMain(@Valid @RequestBody IssueRecordMainUpdateReqVO updateReqVO) {
issueRecordMainService.updateIssueRecordMain(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除发料记录主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:issue-record-main:delete')")
public CommonResult<Boolean> deleteIssueRecordMain(@RequestParam("id") Long id) {
issueRecordMainService.deleteIssueRecordMain(id);
return success(true);
}
@GetMapping("/get") @GetMapping("/get")
@Operation(summary = "获得发料记录主") @Operation(summary = "获得发料记录主")
@Parameter(name = "id", description = "编号", required = true, example = "1024") @Parameter(name = "id", description = "编号", required = true, example = "1024")
@ -105,21 +87,53 @@ public class IssueRecordMainController {
} }
return success(result); return success(result);
} }
private List<IssueRecordMainExcelVO> getExcelVo(List<IssueRecordMainDO> list, Map<Integer, String[]> mapDropDown) {
String[] useOnTheWayLocation = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE);
mapDropDown.put(21, useOnTheWayLocation);
String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS);
mapDropDown.put(28, inventoryStatus);
String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM);
mapDropDown.put(49, uom);
List<IssueRecordMainExcelVO> resultList = new ArrayList<>();
// 导出
for(IssueRecordMainDO mainDO : list) {
List<IssueRecordDetailDO> subList = issueRecordDetailService.selectList(mainDO.getId());
for(IssueRecordDetailDO detailDO : subList) {
IssueRecordMainExcelVO vo = IssueRecordMainConvert.INSTANCE.convert(mainDO, detailDO);
AdminUserRespDTO user = userApi.getUser(Long.valueOf(mainDO.getCreator()));
vo.setCreator(user.getNickname());
resultList.add(vo);
}
}
return resultList;
}
@GetMapping("/export-excel") @GetMapping("/export-excel")
@Operation(summary = "导出发料记录主 Excel") @Operation(summary = "导出发料记录 Excel")
@PreAuthorize("@ss.hasPermission('wms:issue-record-main:export')") @PreAuthorize("@ss.hasPermission('wms:issue-record-main:export')")
@OperateLog(type = EXPORT) @OperateLog(type = EXPORT)
public void exportIssueRecordMainExcel(@Valid IssueRecordMainExportReqVO exportReqVO, public void exportIssueRecordMainExcel(@Valid IssueRecordMainExportReqVO exportReqVO,
HttpServletResponse response) throws IOException { HttpServletResponse response) throws IOException {
List<IssueRecordMainDO> list = issueRecordMainService.getIssueRecordMainList(exportReqVO); List<IssueRecordMainDO> list = issueRecordMainService.getIssueRecordMainList(exportReqVO);
//组装vo
Map<Integer, String[]> mapDropDown = new HashMap<>();
List<IssueRecordMainExcelVO> resultList = this.getExcelVo(list, mapDropDown);
// 导出 Excel // 导出 Excel
List<IssueRecordMainExcelVO> datas = IssueRecordMainConvert.INSTANCE.convertList02(list); ExcelUtils.write(response, "发料记录.xlsx", "发料记录", IssueRecordMainExcelVO.class, resultList, mapDropDown);
for(IssueRecordMainExcelVO vo : datas) { }
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator()));
//后端创建个字段作为前端展示的虚拟字段 @PostMapping("/export-excel-senior")
vo.setCreator(user.getNickname()); @Operation(summary = "导出发料记录 Excel")
} @PreAuthorize("@ss.hasPermission('wms:issue-record-main:export')")
ExcelUtils.write(response, "发料记录主.xls", "数据", IssueRecordMainExcelVO.class, datas); @OperateLog(type = EXPORT)
public void exportIssueRecordMainSeniorExcel(@Valid @RequestBody CustomConditions conditions, HttpServletResponse response) throws IOException {
List<IssueRecordMainDO> list = issueRecordMainService.getIssueRecordMainList(conditions);
//组装vo
Map<Integer, String[]> mapDropDown = new HashMap<>();
List<IssueRecordMainExcelVO> resultList = this.getExcelVo(list, mapDropDown);
// 导出 Excel
ExcelUtils.write(response, "发料记录.xlsx", "发料记录", IssueRecordMainExcelVO.class, resultList, mapDropDown);
} }
} }

99
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRecord/vo/IssueRecordMainExcelVO.java

@ -1,5 +1,6 @@
package com.win.module.wms.controller.issueRecord.vo; package com.win.module.wms.controller.issueRecord.vo;
import com.win.module.wms.enums.DictTypeConstants;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.*;
import java.util.*; import java.util.*;
@ -52,10 +53,6 @@ public class IssueRecordMainExcelVO {
@ExcelProperty("部门") @ExcelProperty("部门")
private String departmentCode; private String departmentCode;
@ExcelProperty(value = "接口类型", converter = DictConvert.class)
@DictFormat("interface_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String interfaceType;
@ExcelProperty("单据号") @ExcelProperty("单据号")
private String number; private String number;
@ -71,14 +68,10 @@ public class IssueRecordMainExcelVO {
@ExcelProperty("创建者Id") @ExcelProperty("创建者Id")
private String creator; private String creator;
@ExcelProperty("代码")
private String code;
@ExcelProperty("从仓库代码") @ExcelProperty("从仓库代码")
private String fromWarehouseCode; private String fromWarehouseCode;
@ExcelProperty(value = "从库位类型范围", converter = DictConvert.class) @ExcelProperty(value = "从库位类型范围")
@DictFormat("location_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String fromLocationTypes; private String fromLocationTypes;
@ExcelProperty("从库区代码范围") @ExcelProperty("从库区代码范围")
@ -87,17 +80,99 @@ public class IssueRecordMainExcelVO {
@ExcelProperty("到仓库代码") @ExcelProperty("到仓库代码")
private String toWarehouseCode; private String toWarehouseCode;
@ExcelProperty(value = "到库位类型范围", converter = DictConvert.class) @ExcelProperty(value = "到库位类型范围")
@DictFormat("location_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String toLocationTypes; private String toLocationTypes;
@ExcelProperty("到库区代码范围") @ExcelProperty("到库区代码范围")
private String toAreaCodes; private String toAreaCodes;
@ExcelProperty("使用在途库") @ExcelProperty(value = "使用在途库", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String useOnTheWayLocation; private String useOnTheWayLocation;
@ExcelProperty("是否可用") @ExcelProperty("是否可用")
private String available; private String available;
@ExcelProperty("最后更新时间")
private LocalDateTime updateTime;
@ExcelProperty("最后更新者Id")
private String updater;
@ExcelProperty("生产线代码")
private String productionLineCode;
@ExcelProperty("工位代码")
private String workStationCode;
@ExcelProperty("在途库库位")
private String onTheWayLocationCode;
@ExcelProperty(value = "库存状态", converter = DictConvert.class)
@DictFormat(DictTypeConstants.INVENTORY_STATUS)
private String inventoryStatus;
@ExcelProperty("从货主代码")
private String fromOwnerCode;
@ExcelProperty("到货主代码")
private String toOwnerCode;
@ExcelProperty("从包装号")
private String fromPackingNumber;
@ExcelProperty("到包装号")
private String toPackingNumber;
@ExcelProperty("从器具号")
private String fromContainerNumber;
@ExcelProperty("到器具号")
private String toContainerNumber;
@ExcelProperty("从批次")
private String fromBatch;
@ExcelProperty("到批次")
private String toBatch;
@ExcelProperty("从库位代码")
private String fromLocationCode;
@ExcelProperty("到库位代码")
private String toLocationCode;
@ExcelProperty("从库位组代码")
private String fromLocationGroupCode;
@ExcelProperty("到库位组代码")
private String toLocationGroupCode;
@ExcelProperty("从库区代码")
private String fromAreaCode;
@ExcelProperty("到库区代码")
private String toAreaCode;
@ExcelProperty("物品代码")
private String itemCode;
@ExcelProperty("物品名称")
private String itemName;
@ExcelProperty("物品描述1")
private String itemDesc1;
@ExcelProperty("物品描述2")
private String itemDesc2;
@ExcelProperty("项目代码")
private String projectCode;
@ExcelProperty("数量")
private String qty;
@ExcelProperty(value = "计量单位", converter = DictConvert.class)
@DictFormat(DictTypeConstants.UOM)
private String uom;
} }

16
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueJob/IssueJobMainConvert.java

@ -8,7 +8,13 @@ import com.win.module.wms.controller.issueJob.vo.IssueJobMainCreateReqVO;
import com.win.module.wms.controller.issueJob.vo.IssueJobMainExcelVO; import com.win.module.wms.controller.issueJob.vo.IssueJobMainExcelVO;
import com.win.module.wms.controller.issueJob.vo.IssueJobMainRespVO; import com.win.module.wms.controller.issueJob.vo.IssueJobMainRespVO;
import com.win.module.wms.controller.issueJob.vo.IssueJobMainUpdateReqVO; import com.win.module.wms.controller.issueJob.vo.IssueJobMainUpdateReqVO;
import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestMainExcelVO;
import com.win.module.wms.dal.dataobject.issueJob.IssueJobDetailDO;
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO;
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestMainDO;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers; import org.mapstruct.factory.Mappers;
import com.win.module.wms.dal.dataobject.issueJob.IssueJobMainDO; import com.win.module.wms.dal.dataobject.issueJob.IssueJobMainDO;
@ -34,4 +40,14 @@ public interface IssueJobMainConvert {
List<IssueJobMainExcelVO> convertList02(List<IssueJobMainDO> list); List<IssueJobMainExcelVO> convertList02(List<IssueJobMainDO> list);
@Mappings({
@Mapping(source = "mainDO.number", target = "number"),
@Mapping(source = "mainDO.remark", target = "remark"),
@Mapping(source = "mainDO.createTime", target = "createTime"),
@Mapping(source = "mainDO.creator", target = "creator"),
@Mapping(source = "mainDO.updateTime", target = "updateTime"),
@Mapping(source = "mainDO.updater", target = "updater"),
})
IssueJobMainExcelVO convert(IssueJobMainDO mainDO, IssueJobDetailDO detailDO);
} }

16
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRecord/IssueRecordMainConvert.java

@ -8,7 +8,13 @@ import com.win.module.wms.controller.issueRecord.vo.IssueRecordMainCreateReqVO;
import com.win.module.wms.controller.issueRecord.vo.IssueRecordMainExcelVO; import com.win.module.wms.controller.issueRecord.vo.IssueRecordMainExcelVO;
import com.win.module.wms.controller.issueRecord.vo.IssueRecordMainRespVO; import com.win.module.wms.controller.issueRecord.vo.IssueRecordMainRespVO;
import com.win.module.wms.controller.issueRecord.vo.IssueRecordMainUpdateReqVO; import com.win.module.wms.controller.issueRecord.vo.IssueRecordMainUpdateReqVO;
import com.win.module.wms.controller.purchasereceiptJob.vo.PurchasereceiptJobMainExcelVO;
import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordDetailDO;
import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobDetailDO;
import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobMainDO;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers; import org.mapstruct.factory.Mappers;
import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordMainDO; import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordMainDO;
@ -34,4 +40,14 @@ public interface IssueRecordMainConvert {
List<IssueRecordMainExcelVO> convertList02(List<IssueRecordMainDO> list); List<IssueRecordMainExcelVO> convertList02(List<IssueRecordMainDO> list);
@Mappings({
@Mapping(source = "mainDO.number", target = "number"),
@Mapping(source = "mainDO.remark", target = "remark"),
@Mapping(source = "mainDO.createTime", target = "createTime"),
@Mapping(source = "mainDO.creator", target = "creator"),
@Mapping(source = "mainDO.updateTime", target = "updateTime"),
@Mapping(source = "mainDO.updater", target = "updater"),
})
IssueRecordMainExcelVO convert(IssueRecordMainDO mainDO, IssueRecordDetailDO detailDO);
} }

7
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/issueRecord/IssueRecordDetailDO.java

@ -103,7 +103,7 @@ public class IssueRecordDetailDO extends BaseDO {
/** /**
* 主表ID * 主表ID
*/ */
private String masterId; private Long masterId;
/** /**
* 单据号 * 单据号
*/ */
@ -161,4 +161,9 @@ public class IssueRecordDetailDO extends BaseDO {
*/ */
private String jobDetailId; private String jobDetailId;
/**
* 供应商代码
*/
private String supplierCode;
} }

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/onlinesettlementRecord/OnlinesettlementRecordDetailDO.java

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

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productionreceiptJob/ProductionreceiptJobMainDO.java

@ -36,6 +36,10 @@ public class ProductionreceiptJobMainDO extends BaseDO {
* 发料任务单号 * 发料任务单号
*/ */
private String issueJobNumber; private String issueJobNumber;
/**
* 发料记录单号
*/
private String issueRecordNumber;
/** /**
* 车间代码 * 车间代码
*/ */

6
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/issueJob/IssueJobDetailMapper.java

@ -10,6 +10,7 @@ import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.issueJob.vo.IssueJobDetailExportReqVO; import com.win.module.wms.controller.issueJob.vo.IssueJobDetailExportReqVO;
import com.win.module.wms.controller.issueJob.vo.IssueJobDetailPageReqVO; import com.win.module.wms.controller.issueJob.vo.IssueJobDetailPageReqVO;
import com.win.module.wms.dal.dataobject.issueJob.IssueJobDetailDO; import com.win.module.wms.dal.dataobject.issueJob.IssueJobDetailDO;
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
/** /**
@ -86,4 +87,9 @@ public interface IssueJobDetailMapper extends BaseMapperX<IssueJobDetailDO> {
.orderByDesc(IssueJobDetailDO::getId)); .orderByDesc(IssueJobDetailDO::getId));
} }
default List<IssueJobDetailDO> selectList(Long masterId) {
return selectList(new LambdaQueryWrapperX<IssueJobDetailDO>()
.eq(IssueJobDetailDO::getMasterId, masterId));
}
} }

5
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/issueJob/IssueJobMainMapper.java

@ -11,6 +11,7 @@ import com.win.module.wms.controller.issueJob.vo.IssueJobMainExportReqVO;
import com.win.module.wms.controller.issueJob.vo.IssueJobMainPageReqVO; import com.win.module.wms.controller.issueJob.vo.IssueJobMainPageReqVO;
import com.win.module.wms.dal.dataobject.issueJob.IssueJobMainDO; import com.win.module.wms.dal.dataobject.issueJob.IssueJobMainDO;
import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobMainDO; import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobMainDO;
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestMainDO;
import com.win.module.wms.dal.dataobject.repleinshJob.RepleinshJobMainDO; import com.win.module.wms.dal.dataobject.repleinshJob.RepleinshJobMainDO;
import com.win.module.wms.enums.order.OrderStatusEnum; import com.win.module.wms.enums.order.OrderStatusEnum;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@ -127,4 +128,8 @@ public interface IssueJobMainMapper extends BaseMapperX<IssueJobMainDO> {
.ne(IssueJobMainDO::getStatus, OrderStatusEnum.CLOSED.getCode())); .ne(IssueJobMainDO::getStatus, OrderStatusEnum.CLOSED.getCode()));
} }
default List<IssueJobMainDO> selectSeniorList(CustomConditions conditions) {
return selectList(QueryWrapperUtils.structure(conditions));
}
} }

6
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/issueRecord/IssueRecordDetailMapper.java

@ -10,6 +10,7 @@ import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.issueRecord.vo.IssueRecordDetailExportReqVO; import com.win.module.wms.controller.issueRecord.vo.IssueRecordDetailExportReqVO;
import com.win.module.wms.controller.issueRecord.vo.IssueRecordDetailPageReqVO; import com.win.module.wms.controller.issueRecord.vo.IssueRecordDetailPageReqVO;
import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordDetailDO; import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordDetailDO;
import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobDetailDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
/** /**
@ -96,4 +97,9 @@ public interface IssueRecordDetailMapper extends BaseMapperX<IssueRecordDetailDO
.orderByDesc(IssueRecordDetailDO::getId)); .orderByDesc(IssueRecordDetailDO::getId));
} }
default List<IssueRecordDetailDO> selectList(Long masterId) {
return selectList(new LambdaQueryWrapperX<IssueRecordDetailDO>()
.eq(IssueRecordDetailDO::getMasterId, masterId));
}
} }

5
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/issueRecord/IssueRecordMainMapper.java

@ -10,6 +10,7 @@ import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.issueRecord.vo.IssueRecordMainExportReqVO; import com.win.module.wms.controller.issueRecord.vo.IssueRecordMainExportReqVO;
import com.win.module.wms.controller.issueRecord.vo.IssueRecordMainPageReqVO; import com.win.module.wms.controller.issueRecord.vo.IssueRecordMainPageReqVO;
import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordMainDO; import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordMainDO;
import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobMainDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
/** /**
@ -82,4 +83,8 @@ public interface IssueRecordMainMapper extends BaseMapperX<IssueRecordMainDO> {
.orderByDesc(IssueRecordMainDO::getId)); .orderByDesc(IssueRecordMainDO::getId));
} }
default List<IssueRecordMainDO> selectSeniorList(CustomConditions conditions) {
return selectList(QueryWrapperUtils.structure(conditions));
}
} }

23
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueJob/IssueJobDetailService.java

@ -18,28 +18,6 @@ import com.win.framework.common.pojo.PageResult;
*/ */
public interface IssueJobDetailService { public interface IssueJobDetailService {
/**
* 创建发料任务子
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createIssueJobDetail(@Valid IssueJobDetailCreateReqVO createReqVO);
/**
* 更新发料任务子
*
* @param updateReqVO 更新信息
*/
void updateIssueJobDetail(@Valid IssueJobDetailUpdateReqVO updateReqVO);
/**
* 删除发料任务子
*
* @param id 编号
*/
void deleteIssueJobDetail(Long id);
/** /**
* 获得发料任务子 * 获得发料任务子
* *
@ -80,4 +58,5 @@ public interface IssueJobDetailService {
*/ */
List<IssueJobDetailDO> getIssueJobDetailList(IssueJobDetailExportReqVO exportReqVO); List<IssueJobDetailDO> getIssueJobDetailList(IssueJobDetailExportReqVO exportReqVO);
List<IssueJobDetailDO> selectList(Long id);
} }

31
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueJob/IssueJobDetailServiceImpl.java

@ -32,32 +32,6 @@ public class IssueJobDetailServiceImpl implements IssueJobDetailService {
@Resource @Resource
private IssueJobDetailMapper issueJobDetailMapper; private IssueJobDetailMapper issueJobDetailMapper;
@Override
public Long createIssueJobDetail(IssueJobDetailCreateReqVO createReqVO) {
// 插入
IssueJobDetailDO issueJobDetail = IssueJobDetailConvert.INSTANCE.convert(createReqVO);
issueJobDetailMapper.insert(issueJobDetail);
// 返回
return issueJobDetail.getId();
}
@Override
public void updateIssueJobDetail(IssueJobDetailUpdateReqVO updateReqVO) {
// 校验存在
validateIssueJobDetailExists(updateReqVO.getId());
// 更新
IssueJobDetailDO updateObj = IssueJobDetailConvert.INSTANCE.convert(updateReqVO);
issueJobDetailMapper.updateById(updateObj);
}
@Override
public void deleteIssueJobDetail(Long id) {
// 校验存在
validateIssueJobDetailExists(id);
// 删除
issueJobDetailMapper.deleteById(id);
}
private void validateIssueJobDetailExists(Long id) { private void validateIssueJobDetailExists(Long id) {
if (issueJobDetailMapper.selectById(id) == null) { if (issueJobDetailMapper.selectById(id) == null) {
throw exception(ISSUE_JOB_DETAIL_NOT_EXISTS); throw exception(ISSUE_JOB_DETAIL_NOT_EXISTS);
@ -88,4 +62,9 @@ public class IssueJobDetailServiceImpl implements IssueJobDetailService {
return issueJobDetailMapper.selectList(exportReqVO); return issueJobDetailMapper.selectList(exportReqVO);
} }
@Override
public List<IssueJobDetailDO> selectList(Long masterId) {
return issueJobDetailMapper.selectList(masterId);
}
} }

54
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueJob/IssueJobMainService.java

@ -8,8 +8,10 @@ import com.win.module.wms.controller.issueJob.vo.IssueJobMainCreateReqVO;
import com.win.module.wms.controller.issueJob.vo.IssueJobMainExportReqVO; import com.win.module.wms.controller.issueJob.vo.IssueJobMainExportReqVO;
import com.win.module.wms.controller.issueJob.vo.IssueJobMainPageReqVO; import com.win.module.wms.controller.issueJob.vo.IssueJobMainPageReqVO;
import com.win.module.wms.controller.issueJob.vo.IssueJobMainUpdateReqVO; import com.win.module.wms.controller.issueJob.vo.IssueJobMainUpdateReqVO;
import com.win.module.wms.controller.purchasereceiptJob.vo.PurchasereceiptJobMainUpdateReqVO;
import com.win.module.wms.dal.dataobject.issueJob.IssueJobMainDO; import com.win.module.wms.dal.dataobject.issueJob.IssueJobMainDO;
import com.win.framework.common.pojo.PageResult; import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestMainDO;
import org.springframework.lang.Nullable; import org.springframework.lang.Nullable;
/** /**
@ -19,28 +21,6 @@ import org.springframework.lang.Nullable;
*/ */
public interface IssueJobMainService { public interface IssueJobMainService {
/**
* 创建发料任务主
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createIssueJobMain(@Valid IssueJobMainCreateReqVO createReqVO);
/**
* 更新发料任务主
*
* @param updateReqVO 更新信息
*/
void updateIssueJobMain(@Valid IssueJobMainUpdateReqVO updateReqVO);
/**
* 删除发料任务主
*
* @param id 编号
*/
void deleteIssueJobMain(Long id);
/** /**
* 获得发料任务主 * 获得发料任务主
* *
@ -57,6 +37,8 @@ public interface IssueJobMainService {
*/ */
List<IssueJobMainDO> getIssueJobMainList(Collection<Long> ids); List<IssueJobMainDO> getIssueJobMainList(Collection<Long> ids);
List<IssueJobMainDO> getIssueJobMainList(CustomConditions conditions);
/** /**
* 获得发料任务主分页 * 获得发料任务主分页
* *
@ -95,4 +77,32 @@ public interface IssueJobMainService {
* @return * @return
*/ */
Map<String,Integer> getCountByStatus(@Nullable Collection<String> types); Map<String,Integer> getCountByStatus(@Nullable Collection<String> types);
/**
* 承接任务
* @param id
* @return
*/
Integer acceptIssueJobMain(Long id);
/**
* 取消承接任务
* @param id
* @return
*/
Integer abandonIssueJobMain(Long id);
/**
* 关闭任务
* @param id
* @return
*/
Integer closeIssueJobMain(Long id);
/**
* 执行任务
* @param issueJobMainUpdateReqVO
* @return
*/
Integer executeIssueJobMain(IssueJobMainUpdateReqVO issueJobMainUpdateReqVO);
} }

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

@ -1,15 +1,56 @@
package com.win.module.wms.service.issueJob; package com.win.module.wms.service.issueJob;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.CustomConditions;
import com.win.module.wms.controller.issueJob.vo.IssueJobMainCreateReqVO; import com.win.module.infra.api.trends.TrendsApi;
import com.win.module.wms.controller.issueJob.vo.IssueJobMainExportReqVO; import com.win.module.infra.enums.TrendsTypeEnum;
import com.win.module.wms.controller.issueJob.vo.IssueJobMainPageReqVO; import com.win.module.system.api.serialnumber.SerialNumberApi;
import com.win.module.wms.controller.issueJob.vo.IssueJobMainUpdateReqVO; 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.issueJob.vo.*;
import com.win.module.wms.controller.purchasereceiptJob.vo.PurchasereceiptJobDetailUpdateReqVO;
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.issueJob.IssueJobDetailDO;
import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordDetailDO;
import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordMainDO;
import com.win.module.wms.dal.dataobject.jobsetting.JobsettingDO;
import com.win.module.wms.dal.dataobject.onlinesettlementRecord.OnlinesettlementRecordDetailDO;
import com.win.module.wms.dal.dataobject.onlinesettlementRecord.OnlinesettlementRecordMainDO;
import com.win.module.wms.dal.dataobject.productionreceiptJob.ProductionreceiptJobDetailDO;
import com.win.module.wms.dal.dataobject.productionreceiptJob.ProductionreceiptJobMainDO;
import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobDetailDO;
import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobMainDO;
import com.win.module.wms.dal.dataobject.purchasereceiptRecord.PurchasereceiptRecordDetailDO;
import com.win.module.wms.dal.dataobject.purchasereceiptRecord.PurchasereceiptRecordMainDO;
import com.win.module.wms.dal.dataobject.purchasereceiptRecord.PurchaseshortageDetailDO;
import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO;
import com.win.module.wms.dal.mysql.issueRecord.IssueRecordDetailMapper;
import com.win.module.wms.dal.mysql.issueRecord.IssueRecordMainMapper;
import com.win.module.wms.dal.mysql.onlinesettlementRecord.OnlinesettlementRecordDetailMapper;
import com.win.module.wms.dal.mysql.onlinesettlementRecord.OnlinesettlementRecordMainMapper;
import com.win.module.wms.dal.mysql.productionreceiptJob.ProductionreceiptJobDetailMapper;
import com.win.module.wms.dal.mysql.productionreceiptJob.ProductionreceiptJobMainMapper;
import com.win.module.wms.enums.job.JobStatusEnum;
import com.win.module.wms.enums.job.JobStatusState;
import com.win.module.wms.service.documentSwitch.SwitchService;
import com.win.module.wms.service.expectin.ExpectinService;
import com.win.module.wms.service.expectout.ExpectoutService;
import com.win.module.wms.service.jobsetting.JobsettingService;
import com.win.module.wms.service.transaction.TransactionService;
import com.win.module.wms.util.JobUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import com.win.module.wms.dal.dataobject.issueJob.IssueJobMainDO; import com.win.module.wms.dal.dataobject.issueJob.IssueJobMainDO;
@ -19,6 +60,7 @@ import com.win.module.wms.convert.issueJob.IssueJobMainConvert;
import com.win.module.wms.dal.mysql.issueJob.IssueJobMainMapper; import com.win.module.wms.dal.mysql.issueJob.IssueJobMainMapper;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
import static com.win.module.wms.enums.ErrorCodeConstants.*; import static com.win.module.wms.enums.ErrorCodeConstants.*;
/** /**
@ -30,39 +72,47 @@ import static com.win.module.wms.enums.ErrorCodeConstants.*;
@Validated @Validated
public class IssueJobMainServiceImpl implements IssueJobMainService { public class IssueJobMainServiceImpl implements IssueJobMainService {
@Resource
private OnlinesettlementRecordDetailMapper onlinesettlementRecordDetailMapper;
@Resource
private OnlinesettlementRecordMainMapper onlinesettlementRecordMainMapper;
@Resource
private ProductionreceiptJobDetailMapper productionreceiptJobDetailMapper;
@Resource
private JobsettingService jobsettingService;
@Resource
private ProductionreceiptJobMainMapper productionreceiptJobMainMapper;
@Resource
private SwitchService switchService;
@Resource
private ExpectinService expectinService;
@Resource
private ExpectoutService expectoutService;
@Resource
private TransactionService transactionService;
@Resource
private JobUtils jobUtils;
@Resource
private IssueRecordDetailMapper issueRecordDetailMapper;
@Resource
private IssueRecordMainMapper issueRecordMainMapper;
@Resource
private SerialNumberApi serialNumberApi;
@Resource
private IssueJobDetailService issueJobDetailService;
@Resource
private TrendsApi trendsApi;
@Resource
private AdminUserApi userApi;
@Resource @Resource
private IssueJobMainMapper issueJobMainMapper; private IssueJobMainMapper issueJobMainMapper;
@Override private IssueJobMainDO validateIssueJobMainExists(Long id) {
public Long createIssueJobMain(IssueJobMainCreateReqVO createReqVO) { IssueJobMainDO issueJobMainDO = issueJobMainMapper.selectById(id);
// 插入 if (issueJobMainDO == null) {
IssueJobMainDO issueJobMain = IssueJobMainConvert.INSTANCE.convert(createReqVO);
issueJobMainMapper.insert(issueJobMain);
// 返回
return issueJobMain.getId();
}
@Override
public void updateIssueJobMain(IssueJobMainUpdateReqVO updateReqVO) {
// 校验存在
validateIssueJobMainExists(updateReqVO.getId());
// 更新
IssueJobMainDO updateObj = IssueJobMainConvert.INSTANCE.convert(updateReqVO);
issueJobMainMapper.updateById(updateObj);
}
@Override
public void deleteIssueJobMain(Long id) {
// 校验存在
validateIssueJobMainExists(id);
// 删除
issueJobMainMapper.deleteById(id);
}
private void validateIssueJobMainExists(Long id) {
if (issueJobMainMapper.selectById(id) == null) {
throw exception(ISSUE_JOB_MAIN_NOT_EXISTS); throw exception(ISSUE_JOB_MAIN_NOT_EXISTS);
} }
return issueJobMainDO;
} }
@Override @Override
@ -75,6 +125,11 @@ public class IssueJobMainServiceImpl implements IssueJobMainService {
return issueJobMainMapper.selectBatchIds(ids); return issueJobMainMapper.selectBatchIds(ids);
} }
@Override
public List<IssueJobMainDO> getIssueJobMainList(CustomConditions conditions) {
return issueJobMainMapper.selectSeniorList(conditions);
}
@Override @Override
public PageResult<IssueJobMainDO> getIssueJobMainPage(IssueJobMainPageReqVO pageReqVO) { public PageResult<IssueJobMainDO> getIssueJobMainPage(IssueJobMainPageReqVO pageReqVO) {
return issueJobMainMapper.selectPage(pageReqVO); return issueJobMainMapper.selectPage(pageReqVO);
@ -109,4 +164,286 @@ public class IssueJobMainServiceImpl implements IssueJobMainService {
map.put("count", l.intValue()); map.put("count", l.intValue());
return map; return map;
} }
@Override
@Transactional
public Integer acceptIssueJobMain(Long id) {
IssueJobMainDO issueJobMainDO = this.validateIssueJobMainExists(id);
JobStatusState jobStatusState = new JobStatusState(issueJobMainDO.getStatus());
if(!jobStatusState.accept()) {
throw exception(ISSUE_JOB_MAIN_STATUS_ERROR);
}
Long userId = getLoginUserId();
AdminUserRespDTO userRespDTO = userApi.getUser(userId);
issueJobMainDO.setStatus(jobStatusState.getState().getCode());
issueJobMainDO.setAcceptUserId(String.valueOf(userId));
issueJobMainDO.setAcceptUserName(userRespDTO.getNickname());
issueJobMainDO.setAcceptTime(LocalDateTime.now());
trendsApi.createTrends(id, "issueJob", "承接了发料任务", TrendsTypeEnum.UPDATE);
return issueJobMainMapper.updateById(issueJobMainDO);
}
@Override
@Transactional
public Integer abandonIssueJobMain(Long id) {
IssueJobMainDO issueJobMainDO = this.validateIssueJobMainExists(id);
JobStatusState jobStatusState = new JobStatusState(issueJobMainDO.getStatus());
if(!jobStatusState.cancelAccept()) {
throw exception(ISSUE_JOB_MAIN_STATUS_ERROR);
}
issueJobMainDO.setStatus(jobStatusState.getState().getCode());
issueJobMainDO.setAcceptUserId(null);
issueJobMainDO.setAcceptUserName(null);
issueJobMainDO.setAcceptTime(null);
trendsApi.createTrends(id, "issueJob", "取消了发料任务", TrendsTypeEnum.UPDATE);
return issueJobMainMapper.updateById(issueJobMainDO);
}
@Override
@Transactional
public Integer closeIssueJobMain(Long id) {
IssueJobMainDO issueJobMainDO = this.validateIssueJobMainExists(id);
JobStatusState jobStatusState = new JobStatusState(issueJobMainDO.getStatus());
if(!jobStatusState.close()) {
throw exception(ISSUE_JOB_MAIN_STATUS_ERROR);
}
issueJobMainDO.setStatus(jobStatusState.getState().getCode());
trendsApi.createTrends(id, "issueJob", "关闭了发料任务", TrendsTypeEnum.UPDATE);
return issueJobMainMapper.updateById(issueJobMainDO);
}
@Override
@Transactional
public Integer executeIssueJobMain(IssueJobMainUpdateReqVO issueJobMainUpdateReqVO) {
//查询数据
IssueJobMainDO issueJobMainDO = this.validateIssueJobMainExists(issueJobMainUpdateReqVO.getId());
List<IssueJobDetailDO> subList = issueJobDetailService.selectList(issueJobMainDO.getId());
JobStatusState jobStatusState = new JobStatusState(issueJobMainDO.getStatus());
boolean flag = jobStatusState.execute();
if(!flag) {
throw new ServiceException(ISSUE_JOB_MAIN_STATUS_ERROR);
}
//更新完成信息
Long userId = getLoginUserId();
AdminUserRespDTO userRespDTO = userApi.getUser(userId);
issueJobMainDO.setStatus(jobStatusState.getState().getCode());
issueJobMainDO.setCompleteTime(LocalDateTime.now());
issueJobMainDO.setCompleteUserId(String.valueOf(userRespDTO.getId()));
issueJobMainDO.setCompleteUserName(userRespDTO.getNickname());
//更新任务表状态
int result = issueJobMainMapper.updateById(issueJobMainDO);
//创建 发料记录 主表
IssueRecordMainDO issueRecordMainDO = new IssueRecordMainDO();
BeanUtils.copyProperties(issueJobMainDO, issueRecordMainDO);
String number = serialNumberApi.generateCode(RuleCodeEnum.INSPECT_RECORD.getCode());
issueRecordMainDO.setNumber(number);
issueRecordMainDO.setJobNumber(issueJobMainDO.getNumber());
issueRecordMainDO.setId(null);
issueRecordMainDO.setWorkshopCode(issueJobMainDO.getWorkShopCode());
issueRecordMainDO.setCreator(null);
issueRecordMainDO.setCreateTime(null);
issueRecordMainDO.setUpdater(null);
issueRecordMainDO.setUpdateTime(null);
//增加业务类型
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("IssueJob");
issueRecordMainDO.setBusinessType(businesstypeDO.getCode());
issueRecordMainMapper.insert(issueRecordMainDO);
// 获取参数中的sublist
List<IssueJobDetailUpdateReqVO> issueJobDetailUpdateReqVOList = issueJobMainUpdateReqVO.getSubList();
//发料记录子
List<IssueRecordDetailDO> issueRecordDetailDOList = new ArrayList<>();
//库存事务
List<TransactionCreateReqVO> transactionCreateReqVOList = new ArrayList<>();
subList.forEach(subListItem -> {
// 获取参数中recordLst
issueJobDetailUpdateReqVOList.forEach(DetailUpdateItem -> {
// 匹配任务子表与参数中子表
if (DetailUpdateItem.getId().equals(subListItem.getId())) {
List<Map<String,Object>> recordLst = DetailUpdateItem.getRecordLst();
recordLst.forEach(recordLstItem -> {
IssueRecordDetailDO issueRecordDetailDO = new IssueRecordDetailDO();
BeanUtils.copyProperties(subListItem, issueRecordDetailDO);
issueRecordDetailDO.setId(null);
issueRecordDetailDO.setNumber(number);
issueRecordDetailDO.setMasterId(issueRecordMainDO.getId());
issueRecordDetailDO.setCreator(null);
issueRecordDetailDO.setCreateTime(null);
issueRecordDetailDO.setUpdater(null);
issueRecordDetailDO.setUpdateTime(null);
// 如果使用在途库 赋值 业务类型对应的在途库库位
issueRecordDetailDO.setOnTheWayLocationCode(issueRecordMainDO.getUseOnTheWayLocation().equals("TRUE")?businesstypeDO.getOnTheWayArea():"");
// 根据recordLst 进行赋值子表部分数据
issueRecordDetailDO.setQty(new BigDecimal(recordLstItem.get("handleQty").toString()));
issueRecordDetailDO.setToPackingNumber(recordLstItem.get("toPackingNumber").toString());
issueRecordDetailDO.setToContainerNumber(recordLstItem.get("toContainerNumber").toString());
issueRecordDetailDO.setToBatch(recordLstItem.get("toBatch").toString());
issueRecordDetailDO.setToLocationCode(recordLstItem.get("toLocationCode").toString());
issueRecordDetailDO.setInventoryStatus(recordLstItem.get("toInventoryStatus").toString());
issueRecordDetailDO.setSupplierCode(recordLstItem.get("supplierCode").toString());
issueRecordDetailDOList.add(issueRecordDetailDO);
//添加库存事务list
TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO();
BeanUtils.copyProperties(issueRecordDetailDO, transactionCreateReqVO);
TransactiontypeDO transactiontypeDO = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType());
transactionCreateReqVO.setWorker(issueRecordDetailDO.getCreator());
transactionCreateReqVO.setInventoryAction(transactiontypeDO.getInventoryAction());
transactionCreateReqVO.setTransactionType(transactiontypeDO.getCode());
transactionCreateReqVO.setBusinessType(issueRecordMainDO.getBusinessType());
transactionCreateReqVO.setOwnerCode(issueRecordDetailDO.getFromOwnerCode());
transactionCreateReqVO.setRecordNumber(number);
transactionCreateReqVO.setId(null);
transactionCreateReqVO.setPackingNumber(issueRecordDetailDO.getToPackingNumber());
transactionCreateReqVO.setBatch(issueRecordDetailDO.getToBatch());
transactionCreateReqVO.setContainerNumber(issueRecordDetailDO.getToContainerNumber());
transactionCreateReqVO.setAmount(BigDecimal.ZERO);
// 如果使用在途库 库存事务 库位赋值为 在途库
transactionCreateReqVO.setLocationCode(issueRecordMainDO.getUseOnTheWayLocation().equals("TRUE")?issueRecordDetailDO.getOnTheWayLocationCode():recordLstItem.get("toLocationCode").toString());
transactionCreateReqVOList.add(transactionCreateReqVO);
});
}
});
});
if(!issueRecordDetailDOList.isEmpty()) {
issueRecordDetailMapper.insertBatch(issueRecordDetailDOList);
}
// 1-创建发料记录后 是否创建 生产收料任务 2-同时满足 使用在途库
if (issueRecordMainDO.getUseOnTheWayLocation().equals("TRUE") && (switchService.selectSwitchExist("CreateProductionReceiptJobAfterIssueRecordCreated").getEffectiveSetValue().equals("TRUE")) ) {
// 创建 生产收料任务
createProductionreceiptJob(issueRecordMainDO,issueRecordDetailDOList);
}
// 不使用在途库 创建 上线结算记录
if (issueRecordMainDO.getUseOnTheWayLocation().equals("FALSE")) {
// 创建 上线结算记录
createOnlinesettlementRecord(issueRecordMainDO,issueRecordDetailDOList);
}
//增加库存事务
transactionService.createTransaction(transactionCreateReqVOList);
//移除预计入
expectinService.deleteExpectinByJobNumber(issueJobMainDO.getNumber());
//移除预计出
expectoutService.deleteExpectoutByJobNumber(issueJobMainDO.getNumber());
//变更记录
trendsApi.createTrends(issueJobMainDO.getId(), "issueJob", "执行了发料任务", TrendsTypeEnum.UPDATE);
return result;
}
/**
* 创建 生产收料任务
* @param issueRecordMainDO
* @param issueRecordDetailDOList
*/
private void createProductionreceiptJob (IssueRecordMainDO issueRecordMainDO, List<IssueRecordDetailDO> issueRecordDetailDOList) {
//生产收料任务主
ProductionreceiptJobMainDO productionreceiptJobMainDO = new ProductionreceiptJobMainDO();
BeanUtils.copyProperties(issueRecordMainDO, productionreceiptJobMainDO);
String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCTION_RECEIPT_JOB.getCode());
productionreceiptJobMainDO.setId(null);
productionreceiptJobMainDO.setNumber(number);
productionreceiptJobMainDO.setIssueJobNumber(issueRecordMainDO.getJobNumber());
productionreceiptJobMainDO.setIssueRecordNumber(issueRecordMainDO.getNumber());
productionreceiptJobMainDO.setStatus(JobStatusEnum.PENDING.getCode());
productionreceiptJobMainDO.setRequestDueTime(issueRecordMainDO.getDueTime());
productionreceiptJobMainDO.setCreator(null);
productionreceiptJobMainDO.setCreateTime(null);
productionreceiptJobMainDO.setUpdater(null);
productionreceiptJobMainDO.setUpdateTime(null);
// TODO: 字段数据无来源: 过期时间 expired_time 优先级 priority 优先级增量 priority_increment
// 增加任务单据设置
JobsettingDO jobsettingDO = jobsettingService.selectJobsettingExist("IssueReceiptJob");
productionreceiptJobMainDO.setAutoComplete(jobsettingDO.getAutoComplete());
productionreceiptJobMainDO.setAllowModifyLocation(jobsettingDO.getAllowModifyLocation());
productionreceiptJobMainDO.setAllowModifyQty(jobsettingDO.getAllowModifyQty());
productionreceiptJobMainDO.setAllowBiggerQty(jobsettingDO.getAllowBiggerQty());
productionreceiptJobMainDO.setAllowSmallerQty(jobsettingDO.getAllowSmallerQty());
productionreceiptJobMainDO.setAllowModifyInventoryStatus(jobsettingDO.getAllowModifyInventoryStatus());
productionreceiptJobMainDO.setAllowContinuousScanning(jobsettingDO.getAllowContinuousScanning());
productionreceiptJobMainDO.setAllowPartialComplete(jobsettingDO.getAllowPartialComplete());
productionreceiptJobMainDO.setAllowModifyPackingNumber(jobsettingDO.getAllowModifyPackingNumber());
productionreceiptJobMainDO.setAllowModifyBatch(jobsettingDO.getAllowModifyBach());
//增加业务类型
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductionReceiptJob");
productionreceiptJobMainDO.setBusinessType(businesstypeDO.getCode());
productionreceiptJobMainMapper.insert(productionreceiptJobMainDO);
//生产收料任务子 集合
List<ProductionreceiptJobDetailDO> productionreceiptJobDetailDOList = new ArrayList<>();
// 预计入 集合
List<ExpectinCreateReqVO> expectinCreateReqVOList = new ArrayList<>();
// 构造任务子数据
issueRecordDetailDOList.forEach(item -> {
ProductionreceiptJobDetailDO productionreceiptJobDetailDO = new ProductionreceiptJobDetailDO();
BeanUtils.copyProperties(item, productionreceiptJobDetailDO);
productionreceiptJobDetailDO.setPackingNumber(item.getToPackingNumber());
productionreceiptJobDetailDO.setContainerNumber(item.getToContainerNumber());
productionreceiptJobDetailDO.setBatch(item.getToBatch());
productionreceiptJobDetailDO.setMasterId(productionreceiptJobMainDO.getId());
productionreceiptJobDetailDO.setNumber(productionreceiptJobMainDO.getNumber());
productionreceiptJobDetailDO.setCreator(null);
productionreceiptJobDetailDO.setCreateTime(null);
productionreceiptJobDetailDO.setUpdater(null);
productionreceiptJobDetailDO.setUpdateTime(null);
productionreceiptJobDetailDOList.add(productionreceiptJobDetailDO);
//生成 预计入
ExpectinCreateReqVO expectinCreateReqVO = new ExpectinCreateReqVO();
BeanUtils.copyProperties(productionreceiptJobDetailDO, expectinCreateReqVO);
expectinCreateReqVO.setJobNumber(number);
expectinCreateReqVO.setBusinessType(productionreceiptJobMainDO.getBusinessType());
expectinCreateReqVO.setLocationCode(productionreceiptJobDetailDO.getToLocationCode());
expectinCreateReqVO.setOwnerCode(productionreceiptJobDetailDO.getToOwnerCode());
expectinCreateReqVOList.add(expectinCreateReqVO);
});
if(!productionreceiptJobDetailDOList.isEmpty()) {
productionreceiptJobDetailMapper.insertBatch(productionreceiptJobDetailDOList);
}
//增加预计入
expectinService.createExpectin(expectinCreateReqVOList);
//变更记录
trendsApi.createTrends(productionreceiptJobMainDO.getId(), "productionReceiptJob", "创建了生产收料任务", TrendsTypeEnum.CREATE);
}
/**
* 创建 上线结算记录
* @param issueRecordMainDO
* @param issueRecordDetailDOList
*/
private void createOnlinesettlementRecord (IssueRecordMainDO issueRecordMainDO, List<IssueRecordDetailDO> issueRecordDetailDOList) {
OnlinesettlementRecordMainDO onlinesettlementRecordMainDO = new OnlinesettlementRecordMainDO();
BeanUtils.copyProperties(issueRecordMainDO, onlinesettlementRecordMainDO);
onlinesettlementRecordMainDO.setIssueRecordNumber(issueRecordMainDO.getNumber());
onlinesettlementRecordMainDO.setWarehouseCode(issueRecordMainDO.getToWarehouseCode());
String number = serialNumberApi.generateCode(RuleCodeEnum.ONLINE_SETTLEMENT_RECORD.getCode());
onlinesettlementRecordMainDO.setId(null);
onlinesettlementRecordMainDO.setNumber(number);
onlinesettlementRecordMainDO.setBusinessType("");
onlinesettlementRecordMainDO.setInTransactionType("");
onlinesettlementRecordMainDO.setOutTransactionType("");
onlinesettlementRecordMainDO.setRequestNumber("");
onlinesettlementRecordMainDO.setCreator(null);
onlinesettlementRecordMainDO.setCreateTime(null);
onlinesettlementRecordMainDO.setUpdater(null);
onlinesettlementRecordMainDO.setUpdateTime(null);
onlinesettlementRecordMainMapper.insert(onlinesettlementRecordMainDO);
//上线结算记录子 集合
List<OnlinesettlementRecordDetailDO> onlinesettlementRecordDetailDOList = new ArrayList<>();
issueRecordDetailDOList.forEach(item -> {
OnlinesettlementRecordDetailDO onlinesettlementRecordDetailDO = new OnlinesettlementRecordDetailDO();
BeanUtils.copyProperties(item, onlinesettlementRecordDetailDO);
onlinesettlementRecordDetailDO.setPackingNumber(item.getToPackingNumber());
onlinesettlementRecordDetailDO.setContainerNumber(item.getToContainerNumber());
onlinesettlementRecordDetailDO.setBatch(item.getToBatch());
onlinesettlementRecordDetailDO.setLocationCode(item.getToLocationCode());
onlinesettlementRecordDetailDO.setLocationGroupCode(item.getToLocationGroupCode());
onlinesettlementRecordDetailDO.setAreaCode(item.getToAreaCode());
onlinesettlementRecordDetailDO.setMasterId(onlinesettlementRecordMainDO.getId());
onlinesettlementRecordDetailDO.setNumber(number);
onlinesettlementRecordDetailDO.setId(null);
onlinesettlementRecordDetailDO.setCreator(null);
onlinesettlementRecordDetailDO.setCreateTime(null);
onlinesettlementRecordDetailDO.setUpdater(null);
onlinesettlementRecordDetailDO.setUpdateTime(null);
onlinesettlementRecordDetailDOList.add(onlinesettlementRecordDetailDO);
});
if(!onlinesettlementRecordDetailDOList.isEmpty()) {
onlinesettlementRecordDetailMapper.insertBatch(onlinesettlementRecordDetailDOList);
}
}
} }

6
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRecord/IssueRecordDetailService.java

@ -80,4 +80,10 @@ public interface IssueRecordDetailService {
*/ */
List<IssueRecordDetailDO> getIssueRecordDetailList(IssueRecordDetailExportReqVO exportReqVO); List<IssueRecordDetailDO> getIssueRecordDetailList(IssueRecordDetailExportReqVO exportReqVO);
/**
* 根据主表id查询
* @param id
* @return
*/
List<IssueRecordDetailDO> selectList(Long id);
} }

5
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRecord/IssueRecordDetailServiceImpl.java

@ -87,4 +87,9 @@ public class IssueRecordDetailServiceImpl implements IssueRecordDetailService {
return issueRecordDetailMapper.selectList(exportReqVO); return issueRecordDetailMapper.selectList(exportReqVO);
} }
@Override
public List<IssueRecordDetailDO> selectList(Long masterId) {
return issueRecordDetailMapper.selectList(masterId);
}
} }

9
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRecord/IssueRecordMainService.java

@ -10,6 +10,7 @@ import com.win.module.wms.controller.issueRecord.vo.IssueRecordMainPageReqVO;
import com.win.module.wms.controller.issueRecord.vo.IssueRecordMainUpdateReqVO; import com.win.module.wms.controller.issueRecord.vo.IssueRecordMainUpdateReqVO;
import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordMainDO; import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordMainDO;
import com.win.framework.common.pojo.PageResult; import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobMainDO;
/** /**
* 发料记录主 Service 接口 * 发料记录主 Service 接口
@ -56,6 +57,14 @@ public interface IssueRecordMainService {
*/ */
List<IssueRecordMainDO> getIssueRecordMainList(Collection<Long> ids); List<IssueRecordMainDO> getIssueRecordMainList(Collection<Long> ids);
/**
* 获得发料记录主列表, 用于 Excel 导出
*
* @param conditions 查询条件
* @return 采购收货申请主列表
*/
List<IssueRecordMainDO> getIssueRecordMainList(CustomConditions conditions);
/** /**
* 获得发料记录主分页 * 获得发料记录主分页
* *

5
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRecord/IssueRecordMainServiceImpl.java

@ -74,6 +74,11 @@ public class IssueRecordMainServiceImpl implements IssueRecordMainService {
return issueRecordMainMapper.selectBatchIds(ids); return issueRecordMainMapper.selectBatchIds(ids);
} }
@Override
public List<IssueRecordMainDO> getIssueRecordMainList(CustomConditions conditions) {
return issueRecordMainMapper.selectSeniorList(conditions);
}
@Override @Override
public PageResult<IssueRecordMainDO> getIssueRecordMainPage(IssueRecordMainPageReqVO pageReqVO) { public PageResult<IssueRecordMainDO> getIssueRecordMainPage(IssueRecordMainPageReqVO pageReqVO) {
return issueRecordMainMapper.selectPage(pageReqVO); return issueRecordMainMapper.selectPage(pageReqVO);

Loading…
Cancel
Save