Browse Source

补料申请

master
陈薪名 2 years ago
parent
commit
78ce7eee17
  1. 5
      win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java
  2. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueJob/IssueJobMainController.java
  3. 34
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/IssueRequestMainController.java
  4. 18
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/repleinshRequest/RepleinshRequestDetailController.java
  5. 115
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/repleinshRequest/RepleinshRequestMainController.java
  6. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/repleinshRequest/vo/RepleinshRequestDetailPageReqVO.java
  7. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/repleinshRequest/vo/RepleinshRequestMainBaseVO.java
  8. 52
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/repleinshRequest/vo/RepleinshRequestMainExcelVO.java
  9. 52
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/repleinshRequest/vo/RepleinshRequestMainImportVO.java
  10. 22
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/repleinshRequest/RepleinshRequestMainConvert.java
  11. 8
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/repleinshJob/RepleinshJobMainMapper.java
  12. 46
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/repleinshRequest/RepleinshRequestDetailMapper.java
  13. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/repleinshRequest/RepleinshRequestMainMapper.java
  14. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestDetailServiceImpl.java
  15. 9
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainServiceImpl.java
  16. 11
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/repleinshRequest/RepleinshRequestDetailService.java
  17. 73
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/repleinshRequest/RepleinshRequestDetailServiceImpl.java
  18. 15
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/repleinshRequest/RepleinshRequestMainService.java
  19. 563
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/repleinshRequest/RepleinshRequestMainServiceImpl.java
  20. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/rule/RuleServiceImpl.java
  21. 18
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/util/JobUtils.java

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

@ -519,9 +519,12 @@ public interface ErrorCodeConstants {
//补料申请主ErrorCode
ErrorCode REPLEINSH_REQUEST_MAIN_NOT_EXISTS = new ErrorCode(1_000_086_000, "补料申请主不存在");
//补料申请子ErrorCode
ErrorCode REPLEINSH_REQUEST_DETAIL_NOT_EXISTS = new ErrorCode(1_000_086_001, "补料申请子不存在");
ErrorCode REPLEINSH_REQUEST_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_000_086_002, "导入补料申请不能为空");
ErrorCode REPLEINSH_REQUEST_STATUS_NOT_NEW = new ErrorCode(1_000_086_003, "补料申请不是新增状态");
ErrorCode REPLEINSH_REQUEST_JOB_EXISTS = new ErrorCode(1_000_086_004, "补料申请存在补料任务");
ErrorCode REPLEINSH_REQUEST_STATUS_ERROR = new ErrorCode(1_000_086_004, "补料申请状态错误");
//补料任务主ErrorCode
ErrorCode REPLEINSH_JOB_MAIN_NOT_EXISTS = new ErrorCode(1_000_087_000, "补料任务主不存在");

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

@ -189,7 +189,7 @@ public class IssueJobMainController {
return success(countByStatus);
}
@GetMapping(value = "/accept")
@PutMapping(value = "/accept")
@Operation(summary = "承接任务")
@PreAuthorize("@ss.hasPermission('wms:issue-job-main:accept')")
public CommonResult<Boolean> acceptIssueJobMain(@RequestParam("id") Long id) {
@ -197,7 +197,7 @@ public class IssueJobMainController {
return success(result > 0);
}
@GetMapping(value = "/abandon")
@PutMapping(value = "/abandon")
@Operation(summary = "放弃任务")
@PreAuthorize("@ss.hasPermission('wms:issue-job-main:abandon')")
public CommonResult<Boolean> abandonIssueJobMain(@RequestParam("id") Long id) {
@ -205,7 +205,7 @@ public class IssueJobMainController {
return success(result > 0);
}
@GetMapping(value = "/close")
@PutMapping(value = "/close")
@Operation(summary = "关闭任务")
@PreAuthorize("@ss.hasPermission('wms:issue-job-main:close')")
public CommonResult<Boolean> closeIssueJobMain(@RequestParam("id") Long id) {

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

@ -284,7 +284,7 @@ public class IssueRequestMainController {
@GetMapping("/get-workshop-productionline-workstation")
@Operation(summary = "获取车间生产线工位树结构")
@PreAuthorize("@ss.hasPermission('wms:issue-request-main:create')")
public List getWorkshopProductionlineWorkstation() {
public CommonResult<List> getWorkshopProductionlineWorkstation() {
List list = new ArrayList();
List<WorkshopDO> WorkshopList = workshopMapper.selectList();
WorkshopList.forEach(workshopItem -> {
@ -312,13 +312,39 @@ public class IssueRequestMainController {
mapWorkstation.put("label", workstationItem.getName());
workstationCodeList.add(mapWorkstation);
});
if (workstationCodeList != null && workstationCodeList.size() > 0) mapProductionline.put("children",workstationCodeList);
if (workstationCodeList != null && workstationCodeList.size() > 0) {
mapProductionline.put("children", workstationCodeList);
} else {
Map<String,Object> mapworkstationNull = new HashMap<>();
mapworkstationNull.put("value", "");
mapworkstationNull.put("label", "");
List WorkstationListNUll = new ArrayList();
WorkstationListNUll.add(mapworkstationNull);
mapProductionline.put("children", WorkstationListNUll);
}
ProductionlineCodeList.add(mapProductionline);
});
if (ProductionlineCodeList != null && ProductionlineCodeList.size() > 0) mapWorkshop.put("children",ProductionlineCodeList);
if (ProductionlineCodeList != null && ProductionlineCodeList.size() > 0) {
mapWorkshop.put("children", ProductionlineCodeList);
} else {
List productionlineListNUll = new ArrayList();
Map<String,Object> productionlineMapNull = new HashMap<>();
List workstationListNUll = new ArrayList();
Map<String,Object> workstationMapNull = new HashMap<>();
workstationMapNull.put("value", "");
workstationMapNull.put("label", "");
workstationListNUll.add(workstationMapNull);
productionlineMapNull.put("value", "");
productionlineMapNull.put("label", "");
productionlineMapNull.put("children", workstationListNUll);
productionlineListNUll.add(productionlineMapNull);
mapWorkshop.put("children", productionlineListNUll);
}
list.add(mapWorkshop);
});
return list;
return success(list);
}

18
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/repleinshRequest/RepleinshRequestDetailController.java

@ -103,22 +103,4 @@ public class RepleinshRequestDetailController {
PageResult<RepleinshRequestDetailDO> pageResult = repleinshRequestDetailService.getRepleinshRequestDetailPage(pageVO);
return success(RepleinshRequestDetailConvert.INSTANCE.convertPage(pageResult));
}
@GetMapping("/export-excel")
@Operation(summary = "导出补料申请子 Excel")
@PreAuthorize("@ss.hasPermission('wms:repleinsh-request-detail:export')")
@OperateLog(type = EXPORT)
public void exportRepleinshRequestDetailExcel(@Valid RepleinshRequestDetailExportReqVO exportReqVO,
HttpServletResponse response) throws IOException {
List<RepleinshRequestDetailDO> list = repleinshRequestDetailService.getRepleinshRequestDetailList(exportReqVO);
// 导出 Excel
List<RepleinshRequestDetailExcelVO> datas = RepleinshRequestDetailConvert.INSTANCE.convertList02(list);
for(RepleinshRequestDetailExcelVO vo : datas) {
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator()));
//后端创建个字段作为前端展示的虚拟字段
vo.setCreator(user.getNickname());
}
ExcelUtils.write(response, "补料申请子.xls", "数据", RepleinshRequestDetailExcelVO.class, datas);
}
}

115
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/repleinshRequest/RepleinshRequestMainController.java

@ -3,14 +3,22 @@ package com.win.module.wms.controller.repleinshRequest;
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.ConvertUtil;
import com.win.framework.excel.core.util.ExcelUtils;
import com.win.framework.operatelog.core.annotations.OperateLog;
import com.win.module.system.api.user.AdminUserApi;
import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.wms.controller.issueRequest.vo.IssueRequestMainExcelVO;
import com.win.module.wms.controller.repleinshRequest.vo.*;
import com.win.module.wms.convert.issueRequest.IssueRequestMainConvert;
import com.win.module.wms.convert.repleinshRequest.RepleinshRequestMainConvert;
import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestDetailDO;
import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO;
import com.win.module.wms.dal.dataobject.repleinshRequest.RepleinshRequestDetailDO;
import com.win.module.wms.dal.dataobject.repleinshRequest.RepleinshRequestMainDO;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.repleinshRequest.RepleinshRequestDetailService;
import com.win.module.wms.service.repleinshRequest.RepleinshRequestMainService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@ -38,6 +46,8 @@ import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
@Validated
public class RepleinshRequestMainController {
@Resource
private RepleinshRequestDetailService repleinshRequestDetailService;
@Resource
private RepleinshRequestMainService repleinshRequestMainService;
@ -107,6 +117,23 @@ public class RepleinshRequestMainController {
return success(RepleinshRequestMainConvert.INSTANCE.convertPage(pageResult));
}
@GetMapping("/export-excel-senior")
@Operation(summary = "导出补料申请主 Excel")
@PreAuthorize("@ss.hasPermission('wms:repleinsh-request-main:export')")
@OperateLog(type = EXPORT)
public void exportRepleinshRequestMainSeniorExcel(@Valid @RequestBody CustomConditions conditions, HttpServletResponse response) throws IOException {
List<RepleinshRequestMainDO> list = repleinshRequestMainService.getRepleinshRequestMainList(conditions);
//组装vo
Map<Integer, String[]> mapDropDown = new HashMap<>();
List<RepleinshRequestMainExcelVO> resultList = this.getExcelVo(list, mapDropDown);
resultList.forEach(item -> {
//后端创建个字段作为前端展示的虚拟字段
item.setCreator(userApi.getUser(Long.valueOf(item.getCreator())).getNickname());
item.setUpdater(userApi.getUser(Long.valueOf(item.getUpdater())).getNickname());
});
ExcelUtils.write(response, "补料申请.xlsx", "补料申请", RepleinshRequestMainExcelVO.class, resultList, mapDropDown);
}
@GetMapping("/export-excel")
@Operation(summary = "导出补料申请主 Excel")
@PreAuthorize("@ss.hasPermission('wms:repleinsh-request-main:export')")
@ -114,14 +141,30 @@ public class RepleinshRequestMainController {
public void exportRepleinshRequestMainExcel(@Valid RepleinshRequestMainExportReqVO exportReqVO,
HttpServletResponse response) throws IOException {
List<RepleinshRequestMainDO> list = repleinshRequestMainService.getRepleinshRequestMainList(exportReqVO);
// 导出 Excel
List<RepleinshRequestMainExcelVO> datas = RepleinshRequestMainConvert.INSTANCE.convertList02(list);
for(RepleinshRequestMainExcelVO vo : datas) {
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator()));
//组装vo
Map<Integer, String[]> mapDropDown = new HashMap<>();
List<RepleinshRequestMainExcelVO> resultList = this.getExcelVo(list, mapDropDown);
resultList.forEach(item -> {
//后端创建个字段作为前端展示的虚拟字段
vo.setCreator(user.getNickname());
item.setCreator(userApi.getUser(Long.valueOf(item.getCreator())).getNickname());
item.setUpdater(userApi.getUser(Long.valueOf(item.getUpdater())).getNickname());
});
ExcelUtils.write(response, "补料申请.xls", "补料申请", RepleinshRequestMainExcelVO.class, resultList);
}
private List<RepleinshRequestMainExcelVO> getExcelVo(List<RepleinshRequestMainDO> list, Map<Integer, String[]> mapDropDown) {
// String[] available = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE);
// mapDropDown.put(13, available);
List<RepleinshRequestMainExcelVO> resultList = new ArrayList<>();
// 导出
for(RepleinshRequestMainDO mainDO : list) {
List<RepleinshRequestDetailDO> subList = repleinshRequestDetailService.selectList(mainDO.getId());
for(RepleinshRequestDetailDO detailDO : subList) {
RepleinshRequestMainExcelVO vo = RepleinshRequestMainConvert.INSTANCE.convert(mainDO, detailDO);
resultList.add(vo);
}
}
ExcelUtils.write(response, "补料申请主.xls", "数据", RepleinshRequestMainExcelVO.class, datas);
return resultList;
}
@GetMapping("/get-import-template")
@ -130,10 +173,8 @@ public class RepleinshRequestMainController {
// 手动创建导出 demo
List<RepleinshRequestMainImportVO> list = new ArrayList<>();
Map<Integer, String[]> mapDropDown = new HashMap<>();
// String[] purchaseReturnReason = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.PURCHASE_RETURN_REASON);
// mapDropDown.put(16, purchaseReturnReason);
// String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM);
// mapDropDown.put(25, uom);
String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM);
mapDropDown.put(5, uom);
// 输出
ExcelUtils.write(response, "补料申请信息导入模板.xlsx", "补料申请信息列表", RepleinshRequestMainImportVO.class, list, mapDropDown);
}
@ -163,4 +204,58 @@ public class RepleinshRequestMainController {
return success(returnMap);
}
@PutMapping("/close")
@Operation(summary = "关闭")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:repleinsh-request-main:close')")
public CommonResult<Boolean> closeRepleinshRequestMain(@RequestParam("id") Long id) {
Integer count = repleinshRequestMainService.closeRepleinshRequestMain(id);
return success(count > 0);
}
@PutMapping("/reAdd")
@Operation(summary = "重新添加")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:repleinsh-request-main:reAdd')")
public CommonResult<Boolean> reAddRepleinshRequestMain(@RequestParam("id") Long id) {
Integer count = repleinshRequestMainService.reAddRepleinshRequestMain(id);
return success(count > 0);
}
@PutMapping("/submit")
@Operation(summary = "提交审批")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:repleinsh-request-main:submit')")
public CommonResult<Boolean> submitRepleinshRequestMain(@RequestParam("id") Long id) {
Integer count = repleinshRequestMainService.submitRepleinshRequestMain(id);
return success(count > 0);
}
@PutMapping("/refused")
@Operation(summary = "驳回")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:repleinsh-request-main:refused')")
public CommonResult<Boolean> refusedRepleinshRequestMain(@RequestParam("id") Long id) {
Integer count = repleinshRequestMainService.refusedRepleinshRequestMain(id);
return success(count > 0);
}
@PutMapping("/agree")
@Operation(summary = "审批通过")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:repleinsh-request-main:agree')")
public CommonResult<Boolean> agreeRepleinshRequestMain(@RequestParam("id") Long id) {
Integer count = repleinshRequestMainService.agreeRepleinshRequestMain(id);
return success(count > 0);
}
@PutMapping("/handle")
@Operation(summary = "处理")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:repleinsh-request-main:handle')")
public CommonResult<Boolean> handleRepleinshRequestMain(@RequestParam("id") Long id) {
Integer count = repleinshRequestMainService.handleRepleinshRequestMain(id);
return success(count > 0);
}
}

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/repleinshRequest/vo/RepleinshRequestDetailPageReqVO.java

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

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/repleinshRequest/vo/RepleinshRequestMainBaseVO.java

@ -1,5 +1,6 @@
package com.win.module.wms.controller.repleinshRequest.vo;
import com.win.framework.excel.core.annotations.OnlyOne;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
@ -33,6 +34,7 @@ public class RepleinshRequestMainBaseVO {
private String fromAreaCodes;
@Schema(description = "单据号")
@OnlyOne
private String number;
@Schema(description = "业务类型")

52
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/repleinshRequest/vo/RepleinshRequestMainExcelVO.java

@ -1,5 +1,6 @@
package com.win.module.wms.controller.repleinshRequest.vo;
import com.win.module.wms.enums.DictTypeConstants;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
@ -69,22 +70,63 @@ public class RepleinshRequestMainExcelVO {
private String toWarehouseCode;
@ExcelProperty(value = "到库位类型范围", converter = DictConvert.class)
@DictFormat("location_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
@DictFormat(DictTypeConstants.LOCATION_TYPE)
private String toLocationTypes;
@ExcelProperty("到库区代码范围")
private String toAreaCodes;
@ExcelProperty("自动提交")
@ExcelProperty(value = "自动提交", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String autoCommit;
@ExcelProperty("自动通过")
@ExcelProperty(value = "自动通过", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String autoAgree;
@ExcelProperty("自动执行")
@ExcelProperty(value = "自动执行", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String autoExecute;
@ExcelProperty("直接生成记录")
@ExcelProperty(value = "直接生成记录", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String directCreateRecord;
@ExcelProperty(value = "库存状态", converter = DictConvert.class)
@DictFormat(DictTypeConstants.INVENTORY_STATUS)
private String inventoryStatus;
@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;
}

52
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/repleinshRequest/vo/RepleinshRequestMainImportVO.java

@ -2,17 +2,25 @@ package com.win.module.wms.controller.repleinshRequest.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.win.framework.excel.core.annotations.DictFormat;
import com.win.framework.excel.core.annotations.OnlyOne;
import com.win.framework.excel.core.convert.DictConvert;
import com.win.module.wms.enums.DictTypeConstants;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
/**
* 采购索赔申请子 Excel VO
* 补料申请 Excel VO
*
* @author 超级管理员
*/
@ -23,42 +31,24 @@ import java.time.LocalDateTime;
public class RepleinshRequestMainImportVO {
//主表数据
@ExcelProperty("订单类型")
private String type;
@ExcelProperty("单据号")
private String number;
@ExcelProperty("行号")
private String hang;
@ExcelProperty("供应商代码")
private String supplierCode;
@ExcelProperty("联系人姓名")
private String contactName;
@ExcelProperty("联系人电话")
@ColumnWidth(value = 16)
private String contactPhone;
@ExcelProperty("联系人电子邮件")
@ColumnWidth(value = 16)
private String contactEmail;
@ExcelProperty("是否寄存订单")
private String isConsignment;
@ExcelProperty("截止日期")
private LocalDateTime dueDate;
@ExcelProperty("截止时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime dueTime;
//子表数据
@ExcelProperty("到库位代码")
private String toLocationCode;
@ExcelProperty("物品代码")
private String itemCode;
@ExcelProperty("数量")
private BigDecimal orderQty;
@ExcelProperty("计量单位")
private String qty;
@ExcelProperty(value = "计量单位", converter = DictConvert.class)
@DictFormat(DictTypeConstants.UOM)
private String uom;
@ExcelProperty("超收百分比")
private BigDecimal overReceivingPercent;
}

22
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/repleinshRequest/RepleinshRequestMainConvert.java

@ -4,11 +4,11 @@ import java.util.*;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.repleinshRequest.vo.RepleinshRequestMainCreateReqVO;
import com.win.module.wms.controller.repleinshRequest.vo.RepleinshRequestMainExcelVO;
import com.win.module.wms.controller.repleinshRequest.vo.RepleinshRequestMainRespVO;
import com.win.module.wms.controller.repleinshRequest.vo.RepleinshRequestMainUpdateReqVO;
import com.win.module.wms.controller.repleinshRequest.vo.*;
import com.win.module.wms.dal.dataobject.repleinshRequest.RepleinshRequestDetailDO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
import com.win.module.wms.dal.dataobject.repleinshRequest.RepleinshRequestMainDO;
@ -34,4 +34,18 @@ public interface RepleinshRequestMainConvert {
List<RepleinshRequestMainExcelVO> convertList02(List<RepleinshRequestMainDO> list);
@Mappings({
@Mapping(source = "mainVo.number", target = "number"),
})
RepleinshRequestMainImportErrorVO convert(RepleinshRequestMainCreateReqVO mainVo, RepleinshRequestDetailDO detailDO);
@Mappings({
@Mapping(source = "mainDO.number", target = "number"),
@Mapping(source = "mainDO.remark", target = "remark"),
@Mapping(source = "mainDO.createTime", target = "createTime"),
@Mapping(source = "mainDO.creator", target = "creator"),
@Mapping(source = "mainDO.updateTime", target = "updateTime"),
@Mapping(source = "mainDO.updater", target = "updater"),
})
RepleinshRequestMainExcelVO convert(RepleinshRequestMainDO mainDO, RepleinshRequestDetailDO detailDO);
}

8
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/repleinshJob/RepleinshJobMainMapper.java

@ -9,8 +9,10 @@ import com.win.framework.mybatis.core.mapper.BaseMapperX;
import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.repleinshJob.vo.RepleinshJobMainExportReqVO;
import com.win.module.wms.controller.repleinshJob.vo.RepleinshJobMainPageReqVO;
import com.win.module.wms.dal.dataobject.issueJob.IssueJobMainDO;
import com.win.module.wms.dal.dataobject.productputawayJob.ProductputawayJobMainDO;
import com.win.module.wms.dal.dataobject.repleinshJob.RepleinshJobMainDO;
import com.win.module.wms.enums.order.OrderStatusEnum;
import org.apache.ibatis.annotations.Mapper;
/**
@ -107,6 +109,12 @@ public interface RepleinshJobMainMapper extends BaseMapperX<RepleinshJobMainDO>
.orderByDesc(RepleinshJobMainDO::getId));
}
default Long selectByRequestNumber(String requestNumber) {
return selectCount(new LambdaQueryWrapperX<RepleinshJobMainDO>()
.eq(RepleinshJobMainDO::getRequestNumber, requestNumber)
.ne(RepleinshJobMainDO::getStatus, OrderStatusEnum.CLOSED.getCode()));
}
/**
*根据类型数组查询任务数量
* @param types 类型组合

46
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/repleinshRequest/RepleinshRequestDetailMapper.java

@ -9,6 +9,7 @@ import com.win.framework.mybatis.core.mapper.BaseMapperX;
import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.repleinshRequest.vo.RepleinshRequestDetailExportReqVO;
import com.win.module.wms.controller.repleinshRequest.vo.RepleinshRequestDetailPageReqVO;
import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestDetailDO;
import com.win.module.wms.dal.dataobject.repleinshRequest.RepleinshRequestDetailDO;
import org.apache.ibatis.annotations.Mapper;
@ -22,6 +23,7 @@ public interface RepleinshRequestDetailMapper extends BaseMapperX<RepleinshReque
default PageResult<RepleinshRequestDetailDO> selectPage(RepleinshRequestDetailPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<RepleinshRequestDetailDO>()
.eqIfPresent(RepleinshRequestDetailDO::getMasterId, reqVO.getMasterId())
.eqIfPresent(RepleinshRequestDetailDO::getInventoryStatus, reqVO.getInventoryStatus())
.eqIfPresent(RepleinshRequestDetailDO::getToLocationCode, reqVO.getToLocationCode())
.eqIfPresent(RepleinshRequestDetailDO::getNumber, reqVO.getNumber())
@ -44,26 +46,32 @@ public interface RepleinshRequestDetailMapper extends BaseMapperX<RepleinshReque
default PageResult<RepleinshRequestDetailDO> selectSenior(CustomConditions conditions) {
return selectPage(conditions, QueryWrapperUtils.structure(conditions));
}
default List<RepleinshRequestDetailDO> selectList(RepleinshRequestDetailExportReqVO reqVO) {
default List<RepleinshRequestDetailDO> selectList(Long masterId) {
return selectList(new LambdaQueryWrapperX<RepleinshRequestDetailDO>()
.eqIfPresent(RepleinshRequestDetailDO::getInventoryStatus, reqVO.getInventoryStatus())
.eqIfPresent(RepleinshRequestDetailDO::getToLocationCode, reqVO.getToLocationCode())
.eqIfPresent(RepleinshRequestDetailDO::getNumber, reqVO.getNumber())
.eqIfPresent(RepleinshRequestDetailDO::getItemCode, reqVO.getItemCode())
.eqIfPresent(RepleinshRequestDetailDO::getRemark, reqVO.getRemark())
.betweenIfPresent(RepleinshRequestDetailDO::getCreateTime, reqVO.getCreateTime())
.eqIfPresent(RepleinshRequestDetailDO::getCreator, reqVO.getCreator())
.likeIfPresent(RepleinshRequestDetailDO::getItemName, reqVO.getItemName())
.eqIfPresent(RepleinshRequestDetailDO::getItemDesc1, reqVO.getItemDesc1())
.eqIfPresent(RepleinshRequestDetailDO::getItemDesc2, reqVO.getItemDesc2())
.eqIfPresent(RepleinshRequestDetailDO::getProjectCode, reqVO.getProjectCode())
.eqIfPresent(RepleinshRequestDetailDO::getQty, reqVO.getQty())
.eqIfPresent(RepleinshRequestDetailDO::getUom, reqVO.getUom())
.betweenIfPresent(RepleinshRequestDetailDO::getUpdateTime, reqVO.getUpdateTime())
.eqIfPresent(RepleinshRequestDetailDO::getUpdater, reqVO.getUpdater())
.eqIfPresent(RepleinshRequestDetailDO::getFromOwnerCode, reqVO.getFromOwnerCode())
.eqIfPresent(RepleinshRequestDetailDO::getToOwnerCode, reqVO.getToOwnerCode())
.orderByDesc(RepleinshRequestDetailDO::getId));
.eq(RepleinshRequestDetailDO::getMasterId, masterId));
}
// default List<RepleinshRequestDetailDO> selectList(RepleinshRequestDetailExportReqVO reqVO) {
// return selectList(new LambdaQueryWrapperX<RepleinshRequestDetailDO>()
// .eqIfPresent(RepleinshRequestDetailDO::getInventoryStatus, reqVO.getInventoryStatus())
// .eqIfPresent(RepleinshRequestDetailDO::getToLocationCode, reqVO.getToLocationCode())
// .eqIfPresent(RepleinshRequestDetailDO::getNumber, reqVO.getNumber())
// .eqIfPresent(RepleinshRequestDetailDO::getItemCode, reqVO.getItemCode())
// .eqIfPresent(RepleinshRequestDetailDO::getRemark, reqVO.getRemark())
// .betweenIfPresent(RepleinshRequestDetailDO::getCreateTime, reqVO.getCreateTime())
// .eqIfPresent(RepleinshRequestDetailDO::getCreator, reqVO.getCreator())
// .likeIfPresent(RepleinshRequestDetailDO::getItemName, reqVO.getItemName())
// .eqIfPresent(RepleinshRequestDetailDO::getItemDesc1, reqVO.getItemDesc1())
// .eqIfPresent(RepleinshRequestDetailDO::getItemDesc2, reqVO.getItemDesc2())
// .eqIfPresent(RepleinshRequestDetailDO::getProjectCode, reqVO.getProjectCode())
// .eqIfPresent(RepleinshRequestDetailDO::getQty, reqVO.getQty())
// .eqIfPresent(RepleinshRequestDetailDO::getUom, reqVO.getUom())
// .betweenIfPresent(RepleinshRequestDetailDO::getUpdateTime, reqVO.getUpdateTime())
// .eqIfPresent(RepleinshRequestDetailDO::getUpdater, reqVO.getUpdater())
// .eqIfPresent(RepleinshRequestDetailDO::getFromOwnerCode, reqVO.getFromOwnerCode())
// .eqIfPresent(RepleinshRequestDetailDO::getToOwnerCode, reqVO.getToOwnerCode())
// .orderByDesc(RepleinshRequestDetailDO::getId));
// }
}

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/repleinshRequest/RepleinshRequestMainMapper.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.repleinshRequest.vo.RepleinshRequestMainExportReqVO;
import com.win.module.wms.controller.repleinshRequest.vo.RepleinshRequestMainPageReqVO;
import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO;
import com.win.module.wms.dal.dataobject.repleinshRequest.RepleinshRequestMainDO;
import org.apache.ibatis.annotations.Mapper;
@ -78,4 +79,7 @@ public interface RepleinshRequestMainMapper extends BaseMapperX<RepleinshRequest
.orderByDesc(RepleinshRequestMainDO::getId));
}
default List<RepleinshRequestMainDO> selectSeniorList(CustomConditions conditions) {
return selectList(QueryWrapperUtils.structure(conditions));
}
}

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestDetailServiceImpl.java

@ -136,9 +136,6 @@ public class IssueRequestDetailServiceImpl implements IssueRequestDetailService
private IssueRequestDetailDO validatorDetail(IssueRequestDetailDO issueRequestDetailDO) {
// 主表信息
IssueRequestMainDO issueRequestMainDO = issueRequestMainService.getIssueRequestMain(issueRequestDetailDO.getMasterId());
System.out.println("00000000000000:" + issueRequestDetailDO.toString());
System.out.println("111111111111111:" + issueRequestDetailDO.getMasterId());
System.out.println("222222222222222:" + issueRequestMainDO.toString());
// 业务信息
BusinesstypeDO businesstypeDO = businesstypeService.selectBusinesstypeExist(issueRequestMainDO.getBusinessType());
// 基础信息

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

@ -261,10 +261,16 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
mainDo.setNumber(number);
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
issueRequestMainMapper.insert(mainDo);
//增加操作记录
trendsApi.createTrends(mainDo.getId(), "issueRequestMain", "导入了发料申请", TrendsTypeEnum.CREATE);
for (IssueRequestDetailDO detailDO : subDOList) {
detailDO.setMasterId(mainDo.getId());
detailDO.setNumber(number);
}
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(mainDo.getStatus())) {
this.generateJob(mainDo, subDOList);
}
issueRequestDetailMapper.insertBatch(subDOList);
}
});
@ -559,7 +565,7 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
throw new ServiceException(ISSUE_REQUEST_MAIN_CANNOT_REFUSED);
}
mainDO.setStatus(requestStatusState.getState().getCode());
trendsApi.createTrends(id, "issueRequest", "驳回了采购发料申请", TrendsTypeEnum.UPDATE);
trendsApi.createTrends(id, "issueRequest", "驳回了发料申请", TrendsTypeEnum.UPDATE);
return issueRequestMainMapper.updateById(mainDO);
}
@ -666,7 +672,6 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
List<IssueJobDetailDO> issueJobDetailDOList = new ArrayList<>();
List<ExpectinCreateReqVO> expectinCreateReqVOList = new ArrayList<>();
List<ExpectoutCreateReqVO> expectoutCreateReqVOList = new ArrayList<>();
JobUtils jobUtils = new JobUtils();
// 根据发料申请子表数据进行分析
detailDO.forEach(item -> {
// 根据批次策略/下架策略 返回 库存余额DO

11
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/repleinshRequest/RepleinshRequestDetailService.java

@ -8,6 +8,7 @@ import com.win.module.wms.controller.repleinshRequest.vo.RepleinshRequestDetailC
import com.win.module.wms.controller.repleinshRequest.vo.RepleinshRequestDetailExportReqVO;
import com.win.module.wms.controller.repleinshRequest.vo.RepleinshRequestDetailPageReqVO;
import com.win.module.wms.controller.repleinshRequest.vo.RepleinshRequestDetailUpdateReqVO;
import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestDetailDO;
import com.win.module.wms.dal.dataobject.repleinshRequest.RepleinshRequestDetailDO;
import com.win.framework.common.pojo.PageResult;
@ -37,7 +38,7 @@ public interface RepleinshRequestDetailService {
*
* @param updateReqVO 更新信息
*/
void updateRepleinshRequestDetail(@Valid RepleinshRequestDetailUpdateReqVO updateReqVO);
Integer updateRepleinshRequestDetail(@Valid RepleinshRequestDetailUpdateReqVO updateReqVO);
/**
* 删除补料申请子
@ -70,12 +71,6 @@ public interface RepleinshRequestDetailService {
*/
PageResult<RepleinshRequestDetailDO> getRepleinshRequestDetailPage(RepleinshRequestDetailPageReqVO pageReqVO);
/**
* 获得补料申请子列表, 用于 Excel 导出
*
* @param exportReqVO 查询条件
* @return 补料申请子列表
*/
List<RepleinshRequestDetailDO> getRepleinshRequestDetailList(RepleinshRequestDetailExportReqVO exportReqVO);
List<RepleinshRequestDetailDO> selectList(Long id);
}

73
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/repleinshRequest/RepleinshRequestDetailServiceImpl.java

@ -5,8 +5,19 @@ import com.win.module.wms.controller.repleinshRequest.vo.RepleinshRequestDetailC
import com.win.module.wms.controller.repleinshRequest.vo.RepleinshRequestDetailExportReqVO;
import com.win.module.wms.controller.repleinshRequest.vo.RepleinshRequestDetailPageReqVO;
import com.win.module.wms.controller.repleinshRequest.vo.RepleinshRequestDetailUpdateReqVO;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestDetailDO;
import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.productionlineitem.ProductionlineitemDO;
import com.win.module.wms.dal.dataobject.repleinshRequest.RepleinshRequestMainDO;
import com.win.module.wms.service.businesstype.BusinesstypeService;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.util.JobUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import java.util.*;
@ -29,25 +40,37 @@ import static com.win.module.wms.enums.ErrorCodeConstants.*;
@Validated
public class RepleinshRequestDetailServiceImpl implements RepleinshRequestDetailService {
@Resource
private JobUtils jobUtils;
@Resource
private ItembasicService itembasicService;
@Resource
private BusinesstypeService businesstypeService;
@Resource
private RepleinshRequestMainService repleinshRequestMainService;
@Resource
private RepleinshRequestDetailMapper repleinshRequestDetailMapper;
@Override
@Transactional
public Long createRepleinshRequestDetail(RepleinshRequestDetailCreateReqVO createReqVO) {
// 插入
RepleinshRequestDetailDO repleinshRequestDetail = RepleinshRequestDetailConvert.INSTANCE.convert(createReqVO);
validatorDetail(repleinshRequestDetail);
repleinshRequestDetailMapper.insert(repleinshRequestDetail);
// 返回
return repleinshRequestDetail.getId();
}
@Override
public void updateRepleinshRequestDetail(RepleinshRequestDetailUpdateReqVO updateReqVO) {
@Transactional
public Integer updateRepleinshRequestDetail(RepleinshRequestDetailUpdateReqVO updateReqVO) {
// 校验存在
validateRepleinshRequestDetailExists(updateReqVO.getId());
// 更新
RepleinshRequestDetailDO updateObj = RepleinshRequestDetailConvert.INSTANCE.convert(updateReqVO);
repleinshRequestDetailMapper.updateById(updateObj);
validatorDetail(updateObj);
return repleinshRequestDetailMapper.updateById(updateObj);
}
@Override
@ -56,6 +79,7 @@ public class RepleinshRequestDetailServiceImpl implements RepleinshRequestDetail
}
@Override
@Transactional
public void deleteRepleinshRequestDetail(Long id) {
// 校验存在
validateRepleinshRequestDetailExists(id);
@ -85,8 +109,49 @@ public class RepleinshRequestDetailServiceImpl implements RepleinshRequestDetail
}
@Override
public List<RepleinshRequestDetailDO> getRepleinshRequestDetailList(RepleinshRequestDetailExportReqVO exportReqVO) {
return repleinshRequestDetailMapper.selectList(exportReqVO);
public List<RepleinshRequestDetailDO> selectList(Long masterId) {
return repleinshRequestDetailMapper.selectList(masterId);
}
//子表校验
private RepleinshRequestDetailDO validatorDetail(RepleinshRequestDetailDO repleinshRequestDetailDO) {
ItembasicDO itembasicDO = this.validateItem(repleinshRequestDetailDO);
if(!itembasicDO.getUom().equals(itembasicDO.getUom())) {
throw exception(ITEMBASIC_UOM_EXCEPTION, itembasicDO.getUom(), itembasicDO.getUom());
}
this.validateBusinesstype(itembasicDO.getType(),itembasicDO.getCode(),repleinshRequestDetailDO.getToLocationCode(), repleinshRequestDetailDO);
return repleinshRequestDetailDO;
}
/**
* 校验物品信息并赋值
* @param detailDo
* @return
*/
private ItembasicDO validateItem(RepleinshRequestDetailDO detailDo) {
ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode());
detailDo.setItemName(itembasicDO.getName());
detailDo.setItemDesc1(itembasicDO.getDesc1());
detailDo.setItemDesc2(itembasicDO.getDesc2());
detailDo.setProjectCode(itembasicDO.getProject());
return itembasicDO;
}
/**
* 校验业务类型并赋值
* @param itemType
* @param itemCode
* @param locationCode
* @param detailDo
*/
private void validateBusinesstype(String itemType,String itemCode,String locationCode, RepleinshRequestDetailDO detailDo) {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("RepleinmentRequest");
jobUtils.ifInType(itemType, businesstypeDO);
detailDo.setInventoryStatus(businesstypeDO.getInInventoryStatuses());
//校验物品类型
jobUtils.selectItembasicExist(itemCode,businesstypeDO);
//校验到库位
jobUtils.ifInFromLocationType(locationCode,businesstypeDO);
}
}

15
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/repleinshRequest/RepleinshRequestMainService.java

@ -36,7 +36,7 @@ public interface RepleinshRequestMainService {
*
* @param updateReqVO 更新信息
*/
void updateRepleinshRequestMain(@Valid RepleinshRequestMainUpdateReqVO updateReqVO);
Integer updateRepleinshRequestMain(@Valid RepleinshRequestMainUpdateReqVO updateReqVO);
/**
* 删除补料申请主
@ -85,4 +85,17 @@ public interface RepleinshRequestMainService {
*/
public List<RepleinshRequestMainImportErrorVO> importRepleinshRequestMainList(List<RepleinshRequestMainCreateReqVO> datas, Integer mode, boolean updatePart);
List<RepleinshRequestMainDO> getRepleinshRequestMainList(CustomConditions conditions);
Integer handleRepleinshRequestMain(Long id);
Integer agreeRepleinshRequestMain(Long id);
Integer refusedRepleinshRequestMain(Long id);
Integer submitRepleinshRequestMain(Long id);
Integer reAddRepleinshRequestMain(Long id);
Integer closeRepleinshRequestMain(Long id);
}

563
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/repleinshRequest/RepleinshRequestMainServiceImpl.java

@ -4,37 +4,61 @@ import cn.hutool.core.collection.CollUtil;
import com.win.framework.common.exception.ServiceException;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.common.util.validation.ValidationUtils;
import com.win.framework.dict.core.util.DictFrameworkUtils;
import com.win.module.infra.api.trends.TrendsApi;
import com.win.module.infra.enums.TrendsTypeEnum;
import com.win.module.system.api.serialnumber.SerialNumberApi;
import com.win.module.system.enums.serialNumber.RuleCodeEnum;
import com.win.module.wms.controller.expectin.vo.ExpectinCreateReqVO;
import com.win.module.wms.controller.expectout.vo.ExpectoutCreateReqVO;
import com.win.module.wms.controller.repleinshRequest.vo.*;
import com.win.module.wms.convert.repleinshRequest.RepleinshRequestDetailConvert;
import com.win.module.wms.convert.repleinshRequest.RepleinshRequestMainConvert;
import com.win.module.wms.dal.dataobject.balance.BalanceDO;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.jobsetting.JobsettingDO;
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO;
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestMainDO;
import com.win.module.wms.dal.dataobject.repleinshJob.RepleinshJobDetailDO;
import com.win.module.wms.dal.dataobject.repleinshJob.RepleinshJobMainDO;
import com.win.module.wms.dal.dataobject.repleinshRequest.RepleinshRequestDetailDO;
import com.win.module.wms.dal.dataobject.repleinshRequest.RepleinshRequestMainDO;
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO;
import com.win.module.wms.dal.mysql.repleinshJob.RepleinshJobDetailMapper;
import com.win.module.wms.dal.mysql.repleinshJob.RepleinshJobMainMapper;
import com.win.module.wms.dal.mysql.repleinshRequest.RepleinshRequestDetailMapper;
import com.win.module.wms.dal.mysql.repleinshRequest.RepleinshRequestMainMapper;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.enums.job.JobStatusEnum;
import com.win.module.wms.enums.request.RequestStatusEnum;
import com.win.module.wms.enums.request.RequestStatusState;
import com.win.module.wms.service.businesstype.BusinesstypeService;
import com.win.module.wms.service.expectin.ExpectinService;
import com.win.module.wms.service.expectout.ExpectoutService;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.itempackaging.ItempackagingService;
import com.win.module.wms.service.jobsetting.JobsettingService;
import com.win.module.wms.service.requestsetting.RequestsettingService;
import com.win.module.wms.service.shift.ShiftService;
import com.win.module.wms.service.supplieritem.SupplieritemService;
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.transaction.interceptor.TransactionAspectSupport;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import javax.validation.Validator;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.module.wms.enums.ErrorCodeConstants.PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY;
import static com.win.module.wms.enums.ErrorCodeConstants.REPLEINSH_REQUEST_MAIN_NOT_EXISTS;
import static com.win.module.wms.enums.ErrorCodeConstants.*;
/**
* 补料申请主 Service 实现类
@ -44,6 +68,22 @@ import static com.win.module.wms.enums.ErrorCodeConstants.REPLEINSH_REQUEST_MAIN
@Service
@Validated
public class RepleinshRequestMainServiceImpl implements RepleinshRequestMainService {
@Resource
private ExpectoutService expectoutService;
@Resource
private ExpectinService expectinService;
@Resource
private RepleinshJobDetailMapper repleinshJobDetailMapper;
@Resource
private JobsettingService jobsettingService;
@Resource
private RepleinshJobMainMapper repleinshJobMainMapper;
@Resource
private SerialNumberApi serialNumberApi;
@Resource
private TrendsApi trendsApi;
@Resource
private Validator validator;
@Resource
private RepleinshRequestMainMapper repleinshRequestMainMapper;
@Resource
@ -65,12 +105,39 @@ public class RepleinshRequestMainServiceImpl implements RepleinshRequestMainServ
@Override
@Transactional
public Long createRepleinshRequestMain(RepleinshRequestMainCreateReqVO createReqVO) {
// 插入
RepleinshRequestMainDO repleinshRequestMain = RepleinshRequestMainConvert.INSTANCE.convert(createReqVO);
repleinshRequestMainMapper.insert(repleinshRequestMain);
// 返回
return repleinshRequestMain.getId();
RepleinshRequestMainDO mainDO = RepleinshRequestMainConvert.INSTANCE.convert(createReqVO);
// 主表暂无校验
// this.validateRepleinshRequestMainCreate(mainDO);
List<RepleinshRequestDetailDO> subDOList = RepleinshRequestDetailConvert.INSTANCE.convertList03(createReqVO.getSubList());
for (RepleinshRequestDetailDO detailDO : subDOList) {
this.validateRepleinshRequestDetailCreate(mainDO, detailDO);
}
String number = serialNumberApi.generateCode(RuleCodeEnum.REPLEINMENT_REQUEST.getCode());
mainDO.setNumber(number);
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("RepleinmentRequest");
RequestStatusState requestStatusState = new RequestStatusState();
requestStatusState.newObject(requestsettingDO.getAutoCommit(), requestsettingDO.getAutoAgree(), requestsettingDO.getAutoExecute());
mainDO.setStatus(requestStatusState.getState().getCode());
mainDO.setAutoCommit(requestsettingDO.getAutoCommit());
mainDO.setAutoAgree(requestsettingDO.getAutoAgree());
mainDO.setAutoExecute(requestsettingDO.getAutoExecute());
mainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
repleinshRequestMainMapper.insert(mainDO);
for (RepleinshRequestDetailDO detailDO : subDOList) {
detailDO.setMasterId(mainDO.getId());
detailDO.setNumber(number);
detailDO.setInventoryStatus("OK"); // 默认合格
}
repleinshRequestDetailMapper.insertBatch(subDOList);
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) {
this.generateJob(mainDO, subDOList);
}
trendsApi.createTrends(mainDO.getId(), "repleinshRequestMain", "增加了补料申请", TrendsTypeEnum.CREATE);
return mainDO.getId();
}
@Override
@ -79,12 +146,18 @@ public class RepleinshRequestMainServiceImpl implements RepleinshRequestMainServ
}
@Override
public void updateRepleinshRequestMain(RepleinshRequestMainUpdateReqVO updateReqVO) {
@Transactional
public Integer updateRepleinshRequestMain(RepleinshRequestMainUpdateReqVO updateReqVO) {
// 校验存在
validateRepleinshRequestMainExists(updateReqVO.getId());
RepleinshRequestMainDO repleinshRequestMainDO = validateRepleinshRequestMainExists(updateReqVO.getId());
if(!repleinshRequestMainDO.getStatus().equals(RequestStatusEnum.NEW.getCode())) {
throw exception(REPLEINSH_REQUEST_STATUS_NOT_NEW);
}
//增加操作记录
trendsApi.createTrends(updateReqVO.getId(), "repleinshRequestMain", "修改了补料申请", TrendsTypeEnum.UPDATE);
// 更新
RepleinshRequestMainDO updateObj = RepleinshRequestMainConvert.INSTANCE.convert(updateReqVO);
repleinshRequestMainMapper.updateById(updateObj);
return repleinshRequestMainMapper.updateById(updateObj);
}
@Override
@ -95,10 +168,12 @@ public class RepleinshRequestMainServiceImpl implements RepleinshRequestMainServ
repleinshRequestMainMapper.deleteById(id);
}
private void validateRepleinshRequestMainExists(Long id) {
if (repleinshRequestMainMapper.selectById(id) == null) {
private RepleinshRequestMainDO validateRepleinshRequestMainExists(Long id) {
RepleinshRequestMainDO repleinshRequestMainDO = repleinshRequestMainMapper.selectById(id);
if (repleinshRequestMainDO == null) {
throw exception(REPLEINSH_REQUEST_MAIN_NOT_EXISTS);
}
return repleinshRequestMainDO;
}
@Override
@ -121,106 +196,70 @@ public class RepleinshRequestMainServiceImpl implements RepleinshRequestMainServ
return repleinshRequestMainMapper.selectList(exportReqVO);
}
/**
* 校验创建
* @param mainDo
* @param detailDo
* @return
*/
private void validateRepleinshRequestDetailCreate(RepleinshRequestMainDO mainDo, RepleinshRequestDetailDO detailDo) {
ItembasicDO itembasicDO = this.validateItem(detailDo);
if(!itembasicDO.getUom().equals(itembasicDO.getUom())) {
throw exception(ITEMBASIC_UOM_EXCEPTION, itembasicDO.getUom(), itembasicDO.getUom());
}
this.validateBusinesstype(itembasicDO.getType(),itembasicDO.getCode(),detailDo.getToLocationCode(), mainDo,detailDo);
}
@Override
@Transactional
public List<RepleinshRequestMainImportErrorVO> importRepleinshRequestMainList(List<RepleinshRequestMainCreateReqVO> datas, Integer mode, boolean updatePart) {
if (CollUtil.isEmpty(datas)) {
throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY);
throw exception(REPLEINSH_REQUEST_IMPORT_LIST_IS_EMPTY);
}
List<RepleinshRequestMainImportErrorVO> errorList = new ArrayList<>();
datas.forEach(createReqVO -> {
// 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList
String messageMain = "";
//主表的验证
//校验供应商基础信息
// try {
// ShiftDO shiftDO = shiftService.selectShiftExist(createReqVO.getSupplierCode());
// BeanUtils.copyProperties(createReqVO, shiftDO);
// } catch (ServiceException ex) {
// messageMain += ex.getMessage() + ",";
// }
//子表的验证
RepleinshRequestMainDO mainDO = RepleinshRequestMainConvert.INSTANCE.convert(createReqVO);
String messageMain = validateRepleinshRequestMainImport(mainDO);
List<RepleinshRequestDetailCreateReqVO> subList = createReqVO.getSubList();
List<RepleinshRequestDetailDO> subDOList = RepleinshRequestDetailConvert.INSTANCE.convertList03(subList);
for (RepleinshRequestDetailDO purchaseDetailDO : subDOList) {
String messageDetail = "";
// 校验物品基础信息
try {
ItembasicDO itembasicDO = itembasicService.selectItembasic(purchaseDetailDO.getItemCode());
purchaseDetailDO.setItemDesc1(itembasicDO.getDesc1());
purchaseDetailDO.setItemDesc2(itembasicDO.getDesc2());
purchaseDetailDO.setItemName(itembasicDO.getName());
purchaseDetailDO.setProjectCode(itembasicDO.getProject());
if (itembasicDO.getUom() != purchaseDetailDO.getUom()) {
messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchaseDetailDO.getUom() + ",";
// 是否有错误数据
boolean flag = true;
for (RepleinshRequestDetailDO detailDO : subDOList) {
String messageDetail = this.validateRepleinshRequestDetailImport(mainDO, detailDO);
if(!messageMain.isEmpty() || !messageDetail.isEmpty()) {
RepleinshRequestMainImportErrorVO importErrorVO = RepleinshRequestMainConvert.INSTANCE.convert(createReqVO, detailDO);
importErrorVO.setImportStatus("失败");
messageMain = messageMain + messageDetail;
importErrorVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1));
errorList.add(importErrorVO);
flag = false;
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
// 校验业务类型相关属性
try {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("RepleinmentRequest");
jobUtils.selectItembasicExist(purchaseDetailDO.getItemCode(), businesstypeDO);
businesstypeService.selectBusinesstypeExist(purchaseDetailDO.getToLocationCode());
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
createReqVO.setFromLocationTypes(businesstypeDO.getOutLocationTypes());
createReqVO.setToLocationTypes(businesstypeDO.getInLocationTypes());
createReqVO.setFromAreaCodes(businesstypeDO.getOutAreaCodes());
createReqVO.setToAreaCodes(businesstypeDO.getInAreaCodes());
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
RepleinshRequestDetailCreateReqVO purchaseDetailCreateReqVO = RepleinshRequestDetailConvert.INSTANCE.convert1(purchaseDetailDO);
RepleinshRequestMainImportErrorVO importVO = RepleinshRequestDetailConvert.INSTANCE.convert(createReqVO, purchaseDetailCreateReqVO);
//进行子表的错误统计
//主表没有错误 写入库里
if (!messageMain.equals("") || !messageDetail.equals("")) {
importVO.setImportStatus("失败");
messageMain = messageMain + messageDetail;
importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1));
errorList.add(importVO);
} else {
purchaseDetailDO.setNumber(createReqVO.getNumber());
purchaseDetailDO.setMasterId(createReqVO.getId());
purchaseDetailDO.setInventoryStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.INVENTORY_STATUS, "新增"));
}
}
if (errorList.isEmpty()) {
// 判断如果不存在,在进行插入
if (mode != 3) {
createReqVO.setNumber("");
createReqVO.setStatus(null);
createReqVO.setFomWarehouseCode(null);
createReqVO.setToWarehouseCode(null);
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PurchaseReceiptRequest");
if (requestsettingDO != null) {
createReqVO.setAutoAgree(requestsettingDO.getAutoAgree());
createReqVO.setAutoCommit(requestsettingDO.getAutoCommit());
createReqVO.setAutoExecute(requestsettingDO.getAutoExecute());
createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
RepleinshRequestMainDO createObj = RepleinshRequestMainConvert.INSTANCE.convert(createReqVO);
repleinshRequestMainMapper.insert(createObj);
repleinshRequestDetailMapper.insertBatch(subDOList);
} else if (mode != 2) {
createReqVO.setNumber("");
createReqVO.setStatus(null);
createReqVO.setFomWarehouseCode(null);
createReqVO.setToWarehouseCode(null);
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PurchaseReceiptRequest");
if (requestsettingDO != null) {
createReqVO.setAutoAgree(requestsettingDO.getAutoAgree());
createReqVO.setAutoCommit(requestsettingDO.getAutoCommit());
createReqVO.setAutoExecute(requestsettingDO.getAutoExecute());
createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
RepleinshRequestMainDO createObj = RepleinshRequestMainConvert.INSTANCE.convert(createReqVO);
repleinshRequestMainMapper.updateById(createObj);
repleinshRequestDetailMapper.updateBatch(subDOList);
//写入数据
if(flag) {
String number = serialNumberApi.generateCode(RuleCodeEnum.REPLEINMENT_REQUEST.getCode());
mainDO.setNumber(number);
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("RepleinmentRequest");
RequestStatusState requestStatusState = new RequestStatusState();
requestStatusState.newObject(requestsettingDO.getAutoCommit(), requestsettingDO.getAutoAgree(), requestsettingDO.getAutoExecute());
mainDO.setStatus(requestStatusState.getState().getCode());
mainDO.setAutoCommit(requestsettingDO.getAutoCommit());
mainDO.setAutoAgree(requestsettingDO.getAutoAgree());
mainDO.setAutoExecute(requestsettingDO.getAutoExecute());
mainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
repleinshRequestMainMapper.insert(mainDO);
//增加操作记录
trendsApi.createTrends(mainDO.getId(), "repleinshRequestMain", "导入了补料申请", TrendsTypeEnum.CREATE);
for (RepleinshRequestDetailDO detailDO : subDOList) {
detailDO.setMasterId(mainDO.getId());
detailDO.setNumber(number);
detailDO.setInventoryStatus("OK"); // 默认合格
}
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) {
this.generateJob(mainDO, subDOList);
}
repleinshRequestDetailMapper.insertBatch(subDOList);
}
});
//错误不为空并非部分更新,手工回滚
@ -230,4 +269,328 @@ public class RepleinshRequestMainServiceImpl implements RepleinshRequestMainServ
return errorList;
}
@Override
public List<RepleinshRequestMainDO> getRepleinshRequestMainList(CustomConditions conditions) {
return repleinshRequestMainMapper.selectSeniorList(conditions);
}
@Override
@Transactional
public Integer closeRepleinshRequestMain(Long id) {
RepleinshRequestMainDO mainDO = validateRepleinshRequestMainExists(id);
// 校验存在存在下级单据
Long count = repleinshJobMainMapper.selectByRequestNumber(mainDO.getNumber());
if(count > 0) {
throw new ServiceException(REPLEINSH_REQUEST_JOB_EXISTS);
}
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.close();
if(!flag) {
throw new ServiceException(REPLEINSH_REQUEST_STATUS_ERROR);
}
mainDO.setStatus(requestStatusState.getState().getCode());
//增加操作记录
trendsApi.createTrends(id, "repleinshRequest", "关闭了补料申请", TrendsTypeEnum.UPDATE);
return repleinshRequestMainMapper.updateById(mainDO);
}
@Override
@Transactional
public Integer reAddRepleinshRequestMain(Long id) {
RepleinshRequestMainDO mainDO = validateRepleinshRequestMainExists(id);
// 校验存在存在下级单据
Long count = repleinshJobMainMapper.selectByRequestNumber(mainDO.getNumber());
if(count > 0) {
throw new ServiceException(REPLEINSH_REQUEST_JOB_EXISTS);
}
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.reAdd();
if(!flag) {
throw new ServiceException(REPLEINSH_REQUEST_STATUS_ERROR);
}
mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录
trendsApi.createTrends(id, "repleinshRequest", "打开了补料申请", TrendsTypeEnum.UPDATE);
return repleinshRequestMainMapper.updateById(mainDO);
}
@Override
@Transactional
public Integer submitRepleinshRequestMain(Long id) {
RepleinshRequestMainDO mainDO = validateRepleinshRequestMainExists(id);
// 校验存在存在下级单据
Long count = repleinshJobMainMapper.selectByRequestNumber(mainDO.getNumber());
if(count > 0) {
throw new ServiceException(REPLEINSH_REQUEST_JOB_EXISTS);
}
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.submit(mainDO.getAutoAgree(), mainDO.getAutoExecute());
if(!flag) {
throw new ServiceException(REPLEINSH_REQUEST_STATUS_ERROR);
}
mainDO.setStatus(requestStatusState.getState().getCode());
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) {
this.generateJob(mainDO, repleinshRequestDetailMapper.selectList(mainDO.getId()));
}
trendsApi.createTrends(id, "repleinshRequest", "提交了补料申请", TrendsTypeEnum.UPDATE);
return repleinshRequestMainMapper.updateById(mainDO);
}
@Override
@Transactional
public Integer refusedRepleinshRequestMain(Long id) {
// 校验存在
RepleinshRequestMainDO mainDO = validateRepleinshRequestMainExists(id);
// 校验存在存在下级单据
Long count = repleinshJobMainMapper.selectByRequestNumber(mainDO.getNumber());
if(count > 0) {
throw new ServiceException(REPLEINSH_REQUEST_JOB_EXISTS);
}
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.refused();
if(!flag) {
throw new ServiceException(REPLEINSH_REQUEST_STATUS_ERROR);
}
mainDO.setStatus(requestStatusState.getState().getCode());
trendsApi.createTrends(id, "repleinshRequest", "驳回了补料申请", TrendsTypeEnum.UPDATE);
return repleinshRequestMainMapper.updateById(mainDO);
}
@Override
@Transactional
public Integer agreeRepleinshRequestMain(Long id) {
// 校验存在
RepleinshRequestMainDO mainDO = validateRepleinshRequestMainExists(id);
// 校验存在存在下级单据
Long count = repleinshJobMainMapper.selectByRequestNumber(mainDO.getNumber());
if(count > 0) {
throw new ServiceException(REPLEINSH_REQUEST_JOB_EXISTS);
}
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.agree(mainDO.getAutoExecute());
if(!flag) {
throw new ServiceException(REPLEINSH_REQUEST_STATUS_ERROR);
}
mainDO.setStatus(requestStatusState.getState().getCode());
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) {
this.generateJob(mainDO, repleinshRequestDetailMapper.selectList(mainDO.getId()));
}
trendsApi.createTrends(id, "repleinshRequest", "审批通过了补料申请", TrendsTypeEnum.UPDATE);
return repleinshRequestMainMapper.updateById(mainDO);
}
@Override
@Transactional
public Integer handleRepleinshRequestMain(Long id) {
// 校验存在
RepleinshRequestMainDO mainDO = validateRepleinshRequestMainExists(id);
// 校验存在存在下级单据
Long count = repleinshJobMainMapper.selectByRequestNumber(mainDO.getNumber());
if(count > 0) {
throw new ServiceException(REPLEINSH_REQUEST_JOB_EXISTS);
}
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.handle();
if(!flag) {
throw new ServiceException(REPLEINSH_REQUEST_STATUS_ERROR);
}
mainDO.setStatus(requestStatusState.getState().getCode());
//调用执行方法
this.generateJob(mainDO, repleinshRequestDetailMapper.selectList(mainDO.getId()));
trendsApi.createTrends(id, "repleinshRequest", "执行了补料申请", TrendsTypeEnum.UPDATE);
return repleinshRequestMainMapper.updateById(mainDO);
}
/**
* 导入校验主
* @param mainDo
* @return
*/
private String validateRepleinshRequestMainImport (RepleinshRequestMainDO mainDo) {
StringBuilder message = new StringBuilder();
try {
ValidationUtils.validate(validator, mainDo);
} catch (Exception ex) {
message.append(ex.getMessage()).append(",");
}
return message.toString();
}
/**
* 导入校验子
* @param mainDo
* @param detailDo
* @return
*/
private String validateRepleinshRequestDetailImport(RepleinshRequestMainDO mainDo,RepleinshRequestDetailDO detailDo) {
StringBuilder message = new StringBuilder();
try {
ValidationUtils.validate(validator, detailDo);
} catch (Exception e) {
message.append(e.getMessage()).append(",");
}
ItembasicDO itembasicDO = null;
try {
itembasicDO = this.validateItem(detailDo);
} catch (Exception e) {
message.append(e.getMessage()).append(",");
}
if(!detailDo.getUom().equals(itembasicDO.getUom())) {
message.append("计量单位【").append(detailDo.getUom()).append("】错误,应该是【").append(itembasicDO.getUom()).append("】").append(",");
}
try {
this.validateBusinesstype(itembasicDO.getType(),itembasicDO.getCode(),detailDo.getToLocationCode(), mainDo,detailDo);
} catch (Exception e) {
message.append(e.getMessage()).append(",");
}
// 校验零件库位关系
// try {
// jobUtils.getItemCodeLocationCode(itembasicDO.getCode(),detailDo.getToLocationCode());
// } catch (Exception e) {
// message.append(e.getMessage()).append(",");
// }
return message.toString();
}
/**
* 校验物品信息并赋值
* @param detailDo
* @return
*/
private ItembasicDO validateItem(RepleinshRequestDetailDO detailDo) {
ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode());
detailDo.setItemName(itembasicDO.getName());
detailDo.setItemDesc1(itembasicDO.getDesc1());
detailDo.setItemDesc2(itembasicDO.getDesc2());
detailDo.setProjectCode(itembasicDO.getProject());
return itembasicDO;
}
/**
* 校验业务类型并赋值
* @param itemType
* @param mainDo
* @return
*/
private void validateBusinesstype(String itemType,String itemCode,String locationCode, RepleinshRequestMainDO mainDo,RepleinshRequestDetailDO detailDo) {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("RepleinmentRequest");
jobUtils.ifInType(itemType, businesstypeDO);
mainDo.setFromLocationTypes(businesstypeDO.getOutLocationTypes());
mainDo.setToLocationTypes(businesstypeDO.getInLocationTypes());
mainDo.setFromAreaCodes(businesstypeDO.getOutAreaCodes());
mainDo.setToAreaCodes(businesstypeDO.getInAreaCodes());
mainDo.setBusinessType(businesstypeDO.getCode());
detailDo.setInventoryStatus(businesstypeDO.getInInventoryStatuses());
//校验物品类型
jobUtils.selectItembasicExist(itemCode,businesstypeDO);
//校验到库位
jobUtils.ifInFromLocationType(locationCode,businesstypeDO);
}
/**
* 生成任务 OR 记录
* @param mainDO
* @param detailDO
*/
private void generateJob(RepleinshRequestMainDO mainDO, List<RepleinshRequestDetailDO> detailDO) {
//跳过任务直接生成记录
if("TRUE".equals(mainDO.getDirectCreateRecord())) {
// TODO: 发料申请 跳过任务直接生成记录 未做!!
}
// 任务主表信息
RepleinshJobMainDO repleinshJobMainDO = new RepleinshJobMainDO();
repleinshJobMainDO.setRequestNumber(mainDO.getNumber());
repleinshJobMainDO.setFromWarehouseCode(mainDO.getFomWarehouseCode());
repleinshJobMainDO.setToWarehouseCode(mainDO.getToWarehouseCode());
repleinshJobMainDO.setRequestTime(mainDO.getRequestTime());
repleinshJobMainDO.setRequestDueTime(mainDO.getDueTime());
repleinshJobMainDO.setStatus(JobStatusEnum.PENDING.getCode());
repleinshJobMainDO.setDepartmentCode(mainDO.getDepartmentCode());
repleinshJobMainDO.setFromLocationTypes(mainDO.getFromLocationTypes());
repleinshJobMainDO.setToLocationTypes(mainDO.getToLocationTypes());
String number = serialNumberApi.generateCode(RuleCodeEnum.REPLEINMENT_JOB.getCode());
repleinshJobMainDO.setNumber(number);
repleinshJobMainDO.setBusinessType(mainDO.getBusinessType());
repleinshJobMainDO.setCreateTime(LocalDateTime.now());
repleinshJobMainDO.setFromAreaCodes(mainDO.getFromAreaCodes());
repleinshJobMainDO.setToAreaCodes(mainDO.getToAreaCodes());
repleinshJobMainDO.setId(null);
repleinshJobMainDO.setCreateTime(null);
repleinshJobMainDO.setCreator(null);
repleinshJobMainDO.setUpdateTime(null);
repleinshJobMainDO.setUpdater(null);
// 获取任务单据设置
JobsettingDO jobsettingDO = jobsettingService.selectJobsettingExist("RepleinmentJob");
repleinshJobMainDO.setAutoComplete(jobsettingDO.getAutoComplete());
repleinshJobMainDO.setAllowModifyLocation(jobsettingDO.getAllowModifyLocation());
repleinshJobMainDO.setAllowModifyQty(jobsettingDO.getAllowModifyQty());
repleinshJobMainDO.setAllowBiggerQty(jobsettingDO.getAllowBiggerQty());
repleinshJobMainDO.setAllowSmallerQty(jobsettingDO.getAllowSmallerQty());
repleinshJobMainDO.setAllowModifyInventoryStatus(jobsettingDO.getAllowModifyInventoryStatus());
repleinshJobMainDO.setAllowContinuousScanning(jobsettingDO.getAllowContinuousScanning());
repleinshJobMainDO.setAllowPartialComplete(jobsettingDO.getAllowPartialComplete());
repleinshJobMainDO.setAllowModifyPackingNumber(jobsettingDO.getAllowModifyPackingNumber());
repleinshJobMainDO.setAllowModifyBatch(jobsettingDO.getAllowModifyBach());
repleinshJobMainMapper.insert(repleinshJobMainDO);
List<RepleinshJobDetailDO> repleinshJobDetailDOList = new ArrayList<>();
List<ExpectinCreateReqVO> expectinCreateReqVOList = new ArrayList<>();
List<ExpectoutCreateReqVO> expectoutCreateReqVOList = new ArrayList<>();
// 根据发料申请子表数据进行分析
detailDO.forEach(item -> {
// 根据批次策略/下架策略 返回 库存余额DO
List<BalanceDO> balanceDOListJob = jobUtils.getBalanceByBatchOffShelf(item.getItemCode(),item.getInventoryStatus(),item.getProjectCode(),item.getQty());
// 根据 查询出所需数据 解析成 任务子表数据
balanceDOListJob.forEach(balanceDOItem -> {
RepleinshJobDetailDO repleinshJobDetailDO = new RepleinshJobDetailDO();
repleinshJobDetailDO.setId(null);
repleinshJobDetailDO.setCreateTime(null);
repleinshJobDetailDO.setCreator(null);
repleinshJobDetailDO.setUpdateTime(null);
repleinshJobDetailDO.setUpdater(null);
repleinshJobDetailDO.setPackingNumber(balanceDOItem.getPackingNumber());
repleinshJobDetailDO.setContainerNumber(balanceDOItem.getContainerNumber());
repleinshJobDetailDO.setBatch(balanceDOItem.getBatch());
repleinshJobDetailDO.setFromLocationCode(balanceDOItem.getLocationCode());
repleinshJobDetailDO.setToLocationCode(item.getToLocationCode());
repleinshJobDetailDO.setItemCode(item.getItemCode());
repleinshJobDetailDO.setItemName(item.getItemName());
repleinshJobDetailDO.setItemDesc1(item.getItemDesc1());
repleinshJobDetailDO.setItemDesc2(item.getItemDesc2());
repleinshJobDetailDO.setProjectCode(item.getProjectCode());
repleinshJobDetailDO.setQty(item.getQty());
repleinshJobDetailDO.setUom(item.getUom());
repleinshJobDetailDO.setToOwnerCode(item.getToOwnerCode());
repleinshJobDetailDO.setFromOwnerCode(item.getFromOwnerCode());
repleinshJobDetailDO.setNumber(repleinshJobMainDO.getNumber());
repleinshJobDetailDO.setMasterId(repleinshJobMainDO.getId());
repleinshJobDetailDO.setInventoryStatus(item.getInventoryStatus());
repleinshJobDetailDOList.add(repleinshJobDetailDO);
//预计入
ExpectinCreateReqVO expectinCreateReqVO = new ExpectinCreateReqVO();
BeanUtils.copyProperties(repleinshJobDetailDO, expectinCreateReqVO);
expectinCreateReqVO.setJobNumber(number);
expectinCreateReqVO.setBusinessType(repleinshJobMainDO.getBusinessType());
expectinCreateReqVO.setLocationCode(repleinshJobDetailDO.getFromLocationCode());
expectinCreateReqVO.setOwnerCode(repleinshJobDetailDO.getFromOwnerCode());
expectinCreateReqVOList.add(expectinCreateReqVO);
//预计出
ExpectoutCreateReqVO expectoutCreateReqVO = new ExpectoutCreateReqVO();
BeanUtils.copyProperties(repleinshJobDetailDO, expectoutCreateReqVO);
expectoutCreateReqVO.setJobNumber(number);
expectoutCreateReqVO.setBusinessType(repleinshJobMainDO.getBusinessType());
expectoutCreateReqVO.setLocationCode(repleinshJobDetailDO.getFromLocationCode());
expectoutCreateReqVO.setOwnerCode(repleinshJobDetailDO.getFromOwnerCode());
expectoutCreateReqVOList.add(expectoutCreateReqVO);
});
});
repleinshJobDetailMapper.insertBatch(repleinshJobDetailDOList);
//增加预计入
expectinService.createExpectin(expectinCreateReqVOList);
//增加预计出
expectoutService.createExpectout(expectoutCreateReqVOList);
trendsApi.createTrends(repleinshJobMainDO.getId(), "repleinshJob", "补料申请生成补料任务", TrendsTypeEnum.CREATE);
}
}

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/rule/RuleServiceImpl.java

@ -475,6 +475,7 @@ public class RuleServiceImpl implements RuleService {
@Override
public RuleRespVO batch(String supplierCode, String customerCode, String abcClass, String itemType, String itemGroup, String project, String itemCode) {
System.out.println("99999999:" + itemCode);
QueryWrapper<RuleDO> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("strategy_code", "S010");
queryWrapper.orderByDesc("priority");
@ -511,6 +512,7 @@ public class RuleServiceImpl implements RuleService {
return RuleConvert.INSTANCE.convert(ruleDO);
}
}
return null;
}

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

@ -258,6 +258,7 @@ public class JobUtils {
}
/**
* SQ-------G
* 零件库位关系有效
*
* @param pitemCode 物品代码
@ -881,4 +882,21 @@ public class JobUtils {
return balanceDOListJob;
}
/**
* SQ------VI&L
* 校验零件库位关系VI&L
* @param pItemCode
* @param PlocationCode
* @return
*/
public Boolean getItemCodeLocationCode(String pItemCode,String PlocationCode) {
RuleRespVO ruleRespVO = this.selectLocationAndModRelation(pItemCode);
JSONObject json = JSONUtil.parseObj(ruleRespVO.getConfiguration());
String locationCode = json.get("LocationCode").toString();
if (locationCode != null && locationCode.equals(PlocationCode)) {
return true;
} else {
throw exception(LOCATION_ITEMCODE_AND_LOCATIONCODE_NOT_EXISTS);
}
}
}

Loading…
Cancel
Save