Browse Source

pms功能优化 根据 bomid 查询物料列表

zhangcl 4 months ago
parent
commit
e75ed12092

+ 0 - 4
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotdevicebom/IotDeviceBomController.java

@@ -8,11 +8,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
 import cn.iocoder.yudao.module.pms.controller.admin.iotdevicebom.vo.*;
-import cn.iocoder.yudao.module.pms.controller.admin.iotmaterialgroup.vo.IotMaterialGroupListReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.iotmaterialgroup.vo.IotMaterialGroupRespVO;
-import cn.iocoder.yudao.module.pms.controller.admin.iotmaterialgroup.vo.MaterialGroupSimpleRespVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotdevicebom.IotDeviceBomDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.iotmaterialgroup.IotMaterialGroupDO;
 import cn.iocoder.yudao.module.pms.service.iotdevicebom.IotDeviceBomService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;

+ 22 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotdevicematerial/IotDeviceMaterialController.java

@@ -1,15 +1,21 @@
 package cn.iocoder.yudao.module.pms.controller.admin.iotdevicematerial;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+import cn.iocoder.yudao.module.pms.controller.admin.iotdevicecategorytemplateattrs.vo.IotDeviceCategoryTemplateAttrsRespVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotdevicematerial.vo.IotDeviceMaterialPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotdevicematerial.vo.IotDeviceMaterialRespVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotdevicematerial.vo.IotDeviceMaterialSaveReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotmaterial.vo.IotMaterialPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotmaterial.vo.IotMaterialRespVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotdevicecategorytemplateattrs.IotDeviceCategoryTemplateAttrsDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotdevicematerial.IotDeviceMaterialDO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotmaterial.IotMaterialDO;
 import cn.iocoder.yudao.module.pms.service.iotdevicematerial.IotDeviceMaterialService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
@@ -77,6 +83,14 @@ public class IotDeviceMaterialController {
         return success(BeanUtils.toBean(pageResult, IotDeviceMaterialRespVO.class));
     }
 
+    @GetMapping("/list-by-bom-id")
+    @Operation(summary = "根据设备分类bom节点id获取物料列表")
+    @PreAuthorize("@ss.hasPermission('pms:iot-device-material:query')")
+    public CommonResult<PageResult<IotDeviceMaterialRespVO>> getDeviceMaterialsByBomId(@Valid IotDeviceMaterialPageReqVO reqVO) {
+        PageResult<IotDeviceMaterialDO> deviceTemplateAttrs = iotDeviceMaterialService.getDeviceMaterialsByBomId(reqVO);
+        return success(buildDeviceMaterialVOPageResult(deviceTemplateAttrs));
+    }
+
     @GetMapping("/export-excel")
     @Operation(summary = "导出PMS 设备BOM物料关联 Excel")
     @PreAuthorize("@ss.hasPermission('pms:iot-device-material:export')")
@@ -90,4 +104,12 @@ public class IotDeviceMaterialController {
                         BeanUtils.toBean(list, IotDeviceMaterialRespVO.class));
     }
 
+    private PageResult<IotDeviceMaterialRespVO> buildDeviceMaterialVOPageResult(PageResult<IotDeviceMaterialDO> pageResult) {
+        if (CollUtil.isEmpty(pageResult.getList())) {
+            return PageResult.empty(pageResult.getTotal());
+        }
+        // 2. 开始拼接
+        return BeanUtils.toBean(pageResult, IotDeviceMaterialRespVO.class);
+    }
+
 }

+ 16 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotmaterial/IotMaterialController.java

@@ -110,6 +110,14 @@ public class IotMaterialController {
         return success(IotMaterialConvert.INSTANCE.convertSimpleList(list, materialGroupMap));
     }
 
+    @GetMapping("/list-by-bom-id")
+    @Operation(summary = "根据设备分类bom节点id获取物料列表")
+    @PreAuthorize("@ss.hasPermission('rq:iot-material:query')")
+    public CommonResult<PageResult<IotMaterialRespVO>> getMaterialsByBomId(@Valid IotMaterialPageReqVO reqVO) {
+        PageResult<IotMaterialDO> deviceTemplateAttrs = iotMaterialService.getMaterialsByBomId(reqVO);
+        return success(buildMaterialVOPageResult(deviceTemplateAttrs));
+    }
+
     @GetMapping("/export-excel")
     @Operation(summary = "导出PMS 功能优化 物料 Excel")
     @PreAuthorize("@ss.hasPermission('rq:iot-material:export')")
@@ -123,4 +131,12 @@ public class IotMaterialController {
                         BeanUtils.toBean(list, IotMaterialRespVO.class));
     }
 
+    private PageResult<IotMaterialRespVO> buildMaterialVOPageResult(PageResult<IotMaterialDO> pageResult) {
+        if (CollUtil.isEmpty(pageResult.getList())) {
+            return PageResult.empty(pageResult.getTotal());
+        }
+        // 2. 开始拼接
+        return BeanUtils.toBean(pageResult, IotMaterialRespVO.class);
+    }
+
 }

+ 11 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/iotdevicematerial/IotDeviceMaterialMapper.java

@@ -1,10 +1,14 @@
 package cn.iocoder.yudao.module.pms.dal.mysql.iotdevicematerial;
 
+import cn.hutool.core.util.ObjectUtil;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
 import cn.iocoder.yudao.module.pms.controller.admin.iotdevicematerial.vo.IotDeviceMaterialPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotmaterial.vo.IotMaterialPageReqVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotdevicematerial.IotDeviceMaterialDO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotmaterial.IotMaterialDO;
 import org.apache.ibatis.annotations.Mapper;
 
 /**
@@ -30,4 +34,11 @@ public interface IotDeviceMaterialMapper extends BaseMapperX<IotDeviceMaterialDO
                 .orderByDesc(IotDeviceMaterialDO::getId));
     }
 
+    default PageResult<IotDeviceMaterialDO> getMaterialsByBomId(IotDeviceMaterialPageReqVO reqVO) {
+        MPJLambdaWrapperX<IotDeviceMaterialDO> query = new MPJLambdaWrapperX<IotDeviceMaterialDO>();
+        query.leftJoin(IotMaterialDO.class, IotMaterialDO::getId, IotDeviceMaterialDO::getMaterialId)
+                .eq(ObjectUtil.isNotNull(reqVO.getBomNodeId()), IotDeviceMaterialDO::getBomNodeId, reqVO.getBomNodeId());
+        return selectJoinPage(reqVO, IotDeviceMaterialDO.class, query);
+    }
+
 }

+ 10 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/iotmaterial/IotMaterialMapper.java

@@ -1,11 +1,13 @@
 package cn.iocoder.yudao.module.pms.dal.mysql.iotmaterial;
 
+import cn.hutool.core.util.ObjectUtil;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
 import cn.iocoder.yudao.module.pms.controller.admin.iotmaterial.vo.IotMaterialPageReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotdevicematerial.IotDeviceMaterialDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotmaterial.IotMaterialDO;
-import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
@@ -42,4 +44,11 @@ public interface IotMaterialMapper extends BaseMapperX<IotMaterialDO> {
         return selectList(IotMaterialDO::getStatus, status);
     }
 
+    default PageResult<IotMaterialDO> getMaterialsByBomId(IotMaterialPageReqVO reqVO) {
+        MPJLambdaWrapperX<IotMaterialDO> query = new MPJLambdaWrapperX<IotMaterialDO>();
+        query.leftJoin(IotDeviceMaterialDO.class, IotDeviceMaterialDO::getMaterialId, IotMaterialDO::getId)
+                .eq(ObjectUtil.isNotNull(reqVO.getBomId()), IotDeviceMaterialDO::getBomNodeId, reqVO.getBomId());
+        return selectJoinPage(reqVO, IotMaterialDO.class, query);
+    }
+
 }

+ 10 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotdevicematerial/IotDeviceMaterialService.java

@@ -3,7 +3,9 @@ package cn.iocoder.yudao.module.pms.service.iotdevicematerial;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.module.pms.controller.admin.iotdevicematerial.vo.IotDeviceMaterialPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotdevicematerial.vo.IotDeviceMaterialSaveReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotmaterial.vo.IotMaterialPageReqVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotdevicematerial.IotDeviceMaterialDO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotmaterial.IotMaterialDO;
 
 import javax.validation.Valid;
 
@@ -52,4 +54,12 @@ public interface IotDeviceMaterialService {
      */
     PageResult<IotDeviceMaterialDO> getIotDeviceMaterialPage(IotDeviceMaterialPageReqVO pageReqVO);
 
+    /**
+     * 根据设备分类bom节点id获取物料列表
+     *
+     * @param reqVO bom节点id
+     * @return 物料列表
+     */
+    PageResult<IotDeviceMaterialDO> getDeviceMaterialsByBomId(IotDeviceMaterialPageReqVO reqVO);
+
 }

+ 6 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotdevicematerial/IotDeviceMaterialServiceImpl.java

@@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.module.pms.controller.admin.iotdevicematerial.vo.IotDeviceMaterialPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotdevicematerial.vo.IotDeviceMaterialSaveReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotmaterial.vo.IotMaterialPageReqVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotdevicematerial.IotDeviceMaterialDO;
 import cn.iocoder.yudao.module.pms.dal.mysql.iotdevicematerial.IotDeviceMaterialMapper;
 import org.springframework.stereotype.Service;
@@ -69,4 +70,9 @@ public class IotDeviceMaterialServiceImpl implements IotDeviceMaterialService {
         return iotDeviceMaterialMapper.selectPage(pageReqVO);
     }
 
+    @Override
+    public PageResult<IotDeviceMaterialDO> getDeviceMaterialsByBomId(IotDeviceMaterialPageReqVO reqVO) {
+        return iotDeviceMaterialMapper.getMaterialsByBomId(reqVO);
+    }
+
 }

+ 9 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotmaterial/IotMaterialService.java

@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.pms.service.iotmaterial;
 
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.module.pms.controller.admin.iotmaterial.vo.*;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotdevicecategorytemplateattrs.IotDeviceCategoryTemplateAttrsDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotmaterial.IotMaterialDO;
 
 import javax.validation.Valid;
@@ -67,4 +68,12 @@ public interface IotMaterialService {
      * @return 物料列表
      */
     List<IotMaterialDO> getMaterialListByStatus(Integer status);
+
+    /**
+     * 根据设备分类bom节点id获取物料列表
+     *
+     * @param reqVO bom节点id
+     * @return 物料列表
+     */
+    PageResult<IotMaterialDO> getMaterialsByBomId(IotMaterialPageReqVO reqVO);
 }

+ 6 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotmaterial/IotMaterialServiceImpl.java

@@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.pms.service.iotmaterial;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.module.pms.controller.admin.iotmaterial.vo.*;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotdevicecategorytemplateattrs.IotDeviceCategoryTemplateAttrsDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotmaterial.IotMaterialDO;
 import cn.iocoder.yudao.module.pms.dal.mysql.iotmaterial.IotMaterialMapper;
 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
@@ -87,4 +88,9 @@ public class IotMaterialServiceImpl implements IotMaterialService {
         return iotMaterialMapper.selectListByStatus(status);
     }
 
+    @Override
+    public PageResult<IotMaterialDO> getMaterialsByBomId(IotMaterialPageReqVO reqVO) {
+        return iotMaterialMapper.getMaterialsByBomId(reqVO);
+    }
+
 }