From 4c0acd9910a4181548f3baa890f72e3714fd22e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=96=AA=E5=90=8D?= <942005050@qq.com> Date: Fri, 24 Nov 2023 08:37:51 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E6=94=B6=E6=96=99=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProductionreceiptJobMainController.java | 119 +++++++-- .../ProductionreceiptJobDetailPageReqVO.java | 3 + ...ProductionreceiptJobDetailUpdateReqVO.java | 21 ++ .../vo/ProductionreceiptJobMainExcelVO.java | 110 +++++++-- .../ProductionreceiptJobMainUpdateReqVO.java | 7 +- .../ProductionreceiptJobMainConvert.java | 12 + .../ProductionreceiptRecordDetailDO.java | 2 +- .../ProductionreceiptJobDetailMapper.java | 8 + .../ProductionreceiptJobMainMapper.java | 5 + .../ProductionreceiptJobDetailService.java | 2 + ...ProductionreceiptJobDetailServiceImpl.java | 5 + .../ProductionreceiptJobMainService.java | 11 + .../ProductionreceiptJobMainServiceImpl.java | 230 +++++++++++++++++- 13 files changed, 479 insertions(+), 56 deletions(-) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreceiptJob/ProductionreceiptJobMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreceiptJob/ProductionreceiptJobMainController.java index 4474eab6..d7c8d7cb 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreceiptJob/ProductionreceiptJobMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreceiptJob/ProductionreceiptJobMainController.java @@ -3,6 +3,7 @@ package com.win.module.wms.controller.productionreceiptJob; import com.win.framework.common.pojo.CommonResult; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; +import com.win.framework.dict.core.util.DictFrameworkUtils; import com.win.framework.excel.core.util.ExcelUtils; import com.win.framework.operatelog.core.annotations.OperateLog; import com.win.module.system.api.user.AdminUserApi; @@ -12,6 +13,7 @@ import com.win.module.wms.convert.productionreceiptJob.ProductionreceiptJobDetai import com.win.module.wms.convert.productionreceiptJob.ProductionreceiptJobMainConvert; import com.win.module.wms.dal.dataobject.productionreceiptJob.ProductionreceiptJobDetailDO; import com.win.module.wms.dal.dataobject.productionreceiptJob.ProductionreceiptJobMainDO; +import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.service.productionreceiptJob.ProductionreceiptJobDetailService; import com.win.module.wms.service.productionreceiptJob.ProductionreceiptJobMainService; import io.swagger.v3.oas.annotations.Operation; @@ -26,10 +28,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Map; +import java.util.*; import static com.win.framework.common.pojo.CommonResult.success; import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @@ -98,23 +97,6 @@ public class ProductionreceiptJobMainController { return success(ProductionreceiptJobMainConvert.INSTANCE.convertPage(pageResult)); } - @GetMapping("/export-excel") - @Operation(summary = "导出生产收料任务主 Excel") - @PreAuthorize("@ss.hasPermission('wms:productionreceipt-job-main:export')") - @OperateLog(type = EXPORT) - public void exportProductionreceiptJobMainExcel(@Valid ProductionreceiptJobMainExportReqVO exportReqVO, - HttpServletResponse response) throws IOException { - List list = productionreceiptJobMainService.getProductionreceiptJobMainList(exportReqVO); - // 导出 Excel - List datas = ProductionreceiptJobMainConvert.INSTANCE.convertList02(list); - for(ProductionreceiptJobMainExcelVO vo : datas) { - AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator())); - //后端创建个字段作为前端展示的虚拟字段 - vo.setCreator(user.getNickname()); - } - ExcelUtils.write(response, "生产收料任务主.xls", "数据", ProductionreceiptJobMainExcelVO.class, datas); - } - @PostMapping("/senior") @Operation(summary = "高级搜索获得生产收料任务主分页") @PreAuthorize("@ss.hasPermission('wms:productionreceipt-job-main:query')") @@ -129,6 +111,70 @@ public class ProductionreceiptJobMainController { return success(result); } + @GetMapping("/export-excel") + @Operation(summary = "导出生产收料任务主 Excel") + @PreAuthorize("@ss.hasPermission('wms:productionreceipt-job-main:export')") + @OperateLog(type = EXPORT) + public void exportProductionreceiptJobMainExcel(@Valid ProductionreceiptJobMainExportReqVO exportReqVO, + HttpServletResponse response) throws IOException { + List list = productionreceiptJobMainService.getProductionreceiptJobMainList(exportReqVO); + //组装vo + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + // 导出 Excel + ExcelUtils.write(response, "生产收料任务.xlsx", "生产收料任务", ProductionreceiptJobMainExcelVO.class, resultList, mapDropDown); + } + + @PostMapping("/export-excel-senior") + @Operation(summary = "导出生产收料任务 Excel") + @PreAuthorize("@ss.hasPermission('wms:productionreceipt-job-main:export')") + @OperateLog(type = EXPORT) + public void exportProductionreceiptJobMainSeniorExcel(@Valid @RequestBody CustomConditions conditions, HttpServletResponse response) throws IOException { + List list = productionreceiptJobMainService.getProductionreceiptJobMainList(conditions); + //组装vo + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + // 导出 Excel + ExcelUtils.write(response, "生产收料任务.xlsx", "生产收料任务", ProductionreceiptJobMainExcelVO.class, resultList, mapDropDown); + } + + private List getExcelVo(List list, Map mapDropDown) { + String[] locationType = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.LOCATION_TYPE); + mapDropDown.put(17, locationType); + mapDropDown.put(18, locationType); + String[] areaType = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.AREA_TYPE); + mapDropDown.put(24, areaType); + mapDropDown.put(25, areaType); + String[] trueFalse = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE); + mapDropDown.put(26, trueFalse); + mapDropDown.put(27, trueFalse); + mapDropDown.put(28, trueFalse); + mapDropDown.put(29, trueFalse); + mapDropDown.put(30, trueFalse); + mapDropDown.put(31, trueFalse); + mapDropDown.put(32, trueFalse); + mapDropDown.put(33, trueFalse); + mapDropDown.put(34, trueFalse); + mapDropDown.put(35, trueFalse); + mapDropDown.put(36, trueFalse); + String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS); + mapDropDown.put(43, inventoryStatus); + String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); + mapDropDown.put(52, uom); + List resultList = new ArrayList<>(); + // 导出 + for(ProductionreceiptJobMainDO mainDO : list) { + List subList = productionreceiptJobDetailService.selectList(mainDO.getId()); + for(ProductionreceiptJobDetailDO detailDO : subList) { + ProductionreceiptJobMainExcelVO vo = ProductionreceiptJobMainConvert.INSTANCE.convert(mainDO, detailDO); + AdminUserRespDTO user = userApi.getUser(Long.valueOf(mainDO.getCreator())); + vo.setCreator(user.getNickname()); + resultList.add(vo); + } + } + return resultList; + } + @GetMapping("/getProductionreceiptJobById") @Operation(summary = "APP获得生产收料主子表明细列表") @Parameter(name = "id", description = "编号", required = true, example = "1024") @@ -162,4 +208,35 @@ public class ProductionreceiptJobMainController { return success(countByStatus); } + @GetMapping(value = "/accept") + @Operation(summary = "承接任务") + @PreAuthorize("@ss.hasPermission('wms:productionreceipt-job-main:accept')") + public CommonResult acceptProductionreceiptJobMain(@RequestParam("id") Long id) { + int result = productionreceiptJobMainService.acceptProductionreceiptJobMain(id); + return success(result > 0); + } + + @GetMapping(value = "/abandon") + @Operation(summary = "放弃任务") + @PreAuthorize("@ss.hasPermission('wms:productionreceipt-job-main:abandon')") + public CommonResult abandonProductionreceiptJobMain(@RequestParam("id") Long id) { + int result = productionreceiptJobMainService.abandonProductionreceiptJobMain(id); + return success(result > 0); + } + + @GetMapping(value = "/close") + @Operation(summary = "关闭任务") + @PreAuthorize("@ss.hasPermission('wms:productionreceipt-job-main:close')") + public CommonResult closeProductionreceiptJobMain(@RequestParam("id") Long id) { + int result = productionreceiptJobMainService.closeProductionreceiptJobMain(id); + return success(result > 0); + } + + @PutMapping("/execute") + @Operation(summary = "执行任务") + @PreAuthorize("@ss.hasPermission('wms:productionreceipt-job-main:execute')") + public CommonResult executeProductionreceiptJobMain(@Valid @RequestBody ProductionreceiptJobMainUpdateReqVO updateReqVO) { + Integer count = productionreceiptJobMainService.executeProductionreceiptJobMain(updateReqVO); + return success(count > 0); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreceiptJob/vo/ProductionreceiptJobDetailPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreceiptJob/vo/ProductionreceiptJobDetailPageReqVO.java index 79371a38..50272c67 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreceiptJob/vo/ProductionreceiptJobDetailPageReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreceiptJob/vo/ProductionreceiptJobDetailPageReqVO.java @@ -84,4 +84,7 @@ public class ProductionreceiptJobDetailPageReqVO extends PageParam { @Schema(description = "到货主代码") private String toOwnerCode; + @Schema(description = "主表ID") + private String masterId; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreceiptJob/vo/ProductionreceiptJobDetailUpdateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreceiptJob/vo/ProductionreceiptJobDetailUpdateReqVO.java index eb8c5096..ef25de46 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreceiptJob/vo/ProductionreceiptJobDetailUpdateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreceiptJob/vo/ProductionreceiptJobDetailUpdateReqVO.java @@ -3,10 +3,31 @@ package com.win.module.wms.controller.productionreceiptJob.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; +import javax.validation.Valid; +import java.math.BigDecimal; +import java.util.List; + @Schema(description = "管理后台 - 生产收料任务子更新 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class ProductionreceiptJobDetailUpdateReqVO extends ProductionreceiptJobDetailBaseVO { + @Schema(description = "实际收货数量") + private BigDecimal handleQty; + + @Schema(description = "到包装") + private String toPackingNumber; + + @Schema(description = "到器具") + private String toContainerNumber; + + @Schema(description = "到批次") + private String toBatch; + + @Schema(description = "到库存状态") + private String toInventoryStatus; + + @Schema(description = "到库位") + private String toLocationCode; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreceiptJob/vo/ProductionreceiptJobMainExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreceiptJob/vo/ProductionreceiptJobMainExcelVO.java index 1f7ebfd4..b6b7dba0 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreceiptJob/vo/ProductionreceiptJobMainExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreceiptJob/vo/ProductionreceiptJobMainExcelVO.java @@ -1,5 +1,7 @@ package com.win.module.wms.controller.productionreceiptJob.vo; +import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.enums.job.JobStatusConverter; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -42,8 +44,7 @@ public class ProductionreceiptJobMainExcelVO { @ExcelProperty("要求截止时间") private LocalDateTime requestDueTime; - @ExcelProperty(value = "状态", converter = DictConvert.class) - @DictFormat("job_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + @ExcelProperty(value = "状态", converter = JobStatusConverter.class) private String status; @ExcelProperty("过期时间") @@ -55,10 +56,6 @@ public class ProductionreceiptJobMainExcelVO { @ExcelProperty("最后更新者Id") private String updater; - @ExcelProperty(value = "状态", converter = DictConvert.class) - @DictFormat("job_stage_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 - private String jobStageStatus; - @ExcelProperty("优先级") private Integer priority; @@ -81,11 +78,11 @@ public class ProductionreceiptJobMainExcelVO { private LocalDateTime completeTime; @ExcelProperty(value = "从库位类型范围", converter = DictConvert.class) - @DictFormat("location_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + @DictFormat(DictTypeConstants.LOCATION_TYPE) private String fromLocationTypes; @ExcelProperty(value = "到库位类型范围", converter = DictConvert.class) - @DictFormat("location_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + @DictFormat(DictTypeConstants.LOCATION_TYPE) private String toLocationTypes; @ExcelProperty("单据号") @@ -103,43 +100,112 @@ public class ProductionreceiptJobMainExcelVO { @ExcelProperty("创建者id") private String creator; - @ExcelProperty("从库区代码范围") + @ExcelProperty(value = "从库区代码范围", converter = DictConvert.class) + @DictFormat(DictTypeConstants.AREA_TYPE) private String fromAreaCodes; - @ExcelProperty("到库区代码范围") + @ExcelProperty(value = "到库区代码范围", converter = DictConvert.class) + @DictFormat(DictTypeConstants.AREA_TYPE) private String toAreaCodes; - @ExcelProperty("使用在途库") + @ExcelProperty(value = "使用在途库", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) private String useOnTheWayLocation; - @ExcelProperty("自动完成") + @ExcelProperty(value = "自动完成", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) private String autoComplete; - @ExcelProperty("允许修改库位") + @ExcelProperty(value = "允许修改库位", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) private String allowModifyLocation; - @ExcelProperty("允许修改数量") + @ExcelProperty(value = "允许修改数量", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) private String allowModifyQty; - @ExcelProperty("允许大于推荐数量") + @ExcelProperty(value = "允许大于推荐数量", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) private String allowBiggerQty; - @ExcelProperty("允许小于推荐数量") + @ExcelProperty(value = "允许小于推荐数量", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) private String allowSmallerQty; - @ExcelProperty("允许修改库存状态") + @ExcelProperty(value = "允许修改库存状态", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) private String allowModifyInventoryStatus; - @ExcelProperty("允许连续扫描") + @ExcelProperty(value = "允许连续扫描", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) private String allowContinuousScanning; - @ExcelProperty("允许部分完成") + @ExcelProperty(value = "允许部分完成", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) private String allowPartialComplete; - @ExcelProperty("允许修改批次") + @ExcelProperty(value = "允许修改箱码", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) + private String allowModifyPackingNumber; + + @ExcelProperty(value = "允许修改批次", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) private String allowModifyBatch; - @ExcelProperty("允许修改箱码") - private String allowModifyPackingNumber; + @ExcelProperty("生产线代码") + private String productionLineCode; + + @ExcelProperty("工位代码") + private String workStationCode; + + @ExcelProperty("在途库库位") + private String onTheWayLocationCode; + + @ExcelProperty("包装号") + private String packingNumber; + + @ExcelProperty("器具号") + private String containerNumber; + + @ExcelProperty("批次") + private String batch; + + @ExcelProperty(value = "库存状态", converter = DictConvert.class) + @DictFormat(DictTypeConstants.INVENTORY_STATUS) + private String inventoryStatus; + + @ExcelProperty("从库位代码") + private String fromLocationCode; + + @ExcelProperty("到库位代码") + private String toLocationCode; + + @ExcelProperty("物品代码") + private String itemCode; + + @ExcelProperty("物品名称") + private String itemName; + + @ExcelProperty("物品描述1") + private String itemDesc1; + + @ExcelProperty("物品描述2") + private String itemDesc2; + + @ExcelProperty("项目代码") + private String projectCode; + + @ExcelProperty("数量") + private String qty; + + @ExcelProperty(value = "计量单位", converter = DictConvert.class) + @DictFormat(DictTypeConstants.UOM) + private String uom; + + @ExcelProperty("从货主代码") + private String fromOwnerCode; + + @ExcelProperty("到货主代码") + private String toOwnerCode; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreceiptJob/vo/ProductionreceiptJobMainUpdateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreceiptJob/vo/ProductionreceiptJobMainUpdateReqVO.java index f31faf34..fe2f7d7e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreceiptJob/vo/ProductionreceiptJobMainUpdateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreceiptJob/vo/ProductionreceiptJobMainUpdateReqVO.java @@ -1,12 +1,17 @@ package com.win.module.wms.controller.productionreceiptJob.vo; +import com.win.module.wms.controller.issueJob.vo.IssueJobDetailUpdateReqVO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; +import javax.validation.Valid; +import java.util.List; + @Schema(description = "管理后台 - 生产收料任务主更新 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class ProductionreceiptJobMainUpdateReqVO extends ProductionreceiptJobMainBaseVO { - + @Schema(description = "子表数据") + private List<@Valid ProductionreceiptJobDetailUpdateReqVO> subList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionreceiptJob/ProductionreceiptJobMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionreceiptJob/ProductionreceiptJobMainConvert.java index 87bef449..261cbbe4 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionreceiptJob/ProductionreceiptJobMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionreceiptJob/ProductionreceiptJobMainConvert.java @@ -8,7 +8,10 @@ import com.win.module.wms.controller.productionreceiptJob.vo.ProductionreceiptJo import com.win.module.wms.controller.productionreceiptJob.vo.ProductionreceiptJobMainExcelVO; import com.win.module.wms.controller.productionreceiptJob.vo.ProductionreceiptJobMainRespVO; import com.win.module.wms.controller.productionreceiptJob.vo.ProductionreceiptJobMainUpdateReqVO; +import com.win.module.wms.dal.dataobject.productionreceiptJob.ProductionreceiptJobDetailDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.productionreceiptJob.ProductionreceiptJobMainDO; @@ -34,4 +37,13 @@ public interface ProductionreceiptJobMainConvert { List convertList02(List list); + @Mappings({ + @Mapping(source = "mainDO.number", target = "number"), + @Mapping(source = "mainDO.remark", target = "remark"), + @Mapping(source = "mainDO.createTime", target = "createTime"), + @Mapping(source = "mainDO.creator", target = "creator"), + @Mapping(source = "mainDO.updateTime", target = "updateTime"), + @Mapping(source = "mainDO.updater", target = "updater"), + }) + ProductionreceiptJobMainExcelVO convert(ProductionreceiptJobMainDO mainDO, ProductionreceiptJobDetailDO detailDO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productionreceiptRecord/ProductionreceiptRecordDetailDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productionreceiptRecord/ProductionreceiptRecordDetailDO.java index fe0740ae..8e5ee5e2 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productionreceiptRecord/ProductionreceiptRecordDetailDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productionreceiptRecord/ProductionreceiptRecordDetailDO.java @@ -87,7 +87,7 @@ public class ProductionreceiptRecordDetailDO extends BaseDO { /** * 主表ID */ - private String masterId; + private Long masterId; /** * 单据号 */ diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreceiptJob/ProductionreceiptJobDetailMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreceiptJob/ProductionreceiptJobDetailMapper.java index aec2de6c..f5ea3b32 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreceiptJob/ProductionreceiptJobDetailMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreceiptJob/ProductionreceiptJobDetailMapper.java @@ -7,6 +7,8 @@ import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.productionreceiptJob.vo.ProductionreceiptJobDetailExportReqVO; import com.win.module.wms.controller.productionreceiptJob.vo.ProductionreceiptJobDetailPageReqVO; +import com.win.module.wms.dal.dataobject.issueJob.IssueJobDetailDO; +import com.win.module.wms.dal.dataobject.preparetoissue.PreparetoissueDetailDO; import com.win.module.wms.dal.dataobject.productionreceiptJob.ProductionreceiptJobDetailDO; import org.apache.ibatis.annotations.Mapper; @@ -22,6 +24,7 @@ public interface ProductionreceiptJobDetailMapper extends BaseMapperX selectPage(ProductionreceiptJobDetailPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() + .eq(ProductionreceiptJobDetailDO::getMasterId, reqVO.getMasterId()) .eqIfPresent(ProductionreceiptJobDetailDO::getProductionLineCode, reqVO.getProductionLineCode()) .eqIfPresent(ProductionreceiptJobDetailDO::getWorkStationCode, reqVO.getWorkStationCode()) .eqIfPresent(ProductionreceiptJobDetailDO::getOnTheWayLocationCode, reqVO.getOnTheWayLocationCode()) @@ -79,4 +82,9 @@ public interface ProductionreceiptJobDetailMapper extends BaseMapperX selectList(Long masterId) { + return selectList(new LambdaQueryWrapperX() + .eq(ProductionreceiptJobDetailDO::getMasterId, masterId)); + } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreceiptJob/ProductionreceiptJobMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreceiptJob/ProductionreceiptJobMainMapper.java index 0637d8d3..0036f0cd 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreceiptJob/ProductionreceiptJobMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreceiptJob/ProductionreceiptJobMainMapper.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.productionreceiptJob.vo.ProductionreceiptJobMainExportReqVO; import com.win.module.wms.controller.productionreceiptJob.vo.ProductionreceiptJobMainPageReqVO; +import com.win.module.wms.dal.dataobject.issueJob.IssueJobMainDO; import com.win.module.wms.dal.dataobject.productionreceiptJob.ProductionreceiptJobMainDO; import com.win.module.wms.dal.dataobject.repleinshJob.RepleinshJobMainDO; import org.apache.ibatis.annotations.Mapper; @@ -122,4 +123,8 @@ public interface ProductionreceiptJobMainMapper extends BaseMapperX selectSeniorList(CustomConditions conditions) { + return selectList(QueryWrapperUtils.structure(conditions)); + } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreceiptJob/ProductionreceiptJobDetailService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreceiptJob/ProductionreceiptJobDetailService.java index 45e30ecd..ea5fe2bb 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreceiptJob/ProductionreceiptJobDetailService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreceiptJob/ProductionreceiptJobDetailService.java @@ -80,4 +80,6 @@ public interface ProductionreceiptJobDetailService { * @return 分页列表 */ PageResult getProductionreceiptJobDetailSenior(CustomConditions conditions); + + List selectList(Long id); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreceiptJob/ProductionreceiptJobDetailServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreceiptJob/ProductionreceiptJobDetailServiceImpl.java index 46209c31..06389f4f 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreceiptJob/ProductionreceiptJobDetailServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreceiptJob/ProductionreceiptJobDetailServiceImpl.java @@ -88,4 +88,9 @@ public class ProductionreceiptJobDetailServiceImpl implements ProductionreceiptJ public PageResult getProductionreceiptJobDetailSenior(CustomConditions conditions) { return productionreceiptJobDetailMapper.selectSenior(conditions); } + + @Override + public List selectList(Long masterId) { + return productionreceiptJobDetailMapper.selectList(masterId); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreceiptJob/ProductionreceiptJobMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreceiptJob/ProductionreceiptJobMainService.java index dc01ec2e..9aad41ab 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreceiptJob/ProductionreceiptJobMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreceiptJob/ProductionreceiptJobMainService.java @@ -6,6 +6,7 @@ import com.win.module.wms.controller.productionreceiptJob.vo.ProductionreceiptJo import com.win.module.wms.controller.productionreceiptJob.vo.ProductionreceiptJobMainExportReqVO; import com.win.module.wms.controller.productionreceiptJob.vo.ProductionreceiptJobMainPageReqVO; import com.win.module.wms.controller.productionreceiptJob.vo.ProductionreceiptJobMainUpdateReqVO; +import com.win.module.wms.dal.dataobject.issueJob.IssueJobMainDO; import com.win.module.wms.dal.dataobject.productionreceiptJob.ProductionreceiptJobMainDO; import org.springframework.lang.Nullable; @@ -59,6 +60,8 @@ public interface ProductionreceiptJobMainService { */ List getProductionreceiptJobMainList(Collection ids); + List getProductionreceiptJobMainList(CustomConditions conditions); + /** * 获得生产收料任务主分页 * @@ -97,4 +100,12 @@ public interface ProductionreceiptJobMainService { * @return */ Map getCountByStatus(@Nullable Collection types); + + Integer acceptProductionreceiptJobMain(Long id); + + Integer abandonProductionreceiptJobMain(Long id); + + Integer closeProductionreceiptJobMain(Long id); + + Integer executeProductionreceiptJobMain(ProductionreceiptJobMainUpdateReqVO updateReqVO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreceiptJob/ProductionreceiptJobMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreceiptJob/ProductionreceiptJobMainServiceImpl.java index 24b6e54e..0663a8b3 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreceiptJob/ProductionreceiptJobMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreceiptJob/ProductionreceiptJobMainServiceImpl.java @@ -1,28 +1,49 @@ package com.win.module.wms.service.productionreceiptJob; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.productionreceiptJob.vo.ProductionreceiptJobMainCreateReqVO; -import com.win.module.wms.controller.productionreceiptJob.vo.ProductionreceiptJobMainExportReqVO; -import com.win.module.wms.controller.productionreceiptJob.vo.ProductionreceiptJobMainPageReqVO; -import com.win.module.wms.controller.productionreceiptJob.vo.ProductionreceiptJobMainUpdateReqVO; +import com.win.module.infra.api.trends.TrendsApi; +import com.win.module.infra.enums.TrendsTypeEnum; +import com.win.module.system.api.serialnumber.SerialNumberApi; +import com.win.module.system.api.user.AdminUserApi; +import com.win.module.system.api.user.dto.AdminUserRespDTO; +import com.win.module.system.enums.serialNumber.RuleCodeEnum; +import com.win.module.wms.controller.issueJob.vo.IssueJobDetailUpdateReqVO; +import com.win.module.wms.controller.productionreceiptJob.vo.*; +import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO; import com.win.module.wms.convert.productionreceiptJob.ProductionreceiptJobMainConvert; -import com.win.module.wms.dal.dataobject.accountcalendar.AccountcalendarDO; +import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; +import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordDetailDO; +import com.win.module.wms.dal.dataobject.location.LocationDO; import com.win.module.wms.dal.dataobject.production.ProductionDetailDO; +import com.win.module.wms.dal.dataobject.productionreceiptJob.ProductionreceiptJobDetailDO; import com.win.module.wms.dal.dataobject.productionreceiptJob.ProductionreceiptJobMainDO; +import com.win.module.wms.dal.dataobject.productionreceiptRecord.ProductionreceiptRecordDetailDO; +import com.win.module.wms.dal.dataobject.productionreceiptRecord.ProductionreceiptRecordMainDO; +import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO; import com.win.module.wms.dal.mysql.productionreceiptJob.ProductionreceiptJobMainMapper; +import com.win.module.wms.dal.mysql.productionreceiptRecord.ProductionreceiptRecordDetailMapper; +import com.win.module.wms.dal.mysql.productionreceiptRecord.ProductionreceiptRecordMainMapper; +import com.win.module.wms.enums.job.JobStatusState; +import com.win.module.wms.service.expectin.ExpectinService; +import com.win.module.wms.service.location.LocationService; import com.win.module.wms.service.production.ProductionMainService; +import com.win.module.wms.service.transaction.TransactionService; +import com.win.module.wms.util.JobUtils; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.*; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.win.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; import static com.win.module.wms.enums.ErrorCodeConstants.*; /** @@ -34,6 +55,26 @@ import static com.win.module.wms.enums.ErrorCodeConstants.*; @Validated public class ProductionreceiptJobMainServiceImpl implements ProductionreceiptJobMainService { + @Resource + private ExpectinService expectinService; + @Resource + private TransactionService transactionService; + @Resource + private LocationService locationService; + @Resource + private ProductionreceiptRecordDetailMapper productionreceiptRecordDetailMapper; + @Resource + private ProductionreceiptRecordMainMapper productionreceiptRecordMainMapper; + @Resource + private JobUtils jobUtils; + @Resource + private SerialNumberApi serialNumberApi; + @Resource + private ProductionreceiptJobDetailService productionreceiptJobDetailService; + @Resource + private AdminUserApi userApi; + @Resource + private TrendsApi trendsApi; @Resource private ProductionreceiptJobMainMapper productionreceiptJobMainMapper; @@ -66,10 +107,12 @@ public class ProductionreceiptJobMainServiceImpl implements ProductionreceiptJob productionreceiptJobMainMapper.deleteById(id); } - private void validateProductionreceiptJobMainExists(Long id) { - if (productionreceiptJobMainMapper.selectById(id) == null) { + private ProductionreceiptJobMainDO validateProductionreceiptJobMainExists(Long id) { + ProductionreceiptJobMainDO productionreceiptJobMainDO = productionreceiptJobMainMapper.selectById(id); + if (productionreceiptJobMainDO == null) { throw exception(PRODUCTIONRECEIPT_JOB_MAIN_NOT_EXISTS); } + return productionreceiptJobMainDO; } @Override @@ -82,6 +125,11 @@ public class ProductionreceiptJobMainServiceImpl implements ProductionreceiptJob return productionreceiptJobMainMapper.selectBatchIds(ids); } + @Override + public List getProductionreceiptJobMainList(CustomConditions conditions) { + return productionreceiptJobMainMapper.selectSeniorList(conditions); + } + @Override public PageResult getProductionreceiptJobMainPage(ProductionreceiptJobMainPageReqVO pageReqVO) { return productionreceiptJobMainMapper.selectPage(pageReqVO); @@ -127,4 +175,164 @@ public class ProductionreceiptJobMainServiceImpl implements ProductionreceiptJob map.put("count", l.intValue()); return map; } + + @Override + @Transactional + public Integer acceptProductionreceiptJobMain(Long id) { + ProductionreceiptJobMainDO productionreceiptJobMainDO = this.validateProductionreceiptJobMainExists(id); + JobStatusState jobStatusState = new JobStatusState(productionreceiptJobMainDO.getStatus()); + if(!jobStatusState.accept()) { + throw exception(PRODUCTIONRECEIPT_JOB_MAIN_STATUS_ERROR); + } + Long userId = getLoginUserId(); + AdminUserRespDTO userRespDTO = userApi.getUser(userId); + productionreceiptJobMainDO.setStatus(jobStatusState.getState().getCode()); + productionreceiptJobMainDO.setAcceptUserId(String.valueOf(userId)); + productionreceiptJobMainDO.setAcceptUserName(userRespDTO.getNickname()); + productionreceiptJobMainDO.setAcceptTime(LocalDateTime.now()); + trendsApi.createTrends(id, "productionreceiptJob", "承接了生产收料任务", TrendsTypeEnum.UPDATE); + return productionreceiptJobMainMapper.updateById(productionreceiptJobMainDO); + } + + @Override + @Transactional + public Integer abandonProductionreceiptJobMain(Long id) { + ProductionreceiptJobMainDO productionreceiptJobMainDO = this.validateProductionreceiptJobMainExists(id); + JobStatusState jobStatusState = new JobStatusState(productionreceiptJobMainDO.getStatus()); + if(!jobStatusState.cancelAccept()) { + throw exception(PRODUCTIONRECEIPT_JOB_MAIN_STATUS_ERROR); + } + productionreceiptJobMainDO.setStatus(jobStatusState.getState().getCode()); + productionreceiptJobMainDO.setAcceptUserId(null); + productionreceiptJobMainDO.setAcceptUserName(null); + productionreceiptJobMainDO.setAcceptTime(null); + trendsApi.createTrends(id, "productionreceiptJob", "取消了生产收料任务", TrendsTypeEnum.UPDATE); + return productionreceiptJobMainMapper.updateById(productionreceiptJobMainDO); + } + + @Override + @Transactional + public Integer closeProductionreceiptJobMain(Long id) { + ProductionreceiptJobMainDO productionreceiptJobMainDO = this.validateProductionreceiptJobMainExists(id); + JobStatusState jobStatusState = new JobStatusState(productionreceiptJobMainDO.getStatus()); + if(!jobStatusState.close()) { + throw exception(PRODUCTIONRECEIPT_JOB_MAIN_STATUS_ERROR); + } + productionreceiptJobMainDO.setStatus(jobStatusState.getState().getCode()); + trendsApi.createTrends(id, "productionreceiptJob", "关闭了生产收料任务", TrendsTypeEnum.UPDATE); + return productionreceiptJobMainMapper.updateById(productionreceiptJobMainDO); + } + + @Override + @Transactional + public Integer executeProductionreceiptJobMain(ProductionreceiptJobMainUpdateReqVO updateReqVO) { + //查询数据 + ProductionreceiptJobMainDO productionreceiptJobMainDO = this.validateProductionreceiptJobMainExists(updateReqVO.getId()); + List subList = productionreceiptJobDetailService.selectList(productionreceiptJobMainDO.getId()); + JobStatusState jobStatusState = new JobStatusState(productionreceiptJobMainDO.getStatus()); + boolean flag = jobStatusState.execute(); + if(!flag) { + throw new ServiceException(PRODUCTIONRECEIPT_JOB_MAIN_STATUS_ERROR); + } + //更新完成信息 + Long userId = getLoginUserId(); + AdminUserRespDTO userRespDTO = userApi.getUser(userId); + productionreceiptJobMainDO.setStatus(jobStatusState.getState().getCode()); + productionreceiptJobMainDO.setCompleteTime(LocalDateTime.now()); + productionreceiptJobMainDO.setCompleteUserId(String.valueOf(userRespDTO.getId())); + productionreceiptJobMainDO.setCompleteUserName(userRespDTO.getNickname()); + //更新任务表状态 + int result = productionreceiptJobMainMapper.updateById(productionreceiptJobMainDO); + //创建 生产收料记录 主表 + ProductionreceiptRecordMainDO productionreceiptRecordMainDO = new ProductionreceiptRecordMainDO(); + BeanUtils.copyProperties(productionreceiptJobMainDO, productionreceiptRecordMainDO); + String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCTION_RECEIPT_RECORD.getCode()); + productionreceiptRecordMainDO.setNumber(number); + productionreceiptRecordMainDO.setIssueRecordNumber(productionreceiptJobMainDO.getIssueRecordNumber()); + productionreceiptRecordMainDO.setJobNumber(productionreceiptJobMainDO.getNumber()); + productionreceiptRecordMainDO.setExecuteTime(LocalDateTime.now()); + productionreceiptRecordMainDO.setActiveDate(LocalDateTime.now()); + productionreceiptRecordMainDO.setDueTime(productionreceiptJobMainDO.getRequestDueTime()); + //增加业务类型 + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("IssueJob"); + productionreceiptRecordMainDO.setOutTransactionType(businesstypeDO.getOutTransactionType()); + productionreceiptRecordMainDO.setInTransactionType(businesstypeDO.getInTransactionType()); + productionreceiptRecordMainDO.setBusinessType(businesstypeDO.getCode()); + productionreceiptRecordMainDO.setId(null); + productionreceiptRecordMainDO.setCreator(null); + productionreceiptRecordMainDO.setCreateTime(null); + productionreceiptRecordMainDO.setUpdater(null); + productionreceiptRecordMainDO.setUpdateTime(null); + productionreceiptRecordMainMapper.insert(productionreceiptRecordMainDO); + // 获取参数中的sublist + List productionreceiptJobDetailUpdateReqVOList = updateReqVO.getSubList(); + //发料记录子 + List productionreceiptRecordDetailDOList = new ArrayList<>(); + //库存事务 + List transactionCreateReqVOList = new ArrayList<>(); + subList.forEach(subListItem -> { + // 获取参数中recordLst + productionreceiptJobDetailUpdateReqVOList.forEach(DetailUpdateItem -> { + // 匹配任务子表与参数中子表 + if (DetailUpdateItem.getId().equals(subListItem.getId())) { + ProductionreceiptRecordDetailDO productionreceiptRecordDetailDO = new ProductionreceiptRecordDetailDO(); + BeanUtils.copyProperties(subListItem, productionreceiptRecordDetailDO); + productionreceiptRecordDetailDO.setNumber(number); + productionreceiptRecordDetailDO.setMasterId(productionreceiptRecordMainDO.getId()); + productionreceiptRecordDetailDO.setFromPackingNumber(subListItem.getPackingNumber()); + productionreceiptRecordDetailDO.setFromBatch(subListItem.getBatch()); + productionreceiptRecordDetailDO.setFromLocationCode(subListItem.getFromLocationCode()); + productionreceiptRecordDetailDO.setFromContainerNumber(subListItem.getContainerNumber()); + // 根据前端参数赋值 + productionreceiptRecordDetailDO.setToPackingNumber(DetailUpdateItem.getToPackingNumber()); + productionreceiptRecordDetailDO.setToBatch(DetailUpdateItem.getToBatch()); + productionreceiptRecordDetailDO.setToLocationCode(DetailUpdateItem.getToLocationCode()); + productionreceiptRecordDetailDO.setToContainerNumber(DetailUpdateItem.getToContainerNumber()); + productionreceiptRecordDetailDO.setInventoryStatus(DetailUpdateItem.getToInventoryStatus()); + productionreceiptRecordDetailDO.setQty(DetailUpdateItem.getHandleQty()); + // 根据 to库位 查询 库位组 库区 + LocationDO locationDO = locationService.selectLocation(DetailUpdateItem.getToLocationCode()); + productionreceiptRecordDetailDO.setToLocationGroupCode(locationDO.getLocationGroupCode()); + productionreceiptRecordDetailDO.setToAreaCode(locationDO.getAreaCode()); + // 根据 from库位 查询 库位组 库区 + LocationDO locationDOFrom = locationService.selectLocation(subListItem.getFromLocationCode()); + productionreceiptRecordDetailDO.setFromLocationGroupCode(locationDOFrom.getLocationGroupCode()); + productionreceiptRecordDetailDO.setFromAreaCode(locationDOFrom.getAreaCode()); + productionreceiptRecordDetailDO.setId(null); + productionreceiptRecordDetailDO.setCreator(null); + productionreceiptRecordDetailDO.setCreateTime(null); + productionreceiptRecordDetailDO.setUpdater(null); + productionreceiptRecordDetailDO.setUpdateTime(null); + productionreceiptRecordDetailDOList.add(productionreceiptRecordDetailDO); + //添加库存事务list + TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO(); + BeanUtils.copyProperties(productionreceiptRecordDetailDO, transactionCreateReqVO); + TransactiontypeDO transactiontypeDO = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType()); + transactionCreateReqVO.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId())); + transactionCreateReqVO.setInventoryAction(transactiontypeDO.getInventoryAction()); + transactionCreateReqVO.setTransactionType(transactiontypeDO.getCode()); + transactionCreateReqVO.setBusinessType(productionreceiptRecordMainDO.getBusinessType()); + transactionCreateReqVO.setOwnerCode(productionreceiptRecordDetailDO.getFromOwnerCode()); + transactionCreateReqVO.setRecordNumber(number); + transactionCreateReqVO.setId(null); + transactionCreateReqVO.setPackingNumber(productionreceiptRecordDetailDO.getToPackingNumber()); + transactionCreateReqVO.setBatch(productionreceiptRecordDetailDO.getToBatch()); + transactionCreateReqVO.setContainerNumber(productionreceiptRecordDetailDO.getToContainerNumber()); + transactionCreateReqVO.setAmount(BigDecimal.ZERO); + transactionCreateReqVO.setLocationCode(productionreceiptRecordDetailDO.getToLocationCode()); + transactionCreateReqVOList.add(transactionCreateReqVO); + } + }); + }); + if(!productionreceiptRecordDetailDOList.isEmpty()) { + productionreceiptRecordDetailMapper.insertBatch(productionreceiptRecordDetailDOList); + } + //增加库存事务 + transactionService.createTransaction(transactionCreateReqVOList); + //移除预计入 + expectinService.deleteExpectinByJobNumber(productionreceiptJobMainDO.getNumber()); + //变更记录 + trendsApi.createTrends(productionreceiptJobMainDO.getId(), "productionreceiptJob", "执行了生产收料任务", TrendsTypeEnum.UPDATE); + return result; + } }