diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialProductController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialProductController.java index a455185e..cfeae14a 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialProductController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialProductController.java @@ -1,5 +1,7 @@ package com.zt.plat.module.qms.resource.material.controller.admin; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog; import com.zt.plat.framework.business.annotation.FileUploadController; import com.zt.plat.framework.business.controller.AbstractFileUploadController; @@ -11,6 +13,10 @@ import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO; import com.zt.plat.framework.common.util.object.BeanUtils; import com.zt.plat.framework.datapermission.core.annotation.DeptDataPermissionIgnore; import com.zt.plat.framework.excel.core.util.ExcelUtils; +import com.zt.plat.module.qms.core.constant.DataTypeConstant; +import com.zt.plat.module.qms.resource.device.controller.vo.DeviceConfigBusinessRulePageReqVO; +import com.zt.plat.module.qms.resource.device.controller.vo.DeviceConfigBusinessRuleRespVO; +import com.zt.plat.module.qms.resource.device.service.DeviceConfigBusinessRuleService; import com.zt.plat.module.qms.resource.material.controller.vo.MaterialProductPageReqVO; import com.zt.plat.module.qms.resource.material.controller.vo.MaterialProductRespVO; import com.zt.plat.module.qms.resource.material.controller.vo.MaterialProductSaveReqVO; @@ -29,6 +35,7 @@ import org.springframework.web.bind.annotation.*; import java.io.IOException; import java.util.List; +import java.util.Objects; import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.EXPORT; import static com.zt.plat.framework.common.pojo.CommonResult.success; @@ -48,8 +55,8 @@ public class MaterialProductController extends AbstractFileUploadController impl } } - @Resource - private MaterialProductService materialProductService; + @Resource private MaterialProductService materialProductService; + @Resource private DeviceConfigBusinessRuleService deviceConfigBusinessRuleService; @PostMapping("/save-category") @@ -143,4 +150,51 @@ public class MaterialProductController extends AbstractFileUploadController impl BeanUtils.toBean(list, MaterialProductRespVO.class)); } + /* + * 查询标准物质的分类树、业务配置状态*/ + @GetMapping("/getProductTreeDataWithRuleStatus") + @Operation(summary = "获取分类和产品树_含规则配置状态") + public CommonResult getProductTreeDataWithRuleStatus() { + MaterialProductPageReqVO reqVO = new MaterialProductPageReqVO(); + //查询标准物质根分类 + reqVO.setParentId(0L); + reqVO.setStandardMaterialFlag(1); + reqVO.setNodeType(DataTypeConstant.DATA_TYPE_CATEGORY); + List rootCategoryList = materialProductService.selectListWithCustomSql(reqVO); + if(rootCategoryList == null ||rootCategoryList.isEmpty()) + return success(new JSONArray()); + reqVO = new MaterialProductPageReqVO(); + reqVO.setRootIdList(rootCategoryList.stream().map(MaterialProductDO::getId).toList()); + List list = materialProductService.selectListWithCustomSql(reqVO); + JSONArray jsonArray = new JSONArray(); + for (MaterialProductDO item : list) { + jsonArray.add(item); + } + List productIdList = list.stream().filter(item -> item.getNodeType().equals(DataTypeConstant.DATA_TYPE_DATA)).map(MaterialProductDO::getId).toList(); + DeviceConfigBusinessRulePageReqVO ruleReqVO = new DeviceConfigBusinessRulePageReqVO(); + ruleReqVO.setProductIdList(productIdList); + ruleReqVO.setPageNo(1); + ruleReqVO.setPageSize(-1); + String[] allDomain = {"dailyCheck","period","maintain","calibration"}; + List ruleList = deviceConfigBusinessRuleService.getDeviceConfigBusinessRulePage(ruleReqVO).getList(); + for(MaterialProductDO product: list){ + Long id = product.getId(); + JSONObject jsonObject = jsonArray.getJSONObject(jsonArray.indexOf(product)); + for(String domain: allDomain){ + jsonObject.put(domain + "_on", "0"); + jsonObject.put(domain + "_count", 0); + } + for(DeviceConfigBusinessRuleRespVO rule: ruleList){ + Long productId = rule.getProductId(); + String businessDomain = rule.getBusinessDomain(); + if(Objects.equals(productId, id)){ + jsonObject.put(businessDomain + "_on", "1"); + jsonObject.put(businessDomain + "_count", rule.getItemCount()); + } + } + jsonArray.set(jsonArray.indexOf(product), jsonObject); + } + return success(jsonArray); + } + } \ 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/MaterialProductPageReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialProductPageReqVO.java index 04c47ee9..1b2ecee8 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialProductPageReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialProductPageReqVO.java @@ -34,6 +34,9 @@ public class MaterialProductPageReqVO extends PageParam { @Schema(description = "id路径") private String idPath; + @Schema(description = "数据类型") + private String nodeType; + @Schema(description = "编码,原始数据编码") private String code; @@ -122,4 +125,8 @@ public class MaterialProductPageReqVO extends PageParam { @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; + + //============扩展字段=========== + List rootIdList; + } \ 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/MaterialProductMapper.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialProductMapper.java index 28f509ea..f76bd0aa 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialProductMapper.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialProductMapper.java @@ -12,6 +12,7 @@ import com.zt.plat.module.qms.core.constant.DataTypeConstant; import com.zt.plat.module.qms.resource.material.controller.vo.MaterialProductPageReqVO; import com.zt.plat.module.qms.resource.material.dal.dataobject.*; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import java.util.HashMap; import java.util.List; @@ -143,4 +144,6 @@ public interface MaterialProductMapper extends BaseMapperX { .in(MaterialProductDO::getId, pdtIds); return this.exists(wrapperX); } + + List selectListWithCustomSql(@Param("param") MaterialProductPageReqVO reqVO); } \ 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/MaterialProductService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialProductService.java index 0a0aefcd..aedabd20 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 @@ -7,6 +7,7 @@ import com.zt.plat.module.qms.resource.material.controller.vo.MaterialProductSav import com.zt.plat.module.qms.resource.material.controller.vo.query.MaterialProductQueryVO; import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialProductDO; import jakarta.validation.Valid; +import org.apache.ibatis.annotations.Param; import java.util.List; import java.util.Map; @@ -182,4 +183,7 @@ public interface MaterialProductService { * @return 物料数据 */ List getProductListByCodeAndSpec(List codes, List specifications); + + + List selectListWithCustomSql(MaterialProductPageReqVO reqVO); } \ 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/MaterialProductServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialProductServiceImpl.java index 5f219f84..009ffec9 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 @@ -519,4 +519,8 @@ public class MaterialProductServiceImpl implements MaterialProductService { .in(MaterialProductDO::getSpecification, specifications)); } + @Override + public List selectListWithCustomSql(MaterialProductPageReqVO reqVO) { + return materialProductMapper.selectListWithCustomSql(reqVO); + } } \ 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/MaterialProductMapper.xml b/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialProductMapper.xml index 46e9116e..a1e6119d 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialProductMapper.xml +++ b/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialProductMapper.xml @@ -9,4 +9,67 @@ 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file