From c1b975cca060238b9d98c5572e0049f3370dd52d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A6=81=E6=AD=A2=E5=91=B5=E5=91=B5?= Date: Tue, 9 Dec 2025 09:29:14 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=85=A5=E5=BA=93=E3=80=81=E6=89=B9?= =?UTF-8?q?=E9=87=8F=E5=85=A5=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/MaterialBatchAssignController.java | 19 ++- .../admin/MaterialBatchController.java | 16 ++- .../MaterialInventoryInboundController.java | 15 ++- .../vo/MaterialBatchAssignPageReqVO.java | 3 + .../vo/MaterialBatchAssignSaveReqVO.java | 4 +- .../vo/MaterialInfomationPageReqVO.java | 3 + ...terialInventoryInboundDetailSaveReqVO.java | 16 +++ .../vo/MaterialInventoryInboundSaveReqVO.java | 5 + .../dal/dataobject/MaterialBatchAssignDO.java | 4 +- .../dal/dataobject/MaterialInfomationDO.java | 5 + .../dal/mapper/MaterialBatchAssignMapper.java | 6 + .../dal/mapper/MaterialInfomationMapper.java | 8 ++ .../service/MaterialBatchAssignService.java | 16 +++ .../MaterialBatchAssignServiceImpl.java | 17 +++ .../MaterialInventoryInboundService.java | 14 +++ .../MaterialInventoryInboundServiceImpl.java | 108 +++++++++++++++++- 16 files changed, 244 insertions(+), 15 deletions(-) diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialBatchAssignController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialBatchAssignController.java index 5d6ac4a..5d703cb 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialBatchAssignController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialBatchAssignController.java @@ -26,18 +26,20 @@ import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.framework.common.util.object.BeanUtils; import static com.zt.plat.framework.common.pojo.CommonResult.success; +import static com.zt.plat.framework.common.pojo.CommonResult.error; import com.zt.plat.framework.excel.core.util.ExcelUtils; import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog; import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.*; +import static com.zt.plat.module.qms.enums.ErrorCodeConstants.MATERIAL_BATCH_ASSIGN_NOT_EXISTS; import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialBatchAssignDO; import com.zt.plat.module.qms.resource.material.service.MaterialBatchAssignService; @Tag(name = "管理后台 - 物料批次分发") @RestController -@RequestMapping("/qms/material-batch-assign") +@RequestMapping("/qms/resource/material-batch-assign") @Validated @FileUploadController(source = "qms.materialbatchassign") public class MaterialBatchAssignController extends AbstractFileUploadController implements BusinessControllerMarker{ @@ -94,6 +96,21 @@ public class MaterialBatchAssignController extends AbstractFileUploadController return success(BeanUtils.toBean(materialBatchAssign, MaterialBatchAssignRespVO.class)); } + + @GetMapping("/get-by-inf") + @Operation(summary = "获得物料批次分发") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + // @PreAuthorize("@ss.hasPermission('qms:material-batch-assign:query')") + public CommonResult> getMaterialBatchAssignByInfiId(MaterialBatchAssignPageReqVO pageReqVO) { + + if(pageReqVO.getMaterialInfomationId()==null||pageReqVO.getMaterialInfomationId().length()==0){ + return error(MATERIAL_BATCH_ASSIGN_NOT_EXISTS,"示例编号不能为空"); + } + + PageResult pageResult = materialBatchAssignService.getMaterialBatchAssignByInfId(pageReqVO); + return success(BeanUtils.toBean(pageResult, MaterialBatchAssignRespVO.class)); + } + @GetMapping("/page") @Operation(summary = "获得物料批次分发分页") @PreAuthorize("@ss.hasPermission('qms:material-batch-assign:query')") diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialBatchController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialBatchController.java index da57c02..3850d84 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialBatchController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialBatchController.java @@ -1,8 +1,7 @@ package com.zt.plat.module.qms.resource.material.controller.admin; -import com.zt.plat.module.qms.resource.material.controller.vo.MaterialBatchPageReqVO; -import com.zt.plat.module.qms.resource.material.controller.vo.MaterialBatchRespVO; -import com.zt.plat.module.qms.resource.material.controller.vo.MaterialBatchSaveReqVO; +import com.zt.plat.module.qms.resource.material.controller.vo.*; +import com.zt.plat.module.qms.resource.material.service.MaterialBatchAssignService; import org.springframework.web.bind.annotation.*; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -37,11 +36,14 @@ import com.zt.plat.module.qms.resource.material.service.MaterialBatchService; @Tag(name = "管理后台 - 物料批次") @RestController -@RequestMapping("/qms/material-batch") +@RequestMapping("/qms/resource/material-batch") @Validated @FileUploadController(source = "qms.materialbatch") public class MaterialBatchController extends AbstractFileUploadController implements BusinessControllerMarker{ + @Resource + private MaterialBatchAssignService materialBatchAssignService; + static { FileUploadController annotation = MaterialBatchController.class.getAnnotation(FileUploadController.class); if (annotation != null) { @@ -115,4 +117,10 @@ public class MaterialBatchController extends AbstractFileUploadController implem BeanUtils.toBean(list, MaterialBatchRespVO.class)); } + @PostMapping("/assign") + @Operation(summary = "物料分发") + public CommonResult assign(@Valid @RequestBody MaterialBatchAssignSaveReqVO createReqVO) { + return success(materialBatchAssignService.assignLab(createReqVO)); + } + } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialInventoryInboundController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialInventoryInboundController.java index 9956587..0b1bcb4 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialInventoryInboundController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialInventoryInboundController.java @@ -3,6 +3,7 @@ package com.zt.plat.module.qms.resource.material.controller.admin; import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryInboundPageReqVO; import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryInboundRespVO; import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryInboundSaveReqVO; +import com.zt.plat.module.qms.resource.material.controller.vo.MaterialProductRespVO; import org.springframework.web.bind.annotation.*; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -37,7 +38,7 @@ import com.zt.plat.module.qms.resource.material.service.MaterialInventoryInbound @Tag(name = "管理后台 - 入库") @RestController -@RequestMapping("/qms/material-inventory-inbound") +@RequestMapping("/qms/resource/material-inventory-inbound") @Validated @FileUploadController(source = "qms.materialinventoryinbound") public class MaterialInventoryInboundController extends AbstractFileUploadController implements BusinessControllerMarker{ @@ -115,4 +116,16 @@ public class MaterialInventoryInboundController extends AbstractFileUploadContro BeanUtils.toBean(list, MaterialInventoryInboundRespVO.class)); } + + @PostMapping("/multi-put") + @Operation(summary = "批量上架") + public CommonResult> createMaterialInventoryInboundMulti(@Valid @RequestBody MaterialInventoryInboundSaveReqVO createReqVO) { + return success(materialInventoryInboundService.multiCreateMaterialInventoryInbound(createReqVO)); + } + + @PostMapping("single-put") + @Operation(summary = "单一上架") + public CommonResult> createMaterialInventoryInboundSingle(@Valid @RequestBody MaterialInventoryInboundSaveReqVO createReqVO) { + return success(materialInventoryInboundService.singleCreateMaterialInventoryInbound(createReqVO)); + } } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialBatchAssignPageReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialBatchAssignPageReqVO.java index a60e1a3..84a398f 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialBatchAssignPageReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialBatchAssignPageReqVO.java @@ -37,4 +37,7 @@ public class MaterialBatchAssignPageReqVO extends PageParam { @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; + @Schema(description = "实例ID") + private String materialInfomationId; + } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialBatchAssignSaveReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialBatchAssignSaveReqVO.java index 14d16ae..50c068b 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialBatchAssignSaveReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialBatchAssignSaveReqVO.java @@ -10,13 +10,13 @@ public class MaterialBatchAssignSaveReqVO { @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "15114") private Long id; - @Schema(description = "源批次ID", example = "23099") + @Schema(description = "源批次ID",requiredMode = Schema.RequiredMode.REQUIRED, example = "23099") private Long batchId; @Schema(description = "产品id", example = "10774") private String productId; - @Schema(description = "库房ID", example = "24720") + @Schema(description = "库房ID",requiredMode = Schema.RequiredMode.REQUIRED, example = "24720") private Long warehouseId; @Schema(description = "数量") diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInfomationPageReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInfomationPageReqVO.java index 5ed177c..59572af 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInfomationPageReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInfomationPageReqVO.java @@ -78,5 +78,8 @@ public class MaterialInfomationPageReqVO extends PageParam { @Schema(description = "大类ids") List productIds; + @Schema(description = "入库id") + private long inventoryInboundId; + } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInventoryInboundDetailSaveReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInventoryInboundDetailSaveReqVO.java index 562a501..ff8aa08 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInventoryInboundDetailSaveReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInventoryInboundDetailSaveReqVO.java @@ -1,5 +1,6 @@ package com.zt.plat.module.qms.resource.material.controller.vo; +import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; @@ -45,4 +46,19 @@ public class MaterialInventoryInboundDetailSaveReqVO { @Schema(description = "备注") private String remark; + @Schema(description = "申请数量") + private Long quantity; + + /** + * 存放位置 + */ + @TableField("LOC_ID") + private String locationId; + + /** + * 物料大类id + */ + @TableField("PDT_ID") + private Long productId; + } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInventoryInboundSaveReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInventoryInboundSaveReqVO.java index e91c0dd..d2d2d4f 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInventoryInboundSaveReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInventoryInboundSaveReqVO.java @@ -1,5 +1,6 @@ package com.zt.plat.module.qms.resource.material.controller.vo; +import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; @@ -51,4 +52,8 @@ public class MaterialInventoryInboundSaveReqVO { @Schema(description = "备注") private String remark; + @Schema(description = "详情",requiredMode = Schema.RequiredMode.REQUIRED) + private MaterialInventoryInboundDetailSaveReqVO detail; + + } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/dataobject/MaterialBatchAssignDO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/dataobject/MaterialBatchAssignDO.java index 40381a0..037fc4a 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/dataobject/MaterialBatchAssignDO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/dataobject/MaterialBatchAssignDO.java @@ -47,7 +47,7 @@ public class MaterialBatchAssignDO extends BusinessBaseDO { * 数量 */ @TableField("INB_QTY") - private String inboundQuantity; + private Long inboundQuantity; /** * 暂存位置记录 */ @@ -64,4 +64,6 @@ public class MaterialBatchAssignDO extends BusinessBaseDO { @TableField("RMK") private String remark; + + } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/dataobject/MaterialInfomationDO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/dataobject/MaterialInfomationDO.java index 279150a..93a436a 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/dataobject/MaterialInfomationDO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/dataobject/MaterialInfomationDO.java @@ -121,4 +121,9 @@ public class MaterialInfomationDO extends BusinessBaseDO { @TableField("RMK") private String remark; + /** + * 库存入库id + */ + @TableField("INVT_INB_ID") + private long inventoryInboundId; } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialBatchAssignMapper.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialBatchAssignMapper.java index 4e4aeeb..0c26169 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialBatchAssignMapper.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialBatchAssignMapper.java @@ -28,4 +28,10 @@ public interface MaterialBatchAssignMapper extends BaseMapperX selectByInfId(MaterialBatchAssignPageReqVO reqVO) { +// return selectPage(reqVO, new LambdaQueryWrapperX() +// .eqIfPresent(MaterialBatchAssignDO::getMaterialInfomationId, reqVO.getMaterialInfomationId()) +// .orderByDesc(MaterialBatchAssignDO::getCreateTime)); +// } + } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialInfomationMapper.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialInfomationMapper.java index 5549d3c..708f3a4 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialInfomationMapper.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialInfomationMapper.java @@ -41,4 +41,12 @@ public interface MaterialInfomationMapper extends BaseMapperX selectAll(MaterialInfomationPageReqVO reqVO) { + reqVO.setPageSize(-1); + return selectPage(reqVO, new LambdaQueryWrapperX() + .eq(MaterialInfomationDO::getInventoryInboundId, reqVO.getInventoryInboundId() + ) + ); + } + } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialBatchAssignService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialBatchAssignService.java index 1af3acf..05764a7 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialBatchAssignService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialBatchAssignService.java @@ -53,6 +53,14 @@ public interface MaterialBatchAssignService { */ MaterialBatchAssignDO getMaterialBatchAssign(Long id); + /** + * 用物料实例Id获得物料批次 + * + * @param pageReqVO 分页查询 + * @return 物料批次分发 + */ + public PageResult getMaterialBatchAssignByInfId(MaterialBatchAssignPageReqVO pageReqVO); + /** * 获得物料批次分发分页 * @@ -61,4 +69,12 @@ public interface MaterialBatchAssignService { */ PageResult getMaterialBatchAssignPage(MaterialBatchAssignPageReqVO pageReqVO); + + /** + * 分发到实验室 + * @param createReqVO + * @return + */ + MaterialBatchAssignRespVO assignLab(@Valid MaterialBatchAssignSaveReqVO createReqVO); + } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialBatchAssignServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialBatchAssignServiceImpl.java index 7113033..4fc9446 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialBatchAssignServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialBatchAssignServiceImpl.java @@ -1,9 +1,11 @@ package com.zt.plat.module.qms.resource.material.service; import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zt.plat.module.qms.resource.material.controller.vo.MaterialBatchAssignPageReqVO; import com.zt.plat.module.qms.resource.material.controller.vo.MaterialBatchAssignRespVO; import com.zt.plat.module.qms.resource.material.controller.vo.MaterialBatchAssignSaveReqVO; +import jakarta.validation.Valid; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -84,9 +86,24 @@ public class MaterialBatchAssignServiceImpl implements MaterialBatchAssignServic return materialBatchAssignMapper.selectById(id); } + @Override + public PageResult getMaterialBatchAssignByInfId(MaterialBatchAssignPageReqVO pageReqVO){ + return materialBatchAssignMapper.selectPage(pageReqVO); + } + @Override public PageResult getMaterialBatchAssignPage(MaterialBatchAssignPageReqVO pageReqVO) { return materialBatchAssignMapper.selectPage(pageReqVO); } + + @Override + public MaterialBatchAssignRespVO assignLab(MaterialBatchAssignSaveReqVO createReqVO){ + // 插入 + MaterialBatchAssignDO materialBatchAssign = BeanUtils.toBean(createReqVO, MaterialBatchAssignDO.class); + materialBatchAssignMapper.insert(materialBatchAssign); + // 返回 + return BeanUtils.toBean(materialBatchAssign, MaterialBatchAssignRespVO.class); + } + } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryInboundService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryInboundService.java index 1e091ab..7f0e67b 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryInboundService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryInboundService.java @@ -61,4 +61,18 @@ public interface MaterialInventoryInboundService { */ PageResult getMaterialInventoryInboundPage(MaterialInventoryInboundPageReqVO pageReqVO); + + /*** + * 批量入库/上架 + * @param createReqVO + * @return + */ + PageResultmultiCreateMaterialInventoryInbound(MaterialInventoryInboundSaveReqVO createReqVO); + + /** + * 单个入库/上架 + */ + PageResultsingleCreateMaterialInventoryInbound(MaterialInventoryInboundSaveReqVO createReqVO); + + } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryInboundServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryInboundServiceImpl.java index b99e204..3daa1ec 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryInboundServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryInboundServiceImpl.java @@ -1,11 +1,17 @@ package com.zt.plat.module.qms.resource.material.service; import cn.hutool.core.collection.CollUtil; -import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryInboundPageReqVO; -import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryInboundRespVO; -import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryInboundSaveReqVO; +import com.zt.plat.framework.common.exception.ErrorCode; +import com.zt.plat.module.qms.resource.material.controller.vo.*; +import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialBatchAssignDO; +import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialInfomationDO; +import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialInventoryInboundDetailDO; +import com.zt.plat.module.qms.resource.material.dal.mapper.MaterialBatchAssignMapper; +import com.zt.plat.module.qms.resource.material.dal.mapper.MaterialInfomationMapper; +import com.zt.plat.module.qms.resource.material.dal.mapper.MaterialInventoryInboundDetailMapper; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; +import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import java.util.*; @@ -30,7 +36,16 @@ import static com.zt.plat.module.qms.enums.ErrorCodeConstants.*; public class MaterialInventoryInboundServiceImpl implements MaterialInventoryInboundService { @Resource - private MaterialInventoryInboundMapper materialInventoryInboundMapper; + private MaterialInventoryInboundMapper materialInventoryInboundMapper;//入库 + + @Resource + private MaterialInventoryInboundDetailMapper materialInventoryInboundDetailMapper;//入库明细 + + @Resource + private MaterialInfomationMapper materialInfomationMapper;//物料实例 + + @Resource + private MaterialBatchAssignMapper materialBatchAssignMapper;//批次分配 @Override public MaterialInventoryInboundRespVO createMaterialInventoryInbound(MaterialInventoryInboundSaveReqVO createReqVO) { @@ -59,12 +74,12 @@ public class MaterialInventoryInboundServiceImpl implements MaterialInventoryInb } @Override - public void deleteMaterialInventoryInboundListByIds(List ids) { + public void deleteMaterialInventoryInboundListByIds(List ids) { // 校验存在 validateMaterialInventoryInboundExists(ids); // 删除 materialInventoryInboundMapper.deleteByIds(ids); - } + } private void validateMaterialInventoryInboundExists(List ids) { List list = materialInventoryInboundMapper.selectByIds(ids); @@ -89,4 +104,85 @@ public class MaterialInventoryInboundServiceImpl implements MaterialInventoryInb return materialInventoryInboundMapper.selectPage(pageReqVO); } + @Override + @Transactional(rollbackFor = Exception.class) + public PageResult multiCreateMaterialInventoryInbound(MaterialInventoryInboundSaveReqVO createReqVO) { + MaterialInventoryInboundDetailSaveReqVO detail = createReqVO.getDetail(); + + //判断输入数量是否大于批次剩余数据 + this.quantityCheck(detail); + //生成入库头数据 + MaterialInventoryInboundDO materialInventoryInbound = BeanUtils.toBean(createReqVO, MaterialInventoryInboundDO.class); + materialInventoryInboundMapper.insert(materialInventoryInbound); + + + + //根据入库数量创建实例数据 + List MaterialInfomationDO = new ArrayList(); + for (int i = 0; i < detail.getQuantity(); i++) { + MaterialInfomationDO materialInfomation = new MaterialInfomationDO(); + materialInfomation.setBatchId(detail.getBatchAssignId()); + materialInfomation.setLocationId(detail.getLocationId()); + materialInfomation.setInventoryInboundId(materialInventoryInbound.getId()); + materialInfomation.setProductId(detail.getProductId()); + MaterialInfomationDO.add(materialInfomation); + } + + materialInfomationMapper.insert(MaterialInfomationDO); + + + //根据实例数据创建入库明细 + MaterialInfomationPageReqVO InfomationVO = new MaterialInfomationPageReqVO(); + InfomationVO.setInventoryInboundId(materialInventoryInbound.getId()); + PageResult InfomationList = materialInfomationMapper.selectPage(InfomationVO); + InfomationList.getList().forEach(item -> { + MaterialInventoryInboundDetailDO detailDO = new MaterialInventoryInboundDetailDO(); + detailDO.setInboundId(materialInventoryInbound.getId()); + detailDO.setMaterialInfomationId(item.getId()); + detailDO.setInboundWay("批量入库"); + materialInventoryInboundDetailMapper.insert(detailDO); + }); + + return null; + } + + @Override + public PageResult singleCreateMaterialInventoryInbound(MaterialInventoryInboundSaveReqVO createReqVO) { + + MaterialInventoryInboundDetailSaveReqVO detail = createReqVO.getDetail(); + + //判断输入数量是否大于批次剩余数据 + this.quantityCheck(detail); + //生成入库头数据 + MaterialInventoryInboundDO materialInventoryInbound = BeanUtils.toBean(createReqVO, MaterialInventoryInboundDO.class); + materialInventoryInboundMapper.insert(materialInventoryInbound); + + //根据实例数据创建入库明细 + MaterialInfomationPageReqVO InfomationVO = new MaterialInfomationPageReqVO(); + InfomationVO.setInventoryInboundId(materialInventoryInbound.getId()); + PageResult InfomationList = materialInfomationMapper.selectPage(InfomationVO); + InfomationList.getList().forEach(item -> { + MaterialInventoryInboundDetailDO detailDO = new MaterialInventoryInboundDetailDO(); + detailDO.setInboundId(materialInventoryInbound.getId()); + detailDO.setMaterialInfomationId(item.getId()); + detailDO.setInboundWay("采购入库"); + materialInventoryInboundDetailMapper.insert(detailDO); + }); + + return null; + } + + private void quantityCheck(MaterialInventoryInboundDetailSaveReqVO detail) { + if (detail.getBatchAssignId() == null || detail.getQuantity() == null) { + throw exception(MATERIAL_BATCH_ASSIGN_NOT_EXISTS); + } + + MaterialBatchAssignDO materialBatchAssignDO = materialBatchAssignMapper.selectById(detail.getBatchAssignId()); + //判断输入数量是否大于批次剩余数据 + if (materialBatchAssignDO.getInboundQuantity() < detail.getQuantity()) { + throw exception(new ErrorCode(1_032_150_000, "批次剩余量不足")); + } + } + + } \ No newline at end of file