Browse Source

发料申请

master
陈薪名 2 years ago
parent
commit
c812430d7b
  1. 8
      win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java
  2. 17
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/IssueRequestDetailController.java
  3. 117
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/IssueRequestMainController.java
  4. 7
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/vo/IssueRequestDetailBaseVO.java
  5. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/vo/IssueRequestDetailPageReqVO.java
  6. 14
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/vo/IssueRequestImportVO.java
  7. 49
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/vo/IssueRequestMainExcelVO.java
  8. 14
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRequest/IssueRequestMainConvert.java
  9. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/issueRequest/IssueRequestDetailDO.java
  10. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/issueRequest/IssueRequestMainDO.java
  11. 8
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/issueJob/IssueJobMainMapper.java
  12. 56
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/issueRequest/IssueRequestDetailMapper.java
  13. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/issueRequest/IssueRequestMainMapper.java
  14. 12
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestDetailService.java
  15. 93
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestDetailServiceImpl.java
  16. 20
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainService.java
  17. 491
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainServiceImpl.java

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

@ -552,6 +552,13 @@ public interface ErrorCodeConstants {
//发料申请子ErrorCode
ErrorCode ISSUE_REQUEST_DETAIL_NOT_EXISTS = new ErrorCode(1_000_090_001, "发料申请子不存在");
ErrorCode ISSUE_REQUEST_MAIN_CANNOT_CLOSE = new ErrorCode(1_000_090_002, "发料申请状态不支持关闭");
ErrorCode ISSUE_REQUEST_MAIN_CANNOT_READD = new ErrorCode(1_000_090_003, "发料申请状态不支持重新添加");
ErrorCode ISSUE_REQUEST_MAIN_CANNOT_SUBMIT = new ErrorCode(1_000_090_004, "发料申请状态不支持提交");
ErrorCode ISSUE_REQUEST_MAIN_CANNOT_REFUSED = new ErrorCode(1_000_090_005, "发料申请状态不支持驳回");
ErrorCode ISSUE_REQUEST_MAIN_CANNOT_AGREE = new ErrorCode(1_000_090_006, "发料申请状态不支持审批通过");
ErrorCode ISSUE_REQUEST_MAIN_CANNOT_HANDLE = new ErrorCode(1_000_090_007, "发料申请状态不支持处理");
ErrorCode ISSUE_REQUEST_JOB_EXISTS = new ErrorCode(1_000_090_008, "发料申请存在发料任务单");
//发料任务主ErrorCode
ErrorCode ISSUE_JOB_MAIN_NOT_EXISTS = new ErrorCode(1_000_091_000, "发料任务主不存在");
@ -565,6 +572,7 @@ public interface ErrorCodeConstants {
//发料记录子ErrorCode
ErrorCode ISSUE_RECORD_DETAIL_NOT_EXISTS = new ErrorCode(1_000_092_001, "发料记录子不存在");
//生产收料任务主ErrorCode
ErrorCode PRODUCTIONRECEIPT_JOB_MAIN_NOT_EXISTS = new ErrorCode(1_000_093_000, "生产收料任务主不存在");

17
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/IssueRequestDetailController.java

@ -106,21 +106,4 @@ public class IssueRequestDetailController {
return success(result);
}
@GetMapping("/export-excel")
@Operation(summary = "导出发料申请子 Excel")
@PreAuthorize("@ss.hasPermission('wms:issue-request-detail:export')")
@OperateLog(type = EXPORT)
public void exportIssueRequestDetailExcel(@Valid IssueRequestDetailExportReqVO exportReqVO,
HttpServletResponse response) throws IOException {
List<IssueRequestDetailDO> list = issueRequestDetailService.getIssueRequestDetailList(exportReqVO);
// 导出 Excel
List<IssueRequestDetailExcelVO> datas = IssueRequestDetailConvert.INSTANCE.convertList02(list);
for(IssueRequestDetailExcelVO vo : datas) {
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator()));
//后端创建个字段作为前端展示的虚拟字段
vo.setCreator(user.getNickname());
}
ExcelUtils.write(response, "发料申请子.xls", "数据", IssueRequestDetailExcelVO.class, datas);
}
}

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

@ -119,6 +119,38 @@ public class IssueRequestMainController {
return success(result);
}
private List<IssueRequestMainExcelVO> getExcelVo(List<IssueRequestMainDO> list, Map<Integer, String[]> mapDropDown) {
String[] available = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE);
mapDropDown.put(13, available);
List<IssueRequestMainExcelVO> resultList = new ArrayList<>();
// 导出
for(IssueRequestMainDO mainDO : list) {
List<IssueRequestDetailDO> subList = issueRequestDetailService.selectList(mainDO.getId());
for(IssueRequestDetailDO detailDO : subList) {
IssueRequestMainExcelVO vo = IssueRequestMainConvert.INSTANCE.convert(mainDO, detailDO);
resultList.add(vo);
}
}
return resultList;
}
@GetMapping("/export-excel-senior")
@Operation(summary = "导出生产计划主 Excel")
@PreAuthorize("@ss.hasPermission('wms:issue-request-main:export')")
@OperateLog(type = EXPORT)
public void exportIssueRequestMainSeniorExcel(@Valid @RequestBody CustomConditions conditions, HttpServletResponse response) throws IOException {
List<IssueRequestMainDO> list = issueRequestMainService.getIssueRequestMainList(conditions);
//组装vo
Map<Integer, String[]> mapDropDown = new HashMap<>();
List<IssueRequestMainExcelVO> 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", "发料申请", IssueRequestMainExcelVO.class, resultList, mapDropDown);
}
@GetMapping("/export-excel")
@Operation(summary = "导出发料申请主 Excel")
@PreAuthorize("@ss.hasPermission('wms:issue-request-main:export')")
@ -126,17 +158,15 @@ public class IssueRequestMainController {
public void exportIssueRequestMainExcel(@Valid IssueRequestMainExportReqVO exportReqVO,
HttpServletResponse response) throws IOException {
List<IssueRequestMainDO> list = issueRequestMainService.getIssueRequestMainList(exportReqVO);
// 导出 Excel
List<IssueRequestMainExcelVO> datas = IssueRequestMainConvert.INSTANCE.convertList02(list);
for(IssueRequestMainExcelVO vo : datas) {
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator()));
//后端创建个字段作为前端展示的虚拟字段
vo.setCreator(user.getNickname());
}
//组装vo
Map<Integer, String[]> mapDropDown = new HashMap<>();
String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM);
mapDropDown.put(7, uom);
ExcelUtils.write(response, "发料申请主.xls", "数据", IssueRequestMainExcelVO.class, datas,mapDropDown);
List<IssueRequestMainExcelVO> 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, "发料申请.xls", "发料申请", IssueRequestMainExcelVO.class, resultList);
}
@GetMapping("/get-import-template")
@ -146,7 +176,9 @@ public class IssueRequestMainController {
List<IssueRequestImportVO> list = new ArrayList<>();
Map<Integer, String[]> mapDropDown = new HashMap<>();
String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM);
mapDropDown.put(7, uom);
mapDropDown.put(8, uom);
String[] useOnTheWayLocation = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE);
mapDropDown.put(2, useOnTheWayLocation);
// 输出
ExcelUtils.write(response, "检验发料申请导入模板.xlsx", "发料申请信息列表", IssueRequestImportVO.class, list, mapDropDown);
}
@ -171,12 +203,67 @@ public class IssueRequestMainController {
Map<String, Object> returnMap = new HashMap<>();
returnMap.put("errorCount", errorList.size());
if(!errorList.isEmpty()) {
String url = ExcelUtils.writeLocalFile("发料申请基本信息导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xlsx", "错误列表", errorList);
String url = ExcelUtils.writeLocalFile("发料申请信息导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xlsx", "错误列表", errorList);
returnMap.put("errorFile", url);
}
return success(returnMap);
}
@PutMapping("/close")
@Operation(summary = "关闭")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:issue-request-main:close')")
public CommonResult<Boolean> closeIssueRequestMain(@RequestParam("id") Long id) {
Integer count = issueRequestMainService.closeIssueRequestMain(id);
return success(count > 0);
}
@PutMapping("/reAdd")
@Operation(summary = "重新添加")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:issue-request-main:reAdd')")
public CommonResult<Boolean> reAddIssueRequestMain(@RequestParam("id") Long id) {
Integer count = issueRequestMainService.reAddIssueRequestMain(id);
return success(count > 0);
}
@PutMapping("/submit")
@Operation(summary = "提交审批")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:issue-request-main:submit')")
public CommonResult<Boolean> submitIssueRequestMain(@RequestParam("id") Long id) {
Integer count = issueRequestMainService.submitIssueRequestMain(id);
return success(count > 0);
}
@PutMapping("/refused")
@Operation(summary = "驳回")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:issue-request-main:refused')")
public CommonResult<Boolean> refusedIssueRequestMain(@RequestParam("id") Long id) {
Integer count = issueRequestMainService.refusedIssueRequestMain(id);
return success(count > 0);
}
@PutMapping("/agree")
@Operation(summary = "审批通过")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:issue-request-main:agree')")
public CommonResult<Boolean> agreeIssueRequestMain(@RequestParam("id") Long id) {
Integer count = issueRequestMainService.agreeIssueRequestMain(id);
return success(count > 0);
}
@PutMapping("/handle")
@Operation(summary = "处理")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:issue-request-main:handle')")
public CommonResult<Boolean> handleIssueRequestMain(@RequestParam("id") Long id) {
Integer count = issueRequestMainService.handleIssueRequestMain(id);
return success(count > 0);
}
@GetMapping("/getIssueRequestById")
@Operation(summary = "APP获得发料申请主子表明细列表")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@ -187,9 +274,9 @@ public class IssueRequestMainController {
if(result==null) {
return success(result);
};
IssueRequestDetailExportReqVO reqVO = new IssueRequestDetailExportReqVO();
reqVO.setMasterId(result.getId());
List<IssueRequestDetailDO> issueRequestDetailList = issueRequestDetailService.getIssueRequestDetailList(reqVO);
// IssueRequestDetailExportReqVO reqVO = new IssueRequestDetailExportReqVO();
// reqVO.setMasterId(result.getId());
List<IssueRequestDetailDO> issueRequestDetailList = issueRequestDetailService.selectList(result.getId());
List<IssueRequestDetailExcelVO> vos = IssueRequestDetailConvert.INSTANCE.convertList02(issueRequestDetailList);
result.setSubList(vos);
return success(result);

7
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/vo/IssueRequestDetailBaseVO.java

@ -28,22 +28,18 @@ public class IssueRequestDetailBaseVO {
private String workStationCode;
@Schema(description = "库存状态", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "库存状态不能为空")
private String inventoryStatus;
@Schema(description = "包装号", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "包装号不能为空")
private String packingNumber;
@Schema(description = "器具号")
private String containerNumber;
@Schema(description = "批次", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "批次不能为空")
private String batch;
@Schema(description = "到库位代码", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "到库位代码不能为空")
private String toLocationCode;
@Schema(description = "单据号")
@ -93,4 +89,7 @@ public class IssueRequestDetailBaseVO {
@Schema(description = "到货主代码")
private String toOwnerCode;
@Schema(description = "主表ID")
private Long masterId;
}

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/vo/IssueRequestDetailPageReqVO.java

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

14
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/vo/IssueRequestImportVO.java

@ -4,12 +4,17 @@ import com.alibaba.excel.annotation.ExcelProperty;
import com.win.framework.excel.core.annotations.DictFormat;
import com.win.framework.excel.core.convert.DictConvert;
import com.win.module.wms.enums.DictTypeConstants;
import 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;
/**
@ -29,9 +34,14 @@ public class IssueRequestImportVO {
@ExcelProperty("车间代码")
private String workshopCode;
@ExcelProperty("使用在途库")
@ExcelProperty(value = "使用在途库", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String useOnTheWayLocation;
@ExcelProperty("截止时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime dueTime;
@ExcelProperty("生产线代码")
private String productionLineCode;
@ -47,4 +57,6 @@ public class IssueRequestImportVO {
@ExcelProperty(value = "计量单位", converter = DictConvert.class)
@DictFormat(DictTypeConstants.UOM)
private String uom;
}

49
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/vo/IssueRequestMainExcelVO.java

@ -1,5 +1,6 @@
package com.win.module.wms.controller.issueRequest.vo;
import com.win.module.wms.enums.DictTypeConstants;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
@ -93,4 +94,52 @@ public class IssueRequestMainExcelVO {
@ExcelProperty("直接生成记录")
private String directCreateRecord;
// 子表数据
@ExcelProperty("生产线代码")
private String productionLineCode;
@ExcelProperty("工位代码")
private String workStationCode;
@ExcelProperty("库存状态")
@DictFormat(DictTypeConstants.INVENTORY_STATUS)
private String inventoryStatus;
@ExcelProperty("包装号")
private String packingNumber;
@ExcelProperty("器具号")
private String containerNumber;
@ExcelProperty("批次")
private String batch;
@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("计量单位")
private String uom;
@ExcelProperty("备注子")
private String remarkDetail;
}

14
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRequest/IssueRequestMainConvert.java

@ -2,8 +2,11 @@ package com.win.module.wms.convert.issueRequest;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.issueRequest.vo.*;
import com.win.module.wms.controller.production.vo.ProductionMainExcelVO;
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.production.ProductionDetailDO;
import com.win.module.wms.dal.dataobject.production.ProductionMainDO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
@ -42,4 +45,15 @@ public interface IssueRequestMainConvert {
})
IssueRequestImportErrorVO convert(IssueRequestMainCreateReqVO mainVo, IssueRequestDetailDO 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"),
@Mapping(source = "detailDO.remark", target = "remarkDetail"),
})
IssueRequestMainExcelVO convert(IssueRequestMainDO mainDO, IssueRequestDetailDO detailDO);
}

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/issueRequest/IssueRequestDetailDO.java

@ -43,12 +43,10 @@ public class IssueRequestDetailDO extends BaseDO {
*
* 枚举 {@link TODO inventory_status 对应的类}
*/
@NotBlank
private String inventoryStatus;
/**
* 包装号
*/
@NotBlank
private String packingNumber;
/**
* 器具号
@ -57,7 +55,6 @@ public class IssueRequestDetailDO extends BaseDO {
/**
* 批次
*/
@NotBlank
private String batch;
/**
* 到库位代码

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/issueRequest/IssueRequestMainDO.java

@ -38,26 +38,22 @@ public class IssueRequestMainDO extends BaseDO {
/**
* 从仓库代码
*/
@NotBlank
private String fromWarehouseCode;
/**
* 到仓库代码
*/
@NotBlank
private String toWarehouseCode;
/**
* 从库位类型范围
*
* 枚举 {@link TODO location_type 对应的类}
*/
@NotBlank
private String fromLocationTypes;
/**
* 到库位类型范围
*
* 枚举 {@link TODO location_type 对应的类}
*/
@NotBlank
private String toLocationTypes;
/**
* 从库区代码范围

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

@ -10,7 +10,9 @@ import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.issueJob.vo.IssueJobMainExportReqVO;
import com.win.module.wms.controller.issueJob.vo.IssueJobMainPageReqVO;
import com.win.module.wms.dal.dataobject.issueJob.IssueJobMainDO;
import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobMainDO;
import com.win.module.wms.dal.dataobject.repleinshJob.RepleinshJobMainDO;
import com.win.module.wms.enums.order.OrderStatusEnum;
import org.apache.ibatis.annotations.Mapper;
/**
@ -119,4 +121,10 @@ public interface IssueJobMainMapper extends BaseMapperX<IssueJobMainDO> {
}
default Long selectByRequestNumber(String requestNumber) {
return selectCount(new LambdaQueryWrapperX<IssueJobMainDO>()
.eq(IssueJobMainDO::getRequestNumber, requestNumber)
.ne(IssueJobMainDO::getStatus, OrderStatusEnum.CLOSED.getCode()));
}
}

56
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/issueRequest/IssueRequestDetailMapper.java

@ -10,6 +10,7 @@ import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.issueRequest.vo.IssueRequestDetailExportReqVO;
import com.win.module.wms.controller.issueRequest.vo.IssueRequestDetailPageReqVO;
import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestDetailDO;
import com.win.module.wms.dal.dataobject.production.ProductionDetailDO;
import org.apache.ibatis.annotations.Mapper;
/**
@ -22,6 +23,7 @@ public interface IssueRequestDetailMapper extends BaseMapperX<IssueRequestDetail
default PageResult<IssueRequestDetailDO> selectPage(IssueRequestDetailPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<IssueRequestDetailDO>()
.eq(IssueRequestDetailDO::getMasterId, reqVO.getMasterId())
.eqIfPresent(IssueRequestDetailDO::getProductionLineCode, reqVO.getProductionLineCode())
.eqIfPresent(IssueRequestDetailDO::getWorkStationCode, reqVO.getWorkStationCode())
.eqIfPresent(IssueRequestDetailDO::getInventoryStatus, reqVO.getInventoryStatus())
@ -49,32 +51,36 @@ public interface IssueRequestDetailMapper extends BaseMapperX<IssueRequestDetail
default PageResult<IssueRequestDetailDO> selectSenior(CustomConditions conditions) {
return selectPage(conditions, QueryWrapperUtils.structure(conditions));
}
default List<IssueRequestDetailDO> selectList(IssueRequestDetailExportReqVO reqVO) {
default List<IssueRequestDetailDO> selectList(Long masterId) {
return selectList(new LambdaQueryWrapperX<IssueRequestDetailDO>()
.eqIfPresent(IssueRequestDetailDO::getMasterId, reqVO.getMasterId())
.eqIfPresent(IssueRequestDetailDO::getProductionLineCode, reqVO.getProductionLineCode())
.eqIfPresent(IssueRequestDetailDO::getWorkStationCode, reqVO.getWorkStationCode())
.eqIfPresent(IssueRequestDetailDO::getInventoryStatus, reqVO.getInventoryStatus())
.eqIfPresent(IssueRequestDetailDO::getPackingNumber, reqVO.getPackingNumber())
.eqIfPresent(IssueRequestDetailDO::getContainerNumber, reqVO.getContainerNumber())
.eqIfPresent(IssueRequestDetailDO::getBatch, reqVO.getBatch())
.eqIfPresent(IssueRequestDetailDO::getToLocationCode, reqVO.getToLocationCode())
.eqIfPresent(IssueRequestDetailDO::getNumber, reqVO.getNumber())
.eqIfPresent(IssueRequestDetailDO::getItemCode, reqVO.getItemCode())
.eqIfPresent(IssueRequestDetailDO::getRemark, reqVO.getRemark())
.betweenIfPresent(IssueRequestDetailDO::getCreateTime, reqVO.getCreateTime())
.eqIfPresent(IssueRequestDetailDO::getCreator, reqVO.getCreator())
.likeIfPresent(IssueRequestDetailDO::getItemName, reqVO.getItemName())
.eqIfPresent(IssueRequestDetailDO::getItemDesc1, reqVO.getItemDesc1())
.eqIfPresent(IssueRequestDetailDO::getItemDesc2, reqVO.getItemDesc2())
.eqIfPresent(IssueRequestDetailDO::getProjectCode, reqVO.getProjectCode())
.eqIfPresent(IssueRequestDetailDO::getQty, reqVO.getQty())
.eqIfPresent(IssueRequestDetailDO::getUom, reqVO.getUom())
.betweenIfPresent(IssueRequestDetailDO::getUpdateTime, reqVO.getUpdateTime())
.eqIfPresent(IssueRequestDetailDO::getUpdater, reqVO.getUpdater())
.eqIfPresent(IssueRequestDetailDO::getFromOwnerCode, reqVO.getFromOwnerCode())
.eqIfPresent(IssueRequestDetailDO::getToOwnerCode, reqVO.getToOwnerCode())
.orderByDesc(IssueRequestDetailDO::getId));
.eq(IssueRequestDetailDO::getMasterId, masterId));
}
// default List<IssueRequestDetailDO> selectList(IssueRequestDetailExportReqVO reqVO) {
// return selectList(new LambdaQueryWrapperX<IssueRequestDetailDO>()
// .eqIfPresent(IssueRequestDetailDO::getMasterId, reqVO.getMasterId())
// .eqIfPresent(IssueRequestDetailDO::getProductionLineCode, reqVO.getProductionLineCode())
// .eqIfPresent(IssueRequestDetailDO::getWorkStationCode, reqVO.getWorkStationCode())
// .eqIfPresent(IssueRequestDetailDO::getInventoryStatus, reqVO.getInventoryStatus())
// .eqIfPresent(IssueRequestDetailDO::getPackingNumber, reqVO.getPackingNumber())
// .eqIfPresent(IssueRequestDetailDO::getContainerNumber, reqVO.getContainerNumber())
// .eqIfPresent(IssueRequestDetailDO::getBatch, reqVO.getBatch())
// .eqIfPresent(IssueRequestDetailDO::getToLocationCode, reqVO.getToLocationCode())
// .eqIfPresent(IssueRequestDetailDO::getNumber, reqVO.getNumber())
// .eqIfPresent(IssueRequestDetailDO::getItemCode, reqVO.getItemCode())
// .eqIfPresent(IssueRequestDetailDO::getRemark, reqVO.getRemark())
// .betweenIfPresent(IssueRequestDetailDO::getCreateTime, reqVO.getCreateTime())
// .eqIfPresent(IssueRequestDetailDO::getCreator, reqVO.getCreator())
// .likeIfPresent(IssueRequestDetailDO::getItemName, reqVO.getItemName())
// .eqIfPresent(IssueRequestDetailDO::getItemDesc1, reqVO.getItemDesc1())
// .eqIfPresent(IssueRequestDetailDO::getItemDesc2, reqVO.getItemDesc2())
// .eqIfPresent(IssueRequestDetailDO::getProjectCode, reqVO.getProjectCode())
// .eqIfPresent(IssueRequestDetailDO::getQty, reqVO.getQty())
// .eqIfPresent(IssueRequestDetailDO::getUom, reqVO.getUom())
// .betweenIfPresent(IssueRequestDetailDO::getUpdateTime, reqVO.getUpdateTime())
// .eqIfPresent(IssueRequestDetailDO::getUpdater, reqVO.getUpdater())
// .eqIfPresent(IssueRequestDetailDO::getFromOwnerCode, reqVO.getFromOwnerCode())
// .eqIfPresent(IssueRequestDetailDO::getToOwnerCode, reqVO.getToOwnerCode())
// .orderByDesc(IssueRequestDetailDO::getId));
// }
}

5
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/issueRequest/IssueRequestMainMapper.java

@ -10,6 +10,7 @@ import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.issueRequest.vo.IssueRequestMainExportReqVO;
import com.win.module.wms.controller.issueRequest.vo.IssueRequestMainPageReqVO;
import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO;
import com.win.module.wms.dal.dataobject.production.ProductionMainDO;
import org.apache.ibatis.annotations.Mapper;
/**
@ -81,4 +82,8 @@ public interface IssueRequestMainMapper extends BaseMapperX<IssueRequestMainDO>
default IssueRequestMainDO selectWorkShopCodeAndUseOnTheWayLocation(String workshopCode, String useOnTheWayLocation){
return selectOne(IssueRequestMainDO::getWorkshopCode,workshopCode, IssueRequestMainDO::getUseOnTheWayLocation,useOnTheWayLocation);
};
default List<IssueRequestMainDO> selectSeniorList(CustomConditions conditions) {
return selectList(QueryWrapperUtils.structure(conditions));
}
}

12
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestDetailService.java

@ -31,7 +31,7 @@ public interface IssueRequestDetailService {
*
* @param updateReqVO 更新信息
*/
void updateIssueRequestDetail(@Valid IssueRequestDetailUpdateReqVO updateReqVO);
Integer updateIssueRequestDetail(@Valid IssueRequestDetailUpdateReqVO updateReqVO);
/**
* 删除发料申请子
@ -72,12 +72,8 @@ public interface IssueRequestDetailService {
*/
PageResult<IssueRequestDetailDO> getIssueRequestDetailSenior(CustomConditions conditions);
/**
* 获得发料申请子列表, 用于 Excel 导出
*
* @param exportReqVO 查询条件
* @return 发料申请子列表
*/
List<IssueRequestDetailDO> getIssueRequestDetailList(IssueRequestDetailExportReqVO exportReqVO);
// List<IssueRequestDetailDO> getIssueRequestDetailList(IssueRequestDetailExportReqVO exportReqVO);
List<IssueRequestDetailDO> selectList(Long id);
}

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

@ -1,12 +1,29 @@
package com.win.module.wms.service.issueRequest;
import cn.hutool.core.exceptions.UtilException;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.win.framework.common.pojo.CustomConditions;
import com.win.module.wms.controller.issueRequest.vo.IssueRequestDetailCreateReqVO;
import com.win.module.wms.controller.issueRequest.vo.IssueRequestDetailExportReqVO;
import com.win.module.wms.controller.issueRequest.vo.IssueRequestDetailPageReqVO;
import com.win.module.wms.controller.issueRequest.vo.IssueRequestDetailUpdateReqVO;
import com.win.module.system.enums.serialNumber.RuleCodeEnum;
import com.win.module.wms.controller.issueRequest.vo.*;
import com.win.module.wms.controller.rule.vo.RuleRespVO;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
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.productionline.ProductionlineDO;
import com.win.module.wms.dal.dataobject.productionlineitem.ProductionlineitemDO;
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO;
import com.win.module.wms.dal.dataobject.workstation.WorkstationDO;
import com.win.module.wms.service.businesstype.BusinesstypeService;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.productionline.ProductionlineService;
import com.win.module.wms.service.productionlineitem.ProductionlineitemService;
import com.win.module.wms.service.workstation.WorkstationService;
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.*;
@ -28,26 +45,43 @@ import static com.win.module.wms.enums.ErrorCodeConstants.*;
@Service
@Validated
public class IssueRequestDetailServiceImpl implements IssueRequestDetailService {
@Resource
private ProductionlineitemService productionlineitemService;
@Resource
private WorkstationService workstationService;
@Resource
private ProductionlineService productionlineService;
@Resource
private BusinesstypeService businesstypeService;
@Resource
private IssueRequestMainService issueRequestMainService;
@Resource
private JobUtils jobUtils;
@Resource
private ItembasicService itembasicService;
@Resource
private IssueRequestDetailMapper issueRequestDetailMapper;
@Override
@Transactional
public Long createIssueRequestDetail(IssueRequestDetailCreateReqVO createReqVO) {
// 插入
IssueRequestDetailDO issueRequestDetail = IssueRequestDetailConvert.INSTANCE.convert(createReqVO);
validatorDetail(issueRequestDetail);
issueRequestDetailMapper.insert(issueRequestDetail);
// 返回
return issueRequestDetail.getId();
}
@Override
public void updateIssueRequestDetail(IssueRequestDetailUpdateReqVO updateReqVO) {
@Transactional
public Integer updateIssueRequestDetail(IssueRequestDetailUpdateReqVO updateReqVO) {
// 校验存在
validateIssueRequestDetailExists(updateReqVO.getId());
// 更新
IssueRequestDetailDO updateObj = IssueRequestDetailConvert.INSTANCE.convert(updateReqVO);
issueRequestDetailMapper.updateById(updateObj);
validatorDetail(updateObj);
return issueRequestDetailMapper.updateById(updateObj);
}
@Override
@ -82,9 +116,50 @@ public class IssueRequestDetailServiceImpl implements IssueRequestDetailService
public PageResult<IssueRequestDetailDO> getIssueRequestDetailSenior(CustomConditions conditions) {
return issueRequestDetailMapper.selectSenior(conditions);
}
// @Override
// public List<IssueRequestDetailDO> getIssueRequestDetailList(IssueRequestDetailExportReqVO exportReqVO) {
// return issueRequestDetailMapper.selectList(exportReqVO);
// }
@Override
public List<IssueRequestDetailDO> getIssueRequestDetailList(IssueRequestDetailExportReqVO exportReqVO) {
return issueRequestDetailMapper.selectList(exportReqVO);
public List<IssueRequestDetailDO> selectList(Long masterId) {
return issueRequestDetailMapper.selectList(masterId);
}
private void ifUomSuccess(String itemUom, String uom) {
if (!itemUom.equals(uom)) {
throw new UtilException("提示单位" + uom + "错误,应该是" + itemUom);
}
}
//子表校验
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());
// 基础信息
ItembasicDO itembasicDO = itembasicService.selectItembasic(issueRequestDetailDO.getItemCode());
// 基础信息赋值
issueRequestDetailDO.setItemName(itembasicDO.getName());
issueRequestDetailDO.setItemDesc1(itembasicDO.getDesc1());
issueRequestDetailDO.setItemDesc2(itembasicDO.getDesc2());
issueRequestDetailDO.setProjectCode(itembasicDO.getProject());
// 校验 业务类型
jobUtils.ifInType(itembasicDO.getType(), businesstypeDO);
// 检验 计量单位
this.ifUomSuccess(itembasicDO.getUom(), issueRequestDetailDO.getUom());
// 检验 生产线
productionlineService.productionLineCodeExist(issueRequestDetailDO.getProductionLineCode());
// 检验 工位
workstationService.selectWorkstationExist(issueRequestDetailDO.getWorkStationCode(), issueRequestMainDO.getWorkshopCode(), issueRequestDetailDO.getProductionLineCode());
ProductionlineitemDO productionlineitemDO = productionlineitemService.productionLineCodeAndpItemCodeExist(issueRequestDetailDO.getProductionLineCode(), issueRequestDetailDO.getItemCode());
// 赋值 目标库位代码
issueRequestDetailDO.setToLocationCode(productionlineitemDO.getRawLocationCode());
return issueRequestDetailDO;
}
}

20
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainService.java

@ -7,6 +7,7 @@ import com.win.framework.common.pojo.CustomConditions;
import com.win.module.wms.controller.issueRequest.vo.*;
import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.dal.dataobject.production.ProductionMainDO;
/**
* 发料申请主 Service 接口
@ -79,4 +80,23 @@ public interface IssueRequestMainService {
public List<IssueRequestImportErrorVO> importIssueRequestList(List<IssueRequestMainCreateReqVO> datas, Integer mode, boolean updatePart);
/**
* 获得发料申请主列表, 用于 Excel 导出
*
* @param conditions 查询条件
* @return 发料申请列表
*/
List<IssueRequestMainDO> getIssueRequestMainList(CustomConditions conditions);
Integer closeIssueRequestMain(Long id);
Integer reAddIssueRequestMain(Long id);
Integer submitIssueRequestMain(Long id);
Integer refusedIssueRequestMain(Long id);
Integer agreeIssueRequestMain(Long id);
Integer handleIssueRequestMain(Long id);
}

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

@ -4,30 +4,60 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.exceptions.UtilException;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.win.framework.common.exception.ServiceException;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.common.util.validation.ValidationUtils;
import com.win.framework.dict.core.util.DictFrameworkUtils;
import com.win.module.infra.api.trends.TrendsApi;
import com.win.module.infra.enums.TrendsTypeEnum;
import com.win.module.system.api.dict.DictDataApi;
import com.win.module.system.api.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.issueRequest.vo.*;
import com.win.module.wms.controller.purchasereceiptRecord.vo.PurchasereceiptRecordDetailCreateReqVO;
import com.win.module.wms.controller.purchasereceiptRecord.vo.PurchasereceiptRecordMainCreateReqVO;
import com.win.module.wms.controller.rule.vo.RuleRespVO;
import com.win.module.wms.convert.issueRequest.IssueRequestDetailConvert;
import com.win.module.wms.convert.issueRequest.IssueRequestMainConvert;
import com.win.module.wms.convert.purchasereceiptRecord.PurchasereceiptRecordDetailConvert;
import com.win.module.wms.convert.purchasereceiptRecord.PurchasereceiptRecordMainConvert;
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.expectout.ExpectoutDO;
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.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.jobsetting.JobsettingDO;
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.purchasereceiptJob.PurchasereceiptJobDetailDO;
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.requestsetting.RequestsettingDO;
import com.win.module.wms.dal.dataobject.workstation.WorkstationDO;
import com.win.module.wms.dal.mysql.balance.BalanceMapper;
import com.win.module.wms.dal.mysql.expectout.ExpectoutMapper;
import com.win.module.wms.dal.mysql.issueJob.IssueJobDetailMapper;
import com.win.module.wms.dal.mysql.issueJob.IssueJobMainMapper;
import com.win.module.wms.dal.mysql.issueRequest.IssueRequestDetailMapper;
import com.win.module.wms.dal.mysql.issueRequest.IssueRequestMainMapper;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.enums.job.JobStatusEnum;
import com.win.module.wms.enums.job.JobStatusState;
import com.win.module.wms.enums.request.RequestStatusEnum;
import com.win.module.wms.enums.request.RequestStatusState;
import com.win.module.wms.service.balance.BalanceService;
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.jobsetting.JobsettingService;
import com.win.module.wms.service.productionline.ProductionlineService;
import com.win.module.wms.service.productionlineitem.ProductionlineitemService;
import com.win.module.wms.service.requestsetting.RequestsettingService;
@ -35,12 +65,15 @@ import com.win.module.wms.service.rule.RuleService;
import com.win.module.wms.service.workshop.WorkshopService;
import com.win.module.wms.service.workstation.WorkstationService;
import com.win.module.wms.util.JobUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import javax.validation.Validator;
import javax.xml.crypto.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Collection;
@ -58,6 +91,24 @@ import static com.win.module.wms.enums.ErrorCodeConstants.*;
@Validated
public class IssueRequestMainServiceImpl implements IssueRequestMainService {
@Resource
private ExpectoutService expectoutService;
@Resource
private ExpectinService expectinService;
@Resource
private IssueJobDetailMapper issueJobDetailMapper;
@Resource
private JobsettingService jobsettingService;
@Resource
private ExpectoutMapper expectoutMapper;
@Resource
private BalanceMapper balanceMapper;
@Resource
private IssueJobMainMapper issueJobMainMapper;
@Resource
private DictDataApi dictDataApi;
@Resource
private BusinesstypeService businesstypeService;
@Resource
private IssueRequestMainMapper issueRequestMainMapper;
@Resource
@ -86,27 +137,29 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
private TrendsApi trendsApi;
@Override
@Transactional
public Long createIssueRequestMain(IssueRequestMainCreateReqVO createReqVO) {
RequestsettingDO requestsettingDO = new RequestsettingDO();
IssueRequestMainDO issueRequestMainDO = validatorToCreate(createReqVO,requestsettingDO);
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(issueRequestMainDO.getStatus())) {
this.generateJob(issueRequestMainDO, issueRequestDetailMapper.selectList(issueRequestMainDO.getId()));
}
trendsApi.createTrends(requestsettingDO.getId(), "IssueRequest", "增加了发料申请", TrendsTypeEnum.CREATE);
trendsApi.createTrends(issueRequestMainDO.getId(), "IssueRequest", "增加了发料申请", TrendsTypeEnum.CREATE);
return issueRequestMainDO.getId();
}
@Override
@Transactional
public void updateIssueRequestMain(IssueRequestMainUpdateReqVO updateReqVO) {
RequestsettingDO requestsettingDO = new RequestsettingDO();
// 校验存在
validateIssueRequestMainExists(updateReqVO.getId());
IssueRequestMainDO issueRequestMainDO = validatorToUpdate(updateReqVO, requestsettingDO);
if(RequestStatusEnum.HANDLING.getCode().equals(issueRequestMainDO.getStatus())) {
this.generateJob(issueRequestMainDO, issueRequestDetailMapper.selectList(issueRequestMainDO.getId()));
}
trendsApi.createTrends(requestsettingDO.getId(), "IssueRequest", "增加了发料申请", TrendsTypeEnum.CREATE);
trendsApi.createTrends(issueRequestMainDO.getId(), "IssueRequest", "更新了发料申请", TrendsTypeEnum.UPDATE);
}
@Override
@ -117,10 +170,12 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
issueRequestMainMapper.deleteById(id);
}
private void validateIssueRequestMainExists(Long id) {
if (issueRequestMainMapper.selectById(id) == null) {
private IssueRequestMainDO validateIssueRequestMainExists(Long id) {
IssueRequestMainDO issueRequestMainDO = issueRequestMainMapper.selectById(id);
if (issueRequestMainDO == null) {
throw exception(ISSUE_REQUEST_MAIN_NOT_EXISTS);
}
return issueRequestMainDO;
}
private void validateIssueRequestDetailExists(Long id) {
@ -180,9 +235,9 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
if (CollUtil.isEmpty(datas)) {
throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY);
}
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("IssueRequest");
List<IssueRequestImportErrorVO> errorList = new ArrayList<>();
datas.forEach(createReqVO -> {
BusinesstypeDO businesstypeDO = new BusinesstypeDO();
IssueRequestMainDO mainDo = IssueRequestMainConvert.INSTANCE.convert(createReqVO);
String messageMain = validateIssueRequestMainImport(mainDo, businesstypeDO);
List<IssueRequestDetailCreateReqVO> subList = createReqVO.getSubList();
@ -191,7 +246,7 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
boolean flag = true;
for (IssueRequestDetailDO detailDO : subDOList) {
String messageDetail = validateIssueRequestDetailImport(detailDO, mainDo, businesstypeDO);
if (!messageMain.isEmpty() || messageDetail.isEmpty()) {
if (!messageMain.isEmpty() || !messageDetail.isEmpty()) {
IssueRequestImportErrorVO importErrorVO = IssueRequestMainConvert.INSTANCE.convert(createReqVO, detailDO);
importErrorVO.setImportStatus("失败");
messageMain = messageMain + messageDetail;
@ -216,6 +271,11 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
return errorList;
}
@Override
public List<IssueRequestMainDO> getIssueRequestMainList(CustomConditions conditions) {
return issueRequestMainMapper.selectSeniorList(conditions);
}
/**
* 主表校验导入并赋值一些参数
*
@ -268,8 +328,16 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
StringBuilder message = new StringBuilder();
try {
ItembasicDO itembasicDO = this.validatorItembasic(detailDo.getItemCode());
// 赋值物品相关信息
detailDo.setItemName(itembasicDO.getName());
detailDo.setItemDesc1(itembasicDO.getDesc1());
detailDo.setItemDesc2(itembasicDO.getDesc2());
detailDo.setProjectCode(itembasicDO.getProject());
try {
this.validatorIfInType(itembasicDO.getType(), businesstypeDO);
if (!itembasicDO.getUom().equals(detailDo.getUom())) {
message.append("计量单位【").append(dictDataApi.selectDictValue(detailDo.getUom()).getLabel()).append("】错误,应该是【").append(dictDataApi.selectDictValue(itembasicDO.getUom()).getLabel()).append("】").append(",");
}
} catch (Exception ex) {
message.append(ex.getMessage()).append(",");
}
@ -302,7 +370,7 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
if (grounding == null) {
message.append("未查找到该条上架策略");
} else {
JSONObject json = JSONUtil.parseObj(grounding);
JSONObject json = JSONUtil.parseObj(grounding.getConfiguration());
String locationCode = json.get("LocationCode").toString();
try {
this.ifLocationCodeInRule(detailDo.getItemCode(), detailDo.getToLocationCode(), locationCode);
@ -320,7 +388,7 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
//新增方法(主和子)
private IssueRequestMainDO validatorToCreate(IssueRequestMainCreateReqVO createReqVO,RequestsettingDO requestsettingDO) {
BusinesstypeDO businesstypeDO = new BusinesstypeDO();
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("IssueRequest");
IssueRequestMainDO issueRequestMainDO = validateMainMethod(createReqVO,businesstypeDO,requestsettingDO);
//子表校验
List<IssueRequestDetailCreateReqVO> subList = createReqVO.getSubList();
@ -334,23 +402,24 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
for (IssueRequestDetailDO issueRequestDetailDO : subDOList) {
issueRequestDetailDO.setMasterId(issueRequestMainDO.getId());
issueRequestDetailDO.setNumber(issueRequestMainDO.getNumber());
issueRequestDetailDO.setInventoryStatus(businesstypeDO.getOutInventoryStatuses());
}
issueRequestDetailMapper.insertBatch(subDOList);
return issueRequestMainDO;
}
//修改方法(主和子
//修改方法(主)
private IssueRequestMainDO validatorToUpdate(IssueRequestMainUpdateReqVO updateReqVO,RequestsettingDO requestsettingDO) {
BusinesstypeDO businesstypeDO = new BusinesstypeDO();
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("IssueRequest");
IssueRequestMainDO issueRequestMainDO = validateMainMethod(updateReqVO,businesstypeDO,requestsettingDO);
//子表校验
List<IssueRequestDetailUpdateReqVO> subList = updateReqVO.getSubList();
List<IssueRequestDetailDO> subDOList = IssueRequestDetailConvert.INSTANCE.convertList05(subList);
for (IssueRequestDetailDO issueRequestDetailDO : subDOList) {
validateDetailMethod(issueRequestDetailDO,businesstypeDO,issueRequestMainDO);
}
// List<IssueRequestDetailUpdateReqVO> subList = updateReqVO.getSubList();
// List<IssueRequestDetailDO> subDOList = IssueRequestDetailConvert.INSTANCE.convertList05(subList);
// for (IssueRequestDetailDO issueRequestDetailDO : subDOList) {
// validateDetailMethod(issueRequestDetailDO,businesstypeDO,issueRequestMainDO);
// }
issueRequestMainMapper.updateById(issueRequestMainDO);
issueRequestDetailMapper.updateBatch(subDOList);
// issueRequestDetailMapper.updateBatch(subDOList);
return issueRequestMainDO;
}
@ -376,21 +445,25 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
//校验子表公共方法(适用于新增/修改)
private void validateDetailMethod(IssueRequestDetailDO issueRequestDetailDO,BusinesstypeDO businesstypeDO,IssueRequestMainDO issueRequestMainDO) {
ItembasicDO itembasicDO = validatorItembasic(issueRequestDetailDO.getItemCode());
// 基础信息赋值
issueRequestDetailDO.setItemName(itembasicDO.getName());
issueRequestDetailDO.setItemDesc1(itembasicDO.getDesc1());
issueRequestDetailDO.setItemDesc2(itembasicDO.getDesc2());
issueRequestDetailDO.setProjectCode(itembasicDO.getProject());
this.validatorIfInType(itembasicDO.getType(), businesstypeDO);
this.ifUomSuccess(itembasicDO.getUom(), issueRequestDetailDO.getUom());
ProductionlineDO productionlineDO = validatorProductionLineCode(issueRequestDetailDO.getProductionLineCode());
issueRequestDetailDO.setToLocationCode(productionlineDO.getRawLocationCode());
WorkstationDO workstationDO = validatorWorkstation(issueRequestDetailDO.getWorkStationCode(), issueRequestMainDO.getWorkshopCode(), issueRequestDetailDO.getProductionLineCode());
issueRequestDetailDO.setToLocationCode(workstationDO.getRawLocationCode());
this.validatorProductionLineCodeAndpItemCodeExist(issueRequestDetailDO.getProductionLineCode(), issueRequestDetailDO.getItemCode());
RuleRespVO grounding = ruleService.grounding(null, null, null, null, null, null, issueRequestDetailDO.getItemCode(), null, null, null, null, null, null);
if (grounding == null) {
throw exception(555, "未查找到该条上架策略");
} else {
JSONObject json = JSONUtil.parseObj(grounding);
String locationCode = json.get("LocationCode").toString();
this.ifLocationCodeInRule(issueRequestDetailDO.getItemCode(), issueRequestDetailDO.getToLocationCode(), locationCode);
}
validatorProductionLineCode(issueRequestDetailDO.getProductionLineCode());
validatorWorkstation(issueRequestDetailDO.getWorkStationCode(), issueRequestMainDO.getWorkshopCode(), issueRequestDetailDO.getProductionLineCode());
ProductionlineitemDO productionlineitemDO = this.validatorProductionLineCodeAndpItemCodeExist(issueRequestDetailDO.getProductionLineCode(), issueRequestDetailDO.getItemCode());
issueRequestDetailDO.setToLocationCode(productionlineitemDO.getRawLocationCode());
// RuleRespVO grounding = ruleService.grounding(null, null, null, null, null, null, issueRequestDetailDO.getItemCode(), null, null, null, null, null, null);
// if (grounding == null) {
// throw exception(555, "未查找到该条上架策略");
// } else {
// JSONObject json = JSONUtil.parseObj(grounding.getConfiguration());
// String locationCode = json.get("LocationCode").toString();
// this.ifLocationCodeInRule(issueRequestDetailDO.getItemCode(), issueRequestDetailDO.getToLocationCode(), locationCode);
// }
}
private void validatorWorkshop(String workshopCode) {
@ -414,7 +487,359 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
return workstationService.selectWorkstationExist(workStationCode, workshopCode, productionLineCode);
}
private void validatorProductionLineCodeAndpItemCodeExist(String productionLineCode, String itemCode) {
productionlineitemService.productionLineCodeAndpItemCodeExist(productionLineCode, itemCode);
private ProductionlineitemDO validatorProductionLineCodeAndpItemCodeExist(String productionLineCode, String itemCode) {
return productionlineitemService.productionLineCodeAndpItemCodeExist(productionLineCode, itemCode);
}
@Override
@Transactional
public Integer closeIssueRequestMain(Long id) {
IssueRequestMainDO mainDO = validateIssueRequestMainExists(id);
// 校验存在存在下级单据
Long count = issueJobMainMapper.selectByRequestNumber(mainDO.getNumber());
if(count > 0) {
throw new ServiceException(ISSUE_REQUEST_JOB_EXISTS);
}
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.close();
if(!flag) {
throw new ServiceException(ISSUE_REQUEST_MAIN_CANNOT_CLOSE);
}
mainDO.setStatus(requestStatusState.getState().getCode());
//增加操作记录
trendsApi.createTrends(id, "issueRequest", "关闭了发料申请", TrendsTypeEnum.UPDATE);
return issueRequestMainMapper.updateById(mainDO);
}
@Override
@Transactional
public Integer reAddIssueRequestMain(Long id) {
IssueRequestMainDO mainDO = validateIssueRequestMainExists(id);
// 校验存在存在下级单据
Long count = issueJobMainMapper.selectByRequestNumber(mainDO.getNumber());
if(count > 0) {
throw new ServiceException(ISSUE_REQUEST_JOB_EXISTS);
}
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.reAdd();
if(!flag) {
throw new ServiceException(ISSUE_REQUEST_MAIN_CANNOT_READD);
}
mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录
trendsApi.createTrends(id, "issueRequest", "打开了发料申请", TrendsTypeEnum.UPDATE);
return issueRequestMainMapper.updateById(mainDO);
}
@Override
@Transactional
public Integer submitIssueRequestMain(Long id) {
IssueRequestMainDO mainDO = validateIssueRequestMainExists(id);
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.submit(mainDO.getAutoAgree(), mainDO.getAutoExecute());
if(!flag) {
throw new ServiceException(ISSUE_REQUEST_MAIN_CANNOT_SUBMIT);
}
mainDO.setStatus(requestStatusState.getState().getCode());
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) {
this.generateJob(mainDO, issueRequestDetailMapper.selectList(mainDO.getId()));
}
trendsApi.createTrends(id, "issueRequest", "提交了发料申请", TrendsTypeEnum.UPDATE);
return issueRequestMainMapper.updateById(mainDO);
}
@Override
@Transactional
public Integer refusedIssueRequestMain(Long id) {
// 校验存在
IssueRequestMainDO mainDO = validateIssueRequestMainExists(id);
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.refused();
if(!flag) {
throw new ServiceException(ISSUE_REQUEST_MAIN_CANNOT_REFUSED);
}
mainDO.setStatus(requestStatusState.getState().getCode());
trendsApi.createTrends(id, "issueRequest", "驳回了采购发料申请", TrendsTypeEnum.UPDATE);
return issueRequestMainMapper.updateById(mainDO);
}
@Override
@Transactional
public Integer agreeIssueRequestMain(Long id) {
// 校验存在
IssueRequestMainDO mainDO = validateIssueRequestMainExists(id);
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.agree(mainDO.getAutoExecute());
if(!flag) {
throw new ServiceException(ISSUE_REQUEST_MAIN_CANNOT_AGREE);
}
mainDO.setStatus(requestStatusState.getState().getCode());
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) {
this.generateJob(mainDO, issueRequestDetailMapper.selectList(mainDO.getId()));
}
trendsApi.createTrends(id, "issueRequest", "审批通过了发料申请", TrendsTypeEnum.UPDATE);
return issueRequestMainMapper.updateById(mainDO);
}
@Override
@Transactional
public Integer handleIssueRequestMain(Long id) {
// 校验存在
IssueRequestMainDO mainDO = validateIssueRequestMainExists(id);
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.handle();
if(!flag) {
throw new ServiceException(ISSUE_REQUEST_MAIN_CANNOT_HANDLE);
}
mainDO.setStatus(requestStatusState.getState().getCode());
//调用执行方法
this.generateJob(mainDO, issueRequestDetailMapper.selectList(mainDO.getId()));
trendsApi.createTrends(id, "issueRequest", "执行了发料申请", TrendsTypeEnum.UPDATE);
return issueRequestMainMapper.updateById(mainDO);
}
/**
* 创建任务 OR 创建记录
* @param mainDO
* @param detailDO
*/
private void generateJob (IssueRequestMainDO mainDO, List<IssueRequestDetailDO> detailDO) {
//跳过任务直接生成记录
if("TRUE".equals(mainDO.getDirectCreateRecord())) {
// 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;
}
// 任务主表信息
IssueJobMainDO issueJobMainDO = new IssueJobMainDO();
issueJobMainDO.setRequestNumber(mainDO.getNumber());
issueJobMainDO.setWorkShopCode(mainDO.getWorkshopCode());
issueJobMainDO.setUseOnTheWayLocation(mainDO.getUseOnTheWayLocation());
issueJobMainDO.setFromWarehouseCode(mainDO.getFromWarehouseCode());
issueJobMainDO.setToWarehouseCode(mainDO.getToWarehouseCode());
issueJobMainDO.setRequestTime(mainDO.getRequestTime());
issueJobMainDO.setRequestDueTime(mainDO.getDueTime());
issueJobMainDO.setStatus(JobStatusEnum.PENDING.getCode());
issueJobMainDO.setDepartmentCode(mainDO.getDepartmentCode());
issueJobMainDO.setFromLocationTypes(mainDO.getFromLocationTypes());
issueJobMainDO.setToLocationTypes(mainDO.getToLocationTypes());
String number = serialNumberApi.generateCode(RuleCodeEnum.ISSUE_JOB.getCode());
issueJobMainDO.setNumber(number);
issueJobMainDO.setBusinessType(mainDO.getBusinessType());
issueJobMainDO.setCreateTime(LocalDateTime.now());
issueJobMainDO.setFromAreaCodes(mainDO.getFromAreaCodes());
issueJobMainDO.setToAreaCodes(mainDO.getToAreaCodes());
issueJobMainDO.setId(null);
// 获取任务单据设置
JobsettingDO jobsettingDO = jobsettingService.selectJobsettingExist("IssueJob");
issueJobMainDO.setAutoComplete(jobsettingDO.getAutoComplete());
issueJobMainDO.setAllowModifyLocation(jobsettingDO.getAllowModifyLocation());
issueJobMainDO.setAllowModifyQty(jobsettingDO.getAllowModifyQty());
issueJobMainDO.setAllowBiggerQty(jobsettingDO.getAllowBiggerQty());
issueJobMainDO.setAllowSmallerQty(jobsettingDO.getAllowSmallerQty());
issueJobMainDO.setAllowModifyInventoryStatus(jobsettingDO.getAllowModifyInventoryStatus());
issueJobMainDO.setAllowContinuousScanning(jobsettingDO.getAllowContinuousScanning());
issueJobMainDO.setAllowPartialComplete(jobsettingDO.getAllowPartialComplete());
issueJobMainDO.setAllowModifyPackingNumber(jobsettingDO.getAllowModifyPackingNumber());
issueJobMainDO.setAllowModifyBatch(jobsettingDO.getAllowModifyBach());
issueJobMainMapper.insert(issueJobMainDO);
List<IssueJobDetailDO> issueJobDetailDOList = new ArrayList<>();
List<ExpectinCreateReqVO> expectinCreateReqVOList = new ArrayList<>();
List<ExpectoutCreateReqVO> expectoutCreateReqVOList = new ArrayList<>();
// 根据发料申请子表数据进行分析
detailDO.forEach(item -> {
// 批次策略
RuleRespVO ruleRespVOBatch = ruleService.batch(null, null,null,null,null,item.getProjectCode(),item.getItemCode());
JSONObject jsonObjectBatch = JSONUtil.parseObj(ruleRespVOBatch.getConfiguration());
// 下架策略
RuleRespVO ruleRespVOOffShelf = ruleService.offShelf(null,null,null,null,null,item.getProjectCode(),item.getItemCode(),null,null,null);
JSONObject jsonObjectOffShelf = JSONUtil.parseObj(ruleRespVOOffShelf.getConfiguration());
// 查询库存余额
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.select("item_code", "batch", "SUM(qty) as qty", "packing_number", "container_number", "warehouse_code", "area_code", "location_group_code", "location_code", "produce_date", "arrive_date");
queryWrapper.eq("item_code", item.getItemCode());
queryWrapper.eq("inventory_status", item.getInventoryStatus());
// 根据下架策略 作为查询库存余额条件
// 仓库
if (jsonObjectOffShelf.get("WarehouseCode") != null && !jsonObjectOffShelf.get("WarehouseCode").equals("")) {
queryWrapper.eq("warehouse_code", jsonObjectOffShelf.get("WarehouseCode"));
}
// 库区
if (jsonObjectOffShelf.get("AreaCode") != null && !jsonObjectOffShelf.get("AreaCode").equals("")) {
queryWrapper.eq("area_code", jsonObjectOffShelf.get("AreaCode"));
}
// 库位组
if (jsonObjectOffShelf.get("LocationGroupCode") != null && !jsonObjectOffShelf.get("LocationGroupCode").equals("")) {
queryWrapper.eq("location_group_code", jsonObjectOffShelf.get("LocationGroupCode"));
}
// 库位
if (jsonObjectOffShelf.get("LocationCode") != null && !jsonObjectOffShelf.get("LocationCode").equals("")) {
queryWrapper.eq("location_code", jsonObjectOffShelf.get("LocationCode"));
}
// 根据下架策略 作为查询库存余额分组
// 发料包装类型——按 包装
if (jsonObjectOffShelf.get("IssueStorageType") != null && jsonObjectOffShelf.get("IssueStorageType").equals("1")) {
queryWrapper.groupBy("packing_number");
}
// 发料包装类型——按 容器
if (jsonObjectOffShelf.get("IssueStorageType") != null && jsonObjectOffShelf.get("IssueStorageType").equals("2")) {
queryWrapper.groupBy("container_number");
}
// 发料包装类型——按 单件
if (jsonObjectOffShelf.get("IssueStorageType") != null && jsonObjectOffShelf.get("IssueStorageType").equals("3")) {
queryWrapper.groupBy("item_code", "batch", "qty", "packing_number", "container_number", "warehouse_code", "area_code", "location_group_code", "location_code", "expire_date", "produce_date", "arrive_date");
}
// 根据批次策略 作为查询库存余额排序
// 批次类型——按 生产时间
if (jsonObjectBatch.get("BatchType") != null && jsonObjectBatch.get("BatchType").equals("0")) {
// ASC = 0,正向
if (jsonObjectBatch.get("BatchDirection") != null && jsonObjectBatch.get("BatchDirection").equals("0")) {
queryWrapper.orderByAsc("produce_date");
}
// DESC = 1,逆向
if (jsonObjectBatch.get("BatchDirection") != null && jsonObjectBatch.get("BatchDirection").equals("1")) {
queryWrapper.orderByDesc("produce_date");
}
}
// 批次类型——按 到货时间
if (jsonObjectBatch.get("BatchType") != null && jsonObjectBatch.get("BatchType").equals("1")) {
// ASC = 0,正向
if (jsonObjectBatch.get("BatchDirection") != null && jsonObjectBatch.get("BatchDirection").equals("0")) {
queryWrapper.orderByAsc("arrive_date");
}
// DESC = 1,逆向
if (jsonObjectBatch.get("BatchDirection") != null && jsonObjectBatch.get("BatchDirection").equals("1")) {
queryWrapper.orderByDesc("arrive_date");
}
}
// 批次类型——按 失效时间
if (jsonObjectBatch.get("BatchType") != null && jsonObjectBatch.get("BatchType").equals("2")) {
// ASC = 0,正向
if (jsonObjectBatch.get("BatchDirection") != null && jsonObjectBatch.get("BatchDirection").equals("0")) {
queryWrapper.orderByAsc("expire_date");
}
// DESC = 1,逆向
if (jsonObjectBatch.get("BatchDirection") != null && jsonObjectBatch.get("BatchDirection").equals("1")) {
queryWrapper.orderByDesc("expire_date");
}
}
// 批次类型——按 供应商批次
if (jsonObjectBatch.get("BatchType") != null && jsonObjectBatch.get("BatchType").equals("3")) {
// TODO: 供应商批次 ??? 不知道怎么搞了
}
// 批次类型——按 供应商优先级
if (jsonObjectBatch.get("BatchType") != null && jsonObjectBatch.get("BatchType").equals("4")) {
// TODO: 供应商优先级 ??? 不知道怎么搞了
}
// 批次类型——按 其它批次
if (jsonObjectBatch.get("BatchType") != null && jsonObjectBatch.get("BatchType").equals("5")) {
// ASC = 0,正向
if (jsonObjectBatch.get("BatchDirection") != null && jsonObjectBatch.get("BatchDirection").equals("0")) {
queryWrapper.orderByAsc("batch");
}
// DESC = 1,逆向
if (jsonObjectBatch.get("BatchDirection") != null && jsonObjectBatch.get("BatchDirection").equals("1")) {
queryWrapper.orderByDesc("batch");
}
}
// 数量排序方向 正向
if (jsonObjectOffShelf.get("QtyOrderDirection") != null && jsonObjectOffShelf.get("QtyOrderDirection").equals("ASC")) {
queryWrapper.orderByAsc("qty");
}
// 数量排序方向 逆向
if (jsonObjectOffShelf.get("QtyOrderDirection") != null && jsonObjectOffShelf.get("QtyOrderDirection").equals("DESC")) {
queryWrapper.orderByDesc("qty");
}
// 任务子表数据
List<BalanceDO> balanceDOListJob = new ArrayList<>();
List<BalanceDO> balanceDOList = balanceMapper.selectList(queryWrapper);
BigDecimal countQty = new BigDecimal(0.000000);
for (BalanceDO balanceDO: balanceDOList) {
// 查询 预计出 求和 数量
// TODO: 后续完善 根据 管理精度查询
QueryWrapper queryWrapperExpectout = new QueryWrapper();
queryWrapperExpectout.select("SUM(qty) as qty");
queryWrapperExpectout.eq("item_code", balanceDO.getItemCode());
if (balanceDO.getPackingNumber() != null && !balanceDO.getPackingNumber().equals("")) queryWrapperExpectout.eq("packing_number", balanceDO.getPackingNumber());
if (balanceDO.getBatch() != null && !balanceDO.getBatch().equals("")) queryWrapperExpectout.eq("batch", balanceDO.getBatch());
queryWrapperExpectout.groupBy("item_code","packing_number", "batch");
ExpectoutDO expectoutDO = expectoutMapper.selectOne(queryWrapperExpectout);
BigDecimal countQtyExpectout = new BigDecimal(0.000000);
if (expectoutDO != null) {
countQtyExpectout = expectoutDO.getQty();
}
// balanceDO.getQty().subtract(countQtyExpectout) 扣减预计出数量
countQty = countQty.add(balanceDO.getQty().subtract(countQtyExpectout));
balanceDOListJob.add(balanceDO);
// 数据列表循环累加 直到总和大于等于当前物品的qty {countQty >= balanceDO.getQty()}
if (countQty.compareTo(item.getQty()) != -1) {
break;
}
}
// 根据 查询出所需数据 解析成 任务子表数据
balanceDOListJob.forEach(balanceDOItem -> {
IssueJobDetailDO issueJobDetailDO = new IssueJobDetailDO();
issueJobDetailDO.setId(null);
issueJobDetailDO.setProductionLineCode(item.getProductionLineCode());
issueJobDetailDO.setWorkStationCode(item.getWorkStationCode());
issueJobDetailDO.setOnTheWayLocationCode(issueJobDetailDO.getOnTheWayLocationCode());
issueJobDetailDO.setPackingNumber(balanceDOItem.getPackingNumber());
issueJobDetailDO.setContainerNumber(balanceDOItem.getContainerNumber());
issueJobDetailDO.setBatch(balanceDOItem.getBatch());
issueJobDetailDO.setFromLocationCode(balanceDOItem.getLocationCode());
issueJobDetailDO.setToLocationCode(item.getToLocationCode());
issueJobDetailDO.setItemCode(item.getItemCode());
issueJobDetailDO.setItemName(item.getItemName());
issueJobDetailDO.setItemDesc1(item.getItemDesc1());
issueJobDetailDO.setItemDesc2(item.getItemDesc2());
issueJobDetailDO.setProjectCode(item.getProjectCode());
issueJobDetailDO.setQty(balanceDOItem.getQty());
issueJobDetailDO.setUom(item.getUom());
issueJobDetailDO.setToOwnerCode(item.getToOwnerCode());
issueJobDetailDO.setFromOwnerCode(item.getFromOwnerCode());
issueJobDetailDO.setNumber(issueJobMainDO.getNumber());
issueJobDetailDO.setMasterId(issueJobMainDO.getId());
issueJobDetailDO.setInventoryStatus(item.getInventoryStatus());
issueJobDetailDOList.add(issueJobDetailDO);
//预计入
ExpectinCreateReqVO expectinCreateReqVO = new ExpectinCreateReqVO();
BeanUtils.copyProperties(issueJobDetailDO, expectinCreateReqVO);
expectinCreateReqVO.setJobNumber(number);
expectinCreateReqVO.setBusinessType(issueJobMainDO.getBusinessType());
expectinCreateReqVO.setLocationCode(issueJobDetailDO.getFromLocationCode());
expectinCreateReqVO.setOwnerCode(issueJobDetailDO.getFromOwnerCode());
expectinCreateReqVOList.add(expectinCreateReqVO);
//预计出
ExpectoutCreateReqVO expectoutCreateReqVO = new ExpectoutCreateReqVO();
BeanUtils.copyProperties(issueJobDetailDO, expectoutCreateReqVO);
expectoutCreateReqVO.setJobNumber(number);
expectoutCreateReqVO.setBusinessType(issueJobMainDO.getBusinessType());
expectoutCreateReqVO.setLocationCode(issueJobDetailDO.getFromLocationCode());
expectoutCreateReqVO.setOwnerCode(issueJobDetailDO.getFromOwnerCode());
expectoutCreateReqVOList.add(expectoutCreateReqVO);
});
});
issueJobDetailMapper.insertBatch(issueJobDetailDOList);
//增加预计入
expectinService.createExpectin(expectinCreateReqVOList);
//增加预计出
expectoutService.createExpectout(expectoutCreateReqVOList);
trendsApi.createTrends(issueJobMainDO.getId(), "issueJob", "发料申请生成发料任务", TrendsTypeEnum.CREATE);
}
}

Loading…
Cancel
Save