From 09730d4b8f7776f81af19db027b27bdc8cf0f671 Mon Sep 17 00:00:00 2001 From: shusir <497819738@qq.com> Date: Fri, 20 Mar 2026 17:57:20 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E7=89=A9=E6=96=99=E5=87=86=E5=A4=87?= =?UTF-8?q?=E7=9B=98=E7=82=B9=E6=8E=A5=E5=8F=A3=E5=8F=8A=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=85=B6=E4=BB=96=E6=8E=A5=E5=8F=A3=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/qms/enums/ErrorCodeConstants.java | 3 +- .../mapper/ConfigWarehouseLocationMapper.java | 12 +- .../ConfigWarehouseLocationServiceImpl.java | 10 ++ ...aterialInventoryCheckDetailController.java | 105 +++++++++++++ .../MaterialInventoryCheckItemController.java | 105 +++++++++++++ ...MaterialInventoryCheckDetailPageReqVO.java | 47 ++++++ .../MaterialInventoryCheckDetailRespVO.java | 59 ++++++++ ...MaterialInventoryCheckDetailSaveReqVO.java | 40 +++++ .../MaterialInventoryCheckItemPageReqVO.java | 42 ++++++ .../vo/MaterialInventoryCheckItemRespVO.java | 56 +++++++ .../MaterialInventoryCheckItemSaveReqVO.java | 36 +++++ .../vo/MaterialLifecycleDetailRespVO.java | 4 + .../vo/MaterialLifecycleRespVO.java | 18 +++ .../vo/MaterialLifecycleSaveReqVO.java | 22 ++- .../MaterialInventoryCheckDetailDO.java | 77 ++++++++++ .../MaterialInventoryCheckItemDO.java | 69 +++++++++ .../dal/dataobject/MaterialLifecycleDO.java | 21 +++ .../dal/mapper/MaterialInfomationMapper.java | 2 +- .../MaterialInventoryCheckDetailMapper.java | 33 +++++ .../MaterialInventoryCheckItemMapper.java | 44 ++++++ .../mapper/MaterialLifecycleDetailMapper.java | 1 + .../material/enums/MaterialFlowType.java | 4 +- .../service/MaterialBatchServiceImpl.java | 5 +- .../service/MaterialInfomationService.java | 1 - .../MaterialInfomationServiceImpl.java | 4 +- .../MaterialInventoryCheckDetailService.java | 64 ++++++++ ...terialInventoryCheckDetailServiceImpl.java | 89 +++++++++++ .../MaterialInventoryCheckItemService.java | 85 +++++++++++ ...MaterialInventoryCheckItemServiceImpl.java | 107 ++++++++++++++ .../MaterialInventoryOutboundServiceImpl.java | 7 +- .../MaterialLifecycleDetailServiceImpl.java | 6 +- .../service/MaterialLifecycleServiceImpl.java | 139 +++++++++++++++--- .../service/MaterialProductService.java | 11 +- .../service/MaterialProductServiceImpl.java | 11 +- .../MaterialInventoryCheckDetailMapper.xml | 12 ++ .../MaterialInventoryCheckItemMapper.xml | 12 ++ 36 files changed, 1317 insertions(+), 46 deletions(-) create mode 100644 zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialInventoryCheckDetailController.java create mode 100644 zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialInventoryCheckItemController.java create mode 100644 zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInventoryCheckDetailPageReqVO.java create mode 100644 zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInventoryCheckDetailRespVO.java create mode 100644 zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInventoryCheckDetailSaveReqVO.java create mode 100644 zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInventoryCheckItemPageReqVO.java create mode 100644 zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInventoryCheckItemRespVO.java create mode 100644 zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInventoryCheckItemSaveReqVO.java create mode 100644 zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/dataobject/MaterialInventoryCheckDetailDO.java create mode 100644 zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/dataobject/MaterialInventoryCheckItemDO.java create mode 100644 zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialInventoryCheckDetailMapper.java create mode 100644 zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialInventoryCheckItemMapper.java create mode 100644 zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryCheckDetailService.java create mode 100644 zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryCheckDetailServiceImpl.java create mode 100644 zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryCheckItemService.java create mode 100644 zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryCheckItemServiceImpl.java create mode 100644 zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialInventoryCheckDetailMapper.xml create mode 100644 zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialInventoryCheckItemMapper.xml diff --git a/zt-module-qms/zt-module-qms-api/src/main/java/com/zt/plat/module/qms/enums/ErrorCodeConstants.java b/zt-module-qms/zt-module-qms-api/src/main/java/com/zt/plat/module/qms/enums/ErrorCodeConstants.java index 6b176931..e6134bfe 100644 --- a/zt-module-qms/zt-module-qms-api/src/main/java/com/zt/plat/module/qms/enums/ErrorCodeConstants.java +++ b/zt-module-qms/zt-module-qms-api/src/main/java/com/zt/plat/module/qms/enums/ErrorCodeConstants.java @@ -198,8 +198,7 @@ public interface ErrorCodeConstants { ErrorCode SYSTEM_VERSION_MANAGEMENT_NOT_EXISTS = new ErrorCode(1_032_160_000, "客户端版本管理不存在"); - ErrorCode MATERIAL_INVENTORY_CHECK_NOT_EXISTS = new ErrorCode(1_032_160_000, "库存盘点不存在"); - ErrorCode MATERIAL_INVENTORY_CHECK_BATCH_NOT_EXISTS = new ErrorCode(1_032_160_000, "库存盘点项不存在"); + ErrorCode MATERIAL_INVENTORY_CHECK_ITEM_NOT_EXISTS = new ErrorCode(1_032_160_000, "库存盘点项不存在"); ErrorCode MATERIAL_INVENTORY_CHECK_DETAIL_NOT_EXISTS = new ErrorCode(1_032_160_000, "库存盘点明细不存在"); ErrorCode MATERIAL_INVENTORY_OUTBOUND_NOT_EXISTS = new ErrorCode(1_032_160_000, "出库不存在"); ErrorCode MATERIAL_INVENTORY_OUTBOUND_DETAIL_NOT_EXISTS = new ErrorCode(1_032_160_000, "出库明细,出库明细,含领用出库、退货出库、盘亏出库、销毁出库等不存在"); diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/dal/mapper/ConfigWarehouseLocationMapper.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/dal/mapper/ConfigWarehouseLocationMapper.java index 9dabfdd1..f8982ac9 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/dal/mapper/ConfigWarehouseLocationMapper.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/dal/mapper/ConfigWarehouseLocationMapper.java @@ -1,12 +1,15 @@ package com.zt.plat.module.qms.business.config.dal.mapper; +import cn.hutool.core.collection.CollUtil; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; import com.zt.plat.framework.mybatis.core.query.MPJLambdaWrapperX; +import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleDispatchDetailDO; import com.zt.plat.module.qms.business.config.controller.vo.ConfigWarehouseLocationPageReqVO; import com.zt.plat.module.qms.business.config.controller.vo.ConfigWarehouseLocationRespVO; +import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigPermissionDO; import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigWarehouseLocationDO; import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigWarehouseLocationParDO; import org.apache.ibatis.annotations.Mapper; @@ -26,7 +29,9 @@ public interface ConfigWarehouseLocationMapper extends BaseMapperX wrapper = new MPJLambdaWrapperX<>(); //仓库 - wrapper.leftJoin(ConfigWarehouseLocationParDO.class, ConfigWarehouseLocationParDO::getId, ConfigWarehouseLocationDO::getParentId); + wrapper.leftJoin(ConfigWarehouseLocationParDO.class, ConfigWarehouseLocationParDO::getId, ConfigWarehouseLocationDO::getParentId) + // 权限 + .leftJoin(ConfigPermissionDO.class, ConfigPermissionDO::getSourceId, ConfigWarehouseLocationDO::getId); wrapper.selectAll(ConfigWarehouseLocationDO.class) .selectAs(ConfigWarehouseLocationParDO::getName, ConfigWarehouseLocationRespVO::getWarehouseName) .selectAs(ConfigWarehouseLocationParDO::getCode, ConfigWarehouseLocationRespVO::getWarehouseCode) @@ -43,6 +48,11 @@ public interface ConfigWarehouseLocationMapper extends BaseMapperX + wrapper1.in(ConfigPermissionDO::getTargetId, reqVO.getRoleIds()) + .or() + .eqIfExists(ConfigWarehouseLocationDO::getCreator, SecurityFrameworkUtils.getLoginUserId())) .orderByDesc(ConfigWarehouseLocationDO::getSortNo); return selectJoinPage(reqVO, ConfigWarehouseLocationRespVO.class, wrapper); diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/service/ConfigWarehouseLocationServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/service/ConfigWarehouseLocationServiceImpl.java index d96556bb..5e7709eb 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/service/ConfigWarehouseLocationServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/service/ConfigWarehouseLocationServiceImpl.java @@ -2,12 +2,16 @@ package com.zt.plat.module.qms.business.config.service; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils; import com.zt.plat.module.qms.business.config.controller.vo.ConfigPermissionSaveReqVO; import com.zt.plat.module.qms.business.config.controller.vo.ConfigWarehouseLocationPageReqVO; import com.zt.plat.module.qms.business.config.controller.vo.ConfigWarehouseLocationRespVO; import com.zt.plat.module.qms.business.config.controller.vo.ConfigWarehouseLocationSaveReqVO; import com.zt.plat.module.qms.enums.QmsPermissionConstant; import com.zt.plat.module.qms.enums.QmsWarehouseLocationConstant; +import com.zt.plat.module.system.api.permission.PermissionApi; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; import org.springframework.util.ObjectUtils; @@ -38,6 +42,9 @@ public class ConfigWarehouseLocationServiceImpl implements ConfigWarehouseLocati @Resource private ConfigWarehouseLocationMapper configWarehouseLocationMapper; + @Autowired + private PermissionApi permissionApi; + @Override public ConfigWarehouseLocationRespVO save(ConfigWarehouseLocationSaveReqVO reqVo) { Long id = reqVo.getId(); @@ -171,6 +178,9 @@ public class ConfigWarehouseLocationServiceImpl implements ConfigWarehouseLocati @Override public PageResult getConfigWarehouseLocationPage(ConfigWarehouseLocationPageReqVO pageReqVO) { + // 获取当前用户角色 + CommonResult> userRoleIds = permissionApi.getUserRoleIdListByUserId(SecurityFrameworkUtils.getLoginUserId()); + pageReqVO.setRoleIds(userRoleIds.getData()); return configWarehouseLocationMapper.selectPage(pageReqVO); } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialInventoryCheckDetailController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialInventoryCheckDetailController.java new file mode 100644 index 00000000..3d29393c --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialInventoryCheckDetailController.java @@ -0,0 +1,105 @@ +package com.zt.plat.module.qms.resource.material.controller.admin; + +import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog; +import com.zt.plat.framework.business.interceptor.BusinessControllerMarker; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.pojo.PageParam; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO; +import com.zt.plat.framework.common.util.object.BeanUtils; +import com.zt.plat.framework.excel.core.util.ExcelUtils; +import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryCheckDetailPageReqVO; +import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryCheckDetailRespVO; +import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryCheckDetailSaveReqVO; +import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialInventoryCheckDetailDO; +import com.zt.plat.module.qms.resource.material.service.MaterialInventoryCheckDetailService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.List; + +import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static com.zt.plat.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - 库存盘点明细") +@RestController +@RequestMapping("/qms/material-inventory-check-detail") +@Validated +public class MaterialInventoryCheckDetailController implements BusinessControllerMarker { + + + @Resource + private MaterialInventoryCheckDetailService materialInventoryCheckDetailService; + + @PostMapping("/create") + @Operation(summary = "创建库存盘点明细") + @PreAuthorize("@ss.hasPermission('qms:material-inventory-check-detail:create')") + public CommonResult createMaterialInventoryCheckDetail(@Valid @RequestBody MaterialInventoryCheckDetailSaveReqVO createReqVO) { + return success(materialInventoryCheckDetailService.createMaterialInventoryCheckDetail(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新库存盘点明细") + @PreAuthorize("@ss.hasPermission('qms:material-inventory-check-detail:update')") + public CommonResult updateMaterialInventoryCheckDetail(@Valid @RequestBody MaterialInventoryCheckDetailSaveReqVO updateReqVO) { + materialInventoryCheckDetailService.updateMaterialInventoryCheckDetail(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除库存盘点明细") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('qms:material-inventory-check-detail:delete')") + public CommonResult deleteMaterialInventoryCheckDetail(@RequestParam("id") Long id) { + materialInventoryCheckDetailService.deleteMaterialInventoryCheckDetail(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除库存盘点明细") + @PreAuthorize("@ss.hasPermission('qms:material-inventory-check-detail:delete')") + public CommonResult deleteMaterialInventoryCheckDetailList(@RequestBody BatchDeleteReqVO req) { + materialInventoryCheckDetailService.deleteMaterialInventoryCheckDetailListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得库存盘点明细") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('qms:material-inventory-check-detail:query')") + public CommonResult getMaterialInventoryCheckDetail(@RequestParam("id") Long id) { + MaterialInventoryCheckDetailDO materialInventoryCheckDetail = materialInventoryCheckDetailService.getMaterialInventoryCheckDetail(id); + return success(BeanUtils.toBean(materialInventoryCheckDetail, MaterialInventoryCheckDetailRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得库存盘点明细分页") + @PreAuthorize("@ss.hasPermission('qms:material-inventory-check-detail:query')") + public CommonResult> getMaterialInventoryCheckDetailPage(@Valid MaterialInventoryCheckDetailPageReqVO pageReqVO) { + PageResult pageResult = materialInventoryCheckDetailService.getMaterialInventoryCheckDetailPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, MaterialInventoryCheckDetailRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出库存盘点明细 Excel") + @PreAuthorize("@ss.hasPermission('qms:material-inventory-check-detail:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportMaterialInventoryCheckDetailExcel(@Valid MaterialInventoryCheckDetailPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = materialInventoryCheckDetailService.getMaterialInventoryCheckDetailPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "库存盘点明细.xls", "数据", MaterialInventoryCheckDetailRespVO.class, + BeanUtils.toBean(list, MaterialInventoryCheckDetailRespVO.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/controller/admin/MaterialInventoryCheckItemController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialInventoryCheckItemController.java new file mode 100644 index 00000000..ec397176 --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialInventoryCheckItemController.java @@ -0,0 +1,105 @@ +package com.zt.plat.module.qms.resource.material.controller.admin; + +import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog; +import com.zt.plat.framework.business.interceptor.BusinessControllerMarker; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.pojo.PageParam; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO; +import com.zt.plat.framework.common.util.object.BeanUtils; +import com.zt.plat.framework.excel.core.util.ExcelUtils; +import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryCheckItemPageReqVO; +import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryCheckItemRespVO; +import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryCheckItemSaveReqVO; +import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialInventoryCheckItemDO; +import com.zt.plat.module.qms.resource.material.service.MaterialInventoryCheckItemService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.List; + +import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static com.zt.plat.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - 库存盘点项") +@RestController +@RequestMapping("/qms/material-inventory-check-item") +@Validated +public class MaterialInventoryCheckItemController implements BusinessControllerMarker { + + + @Resource + private MaterialInventoryCheckItemService materialInventoryCheckItemService; + + @PostMapping("/create") + @Operation(summary = "创建库存盘点项") + @PreAuthorize("@ss.hasPermission('qms:material-inventory-check-item:create')") + public CommonResult createMaterialInventoryCheckItem(@Valid @RequestBody MaterialInventoryCheckItemSaveReqVO createReqVO) { + return success(materialInventoryCheckItemService.createMaterialInventoryCheckItem(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新库存盘点项") + @PreAuthorize("@ss.hasPermission('qms:material-inventory-check-item:update')") + public CommonResult updateMaterialInventoryCheckItem(@Valid @RequestBody MaterialInventoryCheckItemSaveReqVO updateReqVO) { + materialInventoryCheckItemService.updateMaterialInventoryCheckItem(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除库存盘点项") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('qms:material-inventory-check-item:delete')") + public CommonResult deleteMaterialInventoryCheckItem(@RequestParam("id") Long id) { + materialInventoryCheckItemService.deleteMaterialInventoryCheckItem(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除库存盘点项") + @PreAuthorize("@ss.hasPermission('qms:material-inventory-check-item:delete')") + public CommonResult deleteMaterialInventoryCheckItemList(@RequestBody BatchDeleteReqVO req) { + materialInventoryCheckItemService.deleteMaterialInventoryCheckItemListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得库存盘点项") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('qms:material-inventory-check-item:query')") + public CommonResult getMaterialInventoryCheckItem(@RequestParam("id") Long id) { + MaterialInventoryCheckItemDO materialInventoryCheckItem = materialInventoryCheckItemService.getMaterialInventoryCheckItem(id); + return success(BeanUtils.toBean(materialInventoryCheckItem, MaterialInventoryCheckItemRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得库存盘点项分页") + @PreAuthorize("@ss.hasPermission('qms:material-inventory-check-item:query')") + public CommonResult> getMaterialInventoryCheckItemPage(@Valid MaterialInventoryCheckItemPageReqVO pageReqVO) { + PageResult pageResult = materialInventoryCheckItemService.getMaterialInventoryCheckItemPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, MaterialInventoryCheckItemRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出库存盘点项 Excel") + @PreAuthorize("@ss.hasPermission('qms:material-inventory-check-item:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportMaterialInventoryCheckItemExcel(@Valid MaterialInventoryCheckItemPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = materialInventoryCheckItemService.getMaterialInventoryCheckItemPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "库存盘点项.xls", "数据", MaterialInventoryCheckItemRespVO.class, + BeanUtils.toBean(list, MaterialInventoryCheckItemRespVO.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/controller/vo/MaterialInventoryCheckDetailPageReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInventoryCheckDetailPageReqVO.java new file mode 100644 index 00000000..8f7a2929 --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInventoryCheckDetailPageReqVO.java @@ -0,0 +1,47 @@ +package com.zt.plat.module.qms.resource.material.controller.vo; + +import com.zt.plat.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; + +import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 库存盘点明细分页 Request VO") +@Data +public class MaterialInventoryCheckDetailPageReqVO extends PageParam { + + @Schema(description = "盘点项id", example = "1655") + private Long parentId; + + @Schema(description = "物料实例id", example = "6754") + private Long infomationId; + + @Schema(description = "是否存在,1-存在,0-不存在") + private Integer present; + + @Schema(description = "物料编号,系统不存在的临时存储起来") + private String infomationCode; + + @Schema(description = "当前数量") + private String currentQuantity; + + @Schema(description = "状态", example = "1") + private String status; + + @Schema(description = "处置方式,字典配置") + private String disposalMethod; + + @Schema(description = "所属部门") + private String systemDepartmentCode; + + @Schema(description = "备注") + private String remark; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ 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/MaterialInventoryCheckDetailRespVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInventoryCheckDetailRespVO.java new file mode 100644 index 00000000..7d6ab4ee --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInventoryCheckDetailRespVO.java @@ -0,0 +1,59 @@ +package com.zt.plat.module.qms.resource.material.controller.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 库存盘点明细 Response VO") +@Data +@ExcelIgnoreUnannotated +public class MaterialInventoryCheckDetailRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "24954") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "盘点项id", example = "1655") + @ExcelProperty("盘点项id") + private Long parentId; + + @Schema(description = "物料实例id", example = "6754") + @ExcelProperty("物料实例id") + private Long infomationId; + + @Schema(description = "是否存在,1-存在,0-不存在") + @ExcelProperty("是否存在,1-存在,0-不存在") + private Integer present; + + @Schema(description = "物料编号,系统不存在的临时存储起来") + @ExcelProperty("物料编号,系统不存在的临时存储起来") + private String infomationCode; + + @Schema(description = "当前数量") + @ExcelProperty("当前数量") + private String currentQuantity; + + @Schema(description = "状态", example = "1") + @ExcelProperty("状态") + private String status; + + @Schema(description = "处置方式,字典配置") + @ExcelProperty("处置方式,字典配置") + private String disposalMethod; + + @Schema(description = "所属部门") + @ExcelProperty("所属部门") + private String systemDepartmentCode; + + @Schema(description = "备注") + @ExcelProperty("备注") + private String remark; + + @Schema(description = "创建时间") + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ 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/MaterialInventoryCheckDetailSaveReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInventoryCheckDetailSaveReqVO.java new file mode 100644 index 00000000..0fd372a9 --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInventoryCheckDetailSaveReqVO.java @@ -0,0 +1,40 @@ +package com.zt.plat.module.qms.resource.material.controller.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - 库存盘点明细新增/修改 Request VO") +@Data +public class MaterialInventoryCheckDetailSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "24954") + private Long id; + + @Schema(description = "盘点项id", example = "1655") + private Long parentId; + + @Schema(description = "物料实例id", example = "6754") + private Long infomationId; + + @Schema(description = "是否存在,1-存在,0-不存在") + private Integer present; + + @Schema(description = "物料编号,系统不存在的临时存储起来") + private String infomationCode; + + @Schema(description = "当前数量") + private String currentQuantity; + + @Schema(description = "状态", example = "1") + private String status; + + @Schema(description = "处置方式,字典配置") + private String disposalMethod; + + @Schema(description = "所属部门") + private String systemDepartmentCode; + + @Schema(description = "备注") + 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/controller/vo/MaterialInventoryCheckItemPageReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInventoryCheckItemPageReqVO.java new file mode 100644 index 00000000..20b3dcc7 --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInventoryCheckItemPageReqVO.java @@ -0,0 +1,42 @@ +package com.zt.plat.module.qms.resource.material.controller.vo; + +import com.zt.plat.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 库存盘点项分页 Request VO") +@Data +public class MaterialInventoryCheckItemPageReqVO extends PageParam { + + @Schema(description = "父id", example = "20320") + private Long parentId; + + @Schema(description = "盘点物料大类ID", example = "15446") + private Long productId; + + @Schema(description = "应有量") + private BigDecimal expected; + + @Schema(description = "实有量") + private BigDecimal actual; + + @Schema(description = "差异") + private String difference; + + @Schema(description = "所属部门") + private String systemDepartmentCode; + + @Schema(description = "备注") + private String remark; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ 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/MaterialInventoryCheckItemRespVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInventoryCheckItemRespVO.java new file mode 100644 index 00000000..39245e92 --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInventoryCheckItemRespVO.java @@ -0,0 +1,56 @@ +package com.zt.plat.module.qms.resource.material.controller.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 库存盘点项 Response VO") +@Data +@ExcelIgnoreUnannotated +public class MaterialInventoryCheckItemRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "1246") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "父id", example = "20320") + @ExcelProperty("父id") + private Long parentId; + + @Schema(description = "盘点物料大类ID", example = "15446") + @ExcelProperty("盘点物料大类ID") + private Long productId; + + @Schema(description = "盘点物料大类名称") + @ExcelProperty("盘点物料大类名称") + private String productName; + + @Schema(description = "应有量") + @ExcelProperty("应有量") + private BigDecimal expected; + + @Schema(description = "实有量") + @ExcelProperty("实有量") + private BigDecimal actual; + + @Schema(description = "差异") + @ExcelProperty("差异") + private String difference; + + @Schema(description = "所属部门") + @ExcelProperty("所属部门") + private String systemDepartmentCode; + + @Schema(description = "备注") + @ExcelProperty("备注") + private String remark; + + @Schema(description = "创建时间") + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ 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/MaterialInventoryCheckItemSaveReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInventoryCheckItemSaveReqVO.java new file mode 100644 index 00000000..42bb683d --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInventoryCheckItemSaveReqVO.java @@ -0,0 +1,36 @@ +package com.zt.plat.module.qms.resource.material.controller.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 库存盘点项新增/修改 Request VO") +@Data +public class MaterialInventoryCheckItemSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "1246") + private Long id; + + @Schema(description = "父id", example = "20320") + private Long parentId; + + @Schema(description = "盘点物料大类ID", example = "15446") + private Long productId; + + @Schema(description = "应有量") + private BigDecimal expected; + + @Schema(description = "实有量") + private BigDecimal actual; + + @Schema(description = "差异") + private String difference; + + @Schema(description = "所属部门") + private String systemDepartmentCode; + + @Schema(description = "备注") + 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/controller/vo/MaterialLifecycleDetailRespVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialLifecycleDetailRespVO.java index 01f036ab..3ed16141 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialLifecycleDetailRespVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialLifecycleDetailRespVO.java @@ -108,6 +108,10 @@ public class MaterialLifecycleDetailRespVO { @Schema(description = "物料实例规格") @ExcelProperty("物料实例规格") + private String infomationSpecification; + + @Schema(description = "物料实例型号") + @ExcelProperty("物料实例型号") private String infomationModelNo; @Schema(description = "物料实例单位") diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialLifecycleRespVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialLifecycleRespVO.java index fdae4a88..d0ef35fa 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialLifecycleRespVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialLifecycleRespVO.java @@ -69,6 +69,24 @@ public class MaterialLifecycleRespVO { @Dict(dicCode = "flow_status") private String flowStatus; + @Schema(description = "部门ids") + private List departmentIds; + + @Schema(description = "库房ids") + private List warehouseIds; + + @Schema(description = "盘点项") + private List checkItems; + + @Schema(description = "执行人id") + private Long operatorId; + + @Schema(description = "执行人") + private String operatorName; + + @Schema(description = "执行进度") + private String progress; + @Schema(description = "所属部门") @ExcelProperty("所属部门") private String systemDepartmentCode; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialLifecycleSaveReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialLifecycleSaveReqVO.java index 290f5998..e418126b 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialLifecycleSaveReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialLifecycleSaveReqVO.java @@ -1,5 +1,6 @@ package com.zt.plat.module.qms.resource.material.controller.vo; +import com.baomidou.mybatisplus.annotation.TableField; import com.zt.plat.module.qms.resource.material.valid.AddGroup; import com.zt.plat.module.qms.resource.material.valid.UpdateGroup; import io.swagger.v3.oas.annotations.media.Schema; @@ -22,7 +23,7 @@ public class MaterialLifecycleSaveReqVO { @Schema(description = "标题") private String title; - @Schema(description = "业务类型,【字典】【jy_material_lifecycle_bsn_type】验收、退换货、配置申请", example = "2") + @Schema(description = "业务类型,验收、退换货、配置申请、检定校准、库存盘点", example = "2") @NotNull(groups = AddGroup.class, message = "业务类型不能为空") private String businessType; @@ -44,6 +45,25 @@ public class MaterialLifecycleSaveReqVO { @Schema(description = "申请时间") private LocalDateTime applyTime; + // 盘点部门ids + @Schema(description = "盘点部门ids") + private List departmentIds; + + @Schema(description = "库房ids") + private List warehouseIds; + + @Schema(description = "盘点物料大类ids") + private List productIds; + + @Schema(description = "执行人id") + private Long operatorId; + + @Schema(description = "执行人") + private String operatorName; + + @Schema(description = "执行进度") + private String progress; + @Schema(description = "表单数据,表单数据") private String formData; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/dataobject/MaterialInventoryCheckDetailDO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/dataobject/MaterialInventoryCheckDetailDO.java new file mode 100644 index 00000000..4ca45c89 --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/dataobject/MaterialInventoryCheckDetailDO.java @@ -0,0 +1,77 @@ +package com.zt.plat.module.qms.resource.material.dal.dataobject; + +import com.baomidou.mybatisplus.annotation.*; +import com.zt.plat.framework.mybatis.core.dataobject.BusinessBaseDO; +import lombok.*; +/** +* 库存盘点明细 DO +* +* @author 后台管理 +*/ +@TableName("t_mtrl_invt_chk_dtl") +@KeySequence("t_mtrl_invt_chk_dtl_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class MaterialInventoryCheckDetailDO extends BusinessBaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 盘点项id + */ + @TableField("PRN_ID") + private Long parentId; + /** + * 物料实例id + */ + @TableField("INF_ID") + private Long infomationId; + /** + * 是否存在,1-存在,0-不存在 + */ + @TableField("PRST") + private Integer present; + /** + * 物料编号,系统不存在的临时存储起来 + */ + @TableField("INF_CD") + private String infomationCode; + /** + * 当前数量 + */ + @TableField("CRNT_QTY") + private String currentQuantity; + /** + * 状态 + */ + @TableField("STS") + private String status; + /** + * 处置方式,字典配置 + */ + @TableField("DSPL_MTHD") + private String disposalMethod; + /** + * 所属部门 + */ + @TableField("SYS_DEPT_CD") + private String systemDepartmentCode; + /** + * 备注 + */ + @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/MaterialInventoryCheckItemDO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/dataobject/MaterialInventoryCheckItemDO.java new file mode 100644 index 00000000..a706d912 --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/dataobject/MaterialInventoryCheckItemDO.java @@ -0,0 +1,69 @@ +package com.zt.plat.module.qms.resource.material.dal.dataobject; + +import com.baomidou.mybatisplus.annotation.*; +import com.zt.plat.framework.mybatis.core.dataobject.BusinessBaseDO; +import lombok.*; + +import java.math.BigDecimal; +/** +* 库存盘点项 DO +* +* @author 后台管理 +*/ +@TableName("t_mtrl_invt_chk_itm") +@KeySequence("t_mtrl_invt_chk_itm_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class MaterialInventoryCheckItemDO extends BusinessBaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 父id + */ + @TableField("PRN_ID") + private Long parentId; + /** + * 盘点物料大类ID + */ + @TableField("PDT_ID") + private Long productId; + /** + * 应有量 + */ + @TableField("EXPT") + private BigDecimal expected; + /** + * 实有量 + */ + @TableField("ACT") + private BigDecimal actual; + /** + * 差异 + */ + @TableField("DIFF") + private String difference; + /** + * 所属部门 + */ + @TableField("SYS_DEPT_CD") + private String systemDepartmentCode; + /** + * 备注 + */ + @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/MaterialLifecycleDO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/dataobject/MaterialLifecycleDO.java index 524ac648..c139c508 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/dataobject/MaterialLifecycleDO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/dataobject/MaterialLifecycleDO.java @@ -1,5 +1,6 @@ package com.zt.plat.module.qms.resource.material.dal.dataobject; +import cn.hutool.json.JSONObject; import com.baomidou.mybatisplus.annotation.*; import com.zt.plat.framework.mybatis.core.dataobject.BusinessBaseDO; import lombok.*; @@ -91,6 +92,26 @@ public class MaterialLifecycleDO extends BusinessBaseDO { @TableField("FLW_STS") private String flowStatus; /** + * 执行人id + */ + @TableField("OPTR_ID") + private Long operatorId; + /** + * 执行人 + */ + @TableField("OPTR_NAME") + private String operatorName; + /** + * 执行进度 + */ + @TableField("PRG") + private String progress; + /** + * 自定义json配置 + */ + @TableField("CST_CFG") + private String customConfig; + /** * 所属部门 */ @TableField("SYS_DEPT_CD") 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 ea7e696c..93baa9d5 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 @@ -56,7 +56,7 @@ public interface MaterialInfomationMapper extends BaseMapperX selectPageWithPdtInfo(MaterialInfomationPageReqVO reqVO) { MPJLambdaWrapper wrapper = new MPJLambdaWrapperX() .select(MaterialInfomationDO::getId, diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialInventoryCheckDetailMapper.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialInventoryCheckDetailMapper.java new file mode 100644 index 00000000..24b49564 --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialInventoryCheckDetailMapper.java @@ -0,0 +1,33 @@ +package com.zt.plat.module.qms.resource.material.dal.mapper; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; +import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryCheckDetailPageReqVO; +import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialInventoryCheckDetailDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 库存盘点明细 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface MaterialInventoryCheckDetailMapper extends BaseMapperX { + + default PageResult selectPage(MaterialInventoryCheckDetailPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(MaterialInventoryCheckDetailDO::getParentId, reqVO.getParentId()) + .eqIfPresent(MaterialInventoryCheckDetailDO::getInfomationId, reqVO.getInfomationId()) + .eqIfPresent(MaterialInventoryCheckDetailDO::getPresent, reqVO.getPresent()) + .eqIfPresent(MaterialInventoryCheckDetailDO::getInfomationCode, reqVO.getInfomationCode()) + .eqIfPresent(MaterialInventoryCheckDetailDO::getCurrentQuantity, reqVO.getCurrentQuantity()) + .eqIfPresent(MaterialInventoryCheckDetailDO::getStatus, reqVO.getStatus()) + .eqIfPresent(MaterialInventoryCheckDetailDO::getDisposalMethod, reqVO.getDisposalMethod()) + .eqIfPresent(MaterialInventoryCheckDetailDO::getSystemDepartmentCode, reqVO.getSystemDepartmentCode()) + .eqIfPresent(MaterialInventoryCheckDetailDO::getRemark, reqVO.getRemark()) + .betweenIfPresent(MaterialInventoryCheckDetailDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(MaterialInventoryCheckDetailDO::getId)); + } + +} \ 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/MaterialInventoryCheckItemMapper.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialInventoryCheckItemMapper.java new file mode 100644 index 00000000..207c8497 --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialInventoryCheckItemMapper.java @@ -0,0 +1,44 @@ +package com.zt.plat.module.qms.resource.material.dal.mapper; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; +import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.framework.mybatis.core.query.MPJLambdaWrapperX; +import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryCheckItemPageReqVO; +import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryCheckItemRespVO; +import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialInventoryCheckItemDO; +import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialProductDO; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * 库存盘点项 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface MaterialInventoryCheckItemMapper extends BaseMapperX { + + default PageResult selectPage(MaterialInventoryCheckItemPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(MaterialInventoryCheckItemDO::getParentId, reqVO.getParentId()) + .eqIfPresent(MaterialInventoryCheckItemDO::getProductId, reqVO.getProductId()) + .eqIfPresent(MaterialInventoryCheckItemDO::getExpected, reqVO.getExpected()) + .eqIfPresent(MaterialInventoryCheckItemDO::getActual, reqVO.getActual()) + .eqIfPresent(MaterialInventoryCheckItemDO::getDifference, reqVO.getDifference()) + .eqIfPresent(MaterialInventoryCheckItemDO::getSystemDepartmentCode, reqVO.getSystemDepartmentCode()) + .eqIfPresent(MaterialInventoryCheckItemDO::getRemark, reqVO.getRemark()) + .betweenIfPresent(MaterialInventoryCheckItemDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(MaterialInventoryCheckItemDO::getId)); + } + + default List selectListWithPdtInfoByLfcId(Long lfcId) { + MPJLambdaWrapperX wrapper = new MPJLambdaWrapperX() + .selectAll(MaterialInventoryCheckItemDO.class) + .selectAs(MaterialProductDO::getName, MaterialInventoryCheckItemRespVO::getProductName) + .leftJoin(MaterialProductDO.class, MaterialProductDO::getId, MaterialInventoryCheckItemDO::getProductId) + .eq(MaterialInventoryCheckItemDO::getParentId, lfcId); + return selectJoinList(MaterialInventoryCheckItemRespVO.class, wrapper); + } +} \ 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/MaterialLifecycleDetailMapper.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialLifecycleDetailMapper.java index b4aa7f56..aa4a0519 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialLifecycleDetailMapper.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialLifecycleDetailMapper.java @@ -118,6 +118,7 @@ public interface MaterialLifecycleDetailMapper extends BaseMapperX getListByIds(List ids) { + if (CollUtil.isEmpty(ids)) return List.of(); return materialBatchMapper.selectByIds(ids); } @@ -401,7 +400,7 @@ public class MaterialBatchServiceImpl implements MaterialBatchService { List batches = pageResult.getList(); if (CollUtil.isNotEmpty(batches)) { List pdtIds = batches.stream().map(MaterialBatchRespVO::getProductId).toList(); - List pdts = materialProductService.getMaterialProductListByPdtIds(pdtIds); + List pdts = materialProductService.getListByIds(pdtIds); Map productDOMapById = pdts.stream().collect(Collectors.toMap(MaterialProductDO::getId, Function.identity())); List topCategories = materialProductService.getTopCategoriesByPdtIds(pdtIds); batches.forEach(batch -> { diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInfomationService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInfomationService.java index f98cd29a..398a7356 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInfomationService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInfomationService.java @@ -167,7 +167,6 @@ public interface MaterialInfomationService { * * @param locationId 位置id * @param reqQuantity 数量 - * @param gongduanId 工段id * @param product 大类信息 * @param batch 批次信息 * @return 物料信息 diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInfomationServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInfomationServiceImpl.java index 502f0fb4..8a179106 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInfomationServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInfomationServiceImpl.java @@ -351,7 +351,7 @@ public class MaterialInfomationServiceImpl implements MaterialInfomationService List infomations = this.getMaterialInfomationsByIds(infomationIds); if (CollUtil.isEmpty(infomations)) return; List productIds = infomations.stream().map(MaterialInfomationDO::getProductId).toList(); - List products = materialProductService.getMaterialProductListByPdtIds(productIds); + List products = materialProductService.getListByIds(productIds); if (CollUtil.isEmpty(products)) return; Map productByIdMap = products.stream().collect(Collectors.toMap(MaterialProductDO::getId, Function.identity())); for (MaterialInfomationDO infomation : infomations) { @@ -478,7 +478,7 @@ public class MaterialInfomationServiceImpl implements MaterialInfomationService private void enrichProductInfo(List list) { List productIds = list.stream().map(MaterialInfomationLedgerRespVO::getProductId).toList(); - List productList = materialProductService.getMaterialProductListByPdtIds(productIds); + List productList = materialProductService.getListByIds(productIds); if (CollUtil.isEmpty(productList)) return; Map productMap = productList.stream().collect(Collectors.toMap(MaterialProductDO::getId, Function.identity())); list.forEach(item -> { diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryCheckDetailService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryCheckDetailService.java new file mode 100644 index 00000000..dbb3af51 --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryCheckDetailService.java @@ -0,0 +1,64 @@ +package com.zt.plat.module.qms.resource.material.service; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryCheckDetailPageReqVO; +import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryCheckDetailRespVO; +import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryCheckDetailSaveReqVO; +import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialInventoryCheckDetailDO; +import jakarta.validation.Valid; + +import java.util.List; + +/** + * 库存盘点明细 Service 接口 + * + * @author 后台管理 + */ +public interface MaterialInventoryCheckDetailService { + + /** + * 创建库存盘点明细 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + MaterialInventoryCheckDetailRespVO createMaterialInventoryCheckDetail(@Valid MaterialInventoryCheckDetailSaveReqVO createReqVO); + + /** + * 更新库存盘点明细 + * + * @param updateReqVO 更新信息 + */ + void updateMaterialInventoryCheckDetail(@Valid MaterialInventoryCheckDetailSaveReqVO updateReqVO); + + /** + * 删除库存盘点明细 + * + * @param id 编号 + */ + void deleteMaterialInventoryCheckDetail(Long id); + + /** + * 批量删除库存盘点明细 + * + * @param ids 编号 + */ + void deleteMaterialInventoryCheckDetailListByIds(List ids); + + /** + * 获得库存盘点明细 + * + * @param id 编号 + * @return 库存盘点明细 + */ + MaterialInventoryCheckDetailDO getMaterialInventoryCheckDetail(Long id); + + /** + * 获得库存盘点明细分页 + * + * @param pageReqVO 分页查询 + * @return 库存盘点明细分页 + */ + PageResult getMaterialInventoryCheckDetailPage(MaterialInventoryCheckDetailPageReqVO pageReqVO); + +} \ 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/MaterialInventoryCheckDetailServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryCheckDetailServiceImpl.java new file mode 100644 index 00000000..b0c58317 --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryCheckDetailServiceImpl.java @@ -0,0 +1,89 @@ +package com.zt.plat.module.qms.resource.material.service; + +import cn.hutool.core.collection.CollUtil; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.util.object.BeanUtils; +import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryCheckDetailPageReqVO; +import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryCheckDetailRespVO; +import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryCheckDetailSaveReqVO; +import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialInventoryCheckDetailDO; +import com.zt.plat.module.qms.resource.material.dal.mapper.MaterialInventoryCheckDetailMapper; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import java.util.List; + +import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.module.qms.enums.ErrorCodeConstants.MATERIAL_INVENTORY_CHECK_DETAIL_NOT_EXISTS; + +/** + * 库存盘点明细 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class MaterialInventoryCheckDetailServiceImpl implements MaterialInventoryCheckDetailService { + + @Resource + private MaterialInventoryCheckDetailMapper materialInventoryCheckDetailMapper; + + @Override + public MaterialInventoryCheckDetailRespVO createMaterialInventoryCheckDetail(MaterialInventoryCheckDetailSaveReqVO createReqVO) { + // 插入 + MaterialInventoryCheckDetailDO materialInventoryCheckDetail = BeanUtils.toBean(createReqVO, MaterialInventoryCheckDetailDO.class); + materialInventoryCheckDetailMapper.insert(materialInventoryCheckDetail); + // 返回 + return BeanUtils.toBean(materialInventoryCheckDetail, MaterialInventoryCheckDetailRespVO.class); + } + + @Override + public void updateMaterialInventoryCheckDetail(MaterialInventoryCheckDetailSaveReqVO updateReqVO) { + // 校验存在 + validateMaterialInventoryCheckDetailExists(updateReqVO.getId()); + // 更新 + MaterialInventoryCheckDetailDO updateObj = BeanUtils.toBean(updateReqVO, MaterialInventoryCheckDetailDO.class); + materialInventoryCheckDetailMapper.updateById(updateObj); + } + + @Override + public void deleteMaterialInventoryCheckDetail(Long id) { + // 校验存在 + validateMaterialInventoryCheckDetailExists(id); + // 删除 + materialInventoryCheckDetailMapper.deleteById(id); + } + + @Override + public void deleteMaterialInventoryCheckDetailListByIds(List ids) { + // 校验存在 + validateMaterialInventoryCheckDetailExists(ids); + // 删除 + materialInventoryCheckDetailMapper.deleteByIds(ids); + } + + private void validateMaterialInventoryCheckDetailExists(List ids) { + List list = materialInventoryCheckDetailMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(MATERIAL_INVENTORY_CHECK_DETAIL_NOT_EXISTS); + } + } + + private void validateMaterialInventoryCheckDetailExists(Long id) { + if (materialInventoryCheckDetailMapper.selectById(id) == null) { + throw exception(MATERIAL_INVENTORY_CHECK_DETAIL_NOT_EXISTS); + } + } + + @Override + public MaterialInventoryCheckDetailDO getMaterialInventoryCheckDetail(Long id) { + return materialInventoryCheckDetailMapper.selectById(id); + } + + @Override + public PageResult getMaterialInventoryCheckDetailPage(MaterialInventoryCheckDetailPageReqVO pageReqVO) { + return materialInventoryCheckDetailMapper.selectPage(pageReqVO); + } + +} \ 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/MaterialInventoryCheckItemService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryCheckItemService.java new file mode 100644 index 00000000..0fd78734 --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryCheckItemService.java @@ -0,0 +1,85 @@ +package com.zt.plat.module.qms.resource.material.service; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryCheckItemPageReqVO; +import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryCheckItemRespVO; +import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryCheckItemSaveReqVO; +import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialInventoryCheckItemDO; +import jakarta.validation.Valid; + +import java.util.List; + +/** + * 库存盘点项 Service 接口 + * + * @author 后台管理 + */ +public interface MaterialInventoryCheckItemService { + + /** + * 创建库存盘点项 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + MaterialInventoryCheckItemRespVO createMaterialInventoryCheckItem(@Valid MaterialInventoryCheckItemSaveReqVO createReqVO); + + /** + * 更新库存盘点项 + * + * @param updateReqVO 更新信息 + */ + void updateMaterialInventoryCheckItem(@Valid MaterialInventoryCheckItemSaveReqVO updateReqVO); + + /** + * 删除库存盘点项 + * + * @param id 编号 + */ + void deleteMaterialInventoryCheckItem(Long id); + + /** + * 批量删除库存盘点项 + * + * @param ids 编号 + */ + void deleteMaterialInventoryCheckItemListByIds(List ids); + + /** + * 获得库存盘点项 + * + * @param id 编号 + * @return 库存盘点项 + */ + MaterialInventoryCheckItemDO getMaterialInventoryCheckItem(Long id); + + /** + * 获得库存盘点项分页 + * + * @param pageReqVO 分页查询 + * @return 库存盘点项分页 + */ + PageResult getMaterialInventoryCheckItemPage(MaterialInventoryCheckItemPageReqVO pageReqVO); + + /** + * 批量保存库存盘点项 + * + * @param checkItemDOS 库存盘点项 + */ + void saveBatch(List checkItemDOS); + + /** + * 根据盘点流程编号,查询盘点项列表 + * + * @param lfcId 盘点记录编号 + * @return 盘点项列表 + */ + List getListWithPdtInfoByLfcId(Long lfcId); + + /** + * 根据盘点流程编号,删除盘点项 + * + * @param lfcId 盘点记录编号 + */ + void deleteItemsByLfcId(Long lfcId); +} \ 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/MaterialInventoryCheckItemServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryCheckItemServiceImpl.java new file mode 100644 index 00000000..f5be327c --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryCheckItemServiceImpl.java @@ -0,0 +1,107 @@ +package com.zt.plat.module.qms.resource.material.service; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.util.object.BeanUtils; +import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryCheckItemPageReqVO; +import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryCheckItemRespVO; +import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryCheckItemSaveReqVO; +import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialInventoryCheckItemDO; +import com.zt.plat.module.qms.resource.material.dal.mapper.MaterialInventoryCheckItemMapper; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import java.util.List; + +import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.module.qms.enums.ErrorCodeConstants.MATERIAL_INVENTORY_CHECK_ITEM_NOT_EXISTS; + +/** + * 库存盘点项 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class MaterialInventoryCheckItemServiceImpl implements MaterialInventoryCheckItemService { + + @Resource + private MaterialInventoryCheckItemMapper materialInventoryCheckItemMapper; + + @Override + public MaterialInventoryCheckItemRespVO createMaterialInventoryCheckItem(MaterialInventoryCheckItemSaveReqVO createReqVO) { + // 插入 + MaterialInventoryCheckItemDO materialInventoryCheckItem = BeanUtils.toBean(createReqVO, MaterialInventoryCheckItemDO.class); + materialInventoryCheckItemMapper.insert(materialInventoryCheckItem); + // 返回 + return BeanUtils.toBean(materialInventoryCheckItem, MaterialInventoryCheckItemRespVO.class); + } + + @Override + public void updateMaterialInventoryCheckItem(MaterialInventoryCheckItemSaveReqVO updateReqVO) { + // 校验存在 + validateMaterialInventoryCheckItemExists(updateReqVO.getId()); + // 更新 + MaterialInventoryCheckItemDO updateObj = BeanUtils.toBean(updateReqVO, MaterialInventoryCheckItemDO.class); + materialInventoryCheckItemMapper.updateById(updateObj); + } + + @Override + public void deleteMaterialInventoryCheckItem(Long id) { + // 校验存在 + validateMaterialInventoryCheckItemExists(id); + // 删除 + materialInventoryCheckItemMapper.deleteById(id); + } + + @Override + public void deleteMaterialInventoryCheckItemListByIds(List ids) { + // 校验存在 + validateMaterialInventoryCheckItemExists(ids); + // 删除 + materialInventoryCheckItemMapper.deleteByIds(ids); + } + + private void validateMaterialInventoryCheckItemExists(List ids) { + List list = materialInventoryCheckItemMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(MATERIAL_INVENTORY_CHECK_ITEM_NOT_EXISTS); + } + } + + private void validateMaterialInventoryCheckItemExists(Long id) { + if (materialInventoryCheckItemMapper.selectById(id) == null) { + throw exception(MATERIAL_INVENTORY_CHECK_ITEM_NOT_EXISTS); + } + } + + @Override + public MaterialInventoryCheckItemDO getMaterialInventoryCheckItem(Long id) { + return materialInventoryCheckItemMapper.selectById(id); + } + + @Override + public PageResult getMaterialInventoryCheckItemPage(MaterialInventoryCheckItemPageReqVO pageReqVO) { + return materialInventoryCheckItemMapper.selectPage(pageReqVO); + } + + @Override + public void saveBatch(List checkItemDOS) { + if (CollUtil.isEmpty(checkItemDOS)) return; + materialInventoryCheckItemMapper.insertBatch(checkItemDOS); + } + + @Override + public List getListWithPdtInfoByLfcId(Long lfcId) { + return materialInventoryCheckItemMapper.selectListWithPdtInfoByLfcId(lfcId); + } + + @Override + public void deleteItemsByLfcId(Long lfcId) { + materialInventoryCheckItemMapper.delete(Wrappers.lambdaQuery(MaterialInventoryCheckItemDO.class) + .eq(MaterialInventoryCheckItemDO::getParentId, lfcId)); + } + +} \ 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/MaterialInventoryOutboundServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryOutboundServiceImpl.java index 3caf7642..51e2bb66 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryOutboundServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryOutboundServiceImpl.java @@ -2,7 +2,6 @@ package com.zt.plat.module.qms.resource.material.service; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.map.MapUtil; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.zt.plat.framework.common.exception.ServiceException; import com.zt.plat.framework.common.pojo.CommonResult; @@ -109,7 +108,7 @@ public class MaterialInventoryOutboundServiceImpl implements MaterialInventoryOu // 如果是危化品领用出库,保存使用记录 List pdtIds = infs.stream().map(MaterialInfomationDO::getProductId).collect(Collectors.toSet()).stream().toList(); if (MaterialOutboundType.receive_outbound.getName().equals(createReqVO.getBusinessType())) { - List pdts = materialProductService.getMaterialProductListByPdtIds(pdtIds); + List pdts = materialProductService.getListByIds(pdtIds); Map productDOMapById = pdts.stream().collect(Collectors.toMap(MaterialProductDO::getId, Function.identity())); List hzrdInfs = infs.stream().filter(inf -> productDOMapById.get(inf.getProductId()).getHazardous().equals(1)).toList(); if (CollUtil.isNotEmpty(hzrdInfs)) { @@ -180,7 +179,7 @@ public class MaterialInventoryOutboundServiceImpl implements MaterialInventoryOu String outboundType = switch (flowType) { case return_material -> MaterialOutboundType.return_outbound.getName(); case exchange_material -> MaterialOutboundType.replace_outbound.getName(); - case acceptance, make_apply, verify_calibrate -> null; + case acceptance, make_apply, verify_calibrate, inventory_check -> null; }; MaterialInventoryOutboundDO outboundDO = new MaterialInventoryOutboundDO(); outboundDO.setApplyUserId(lifecycleDO.getApplyUserId()) @@ -202,7 +201,7 @@ public class MaterialInventoryOutboundServiceImpl implements MaterialInventoryOu List outboundRespVOS = materialInventoryOutboundMapper.selectListUsageStatisticsMainDataByDept(reqVO); if (CollUtil.isEmpty(outboundRespVOS)) return outboundRespVOS; List pdtIds = outboundRespVOS.stream().map(MaterialInventoryOutboundRespVO::getProductId).toList(); - List products = materialProductService.getMaterialProductListByPdtIds(pdtIds); + List products = materialProductService.getListByIds(pdtIds); if (CollUtil.isEmpty(products)) return outboundRespVOS; Map productMapById = products.stream().collect(Collectors.toMap(MaterialProductDO::getId, Function.identity())); for (MaterialInventoryOutboundRespVO outboundRespVO : outboundRespVOS) { diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialLifecycleDetailServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialLifecycleDetailServiceImpl.java index f32609a1..1437f5f9 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialLifecycleDetailServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialLifecycleDetailServiceImpl.java @@ -44,9 +44,6 @@ public class MaterialLifecycleDetailServiceImpl implements MaterialLifecycleDeta @Autowired private MaterialProductService materialProductService; - @Autowired - private MaterialInventoryInboundService materialInventoryInboundService; - @Override public MaterialLifecycleDetailRespVO createMaterialLifecycleDetail(MaterialLifecycleDetailSaveReqVO createReqVO) { // 插入 @@ -152,7 +149,7 @@ public class MaterialLifecycleDetailServiceImpl implements MaterialLifecycleDeta List batOrGongDOS = materialBatchService.getListByIds(batOrGongIds); if (CollUtil.isEmpty(batOrGongDOS)) return detailRespVOS; Set pdtIds = batOrGongDOS.stream().map(MaterialBatchDO::getProductId).collect(Collectors.toSet()); - List products = materialProductService.getMaterialProductListByPdtIds(new ArrayList<>(pdtIds)); + List products = materialProductService.getListByIds(new ArrayList<>(pdtIds)); if (CollUtil.isEmpty(products)) return detailRespVOS; Map batOrGongMapById = batOrGongDOS.stream().collect(Collectors.toMap(MaterialBatchDO::getId, Function.identity())); Map productMapById = products.stream().collect(Collectors.toMap(MaterialProductDO::getId, Function.identity())); @@ -174,6 +171,7 @@ public class MaterialLifecycleDetailServiceImpl implements MaterialLifecycleDeta .setProductId(productDO.getId()) .setProductName(productDO.getName()) .setProductCode(productDO.getCode()) + .setProductSpecification(productDO.getSpecification()) .setProductModelNo(productDO.getModelNo()); } return detailRespVOS; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialLifecycleServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialLifecycleServiceImpl.java index 4852fe12..f8daac90 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialLifecycleServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialLifecycleServiceImpl.java @@ -11,17 +11,16 @@ import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; import com.zt.plat.framework.security.core.LoginUser; import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils; -import com.zt.plat.module.bpm.api.event.BpmProcessInstanceStatusEvent; -import com.zt.plat.module.bpm.api.event.BpmProcessInstanceStatusEventListener; import com.zt.plat.module.bpm.api.task.BpmProcessInstanceApi; import com.zt.plat.module.bpm.api.task.BpmTaskApi; import com.zt.plat.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; import com.zt.plat.module.bpm.api.task.dto.BpmTaskApproveReqDTO; import com.zt.plat.module.bpm.api.task.dto.BpmTaskRespDTO; -import com.zt.plat.module.bpm.enums.task.BpmProcessInstanceStatusEnum; import com.zt.plat.module.infra.api.businessfile.dto.BusinessFileWithUrlRespDTO; import com.zt.plat.module.qms.api.task.BMPCallbackInterface; import com.zt.plat.module.qms.api.task.dto.QmsBpmDTO; +import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigWarehouseLocationDO; +import com.zt.plat.module.qms.business.config.service.ConfigWarehouseLocationService; import com.zt.plat.module.qms.common.data.service.DataKeyCheckService; import com.zt.plat.module.qms.common.dic.dal.dataobject.DictionaryBusinessDO; import com.zt.plat.module.qms.common.dic.service.DictionaryBusinessService; @@ -36,8 +35,13 @@ import com.zt.plat.module.qms.resource.material.dal.dataobject.*; import com.zt.plat.module.qms.resource.material.dal.mapper.MaterialLifecycleMapper; import com.zt.plat.module.qms.resource.material.enums.MaterialAcceptStatus; import com.zt.plat.module.qms.resource.material.enums.MaterialFlowType; +import com.zt.plat.module.system.api.dept.DeptApi; +import com.zt.plat.module.system.api.dept.dto.DeptRespDTO; +import com.zt.plat.module.system.api.user.AdminUserApi; +import com.zt.plat.module.system.api.user.dto.AdminUserRespDTO; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; +import org.jspecify.annotations.NonNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -94,6 +98,14 @@ public class MaterialLifecycleServiceImpl implements MaterialLifecycleService , private MaterialInfomationService materialInfomationService; @Autowired private MaterialInventoryOutboundService materialInventoryOutboundService; + @Autowired + private DeptApi deptApi; + @Autowired + private ConfigWarehouseLocationService configWarehouseLocationService; + @Autowired + private AdminUserApi adminUserApi; + @Autowired + private MaterialInventoryCheckItemService materialInventoryCheckItemService; @Transactional @Override @@ -109,29 +121,78 @@ public class MaterialLifecycleServiceImpl implements MaterialLifecycleService , .setApplyDepartment(loginUser.getVisitDeptName()) .setApplyDepartmentId(loginUser.getVisitDeptId()) .setApplyTime(LocalDateTime.now()); - mtrlLfc.setFlowStatus(QmsCommonConstant.NOT_START); + mtrlLfc.setFlowStatus(QmsCommonConstant.NOT_START).setProgress(QmsCommonConstant.NOT_START); // 插入 materialLifecycleMapper.insert(mtrlLfc); + MaterialFlowType flowType = MaterialFlowType.fromName(mtrlLfc.getBusinessType()); List detailList = createReqVO.getDetailList(); - if (CollUtil.isEmpty(detailList)) - return BeanUtils.toBean(mtrlLfc, MaterialLifecycleRespVO.class); + if (flowType != MaterialFlowType.inventory_check) { + if (CollUtil.isEmpty(detailList)) + return BeanUtils.toBean(mtrlLfc, MaterialLifecycleRespVO.class); + } // 根据业务类型组装明细 List detailDOS = getLifecycleDetailDOSByBusinessType(detailList, mtrlLfc); materialLifecycleDetailService.saveBatch(detailDOS); - // 如果有退换货,锁定相关退换货资源 - if (MaterialFlowType.return_material.getName().equals(mtrlLfc.getBusinessType()) - || MaterialFlowType.exchange_material.getName().equals(mtrlLfc.getBusinessType())) { - lockReturnExchangeResources(detailDOS, LockType.lock); - } - // 如果有物料检定,需要锁定检定数量 - if (MaterialFlowType.verify_calibrate.getName().equals(mtrlLfc.getBusinessType())) { - lockVerifyCalibrateResources(detailDOS, LockType.lock); + switch (flowType) { + case return_material, exchange_material -> lockReturnExchangeResources(detailDOS, LockType.lock); + case verify_calibrate -> lockVerifyCalibrateResources(detailDOS, LockType.lock); + case inventory_check -> { + List productIds = validProductAndOperator(createReqVO); + JSONObject customConfigObj = getCheckCustomConfigObj(createReqVO); + mtrlLfc.setCustomConfig(customConfigObj.toJSONString()); + materialLifecycleMapper.updateById(mtrlLfc); + List checkItemDOS = getCheckItemDOS(productIds, mtrlLfc.getId()); + materialInventoryCheckItemService.saveBatch(checkItemDOS); + + } } + return BeanUtils.toBean(mtrlLfc, MaterialLifecycleRespVO.class); } + private List validProductAndOperator(MaterialLifecycleSaveReqVO createReqVO) { + List productIds = createReqVO.getProductIds(); + List products = materialProductService.getListByIds(productIds); + if (CollUtil.isEmpty(products) || products.size() != productIds.size()) + throw new ServiceException(1_032_160_000, "物料大类不存在或与传入的数量不匹配"); + Long operatorId = createReqVO.getOperatorId(); + CommonResult user = adminUserApi.getUser(operatorId); + if (user.getData() == null) throw new ServiceException(1_032_160_000, "执行人不存在"); + return productIds; + } + + private List getCheckItemDOS(List productIds, Long lfcId) { + + Map stockQuantityByPdtIds = materialProductService.getStockQuantityByPdtIds(productIds); + return productIds.stream().map(pdtId -> + new MaterialInventoryCheckItemDO() + .setParentId(lfcId) + .setProductId(pdtId) + .setExpected(BigDecimal.valueOf(stockQuantityByPdtIds.get(pdtId)))).toList(); + } + + private JSONObject getCheckCustomConfigObj(MaterialLifecycleSaveReqVO createReqVO) { + List departmentIds = createReqVO.getDepartmentIds(); + List warehouseIds = createReqVO.getWarehouseIds(); + if (CollUtil.isEmpty(departmentIds) || CollUtil.isEmpty(warehouseIds)) + throw new ServiceException(1_032_160_000, "部门、仓库不能为空"); + // 校验仓库、部门存在 + CommonResult> deptListResult = deptApi.getDeptList(departmentIds); + List depts = deptListResult.getData(); + if (CollUtil.isEmpty(depts) || depts.size() != departmentIds.size()) + throw new ServiceException(1_032_160_000, "部门不存在或与传入的数量不匹配"); + List warehouseLocations = configWarehouseLocationService.getListByIds(warehouseIds); + if (CollUtil.isEmpty(warehouseLocations) || warehouseLocations.size() != warehouseIds.size()) + throw new ServiceException(1_032_160_000, "仓库不存在或与传入的数量不匹配"); + + JSONObject customConfigObj = new JSONObject(); + customConfigObj.put("departmentIds", departmentIds); + customConfigObj.put("warehouseIds", warehouseIds); + return customConfigObj; + } + private void lockVerifyCalibrateResources(List detailDOS, LockType lockType) { // 批次 List batches = detailDOS.stream().filter(detail -> detail.getBatchId() != null).toList(); @@ -186,6 +247,7 @@ public class MaterialLifecycleServiceImpl implements MaterialLifecycleService , exchange_material -> getLifecycleDetailDOSByReturnExchangeMaterial(detailList, mtrlLfc); case verify_calibrate -> getLifecycleDetailDOSByVerifyCalibrate(detailList, mtrlLfc); + case inventory_check -> List.of(); }; } @@ -212,25 +274,40 @@ public class MaterialLifecycleServiceImpl implements MaterialLifecycleService , MaterialLifecycleDO lifecycleDO = materialLifecycleMapper.selectById(reqId); if (lifecycleDO == null) throw exception(MATERIAL_LIFECYCLE_NOT_EXISTS); if (lifecycleDO.getSubmitStatus() == 1) throw new ServiceException(1_032_160_000, "流程已提交,不可修改"); - List detailList = updateReqVO.getDetailList(); // 更新 MaterialLifecycleDO mtrlLfc = BeanUtils.toBean(updateReqVO, MaterialLifecycleDO.class); + MaterialFlowType flowType = MaterialFlowType.fromName(mtrlLfc.getBusinessType()); + if (flowType == MaterialFlowType.inventory_check) { + List productIds = validProductAndOperator(updateReqVO); + // 删除盘点项 + materialInventoryCheckItemService.deleteItemsByLfcId(reqId); + + JSONObject customConfigObj = getCheckCustomConfigObj(updateReqVO); + mtrlLfc.setCustomConfig(customConfigObj.toJSONString()); + materialLifecycleMapper.updateById(mtrlLfc); + List checkItemDOS = getCheckItemDOS(productIds, mtrlLfc.getId()); + materialInventoryCheckItemService.saveBatch(checkItemDOS); + return; + } + List detailList = updateReqVO.getDetailList(); if (CollUtil.isEmpty(detailList)) { materialLifecycleMapper.updateById(mtrlLfc); return; } - // 删除原来的明细 - materialLifecycleDetailService.deleteLifecycleDetailListByLfcId(reqId); + List oriDetailList = materialLifecycleDetailService.getDetailListByLfcId(reqId); // 释放原来退换货资源 - boolean isReturnExchangeMaterial = MaterialFlowType.return_material.getName().equals(mtrlLfc.getBusinessType()) - || MaterialFlowType.exchange_material.getName().equals(mtrlLfc.getBusinessType()); + boolean isReturnExchangeMaterial = + MaterialFlowType.return_material == flowType || MaterialFlowType.exchange_material == flowType; if (isReturnExchangeMaterial) lockReturnExchangeResources(oriDetailList, LockType.unlock); // 释放原理物料检定资源 - boolean isVerifyCalibrate = MaterialFlowType.verify_calibrate.getName().equals(mtrlLfc.getBusinessType()); + boolean isVerifyCalibrate = MaterialFlowType.verify_calibrate == flowType; if (isVerifyCalibrate) lockVerifyCalibrateResources(oriDetailList, LockType.unlock); + // 删除原来的明细 + materialLifecycleDetailService.deleteLifecycleDetailListByLfcId(reqId); + List detailDOS = getLifecycleDetailDOSByBusinessType(detailList, mtrlLfc); // 保存新的明细 materialLifecycleDetailService.saveBatch(detailDOS); @@ -256,7 +333,7 @@ public class MaterialLifecycleServiceImpl implements MaterialLifecycleService , private List getLifecycleDetailDOSByMakeApply(List detailList, MaterialLifecycleDO mtrlLfc) { List pdtIds = detailList.stream().map(MaterialLifecycleDetailSaveReqVO::getProductId).toList(); - List products = materialProductService.getMaterialProductListByPdtIds(pdtIds); + List products = materialProductService.getListByIds(pdtIds); if (CollUtil.isEmpty(products) || products.size() != pdtIds.size()) throw new ServiceException(1_032_160_000, "物料大类不存在或与传入的数量不匹配"); @@ -504,6 +581,18 @@ public class MaterialLifecycleServiceImpl implements MaterialLifecycleService , respVO.setDetailList(detailRespVOS); CommonResult> result = businessFileService.getBusinessFileList(id); respVO.setBusinessFileRet(result.getData()); + MaterialFlowType flowType = MaterialFlowType.fromName(lifecycleDO.getBusinessType()); + if (flowType == MaterialFlowType.inventory_check) { + cn.hutool.json.JSONObject customConfig = JSONUtil.parseObj(lifecycleDO.getCustomConfig()); + cn.hutool.json.JSONArray departmentIds = customConfig.getJSONArray("departmentIds"); + cn.hutool.json.JSONArray warehouseIds = customConfig.getJSONArray("warehouseIds"); + if (CollUtil.isNotEmpty(departmentIds)) + respVO.setDepartmentIds(departmentIds.toList(Long.class)); + if (CollUtil.isNotEmpty(warehouseIds)) + respVO.setWarehouseIds(warehouseIds.toList(Long.class)); + List checkItems = materialInventoryCheckItemService.getListWithPdtInfoByLfcId(lifecycleDO.getId()); + respVO.setCheckItems(checkItems); + } return respVO; } @@ -658,9 +747,13 @@ public class MaterialLifecycleServiceImpl implements MaterialLifecycleService , // 流程key 根据业务类型动态获取 List items = dictionaryBusinessService.queryDictItemsByKey(MaterialConstants.DICT_MATERIAL_FLOW_TYPE); if (CollUtil.isEmpty(items)) throw new ServiceException(1_032_160_000, "流程配置不存在"); - Map processKeyMap = items.stream().collect(Collectors.toMap(DictionaryBusinessDO::getName, DictionaryBusinessDO::getCustomConfig)); + Map processKeyMap = items.stream() + .filter(item -> StrUtil.isNotEmpty(item.getName()) && StrUtil.isNotEmpty(item.getCustomConfig())) + .collect(Collectors.toMap(DictionaryBusinessDO::getName, DictionaryBusinessDO::getCustomConfig)); MaterialFlowType materialFlowType = MaterialFlowType.fromName(lifecycleDO.getBusinessType()); - Object processKey = JSONUtil.parseObj(processKeyMap.get(materialFlowType.getName())).get("processKey"); + String flowItem = processKeyMap.get(materialFlowType.getName()); + if (flowItem == null) throw new ServiceException(1_032_160_000, String.format("【%s】流程配置不存在", materialFlowType.getName())); + Object processKey = JSONUtil.parseObj(flowItem).get("processKey"); if (processKey == null) throw new ServiceException(1_032_160_000, "流程配置 key 不存在"); reqDTO.setProcessDefinitionKey(processKey.toString()); diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialProductService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialProductService.java index 522ef2ed..be23a606 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialProductService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialProductService.java @@ -9,6 +9,7 @@ import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialProductDO import jakarta.validation.Valid; import java.util.List; +import java.util.Map; /** * 物料大类 Service 接口 @@ -115,7 +116,7 @@ public interface MaterialProductService { * @param pdtIds id * @return 物料数据 */ - List getMaterialProductListByPdtIds(List pdtIds); + List getListByIds(List pdtIds); /** * 更新物料大类库存预警等级 @@ -132,6 +133,14 @@ public interface MaterialProductService { */ MaterialProductRespVO getMaterialProductInfoWithFiles(Long id); + /** + * 获取物料大类库存数量 + * + * @param mtrlIds 大类ids + * @return 物料数据 + */ + Map getStockQuantityByPdtIds(List mtrlIds); + /** * 获取顶级分类 * diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialProductServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialProductServiceImpl.java index 1a2eb9dc..520e5d08 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialProductServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialProductServiceImpl.java @@ -359,7 +359,9 @@ public class MaterialProductServiceImpl implements MaterialProductService { .likeIfPresent(MaterialProductDO::getName, queryVO.getName()) .and(StrUtil.isNotEmpty(queryVO.getCategoryCustomConfig()),wrapper -> wrapper.eq(MaterialProductDO::getNodeType, DataTypeConstant.DATA_TYPE_CATEGORY) - .like(MaterialProductDO::getCustomConfig, queryVO.getCategoryCustomConfig())); + .like(MaterialProductDO::getCustomConfig, queryVO.getCategoryCustomConfig())) + .orderByAsc(MaterialProductDO::getSortNo) + .orderByAsc(MaterialProductDO::getId); List mtrlDos = materialProductMapper.selectList(wrapperX); if (CollUtil.isEmpty(mtrlDos)) return List.of(); @@ -400,7 +402,7 @@ public class MaterialProductServiceImpl implements MaterialProductService { } @Override - public List getMaterialProductListByPdtIds(List pdtIds) { + public List getListByIds(List pdtIds) { return materialProductMapper.selectByIds(pdtIds); } @@ -449,6 +451,11 @@ public class MaterialProductServiceImpl implements MaterialProductService { return respVO; } + @Override + public Map getStockQuantityByPdtIds(List mtrlIds) { + return materialProductMapper.getStockQuantityByPdtIds(mtrlIds); + } + @Override public List getTopCategoriesByPdtIds(List pdtIds) { List productDOS = materialProductMapper.selectByIds(pdtIds); diff --git a/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialInventoryCheckDetailMapper.xml b/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialInventoryCheckDetailMapper.xml new file mode 100644 index 00000000..3a412d56 --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialInventoryCheckDetailMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialInventoryCheckItemMapper.xml b/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialInventoryCheckItemMapper.xml new file mode 100644 index 00000000..5fca0edc --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialInventoryCheckItemMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file