Browse Source

生产退料记录

master
陈薪名 2 years ago
parent
commit
085969a1bf
  1. 1
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRecord/IssueRecordMainController.java
  2. 134
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/ProductionreturnJobMainController.java
  3. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/vo/ProductionreturnJobDetailPageReqVO.java
  4. 22
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/vo/ProductionreturnJobDetailUpdateReqVO.java
  5. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/vo/ProductionreturnJobMainBaseVO.java
  6. 159
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/vo/ProductionreturnJobMainExcelVO.java
  7. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/vo/ProductionreturnJobMainPageReqVO.java
  8. 7
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/vo/ProductionreturnJobMainUpdateReqVO.java
  9. 80
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRecord/ProductionreturnRecordMainController.java
  10. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRecord/vo/ProductionreturnRecordDetailPageReqVO.java
  11. 126
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRecord/vo/ProductionreturnRecordMainExcelVO.java
  12. 12
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionreturnJob/ProductionreturnJobMainConvert.java
  13. 12
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionreturnRecord/ProductionreturnRecordMainConvert.java
  14. 7
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnJob/ProductionreturnJobDetailMapper.java
  15. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnJob/ProductionreturnJobMainMapper.java
  16. 7
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnRecord/ProductionreturnRecordDetailMapper.java
  17. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnRecord/ProductionreturnRecordMainMapper.java
  18. 1
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnJob/ProductionreturnJobDetailService.java
  19. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnJob/ProductionreturnJobDetailServiceImpl.java
  20. 11
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnJob/ProductionreturnJobMainService.java
  21. 268
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnJob/ProductionreturnJobMainServiceImpl.java
  22. 7
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRecord/ProductionreturnRecordDetailService.java
  23. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRecord/ProductionreturnRecordDetailServiceImpl.java
  24. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRecord/ProductionreturnRecordMainService.java
  25. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRecord/ProductionreturnRecordMainServiceImpl.java
  26. 157
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainServiceImpl.java

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

@ -103,6 +103,7 @@ public class IssueRecordMainController {
IssueRecordMainExcelVO vo = IssueRecordMainConvert.INSTANCE.convert(mainDO, detailDO);
AdminUserRespDTO user = userApi.getUser(Long.valueOf(mainDO.getCreator()));
vo.setCreator(user.getNickname());
vo.setUpdater(user.getNickname());
resultList.add(vo);
}
}

134
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/ProductionreturnJobMainController.java

@ -3,6 +3,7 @@ package com.win.module.wms.controller.productionreturnJob;
import com.win.framework.common.pojo.CommonResult;
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.excel.core.util.ExcelUtils;
import com.win.framework.operatelog.core.annotations.OperateLog;
import com.win.module.system.api.user.AdminUserApi;
@ -12,6 +13,7 @@ import com.win.module.wms.convert.productionreturnJob.ProductionreturnJobDetailC
import com.win.module.wms.convert.productionreturnJob.ProductionreturnJobMainConvert;
import com.win.module.wms.dal.dataobject.productionreturnJob.ProductionreturnJobDetailDO;
import com.win.module.wms.dal.dataobject.productionreturnJob.ProductionreturnJobMainDO;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.productionreturnJob.ProductionreturnJobDetailService;
import com.win.module.wms.service.productionreturnJob.ProductionreturnJobMainService;
import io.swagger.v3.oas.annotations.Operation;
@ -26,10 +28,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.*;
import static com.win.framework.common.pojo.CommonResult.success;
import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
@ -99,23 +98,6 @@ public class ProductionreturnJobMainController {
return success(ProductionreturnJobMainConvert.INSTANCE.convertPage(pageResult));
}
@GetMapping("/export-excel")
@Operation(summary = "导出生产退料任务主 Excel")
@PreAuthorize("@ss.hasPermission('wms:productionreturn-job-main:export')")
@OperateLog(type = EXPORT)
public void exportProductionreturnJobMainExcel(@Valid ProductionreturnJobMainExportReqVO exportReqVO,
HttpServletResponse response) throws IOException {
List<ProductionreturnJobMainDO> list = productionreturnJobMainService.getProductionreturnJobMainList(exportReqVO);
// 导出 Excel
List<ProductionreturnJobMainExcelVO> datas = ProductionreturnJobMainConvert.INSTANCE.convertList02(list);
for(ProductionreturnJobMainExcelVO vo : datas) {
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator()));
//后端创建个字段作为前端展示的虚拟字段
vo.setCreator(user.getNickname());
}
ExcelUtils.write(response, "生产退料任务主.xls", "数据", ProductionreturnJobMainExcelVO.class, datas);
}
@PostMapping("/senior")
@Operation(summary = "高级搜索获得生产退料任务主分页")
@PreAuthorize("@ss.hasPermission('wms:productionreturn-job-main:query')")
@ -130,6 +112,71 @@ public class ProductionreturnJobMainController {
return success(result);
}
private List<ProductionreturnJobMainExcelVO> getExcelVo(List<ProductionreturnJobMainDO> list, Map<Integer, String[]> mapDropDown) {
String[] locationType = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.LOCATION_TYPE);
mapDropDown.put(28, locationType);
mapDropDown.put(29, locationType);
String[] areaType = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.AREA_TYPE);
mapDropDown.put(15, areaType);
mapDropDown.put(16, areaType);
String[] trueFalse = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE);
mapDropDown.put(17, trueFalse);
mapDropDown.put(18, trueFalse);
mapDropDown.put(19, trueFalse);
mapDropDown.put(20, trueFalse);
mapDropDown.put(21, trueFalse);
mapDropDown.put(22, trueFalse);
mapDropDown.put(23, trueFalse);
mapDropDown.put(24, trueFalse);
mapDropDown.put(25, trueFalse);
mapDropDown.put(26, trueFalse);
mapDropDown.put(27, trueFalse);
String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS);
mapDropDown.put(42, inventoryStatus);
String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM);
mapDropDown.put(51, uom);
List<ProductionreturnJobMainExcelVO> resultList = new ArrayList<>();
// 导出
for(ProductionreturnJobMainDO mainDO : list) {
List<ProductionreturnJobDetailDO> subList = productionreturnJobDetailService.selectList(mainDO.getId());
for(ProductionreturnJobDetailDO detailDO : subList) {
ProductionreturnJobMainExcelVO vo = ProductionreturnJobMainConvert.INSTANCE.convert(mainDO, detailDO);
AdminUserRespDTO user = userApi.getUser(Long.valueOf(mainDO.getCreator()));
vo.setCreator(user.getNickname());
vo.setUpdater(user.getNickname());
resultList.add(vo);
}
}
return resultList;
}
@GetMapping("/export-excel")
@Operation(summary = "导出生产退料任务主 Excel")
@PreAuthorize("@ss.hasPermission('wms:productionreturn-job-main:export')")
@OperateLog(type = EXPORT)
public void exportProductionreturnJobMainExcel(@Valid ProductionreturnJobMainExportReqVO exportReqVO,
HttpServletResponse response) throws IOException {
List<ProductionreturnJobMainDO> list = productionreturnJobMainService.getProductionreturnJobMainList(exportReqVO);
//组装vo
Map<Integer, String[]> mapDropDown = new HashMap<>();
List<ProductionreturnJobMainExcelVO> resultList = this.getExcelVo(list, mapDropDown);
// 导出 Excel
ExcelUtils.write(response, "生产退料任务.xlsx", "生产退料任务", ProductionreturnJobMainExcelVO.class, resultList, mapDropDown);
}
@PostMapping("/export-excel-senior")
@Operation(summary = "导出发料任务 Excel")
@PreAuthorize("@ss.hasPermission('wms:productionreturn-job-main:export')")
@OperateLog(type = EXPORT)
public void exportProductionreturnJobMainSeniorExcel(@Valid @RequestBody CustomConditions conditions, HttpServletResponse response) throws IOException {
List<ProductionreturnJobMainDO> list = productionreturnJobMainService.getProductionreturnJobMainList(conditions);
//组装vo
Map<Integer, String[]> mapDropDown = new HashMap<>();
List<ProductionreturnJobMainExcelVO> resultList = this.getExcelVo(list, mapDropDown);
// 导出 Excel
ExcelUtils.write(response, "生产退料任务.xlsx", "生产退料任务", ProductionreturnJobMainExcelVO.class, resultList, mapDropDown);
}
@GetMapping("/getProductionreturnJobById")
@Operation(summary = "APP获得生产退料主子表明细列表")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@ -140,11 +187,14 @@ public class ProductionreturnJobMainController {
if(result==null) {
return success(result);
};
ProductionreturnJobDetailExportReqVO productionreturnJobDetailExportReqVO = new ProductionreturnJobDetailExportReqVO();
productionreturnJobDetailExportReqVO.setMasterId(result.getId());
List<ProductionreturnJobDetailDO> productionreturnJobDetailList = productionreturnJobDetailService.getProductionreturnJobDetailList(productionreturnJobDetailExportReqVO);
List<ProductionreturnJobDetailExcelVO> productionreturnJobDetailExcelVOS = ProductionreturnJobDetailConvert.INSTANCE.convertList02(productionreturnJobDetailList);
result.setSubList(productionreturnJobDetailExcelVOS);
// ProductionreturnJobDetailExportReqVO productionreturnJobDetailExportReqVO = new ProductionreturnJobDetailExportReqVO();
// productionreturnJobDetailExportReqVO.setMasterId(result.getId());
// List<ProductionreturnJobDetailDO> productionreturnJobDetailList = productionreturnJobDetailService.getProductionreturnJobDetailList(productionreturnJobDetailExportReqVO);
// List<ProductionreturnJobDetailExcelVO> productionreturnJobDetailExcelVOS = ProductionreturnJobDetailConvert.INSTANCE.convertList02(productionreturnJobDetailList);
// result.setSubList(productionreturnJobDetailExcelVOS);
List<ProductionreturnJobDetailDO> productionreturnJobDetailList = productionreturnJobDetailService.selectList(id);
result.setSubList(productionreturnJobDetailList);
return success(result);
}
@ -163,5 +213,37 @@ public class ProductionreturnJobMainController {
return success(countByStatus);
}
@PutMapping(value = "/accept")
@Operation(summary = "承接任务")
@PreAuthorize("@ss.hasPermission('wms:productionreturn-job-main:accept')")
public CommonResult<Boolean> acceptProductionreturnJobMain(@RequestParam("id") Long id) {
int result = productionreturnJobMainService.acceptProductionreturnJobMain(id);
return success(result > 0);
}
@PutMapping(value = "/abandon")
@Operation(summary = "放弃任务")
@PreAuthorize("@ss.hasPermission('wms:productionreturn-job-main:abandon')")
public CommonResult<Boolean> abandonProductionreturnJobMain(@RequestParam("id") Long id) {
int result = productionreturnJobMainService.abandonProductionreturnJobMain(id);
return success(result > 0);
}
@PutMapping(value = "/close")
@Operation(summary = "关闭任务")
@PreAuthorize("@ss.hasPermission('wms:productionreturn-job-main:close')")
public CommonResult<Boolean> closeProductionreturnJobMain(@RequestParam("id") Long id) {
int result = productionreturnJobMainService.closeProductionreturnJobMain(id);
return success(result > 0);
}
@PutMapping("/execute")
@Operation(summary = "执行任务")
@PreAuthorize("@ss.hasPermission('wms:productionreturn-job-main:execute')")
public CommonResult<String> executeProductionreturnJobMain(@Valid @RequestBody ProductionreturnJobMainUpdateReqVO updateReqVO) {
String number = productionreturnJobMainService.executeProductionreturnJobMain(updateReqVO);
return success(number);
}
}

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/vo/ProductionreturnJobDetailPageReqVO.java

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

22
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/vo/ProductionreturnJobDetailUpdateReqVO.java

@ -3,10 +3,32 @@ package com.win.module.wms.controller.productionreturnJob.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
@Schema(description = "管理后台 - 生产退料任务子更新 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ProductionreturnJobDetailUpdateReqVO extends ProductionreturnJobDetailBaseVO {
@Schema(description = "实际收货数量")
private BigDecimal handleQty;
@Schema(description = "到包装")
private String toPackingNumber;
@Schema(description = "到器具")
private String toContainerNumber;
@Schema(description = "到批次")
private String toBatch;
@Schema(description = "到库存状态")
private String toInventoryStatus;
@Schema(description = "到库位")
private String toLocationCode;
}

6
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/vo/ProductionreturnJobMainBaseVO.java

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

159
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/vo/ProductionreturnJobMainExcelVO.java

@ -1,5 +1,7 @@
package com.win.module.wms.controller.productionreturnJob.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 lombok.*;
import java.util.*;
@ -30,35 +32,18 @@ public class ProductionreturnJobMainExcelVO {
@ExcelProperty("车间代码")
private String workshopCode;
@ExcelProperty("从仓库代码")
private String fromWarehouseCode;
@ExcelProperty("到仓库代码")
private String toWarehouseCode;
@ExcelProperty("申请时间")
private LocalDateTime requestTime;
@ExcelProperty("要求截止时间")
private LocalDateTime requestDueTime;
@ExcelProperty(value = "状态", converter = DictConvert.class)
@DictFormat("job_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
@ExcelProperty(value = "状态", converter = JobStatusConverter.class)
private String status;
@ExcelProperty("过期时间")
private LocalDateTime expiredTime;
@ExcelProperty("最后更新时间")
private LocalDateTime updateTime;
@ExcelProperty("最后更新者Id")
private String updater;
@ExcelProperty(value = "状态", converter = DictConvert.class)
@DictFormat("true_false") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String jobStageStatus;
@ExcelProperty("优先级")
private Integer priority;
@ -80,13 +65,6 @@ public class ProductionreturnJobMainExcelVO {
@ExcelProperty("完成时间")
private LocalDateTime completeTime;
@ExcelProperty(value = "从库位类型范围", converter = DictConvert.class)
@DictFormat("location_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String fromLocationTypes;
@ExcelProperty(value = "到库位类型范围", converter = DictConvert.class)
@DictFormat("location_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String toLocationTypes;
@ExcelProperty("单据号")
private String number;
@ -94,49 +72,136 @@ public class ProductionreturnJobMainExcelVO {
@ExcelProperty("业务类型")
private String businessType;
@ExcelProperty("备注")
private String remark;
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@ExcelProperty("创建者id")
private String creator;
@ExcelProperty("从库区代码范围")
@ExcelProperty(value = "从库区代码范围", converter = DictConvert.class)
@DictFormat(DictTypeConstants.AREA_TYPE)
private String fromAreaCodes;
@ExcelProperty("到库区代码范围")
@ExcelProperty(value = "到库区代码范围", converter = DictConvert.class)
@DictFormat(DictTypeConstants.AREA_TYPE)
private String toAreaCodes;
@ExcelProperty("自动完成")
@ExcelProperty(value = "自动完成", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String autoComplete;
@ExcelProperty("允许修改库位")
@ExcelProperty(value = "允许修改库位", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String allowModifyLocation;
@ExcelProperty("允许修改数量")
@ExcelProperty(value = "允许修改数量", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String allowModifyQty;
@ExcelProperty("允许大于推荐数量")
@ExcelProperty(value = "允许大于推荐数量", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String allowBiggerQty;
@ExcelProperty("允许小于推荐数量")
@ExcelProperty(value = "允许小于推荐数量", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String allowSmallerQty;
@ExcelProperty("允许修改库存状态")
@ExcelProperty(value = "允许修改库存状态", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String allowModifyInventoryStatus;
@ExcelProperty("允许连续扫描")
@ExcelProperty(value = "允许连续扫描", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String allowContinuousScanning;
@ExcelProperty("允许部分完成")
@ExcelProperty(value = "允许部分完成", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String allowPartialComplete;
@ExcelProperty("允许修改批次")
@ExcelProperty(value = "允许修改箱码", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String allowModifyPackingNumber;
@ExcelProperty(value = "允许修改批次", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String allowModifyBatch;
@ExcelProperty("允许修改箱码")
private String allowModifyPackingNumber;
@ExcelProperty(value = "从库位类型范围", converter = DictConvert.class)
@DictFormat(DictTypeConstants.LOCATION_TYPE)
private String fromLocationTypes;
@ExcelProperty(value = "到库位类型范围", converter = DictConvert.class)
@DictFormat(DictTypeConstants.LOCATION_TYPE)
private String toLocationTypes;
@ExcelProperty("从仓库代码")
private String fromWarehouseCode;
@ExcelProperty("到仓库代码")
private String toWarehouseCode;
@ExcelProperty("备注")
private String remark;
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@ExcelProperty("创建者id")
private String creator;
@ExcelProperty("最后更新时间")
private LocalDateTime updateTime;
@ExcelProperty("最后更新者Id")
private String updater;
// 子表数据
@ExcelProperty("生产线代码")
private String productionLineCode;
@ExcelProperty("工位代码")
private String workStationCode;
@ExcelProperty("包装号")
private String packingNumber;
@ExcelProperty("器具号")
private String containerNumber;
@ExcelProperty("批次")
private String batch;
@ExcelProperty(value = "库存状态", converter = DictConvert.class)
@DictFormat(DictTypeConstants.INVENTORY_STATUS)
private String inventoryStatus;
@ExcelProperty("从库位代码")
private String 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 projectCode;
@ExcelProperty("数量")
private String qty;
@ExcelProperty(value = "计量单位", converter = DictConvert.class)
@DictFormat(DictTypeConstants.UOM)
private String uom;
@ExcelProperty("从货主代码")
private String fromOwnerCode;
@ExcelProperty("到货主代码")
private String toOwnerCode;
}

6
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/vo/ProductionreturnJobMainPageReqVO.java

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

7
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnJob/vo/ProductionreturnJobMainUpdateReqVO.java

@ -1,12 +1,17 @@
package com.win.module.wms.controller.productionreturnJob.vo;
import com.win.module.wms.controller.issueJob.vo.IssueJobDetailUpdateReqVO;
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 ProductionreturnJobMainUpdateReqVO extends ProductionreturnJobMainBaseVO {
@Schema(description = "子表数据")
private List<@Valid ProductionreturnJobDetailUpdateReqVO> subList;
}

80
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRecord/ProductionreturnRecordMainController.java

@ -3,13 +3,21 @@ package com.win.module.wms.controller.productionreturnRecord;
import com.win.framework.common.pojo.CommonResult;
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.excel.core.util.ExcelUtils;
import com.win.framework.operatelog.core.annotations.OperateLog;
import com.win.module.system.api.user.AdminUserApi;
import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.wms.controller.issueRecord.vo.IssueRecordMainExcelVO;
import com.win.module.wms.controller.productionreturnRecord.vo.*;
import com.win.module.wms.convert.issueRecord.IssueRecordMainConvert;
import com.win.module.wms.convert.productionreturnRecord.ProductionreturnRecordMainConvert;
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.productionreturnRecord.ProductionreturnRecordDetailDO;
import com.win.module.wms.dal.dataobject.productionreturnRecord.ProductionreturnRecordMainDO;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.productionreturnRecord.ProductionreturnRecordDetailService;
import com.win.module.wms.service.productionreturnRecord.ProductionreturnRecordMainService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@ -22,8 +30,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.util.Collection;
import java.util.List;
import java.util.*;
import static com.win.framework.common.pojo.CommonResult.success;
import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
@ -34,6 +41,8 @@ import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
@Validated
public class ProductionreturnRecordMainController {
@Resource
private ProductionreturnRecordDetailService productionreturnRecordDetailService;
@Resource
private ProductionreturnRecordMainService productionreturnRecordMainService;
@ -90,24 +99,6 @@ public class ProductionreturnRecordMainController {
return success(ProductionreturnRecordMainConvert.INSTANCE.convertPage(pageResult));
}
@GetMapping("/export-excel")
@Operation(summary = "导出生产退料记录主 Excel")
@PreAuthorize("@ss.hasPermission('wms:productionreturn-record-main:export')")
@OperateLog(type = EXPORT)
public void exportProductionreturnRecordMainExcel(@Valid ProductionreturnRecordMainExportReqVO exportReqVO,
HttpServletResponse response) throws IOException {
List<ProductionreturnRecordMainDO> list = productionreturnRecordMainService.getProductionreturnRecordMainList(exportReqVO);
// 导出 Excel
List<ProductionreturnRecordMainExcelVO> datas = ProductionreturnRecordMainConvert.INSTANCE.convertList02(list);
for(ProductionreturnRecordMainExcelVO vo : datas) {
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator()));
//后端创建个字段作为前端展示的虚拟字段
vo.setCreator(user.getNickname());
}
ExcelUtils.write(response, "生产退料记录主.xls", "数据", ProductionreturnRecordMainExcelVO.class, datas);
}
@PostMapping("/senior")
@Operation(summary = "高级搜索获得生产退料记录主分页")
@PreAuthorize("@ss.hasPermission('wms:productionreturn-record-main:query')")
@ -122,4 +113,53 @@ public class ProductionreturnRecordMainController {
return success(result);
}
private List<ProductionreturnRecordMainExcelVO> getExcelVo(List<ProductionreturnRecordMainDO> list, Map<Integer, String[]> mapDropDown) {
String[] useOnTheWayLocation = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE);
mapDropDown.put(17, useOnTheWayLocation);
String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS);
mapDropDown.put(26, inventoryStatus);
String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM);
mapDropDown.put(47, uom);
List<ProductionreturnRecordMainExcelVO> resultList = new ArrayList<>();
// 导出
for(ProductionreturnRecordMainDO mainDO : list) {
List<ProductionreturnRecordDetailDO> subList = productionreturnRecordDetailService.selectList(mainDO.getId());
for(ProductionreturnRecordDetailDO detailDO : subList) {
ProductionreturnRecordMainExcelVO vo = ProductionreturnRecordMainConvert.INSTANCE.convert(mainDO, detailDO);
AdminUserRespDTO user = userApi.getUser(Long.valueOf(mainDO.getCreator()));
vo.setCreator(user.getNickname());
vo.setUpdater(user.getNickname());
resultList.add(vo);
}
}
return resultList;
}
@GetMapping("/export-excel")
@Operation(summary = "导出生产退料记录主 Excel")
@PreAuthorize("@ss.hasPermission('wms:productionreturn-record-main:export')")
@OperateLog(type = EXPORT)
public void exportProductionreturnRecordMainExcel(@Valid ProductionreturnRecordMainExportReqVO exportReqVO,
HttpServletResponse response) throws IOException {
List<ProductionreturnRecordMainDO> list = productionreturnRecordMainService.getProductionreturnRecordMainList(exportReqVO);
//组装vo
Map<Integer, String[]> mapDropDown = new HashMap<>();
List<ProductionreturnRecordMainExcelVO> resultList = this.getExcelVo(list, mapDropDown);
// 导出 Excel
ExcelUtils.write(response, "生产退料记录.xlsx", "生产退料记录", ProductionreturnRecordMainExcelVO.class, resultList, mapDropDown);
}
@PostMapping("/export-excel-senior")
@Operation(summary = "导出生产退料记录主 Excel")
@PreAuthorize("@ss.hasPermission('wms:productionreturn-record-main:export')")
@OperateLog(type = EXPORT)
public void exportProductionreturnRecordMainSeniorExcel(@Valid @RequestBody CustomConditions conditions, HttpServletResponse response) throws IOException {
List<ProductionreturnRecordMainDO> list = productionreturnRecordMainService.getProductionreturnRecordMainList(conditions);
//组装vo
Map<Integer, String[]> mapDropDown = new HashMap<>();
List<ProductionreturnRecordMainExcelVO> resultList = this.getExcelVo(list, mapDropDown);
// 导出 Excel
ExcelUtils.write(response, "生产退料记录.xlsx", "生产退料记录", ProductionreturnRecordMainExcelVO.class, resultList, mapDropDown);
}
}

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRecord/vo/ProductionreturnRecordDetailPageReqVO.java

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

126
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRecord/vo/ProductionreturnRecordMainExcelVO.java

@ -1,5 +1,6 @@
package com.win.module.wms.controller.productionreturnRecord.vo;
import com.win.module.wms.enums.DictTypeConstants;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
@ -22,6 +23,9 @@ import com.win.framework.excel.core.convert.DictConvert;
@Data
public class ProductionreturnRecordMainExcelVO {
@ExcelProperty("单据号")
private String number;
@ExcelProperty("申请单号")
private String requestNumber;
@ -31,12 +35,6 @@ public class ProductionreturnRecordMainExcelVO {
@ExcelProperty("车间代码")
private String workshopCode;
@ExcelProperty("出库事务类型")
private String outTransactionType;
@ExcelProperty("入库事务类型")
private String inTransactionType;
@ExcelProperty("执行时间")
private LocalDateTime executeTime;
@ -52,49 +50,117 @@ public class ProductionreturnRecordMainExcelVO {
@ExcelProperty("部门")
private String departmentCode;
@ExcelProperty(value = "接口类型", converter = DictConvert.class)
@DictFormat("interface_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String interfaceType;
@ExcelProperty("从库位类型范围")
private String fromLocationTypes;
@ExcelProperty("到库位类型范围")
private String toLocationTypes;
@ExcelProperty("从库区代码范围")
private String fromAreaCodes;
@ExcelProperty("到库区代码范围")
private String toAreaCodes;
@ExcelProperty("从仓库代码")
private String fromWarehouseCode;
@ExcelProperty("到仓库代码")
private String toWarehouseCode;
@ExcelProperty("出库事务类型")
private String outTransactionType;
@ExcelProperty("入库事务类型")
private String inTransactionType;
@ExcelProperty("单据号")
private String number;
@ExcelProperty(value = "是否可用", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String available;
@ExcelProperty("业务类型")
private String businessType;
@ExcelProperty("备注")
private String remark;
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@ExcelProperty("创建者Id")
private String creator;
@ExcelProperty("代码")
private String code;
@ExcelProperty("最后更新时间")
private LocalDateTime updateTime;
@ExcelProperty("从仓库代码")
private String fromWarehouseCode;
@ExcelProperty("最后更新者Id")
private String updater;
@ExcelProperty(value = "从库位类型范围", converter = DictConvert.class)
@DictFormat("location_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String fromLocationTypes;
// 子表数据
@ExcelProperty("生产线代码")
private String productionLineCode;
@ExcelProperty("从库区代码范围")
private String fromAreaCodes;
@ExcelProperty("工位代码")
private String workStationCode;
@ExcelProperty("到仓库代码")
private String toWarehouseCode;
@ExcelProperty(value = "库存状态", converter = DictConvert.class)
@DictFormat(DictTypeConstants.INVENTORY_STATUS)
private String inventoryStatus;
@ExcelProperty(value = "到库位类型范围", converter = DictConvert.class)
@DictFormat("location_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String toLocationTypes;
@ExcelProperty("从货主代码")
private String fromOwnerCode;
@ExcelProperty("到货主代码")
private String toOwnerCode;
@ExcelProperty("到库区代码范围")
private String toAreaCodes;
@ExcelProperty("从包装号")
private String fromPackingNumber;
@ExcelProperty("是否可用")
private String available;
@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;
}

12
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionreturnJob/ProductionreturnJobMainConvert.java

@ -8,7 +8,10 @@ import com.win.module.wms.controller.productionreturnJob.vo.ProductionreturnJobM
import com.win.module.wms.controller.productionreturnJob.vo.ProductionreturnJobMainExcelVO;
import com.win.module.wms.controller.productionreturnJob.vo.ProductionreturnJobMainRespVO;
import com.win.module.wms.controller.productionreturnJob.vo.ProductionreturnJobMainUpdateReqVO;
import com.win.module.wms.dal.dataobject.productionreturnJob.ProductionreturnJobDetailDO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
import com.win.module.wms.dal.dataobject.productionreturnJob.ProductionreturnJobMainDO;
@ -34,4 +37,13 @@ public interface ProductionreturnJobMainConvert {
List<ProductionreturnJobMainExcelVO> convertList02(List<ProductionreturnJobMainDO> 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"),
})
ProductionreturnJobMainExcelVO convert(ProductionreturnJobMainDO mainDO, ProductionreturnJobDetailDO detailDO);
}

12
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionreturnRecord/ProductionreturnRecordMainConvert.java

@ -8,7 +8,10 @@ import com.win.module.wms.controller.productionreturnRecord.vo.ProductionreturnR
import com.win.module.wms.controller.productionreturnRecord.vo.ProductionreturnRecordMainExcelVO;
import com.win.module.wms.controller.productionreturnRecord.vo.ProductionreturnRecordMainRespVO;
import com.win.module.wms.controller.productionreturnRecord.vo.ProductionreturnRecordMainUpdateReqVO;
import com.win.module.wms.dal.dataobject.productionreturnRecord.ProductionreturnRecordDetailDO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
import com.win.module.wms.dal.dataobject.productionreturnRecord.ProductionreturnRecordMainDO;
@ -34,4 +37,13 @@ public interface ProductionreturnRecordMainConvert {
List<ProductionreturnRecordMainExcelVO> convertList02(List<ProductionreturnRecordMainDO> 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"),
})
ProductionreturnRecordMainExcelVO convert(ProductionreturnRecordMainDO mainDO, ProductionreturnRecordDetailDO detailDO);
}

7
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnJob/ProductionreturnJobDetailMapper.java

@ -7,6 +7,7 @@ import com.win.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.productionreturnJob.vo.ProductionreturnJobDetailExportReqVO;
import com.win.module.wms.controller.productionreturnJob.vo.ProductionreturnJobDetailPageReqVO;
import com.win.module.wms.dal.dataobject.issueJob.IssueJobDetailDO;
import com.win.module.wms.dal.dataobject.productionreturnJob.ProductionreturnJobDetailDO;
import org.apache.ibatis.annotations.Mapper;
@ -22,6 +23,7 @@ public interface ProductionreturnJobDetailMapper extends BaseMapperX<Productionr
default PageResult<ProductionreturnJobDetailDO> selectPage(ProductionreturnJobDetailPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ProductionreturnJobDetailDO>()
.eqIfPresent(ProductionreturnJobDetailDO::getMasterId, reqVO.getMasterId())
.eqIfPresent(ProductionreturnJobDetailDO::getProductionLineCode, reqVO.getProductionLineCode())
.eqIfPresent(ProductionreturnJobDetailDO::getWorkStationCode, reqVO.getWorkStationCode())
.eqIfPresent(ProductionreturnJobDetailDO::getPackingNumber, reqVO.getPackingNumber())
@ -77,4 +79,9 @@ public interface ProductionreturnJobDetailMapper extends BaseMapperX<Productionr
.orderByDesc(ProductionreturnJobDetailDO::getId));
}
default List<ProductionreturnJobDetailDO> selectList(Long masterId) {
return selectList(new LambdaQueryWrapperX<ProductionreturnJobDetailDO>()
.eq(ProductionreturnJobDetailDO::getMasterId, masterId));
}
}

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnJob/ProductionreturnJobMainMapper.java

@ -129,4 +129,8 @@ public interface ProductionreturnJobMainMapper extends BaseMapperX<Productionret
.eq(ProductionreturnJobMainDO::getRequestNumber, requestNumber)
.ne(ProductionreturnJobMainDO::getStatus, OrderStatusEnum.CLOSED.getCode()));
}
default List<ProductionreturnJobMainDO> selectSeniorList(CustomConditions conditions) {
return selectList(QueryWrapperUtils.structure(conditions));
}
}

7
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnRecord/ProductionreturnRecordDetailMapper.java

@ -7,6 +7,7 @@ import com.win.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.productionreturnRecord.vo.ProductionreturnRecordDetailExportReqVO;
import com.win.module.wms.controller.productionreturnRecord.vo.ProductionreturnRecordDetailPageReqVO;
import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordDetailDO;
import com.win.module.wms.dal.dataobject.productionreturnRecord.ProductionreturnRecordDetailDO;
import org.apache.ibatis.annotations.Mapper;
@ -22,6 +23,7 @@ public interface ProductionreturnRecordDetailMapper extends BaseMapperX<Producti
default PageResult<ProductionreturnRecordDetailDO> selectPage(ProductionreturnRecordDetailPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ProductionreturnRecordDetailDO>()
.eqIfPresent(ProductionreturnRecordDetailDO::getMasterId, reqVO.getMasterId())
.eqIfPresent(ProductionreturnRecordDetailDO::getProductionLineCode, reqVO.getProductionLineCode())
.eqIfPresent(ProductionreturnRecordDetailDO::getWorkStationCode, reqVO.getWorkStationCode())
.eqIfPresent(ProductionreturnRecordDetailDO::getInventoryStatus, reqVO.getInventoryStatus())
@ -95,4 +97,9 @@ public interface ProductionreturnRecordDetailMapper extends BaseMapperX<Producti
.orderByDesc(ProductionreturnRecordDetailDO::getId));
}
default List<ProductionreturnRecordDetailDO> selectList(Long masterId) {
return selectList(new LambdaQueryWrapperX<ProductionreturnRecordDetailDO>()
.eq(ProductionreturnRecordDetailDO::getMasterId, masterId));
}
}

5
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnRecord/ProductionreturnRecordMainMapper.java

@ -7,6 +7,7 @@ import com.win.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.productionreturnRecord.vo.ProductionreturnRecordMainExportReqVO;
import com.win.module.wms.controller.productionreturnRecord.vo.ProductionreturnRecordMainPageReqVO;
import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordMainDO;
import com.win.module.wms.dal.dataobject.productionreturnRecord.ProductionreturnRecordMainDO;
import org.apache.ibatis.annotations.Mapper;
@ -22,6 +23,7 @@ public interface ProductionreturnRecordMainMapper extends BaseMapperX<Production
default PageResult<ProductionreturnRecordMainDO> selectPage(ProductionreturnRecordMainPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ProductionreturnRecordMainDO>()
.eqIfPresent(ProductionreturnRecordMainDO::getRequestNumber, reqVO.getRequestNumber())
.eqIfPresent(ProductionreturnRecordMainDO::getJobNumber, reqVO.getJobNumber())
.eqIfPresent(ProductionreturnRecordMainDO::getWorkshopCode, reqVO.getWorkshopCode())
@ -82,4 +84,7 @@ public interface ProductionreturnRecordMainMapper extends BaseMapperX<Production
.orderByDesc(ProductionreturnRecordMainDO::getId));
}
default List<ProductionreturnRecordMainDO> selectSeniorList(CustomConditions conditions) {
return selectList(QueryWrapperUtils.structure(conditions));
}
}

1
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnJob/ProductionreturnJobDetailService.java

@ -81,4 +81,5 @@ public interface ProductionreturnJobDetailService {
*/
PageResult<ProductionreturnJobDetailDO> getProductionreturnJobDetailSenior(CustomConditions conditions);
List<ProductionreturnJobDetailDO> selectList(Long id);
}

5
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnJob/ProductionreturnJobDetailServiceImpl.java

@ -88,4 +88,9 @@ public class ProductionreturnJobDetailServiceImpl implements ProductionreturnJob
public PageResult<ProductionreturnJobDetailDO> getProductionreturnJobDetailSenior(CustomConditions conditions) {
return productionreturnJobDetailMapper.selectSenior(conditions);
}
@Override
public List<ProductionreturnJobDetailDO> selectList(Long masterId) {
return productionreturnJobDetailMapper.selectList(masterId);
}
}

11
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnJob/ProductionreturnJobMainService.java

@ -6,6 +6,7 @@ import com.win.module.wms.controller.productionreturnJob.vo.ProductionreturnJobM
import com.win.module.wms.controller.productionreturnJob.vo.ProductionreturnJobMainExportReqVO;
import com.win.module.wms.controller.productionreturnJob.vo.ProductionreturnJobMainPageReqVO;
import com.win.module.wms.controller.productionreturnJob.vo.ProductionreturnJobMainUpdateReqVO;
import com.win.module.wms.dal.dataobject.issueJob.IssueJobMainDO;
import com.win.module.wms.dal.dataobject.productionreturnJob.ProductionreturnJobMainDO;
import org.springframework.lang.Nullable;
@ -59,6 +60,8 @@ public interface ProductionreturnJobMainService {
*/
List<ProductionreturnJobMainDO> getProductionreturnJobMainList(Collection<Long> ids);
List<ProductionreturnJobMainDO> getProductionreturnJobMainList(CustomConditions conditions);
/**
* 获得生产退料任务主分页
*
@ -97,4 +100,12 @@ public interface ProductionreturnJobMainService {
* @return
*/
Map<String,Integer> getCountByStatus(@Nullable Collection<String> types);
Integer acceptProductionreturnJobMain(Long id);
Integer abandonProductionreturnJobMain(Long id);
Integer closeProductionreturnJobMain(Long id);
String executeProductionreturnJobMain(ProductionreturnJobMainUpdateReqVO updateReqVO);
}

268
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnJob/ProductionreturnJobMainServiceImpl.java

@ -1,28 +1,55 @@
package com.win.module.wms.service.productionreturnJob;
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.module.wms.controller.productionreturnJob.vo.ProductionreturnJobMainCreateReqVO;
import com.win.module.wms.controller.productionreturnJob.vo.ProductionreturnJobMainExportReqVO;
import com.win.module.wms.controller.productionreturnJob.vo.ProductionreturnJobMainPageReqVO;
import com.win.module.wms.controller.productionreturnJob.vo.ProductionreturnJobMainUpdateReqVO;
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.issueJob.vo.IssueJobDetailUpdateReqVO;
import com.win.module.wms.controller.productionreturnJob.vo.*;
import com.win.module.wms.controller.rule.vo.RuleRespVO;
import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO;
import com.win.module.wms.convert.productionreturnJob.ProductionreturnJobMainConvert;
import com.win.module.wms.dal.dataobject.accountcalendar.AccountcalendarDO;
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.issueJob.IssueJobMainDO;
import com.win.module.wms.dal.dataobject.location.LocationDO;
import com.win.module.wms.dal.dataobject.productionreturnJob.ProductionreturnJobDetailDO;
import com.win.module.wms.dal.dataobject.productionreturnJob.ProductionreturnJobMainDO;
import com.win.module.wms.dal.dataobject.productionreturnRecord.ProductionreturnRecordDetailDO;
import com.win.module.wms.dal.dataobject.productionreturnRecord.ProductionreturnRecordMainDO;
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.productionreturnJob.ProductionreturnJobMainMapper;
import com.win.module.wms.dal.mysql.productionreturnRecord.ProductionreturnRecordDetailMapper;
import com.win.module.wms.dal.mysql.productionreturnRecord.ProductionreturnRecordMainMapper;
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.location.LocationService;
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 org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.*;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTIONRETURN_JOB_MAIN_NOT_EXISTS;
import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTIONRETURN_JOB_MAIN_STATUS_ERROR;
import static com.win.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
import static com.win.module.wms.enums.ErrorCodeConstants.*;
/**
* 生产退料任务主 Service 实现类
@ -33,6 +60,30 @@ import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTIONRETURN_JOB_M
@Validated
public class ProductionreturnJobMainServiceImpl implements ProductionreturnJobMainService {
@Resource
private ProductionreturnRecordDetailMapper productionreturnRecordDetailMapper;
@Resource
private TransactionService transactionService;
@Resource
private ExpectinService expectinService;
@Resource
private ExpectoutService expectoutService;
@Resource
private LocationService locationService;
@Resource
private ProductionreturnRecordMainMapper productionreturnRecordMainMapper;
@Resource
private JobUtils jobUtils;
@Resource
private RecordsettingService recordsettingService;
@Resource
private SerialNumberApi serialNumberApi;
@Resource
private ProductionreturnJobDetailService productionreturnJobDetailService;
@Resource
private TrendsApi trendsApi;
@Resource
private AdminUserApi userApi;
@Resource
private ProductionreturnJobMainMapper productionreturnJobMainMapper;
@ -62,10 +113,12 @@ public class ProductionreturnJobMainServiceImpl implements ProductionreturnJobMa
productionreturnJobMainMapper.deleteById(id);
}
private void validateProductionreturnJobMainExists(Long id) {
if (productionreturnJobMainMapper.selectById(id) == null) {
private ProductionreturnJobMainDO validateProductionreturnJobMainExists(Long id) {
ProductionreturnJobMainDO productionreturnJobMainDO = productionreturnJobMainMapper.selectById(id);
if (productionreturnJobMainDO == null) {
throw exception(PRODUCTIONRETURN_JOB_MAIN_NOT_EXISTS);
}
return productionreturnJobMainDO;
}
@Override
@ -78,6 +131,11 @@ public class ProductionreturnJobMainServiceImpl implements ProductionreturnJobMa
return productionreturnJobMainMapper.selectBatchIds(ids);
}
@Override
public List<ProductionreturnJobMainDO> getProductionreturnJobMainList(CustomConditions conditions) {
return productionreturnJobMainMapper.selectSeniorList(conditions);
}
@Override
public PageResult<ProductionreturnJobMainDO> getProductionreturnJobMainPage(ProductionreturnJobMainPageReqVO pageReqVO) {
return productionreturnJobMainMapper.selectPage(pageReqVO);
@ -113,4 +171,190 @@ public class ProductionreturnJobMainServiceImpl implements ProductionreturnJobMa
map.put("count", l.intValue());
return map;
}
@Override
@Transactional
public Integer acceptProductionreturnJobMain(Long id) {
ProductionreturnJobMainDO productionreturnJobMainDO = this.validateProductionreturnJobMainExists(id);
JobStatusState jobStatusState = new JobStatusState(productionreturnJobMainDO.getStatus());
if(!jobStatusState.accept()) {
throw exception(PRODUCTIONRETURN_JOB_MAIN_STATUS_ERROR);
}
Long userId = getLoginUserId();
AdminUserRespDTO userRespDTO = userApi.getUser(userId);
productionreturnJobMainDO.setStatus(jobStatusState.getState().getCode());
productionreturnJobMainDO.setAcceptUserId(String.valueOf(userId));
productionreturnJobMainDO.setAcceptUserName(userRespDTO.getNickname());
productionreturnJobMainDO.setAcceptTime(LocalDateTime.now());
trendsApi.createTrends(id, "productionreturnJob", "承接了生产退料任务", TrendsTypeEnum.UPDATE);
return productionreturnJobMainMapper.updateById(productionreturnJobMainDO);
}
@Override
@Transactional
public Integer abandonProductionreturnJobMain(Long id) {
ProductionreturnJobMainDO productionreturnJobMainDO = this.validateProductionreturnJobMainExists(id);
JobStatusState jobStatusState = new JobStatusState(productionreturnJobMainDO.getStatus());
if(!jobStatusState.cancelAccept()) {
throw exception(PRODUCTIONRETURN_JOB_MAIN_STATUS_ERROR);
}
productionreturnJobMainDO.setStatus(jobStatusState.getState().getCode());
productionreturnJobMainDO.setAcceptUserId(null);
productionreturnJobMainDO.setAcceptUserName(null);
productionreturnJobMainDO.setAcceptTime(null);
trendsApi.createTrends(id, "productionreturnJob", "取消了生产退料任务", TrendsTypeEnum.UPDATE);
return productionreturnJobMainMapper.updateById(productionreturnJobMainDO);
}
@Override
@Transactional
public Integer closeProductionreturnJobMain(Long id) {
ProductionreturnJobMainDO productionreturnJobMainDO = this.validateProductionreturnJobMainExists(id);
JobStatusState jobStatusState = new JobStatusState(productionreturnJobMainDO.getStatus());
if(!jobStatusState.close()) {
throw exception(PRODUCTIONRETURN_JOB_MAIN_STATUS_ERROR);
}
productionreturnJobMainDO.setStatus(jobStatusState.getState().getCode());
trendsApi.createTrends(id, "productionreturnJob", "关闭了生产退料任务", TrendsTypeEnum.UPDATE);
return productionreturnJobMainMapper.updateById(productionreturnJobMainDO);
}
@Override
@Transactional
public String executeProductionreturnJobMain(ProductionreturnJobMainUpdateReqVO updateReqVO) {
//查询数据
ProductionreturnJobMainDO productionreturnJobMainDO = this.validateProductionreturnJobMainExists(updateReqVO.getId());
List<ProductionreturnJobDetailDO> subList = productionreturnJobDetailService.selectList(productionreturnJobMainDO.getId());
JobStatusState jobStatusState = new JobStatusState(productionreturnJobMainDO.getStatus());
boolean flag = jobStatusState.execute();
if(!flag) {
throw new ServiceException(PRODUCTIONRETURN_JOB_MAIN_STATUS_ERROR);
}
//更新完成信息
Long userId = getLoginUserId();
AdminUserRespDTO userRespDTO = userApi.getUser(userId);
productionreturnJobMainDO.setStatus(jobStatusState.getState().getCode());
productionreturnJobMainDO.setCompleteTime(LocalDateTime.now());
productionreturnJobMainDO.setCompleteUserId(String.valueOf(userRespDTO.getId()));
productionreturnJobMainDO.setCompleteUserName(userRespDTO.getNickname());
//更新任务表状态
int result = productionreturnJobMainMapper.updateById(productionreturnJobMainDO);
//创建 记录 主表
ProductionreturnRecordMainDO productionreturnRecordMainDO = new ProductionreturnRecordMainDO();
BeanUtils.copyProperties(productionreturnJobMainDO, productionreturnRecordMainDO);
productionreturnRecordMainDO.setExecuteTime(LocalDateTime.now());
productionreturnRecordMainDO.setActiveDate(LocalDateTime.now());
productionreturnRecordMainDO.setAvailable("TRUE");
productionreturnRecordMainDO.setRequestNumber(productionreturnJobMainDO.getRequestNumber());
productionreturnRecordMainDO.setJobNumber(productionreturnJobMainDO.getNumber());
String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCTION_RECEIPT_RECORD.getCode());
productionreturnRecordMainDO.setNumber(number);
// 接口类型
RecordsettingDO recordsettingDO = recordsettingService.selectRecordsettingExist("ProductionReturnRecord");
productionreturnRecordMainDO.setInterfaceType(recordsettingDO.getInterfaceType());
//增加业务类型
BusinesstypeDO businesstypeDO ;
// 判断是合格还是隔离
// 合格
if (productionreturnJobMainDO.getBusinessType().equals("ReturnToStoreRequest")) {
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ReturnToStoreRecord");
} else { // 隔离
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ReturnToHoldRecord");
}
productionreturnRecordMainDO.setInTransactionType(businesstypeDO.getInTransactionType());
productionreturnRecordMainDO.setOutTransactionType(businesstypeDO.getOutTransactionType());
productionreturnRecordMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes());
productionreturnRecordMainDO.setToLocationTypes(businesstypeDO.getInLocationTypes());
productionreturnRecordMainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes());
productionreturnRecordMainDO.setToAreaCodes(businesstypeDO.getInAreaCodes());
productionreturnRecordMainDO.setBusinessType(businesstypeDO.getCode());
productionreturnRecordMainDO.setId(null);
productionreturnRecordMainDO.setCreateTime(null);
productionreturnRecordMainDO.setCreator(null);
productionreturnRecordMainDO.setUpdateTime(null);
productionreturnRecordMainDO.setUpdater(null);
productionreturnRecordMainMapper.insert(productionreturnRecordMainDO);
// 获取参数中的sublist
List<ProductionreturnJobDetailUpdateReqVO> productionreturnJobDetailUpdateReqVOList = updateReqVO.getSubList();
//库存事务
List<TransactionCreateReqVO> transactionCreateReqVOList = new ArrayList<>();
List<ProductionreturnRecordDetailDO> productionreturnRecordDetailDOList = new ArrayList<>();
subList.forEach(subListItem -> {
productionreturnJobDetailUpdateReqVOList.forEach(DetailUpdateItem -> {
// 匹配任务子表与参数中子表
if (DetailUpdateItem.getId().equals(subListItem.getId())) {
ProductionreturnRecordDetailDO productionreturnRecordDetailDO = new ProductionreturnRecordDetailDO();
BeanUtils.copyProperties(subListItem, productionreturnRecordDetailDO);
productionreturnRecordDetailDO.setFromPackingNumber(subListItem.getPackingNumber());
productionreturnRecordDetailDO.setToPackingNumber(DetailUpdateItem.getToPackingNumber());
productionreturnRecordDetailDO.setFromBatch(subListItem.getBatch());
productionreturnRecordDetailDO.setToBatch(DetailUpdateItem.getToBatch());
productionreturnRecordDetailDO.setFromLocationCode(subListItem.getFromLocationCode());
productionreturnRecordDetailDO.setToLocationCode(DetailUpdateItem.getToLocationCode());
productionreturnRecordDetailDO.setInventoryStatus(DetailUpdateItem.getToInventoryStatus());
productionreturnRecordDetailDO.setFromContainerNumber(subListItem.getContainerNumber());
productionreturnRecordDetailDO.setToContainerNumber(DetailUpdateItem.getToContainerNumber());
productionreturnRecordDetailDO.setQty(DetailUpdateItem.getHandleQty());
// 获取库位信息 并赋值
LocationDO locationDOFrom = locationService.selectLocation(subListItem.getFromLocationCode());
productionreturnRecordDetailDO.setFromAreaCode(locationDOFrom.getAreaCode());
productionreturnRecordDetailDO.setFromLocationGroupCode(locationDOFrom.getLocationGroupCode());
LocationDO locationDOTo = locationService.selectLocation(DetailUpdateItem.getToLocationCode());
productionreturnRecordDetailDO.setToLocationGroupCode(locationDOTo.getLocationGroupCode());
productionreturnRecordDetailDO.setToAreaCode(locationDOTo.getAreaCode());
productionreturnRecordDetailDO.setMasterId(productionreturnRecordMainDO.getId());
productionreturnRecordDetailDO.setNumber(number);
productionreturnRecordDetailDOList.add(productionreturnRecordDetailDO);
//添加库存事务list
// 入动作
TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO();
BeanUtils.copyProperties(productionreturnRecordDetailDO, transactionCreateReqVO);
TransactiontypeDO transactiontypeDO = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType());
transactionCreateReqVO.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId()));
transactionCreateReqVO.setInventoryAction(transactiontypeDO.getInventoryAction());
transactionCreateReqVO.setTransactionType(transactiontypeDO.getCode());
transactionCreateReqVO.setBusinessType(productionreturnRecordMainDO.getBusinessType());
transactionCreateReqVO.setOwnerCode(productionreturnRecordDetailDO.getFromOwnerCode());
transactionCreateReqVO.setRecordNumber(number);
transactionCreateReqVO.setId(null);
transactionCreateReqVO.setPackingNumber(productionreturnRecordDetailDO.getToPackingNumber());
transactionCreateReqVO.setBatch(productionreturnRecordDetailDO.getToBatch());
transactionCreateReqVO.setContainerNumber(productionreturnRecordDetailDO.getToContainerNumber());
transactionCreateReqVO.setAmount(BigDecimal.ZERO);
transactionCreateReqVO.setWarehouseCode(productionreturnRecordMainDO.getToWarehouseCode());
transactionCreateReqVO.setLocationCode(productionreturnRecordDetailDO.getToLocationCode());
transactionCreateReqVOList.add(transactionCreateReqVO);
// 出动作
TransactionCreateReqVO transactionCreateReqVOOut = new TransactionCreateReqVO();
BeanUtils.copyProperties(productionreturnRecordDetailDO, transactionCreateReqVOOut);
TransactiontypeDO transactiontypeDOOut = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getOutTransactionType());
transactionCreateReqVOOut.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId()));
transactionCreateReqVOOut.setInventoryAction(transactiontypeDOOut.getInventoryAction());
transactionCreateReqVOOut.setTransactionType(transactiontypeDOOut.getCode());
transactionCreateReqVOOut.setBusinessType(productionreturnRecordMainDO.getBusinessType());
transactionCreateReqVOOut.setOwnerCode(productionreturnRecordDetailDO.getFromOwnerCode());
transactionCreateReqVOOut.setRecordNumber(number);
transactionCreateReqVOOut.setId(null);
transactionCreateReqVOOut.setPackingNumber(productionreturnRecordDetailDO.getToPackingNumber());
transactionCreateReqVOOut.setBatch(productionreturnRecordDetailDO.getToBatch());
transactionCreateReqVOOut.setContainerNumber(productionreturnRecordDetailDO.getToContainerNumber());
transactionCreateReqVOOut.setAmount(BigDecimal.ZERO);
transactionCreateReqVOOut.setWarehouseCode(productionreturnRecordMainDO.getToWarehouseCode());
transactionCreateReqVO.setLocationCode(productionreturnRecordDetailDO.getToLocationCode());
transactionCreateReqVOList.add(transactionCreateReqVOOut);
}
});
});
productionreturnRecordDetailMapper.insertBatch(productionreturnRecordDetailDOList);
//增加库存事务
transactionService.createTransaction(transactionCreateReqVOList);
//移除预计入
expectinService.deleteExpectinByJobNumber(productionreturnJobMainDO.getNumber());
//移除预计出
expectoutService.deleteExpectoutByJobNumber(productionreturnJobMainDO.getNumber());
//变更记录
trendsApi.createTrends(productionreturnRecordMainDO.getId(), "productionreturnRecord", "生产退料任务生成记录", TrendsTypeEnum.CREATE);
return number;
}
}

7
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRecord/ProductionreturnRecordDetailService.java

@ -80,4 +80,11 @@ public interface ProductionreturnRecordDetailService {
* @return 分页列表
*/
PageResult<ProductionreturnRecordDetailDO> getProductionreturnRecordDetailSenior(CustomConditions conditions);
/**
* 根据主表id查询
* @param id
* @return
*/
List<ProductionreturnRecordDetailDO> selectList(Long id);
}

5
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRecord/ProductionreturnRecordDetailServiceImpl.java

@ -93,4 +93,9 @@ public class ProductionreturnRecordDetailServiceImpl implements Productionreturn
public PageResult<ProductionreturnRecordDetailDO> getProductionreturnRecordDetailSenior(CustomConditions conditions) {
return productionreturnRecordDetailMapper.selectSenior(conditions);
}
@Override
public List<ProductionreturnRecordDetailDO> selectList(Long masterId) {
return productionreturnRecordDetailMapper.selectList(masterId);
}
}

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRecord/ProductionreturnRecordMainService.java

@ -6,6 +6,7 @@ import com.win.module.wms.controller.productionreturnRecord.vo.ProductionreturnR
import com.win.module.wms.controller.productionreturnRecord.vo.ProductionreturnRecordMainExportReqVO;
import com.win.module.wms.controller.productionreturnRecord.vo.ProductionreturnRecordMainPageReqVO;
import com.win.module.wms.controller.productionreturnRecord.vo.ProductionreturnRecordMainUpdateReqVO;
import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordMainDO;
import com.win.module.wms.dal.dataobject.productionreturnRecord.ProductionreturnRecordMainDO;
import javax.validation.Valid;
@ -57,6 +58,9 @@ public interface ProductionreturnRecordMainService {
*/
List<ProductionreturnRecordMainDO> getProductionreturnRecordMainList(Collection<Long> ids);
List<ProductionreturnRecordMainDO> getProductionreturnRecordMainList(CustomConditions conditions);
/**
* 获得生产退料记录主分页
*

5
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRecord/ProductionreturnRecordMainServiceImpl.java

@ -74,6 +74,11 @@ public class ProductionreturnRecordMainServiceImpl implements ProductionreturnRe
return productionreturnRecordMainMapper.selectBatchIds(ids);
}
@Override
public List<ProductionreturnRecordMainDO> getProductionreturnRecordMainList(CustomConditions conditions) {
return productionreturnRecordMainMapper.selectSeniorList(conditions);
}
@Override
public PageResult<ProductionreturnRecordMainDO> getProductionreturnRecordMainPage(ProductionreturnRecordMainPageReqVO pageReqVO) {
return productionreturnRecordMainMapper.selectPage(pageReqVO);

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

@ -16,6 +16,7 @@ import com.win.module.wms.controller.expectin.vo.ExpectinCreateReqVO;
import com.win.module.wms.controller.productionreturnRequest.vo.*;
import com.win.module.wms.controller.productionreturnRequest.vo.*;
import com.win.module.wms.controller.rule.vo.RuleRespVO;
import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO;
import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestMainConvert;
import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestDetailConvert;
import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestMainConvert;
@ -29,15 +30,21 @@ import com.win.module.wms.dal.dataobject.productionline.ProductionlineDO;
import com.win.module.wms.dal.dataobject.productionlineitem.ProductionlineitemDO;
import com.win.module.wms.dal.dataobject.productionreturnJob.ProductionreturnJobDetailDO;
import com.win.module.wms.dal.dataobject.productionreturnJob.ProductionreturnJobMainDO;
import com.win.module.wms.dal.dataobject.productionreturnRecord.ProductionreturnRecordDetailDO;
import com.win.module.wms.dal.dataobject.productionreturnRecord.ProductionreturnRecordMainDO;
import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestDetailDO;
import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestMainDO;
import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestDetailDO;
import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestMainDO;
import com.win.module.wms.dal.dataobject.recordsetting.RecordsettingDO;
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO;
import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO;
import com.win.module.wms.dal.dataobject.workshop.WorkshopDO;
import com.win.module.wms.dal.dataobject.workstation.WorkstationDO;
import com.win.module.wms.dal.mysql.productionreturnJob.ProductionreturnJobDetailMapper;
import com.win.module.wms.dal.mysql.productionreturnJob.ProductionreturnJobMainMapper;
import com.win.module.wms.dal.mysql.productionreturnRecord.ProductionreturnRecordDetailMapper;
import com.win.module.wms.dal.mysql.productionreturnRecord.ProductionreturnRecordMainMapper;
import com.win.module.wms.dal.mysql.productionreturnRequest.ProductionreturnRequestDetailMapper;
import com.win.module.wms.dal.mysql.productionreturnRequest.ProductionreturnRequestMainMapper;
import com.win.module.wms.enums.DictTypeConstants;
@ -52,8 +59,10 @@ import com.win.module.wms.service.jobsetting.JobsettingService;
import com.win.module.wms.service.location.LocationService;
import com.win.module.wms.service.productionline.ProductionlineService;
import com.win.module.wms.service.productionlineitem.ProductionlineitemService;
import com.win.module.wms.service.recordsetting.RecordsettingService;
import com.win.module.wms.service.requestsetting.RequestsettingService;
import com.win.module.wms.service.rule.RuleService;
import com.win.module.wms.service.transaction.TransactionService;
import com.win.module.wms.service.workshop.WorkshopService;
import com.win.module.wms.service.workstation.WorkstationService;
import com.win.module.wms.util.JobUtils;
@ -83,6 +92,16 @@ import static com.win.module.wms.enums.ErrorCodeConstants.*;
@Validated
public class ProductionreturnRequestMainServiceImpl implements ProductionreturnRequestMainService {
@Resource
private TransactionService transactionService;
@Resource
private ProductionreturnRecordMainMapper productionreturnRecordMainMapper;
@Resource
private LocationService locationService;
@Resource
private ProductionreturnRecordDetailMapper productionreturnRecordDetailMapper;
@Resource
private RecordsettingService recordsettingService;
@Resource
private AdminUserApi userApi;
@Resource
@ -90,8 +109,6 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR
@Resource
private ProductionreturnJobDetailMapper productionreturnJobDetailMapper;
@Resource
private LocationService locationService;
@Resource
private RuleService ruleService;
@Resource
private JobsettingService jobsettingService;
@ -620,23 +637,112 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR
private void generateJob (ProductionreturnRequestMainDO mainDO, List<ProductionreturnRequestDetailDO> detailDO) {
//跳过任务直接生成记录
if("TRUE".equals(mainDO.getDirectCreateRecord())) {
// TODO: 发料申请 跳过任务直接生成记录 未做!!
// PurchasereceiptRecordMainCreateReqVO purchasereceiptRecordMainCreateReqVO = new PurchasereceiptRecordMainCreateReqVO();
// BeanUtils.copyProperties(mainDO, purchasereceiptRecordMainCreateReqVO);
// purchasereceiptRecordMainCreateReqVO.setRequestNumber(mainDO.getNumber());
// String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_RECORD.getCode());
// purchasereceiptRecordMainCreateReqVO.setNumber(number);
// //增加业务类型
// BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseReceiptRecord");
// purchasereceiptRecordMainCreateReqVO.setBusinessType(businesstypeDO.getCode());
// purchasereceiptRecordMainMapper.insert(PurchasereceiptRecordMainConvert.INSTANCE.convert(purchasereceiptRecordMainCreateReqVO));
// for(PurchasereceiptRequestDetailDO purchasereceiptRequestDetailDO : detailDOList) {
// PurchasereceiptRecordDetailCreateReqVO purchasereceiptRecordDetailCreateReqVO = new PurchasereceiptRecordDetailCreateReqVO();
// BeanUtils.copyProperties(purchasereceiptRequestDetailDO, purchasereceiptRecordDetailCreateReqVO);
// purchasereceiptRecordDetailCreateReqVO.setNumber(number);
// purchasereceiptRecordDetailMapper.insert(PurchasereceiptRecordDetailConvert.INSTANCE.convert(purchasereceiptRecordDetailCreateReqVO));
// }
// return;
ProductionreturnRecordMainDO productionreturnRecordMainDO = new ProductionreturnRecordMainDO();
BeanUtils.copyProperties(mainDO, productionreturnRecordMainDO);
productionreturnRecordMainDO.setRequestNumber(mainDO.getNumber());
productionreturnRecordMainDO.setExecuteTime(LocalDateTime.now());
productionreturnRecordMainDO.setActiveDate(LocalDateTime.now());
productionreturnRecordMainDO.setAvailable("TRUE");
String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCTION_RECEIPT_RECORD.getCode());
productionreturnRecordMainDO.setNumber(number);
// 接口类型
RecordsettingDO recordsettingDO = recordsettingService.selectRecordsettingExist("ProductionReturnRecord");
productionreturnRecordMainDO.setInterfaceType(recordsettingDO.getInterfaceType());
//增加业务类型
BusinesstypeDO businesstypeDO ;
// 判断是合格还是隔离
// 合格
if (mainDO.getBusinessType().equals("ReturnToStore")) {
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ReturnToStoreRecord");
} else { // 隔离
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ReturnToHoldRecord");
}
productionreturnRecordMainDO.setInTransactionType(businesstypeDO.getInTransactionType());
productionreturnRecordMainDO.setOutTransactionType(businesstypeDO.getOutTransactionType());
productionreturnRecordMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes());
productionreturnRecordMainDO.setToLocationTypes(businesstypeDO.getInLocationTypes());
productionreturnRecordMainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes());
productionreturnRecordMainDO.setToAreaCodes(businesstypeDO.getInAreaCodes());
productionreturnRecordMainDO.setBusinessType(businesstypeDO.getCode());
productionreturnRecordMainDO.setId(null);
productionreturnRecordMainDO.setCreateTime(null);
productionreturnRecordMainDO.setCreator(null);
productionreturnRecordMainDO.setUpdateTime(null);
productionreturnRecordMainDO.setUpdater(null);
productionreturnRecordMainMapper.insert(productionreturnRecordMainDO);
//库存事务
List<TransactionCreateReqVO> transactionCreateReqVOList = new ArrayList<>();
List<ProductionreturnRecordDetailDO> productionreturnRecordDetailDOList = new ArrayList<>();
detailDO.forEach(item -> {
ProductionreturnRecordDetailDO productionreturnRecordDetailDO = new ProductionreturnRecordDetailDO();
BeanUtils.copyProperties(item, productionreturnRecordDetailDO);
productionreturnRecordDetailDO.setFromPackingNumber(item.getPackingNumber());
productionreturnRecordDetailDO.setToPackingNumber(item.getPackingNumber());
productionreturnRecordDetailDO.setFromBatch(item.getBatch());
productionreturnRecordDetailDO.setToBatch(item.getBatch());
productionreturnRecordDetailDO.setFromLocationCode(item.getFromLocationCode());
// 获取上架策略 并赋值 to库位
RuleRespVO ruleRespVO = ruleService.grounding(null,null,null,null,null,null,productionreturnRecordDetailDO.getItemCode(),null,null,null,null,null,null);
LocationDO locationDO = locationService.inspectLocation(ruleRespVO,null,productionreturnRecordDetailDO.getItemCode(),null);
productionreturnRecordDetailDO.setToLocationCode(locationDO.getCode());
// 获取库位信息 并赋值
LocationDO locationDOFrom = locationService.selectLocation(item.getFromLocationCode());
productionreturnRecordDetailDO.setFromAreaCode(locationDOFrom.getAreaCode());
productionreturnRecordDetailDO.setFromLocationGroupCode(locationDOFrom.getLocationGroupCode());
LocationDO locationDOTo = locationService.selectLocation(locationDO.getCode());
productionreturnRecordDetailDO.setToLocationGroupCode(locationDOTo.getLocationGroupCode());
productionreturnRecordDetailDO.setToAreaCode(locationDOTo.getAreaCode());
// 判断合格 不合格
if (!mainDO.getBusinessType().equals("ReturnToStore")) {
productionreturnRecordDetailDO.setInventoryStatus("NOK");
}
productionreturnRecordDetailDO.setMasterId(productionreturnRecordMainDO.getId());
productionreturnRecordDetailDO.setNumber(number);
productionreturnRecordDetailDOList.add(productionreturnRecordDetailDO);
//添加库存事务list
// 入动作
TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO();
BeanUtils.copyProperties(productionreturnRecordDetailDO, transactionCreateReqVO);
TransactiontypeDO transactiontypeDO = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType());
transactionCreateReqVO.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId()));
transactionCreateReqVO.setInventoryAction(transactiontypeDO.getInventoryAction());
transactionCreateReqVO.setTransactionType(transactiontypeDO.getCode());
transactionCreateReqVO.setBusinessType(productionreturnRecordMainDO.getBusinessType());
transactionCreateReqVO.setOwnerCode(productionreturnRecordDetailDO.getFromOwnerCode());
transactionCreateReqVO.setRecordNumber(number);
transactionCreateReqVO.setId(null);
transactionCreateReqVO.setPackingNumber(productionreturnRecordDetailDO.getToPackingNumber());
transactionCreateReqVO.setBatch(productionreturnRecordDetailDO.getToBatch());
transactionCreateReqVO.setContainerNumber(productionreturnRecordDetailDO.getToContainerNumber());
transactionCreateReqVO.setAmount(BigDecimal.ZERO);
transactionCreateReqVO.setWarehouseCode(productionreturnRecordMainDO.getToWarehouseCode());
transactionCreateReqVO.setLocationCode(productionreturnRecordDetailDO.getToLocationCode());
transactionCreateReqVOList.add(transactionCreateReqVO);
// 出动作
TransactionCreateReqVO transactionCreateReqVOOut = new TransactionCreateReqVO();
BeanUtils.copyProperties(productionreturnRecordDetailDO, transactionCreateReqVOOut);
TransactiontypeDO transactiontypeDOOut = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getOutTransactionType());
transactionCreateReqVOOut.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId()));
transactionCreateReqVOOut.setInventoryAction(transactiontypeDOOut.getInventoryAction());
transactionCreateReqVOOut.setTransactionType(transactiontypeDOOut.getCode());
transactionCreateReqVOOut.setBusinessType(productionreturnRecordMainDO.getBusinessType());
transactionCreateReqVOOut.setOwnerCode(productionreturnRecordDetailDO.getFromOwnerCode());
transactionCreateReqVOOut.setRecordNumber(number);
transactionCreateReqVOOut.setId(null);
transactionCreateReqVOOut.setPackingNumber(productionreturnRecordDetailDO.getToPackingNumber());
transactionCreateReqVOOut.setBatch(productionreturnRecordDetailDO.getToBatch());
transactionCreateReqVOOut.setContainerNumber(productionreturnRecordDetailDO.getToContainerNumber());
transactionCreateReqVOOut.setAmount(BigDecimal.ZERO);
transactionCreateReqVOOut.setWarehouseCode(productionreturnRecordMainDO.getToWarehouseCode());
transactionCreateReqVO.setLocationCode(productionreturnRecordDetailDO.getToLocationCode());
transactionCreateReqVOList.add(transactionCreateReqVOOut);
});
productionreturnRecordDetailMapper.insertBatch(productionreturnRecordDetailDOList);
//增加库存事务
transactionService.createTransaction(transactionCreateReqVOList);
trendsApi.createTrends(productionreturnRecordMainDO.getId(), "productionreturnRecord", "生产退料申请直接生成记录", TrendsTypeEnum.CREATE);
return;
}
// 任务主表信息
ProductionreturnJobMainDO productionreturnJobMainDO = new ProductionreturnJobMainDO();
@ -659,7 +765,14 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR
productionreturnJobMainDO.setAllowModifyPackingNumber(jobsettingDO.getAllowModifyPackingNumber());
productionreturnJobMainDO.setAllowModifyBatch(jobsettingDO.getAllowModifyBach());
//增加业务类型
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ReturnToStoreJob");
BusinesstypeDO businesstypeDO = null;
// 判断是合格还是隔离
// 合格
if (mainDO.getBusinessType().equals("ReturnToStore")) {
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ReturnToStoreJob");
} else { // 隔离
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ReturnToHoldJob");
}
productionreturnJobMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes());
productionreturnJobMainDO.setToLocationTypes(businesstypeDO.getInLocationTypes());
productionreturnJobMainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes());
@ -690,6 +803,10 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR
RuleRespVO ruleRespVO = ruleService.grounding(null,null,null,null,null,null,productionreturnJobDetailDO.getItemCode(),null,null,null,null,null,null);
LocationDO locationDO = locationService.inspectLocation(ruleRespVO,null,productionreturnJobDetailDO.getItemCode(),null);
productionreturnJobDetailDO.setToLocationCode(locationDO.getCode());
// 判断合格 不合格
if (!mainDO.getBusinessType().equals("ReturnToStore")) {
productionreturnJobDetailDO.setInventoryStatus("NOK");
}
productionreturnJobDetailDOList.add(productionreturnJobDetailDO);
//预计入
ExpectinCreateReqVO expectinCreateReqVO = new ExpectinCreateReqVO();

Loading…
Cancel
Save