From d7bbd0eb98734769cc8737915e0ed29daa5293b7 Mon Sep 17 00:00:00 2001
From: lius <Lius2225@163.com>
Date: 星期三, 05 七月 2023 09:34:32 +0800
Subject: [PATCH] 接口设备权限漏洞修复

---
 lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/FillRuleConstant.java                                    |    5 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcEquProDto.java                                            |   41 ++++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml                                |   44 ++++
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/rule/OrgCodeProRule.java                   |   98 ++++++++++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcEquDepDto.java                                            |   39 ++++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java                 |  156 +++++++++++++++--
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcProductionServiceImpl.java |   12 +
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java                        |   26 ++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcEfficiencyListDto.java                                    |    6 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java                                   |   18 ++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java                                |   18 ++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcTorqueConfigServiceImpl.java                     |   34 +-
 12 files changed, 459 insertions(+), 38 deletions(-)

diff --git a/lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/FillRuleConstant.java b/lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/FillRuleConstant.java
index d2b07d7..741dd03 100644
--- a/lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/FillRuleConstant.java
+++ b/lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/FillRuleConstant.java
@@ -18,6 +18,11 @@
     public static final String DEPART = "org_num_role";
 
     /**
+     * 浜х嚎缂栫爜
+     */
+    public static final String PRODUCTION = "org_num_rule";
+
+    /**
      * 鍒嗙被瀛楀吀缂栫爜
      */
     public static final String CATEGORY = "category_code_rule";
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcEfficiencyListDto.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcEfficiencyListDto.java
index 09ae327..4bd5a50 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcEfficiencyListDto.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcEfficiencyListDto.java
@@ -12,6 +12,12 @@
 @Data
 public class MdcEfficiencyListDto {
 
+    private String level1;
+
+    private String level2;
+
+    private String level3;
+
     /**
      * 璁惧缂栫爜
      */
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcEquDepDto.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcEquDepDto.java
new file mode 100644
index 0000000..434328f
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcEquDepDto.java
@@ -0,0 +1,39 @@
+package org.jeecg.modules.mdc.dto;
+
+import lombok.Data;
+
+/**
+ * @author: LiuS
+ * @create: 2023-07-04 11:02
+ */
+@Data
+public class MdcEquDepDto {
+    /**
+     * 閮ㄩ棬id
+     */
+    private String id;
+    /**
+     * 閮ㄩ棬鐖秈d
+     */
+    private String parentId;
+    /**
+     * 閮ㄩ棬鍚嶇О
+     */
+    private String departName;
+    /**
+     * 灞傜骇缂栧彿
+     */
+    private String orgType;
+    /**
+     * 璁惧id
+     */
+    private String equipmentId;
+    /**
+     * 璁惧鍚嶇О
+     */
+    private String equipmentName;
+    /**
+     * 璁惧绫诲瀷
+     */
+    private String equipmentType;
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcEquProDto.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcEquProDto.java
new file mode 100644
index 0000000..ebba0d4
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcEquProDto.java
@@ -0,0 +1,41 @@
+package org.jeecg.modules.mdc.dto;
+
+import lombok.Data;
+
+/**
+ * @author: LiuS
+ * @create: 2023-07-04 11:06
+ */
+@Data
+public class MdcEquProDto {
+
+    /**
+     * 浜х嚎id
+     */
+    private String id;
+    /**
+     * 浜х嚎鐖秈d
+     */
+    private String parentId;
+    /**
+     * 浜х嚎鍚嶇О
+     */
+    private String productionName;
+    /**
+     * 灞傜骇缂栧彿
+     */
+    private String orgType;
+    /**
+     * 璁惧id
+     */
+    private String equipmentId;
+    /**
+     * 璁惧鍚嶇О
+     */
+    private String equipmentName;
+    /**
+     * 璁惧绫诲瀷
+     */
+    private String equipmentType;
+
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java
index 1474c85..30fa299 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java
@@ -4,6 +4,8 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.mdc.dto.MdcEquDepDto;
+import org.jeecg.modules.mdc.dto.MdcEquProDto;
 import org.jeecg.modules.mdc.entity.MdcEquipment;
 import org.jeecg.modules.mdc.entity.MdcEquipmentMonitor;
 import org.jeecg.modules.mdc.vo.MdcEquipmentDepVo;
@@ -63,4 +65,20 @@
      * 鏍规嵁閮ㄩ棬id鏌ヨ璁惧id闆嗗悎
      */
     List<String> queryIdsByDeparts(@Param("allDepartIds") List<String> allDepartIds);
+
+    /**
+     * 鏍规嵁璁惧缂栧彿鏌ヨ璁惧淇℃伅鍜岄儴闂ㄤ俊鎭�
+     *
+     * @param equipmentIdList
+     * @return
+     */
+    List<MdcEquDepDto> findEquDepList(@Param("equipmentIdList") List<String> equipmentIdList);
+
+    /**
+     * 鏍规嵁璁惧缂栧彿鏌ヨ璁惧淇℃伅鍜屼骇绾夸俊鎭�
+     *
+     * @param equipmentIdList
+     * @return
+     */
+    List<MdcEquProDto> findEquProList(@Param("equipmentIdList") List<String> equipmentIdList);
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml
index 26d708c..15df7d9 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml
@@ -146,5 +146,49 @@
         </foreach>
     </select>
 
+    <!--鏍规嵁璁惧缂栧彿鏌ヨ璁惧淇℃伅鍜岄儴闂ㄤ俊鎭�-->
+    <select id="findEquDepList" resultType="org.jeecg.modules.mdc.dto.MdcEquDepDto">
+        SELECT
+            sd.id,
+            sd.parent_id,
+            sd.depart_name,
+            sd.org_type,
+            me.equipment_id,
+            me.equipment_name,
+            me.equipment_type
+        FROM
+            mdc_equipment_depart med
+            LEFT JOIN sys_depart sd ON med.dep_id = sd.id
+            LEFT JOIN mdc_equipment me ON me.id = med.equipment_id
+        <where>
+            me.equipment_id IN
+            <foreach collection="equipmentIdList" index="index" item="id" open="(" separator="," close=")">
+                #{id}
+            </foreach>
+        </where>
+    </select>
+
+    <!--鏍规嵁璁惧缂栧彿鏌ヨ璁惧淇℃伅鍜屼骇绾夸俊鎭�-->
+    <select id="findEquProList" resultType="org.jeecg.modules.mdc.dto.MdcEquProDto">
+        SELECT
+            mp.id,
+            mp.parent_id,
+            mp.production_name,
+            mp.org_type,
+            me.equipment_id,
+            me.equipment_name,
+            me.equipment_type
+        FROM
+            mdc_production_equipment mpe
+            LEFT JOIN mdc_production mp ON mpe.production_id = mp.id
+            LEFT JOIN mdc_equipment me ON me.id = mpe.equipment_id
+        <where>
+            me.equipment_id IN
+            <foreach collection="equipmentIdList" index="index" item="id" open="(" separator="," close=")">
+                #{id}
+            </foreach>
+        </where>
+    </select>
+
 
 </mapper>
\ No newline at end of file
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java
index 78f11f9..e57d140 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java
@@ -3,6 +3,8 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.mdc.dto.MdcEquDepDto;
+import org.jeecg.modules.mdc.dto.MdcEquProDto;
 import org.jeecg.modules.mdc.dto.MdcEquipmentDto;
 import org.jeecg.modules.mdc.entity.MdcEquipment;
 import org.jeecg.modules.mdc.entity.MdcEquipmentMonitor;
@@ -124,6 +126,7 @@
 
     /**
      * 鏍规嵁璁惧id鏌ヨ璁惧鍚嶇О
+     *
      * @param equipmentId
      * @return
      */
@@ -139,4 +142,19 @@
      */
     MdcEquipment getEquipmentByPid(String pid, String userId);
 
+    /**
+     * 鏍规嵁璁惧缂栧彿鏌ヨ璁惧淇℃伅鍜岄儴闂ㄤ俊鎭�
+     *
+     * @param equipmentIdList
+     * @return
+     */
+    List<MdcEquDepDto> findEquDepList(List<String> equipmentIdList);
+
+    /**
+     * 鏍规嵁璁惧缂栧彿鏌ヨ璁惧淇℃伅鍜屼骇绾夸俊鎭�
+     *
+     * @param equipmentIdList
+     * @return
+     */
+    List<MdcEquProDto> findEquProList(List<String> equipmentIdList);
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java
index daae6c8..583d480 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java
@@ -1,12 +1,9 @@
 package org.jeecg.modules.mdc.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import net.sf.saxon.expr.Component;
 import org.apache.commons.lang3.StringUtils;
-import org.jeecg.modules.mdc.dto.MdcEfficiencyDto;
-import org.jeecg.modules.mdc.dto.MdcEfficiencyListDto;
-import org.jeecg.modules.mdc.dto.MdcEfficiencyResultDto;
+import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.modules.mdc.dto.*;
 import org.jeecg.modules.mdc.entity.MdcEquipment;
 import org.jeecg.modules.mdc.entity.MdcUtilizationRate;
 import org.jeecg.modules.mdc.mapper.MdcEfficiencyReportMapper;
@@ -16,12 +13,15 @@
 import org.jeecg.modules.mdc.util.DateUtils;
 import org.jeecg.modules.mdc.vo.MdcEfficiencyReportQueryVo;
 import org.jeecg.modules.mdc.vo.MdcEfficiencyVo;
+import org.jeecg.modules.system.entity.MdcProduction;
+import org.jeecg.modules.system.entity.SysDepart;
+import org.jeecg.modules.system.service.IMdcProductionService;
+import org.jeecg.modules.system.service.ISysDepartService;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.util.*;
-import java.util.stream.Collectors;
 
 /**
  * @author: LiuS
@@ -38,6 +38,12 @@
 
     @Resource
     private IMdcUtilizationRateService mdcUtilizationRateService;
+
+    @Resource
+    private ISysDepartService sysDepartService;
+
+    @Resource
+    private IMdcProductionService mdcProductionService;
 
     /**
      * 鍒╃敤鐜囨姤琛�
@@ -87,20 +93,130 @@
             // 鍒╃敤鐜囩瓑绾�
             List<MdcUtilizationRate> mdcUtilizationRateList = mdcUtilizationRateService.listByType("lyl");
 
-            //灏佽缁撴灉
-            List<MdcEquipment> equipmentList = mdcEquipmentService.list(new LambdaQueryWrapper<MdcEquipment>().in(MdcEquipment::getEquipmentId, vo.getEquipmentIdList()));
+            // 灏佽缁撴灉
+            if ("2".equals(vo.getTypeTree())) {
+                // 閮ㄩ棬灞傜骇
+                List<MdcEquDepDto> equipmentList = mdcEquipmentService.findEquDepList(vo.getEquipmentIdList());
+                // 鏌ヨ鎵�鏈夐儴闂ㄤ俊鎭�
+                List<SysDepart> departList = sysDepartService.list(new LambdaQueryWrapper<SysDepart>().ne(SysDepart::getDelFlag, CommonConstant.DEL_FLAG_1.toString()));
 
-            for (MdcEquipment mdcEquipment : equipmentList) {
-                MdcEfficiencyListDto mdcEfficiencyListDto = new MdcEfficiencyListDto();
-                mdcEfficiencyListDto.setEquipmentId(mdcEquipment.getEquipmentId());
-                mdcEfficiencyListDto.setEquipmentName(mdcEquipment.getEquipmentName());
-                mdcEfficiencyListDto.setEquipmentType(mdcEquipment.getEquipmentType());
-                List<MdcEfficiencyResultDto> list = new ArrayList<>();
-                for (String date : dates) {
-                    list.add(this.efficiencyRate(efficiencyList, date, mdcEquipment, mdcUtilizationRateList));
+                for (MdcEquDepDto mdcEquDepDto : equipmentList) {
+                    MdcEfficiencyListDto mdcEfficiencyListDto = new MdcEfficiencyListDto();
+                    mdcEfficiencyListDto.setEquipmentId(mdcEquDepDto.getEquipmentId());
+                    mdcEfficiencyListDto.setEquipmentName(mdcEquDepDto.getEquipmentName());
+                    mdcEfficiencyListDto.setEquipmentType(mdcEquDepDto.getEquipmentType());
+                    switch (mdcEquDepDto.getOrgType()) {
+                        case "1":
+                            mdcEfficiencyListDto.setLevel1(mdcEquDepDto.getDepartName());
+                            break;
+                        case "2":
+                            mdcEfficiencyListDto.setLevel2(mdcEquDepDto.getDepartName());
+                            break;
+                        case "3":
+                            mdcEfficiencyListDto.setLevel3(mdcEquDepDto.getDepartName());
+                            break;
+                        default:
+                    }
+
+                    SysDepart sysDepart = departList.stream().filter(depart -> depart.getId().equals(mdcEquDepDto.getParentId())).findAny().orElse(null);
+                    if (sysDepart != null) {
+                        switch (sysDepart.getOrgType()) {
+                            case "1":
+                                mdcEfficiencyListDto.setLevel1(sysDepart.getDepartName());
+                                break;
+                            case "2":
+                                mdcEfficiencyListDto.setLevel2(sysDepart.getDepartName());
+                                break;
+                            case "3":
+                                mdcEfficiencyListDto.setLevel3(sysDepart.getDepartName());
+                                break;
+                            default:
+                        }
+                        if (StringUtils.isNotEmpty(sysDepart.getParentId())) {
+                            departList.stream().filter(depart -> depart.getId().equals(sysDepart.getParentId())).findAny().ifPresent(depart1 -> {
+                                switch (depart1.getOrgType()) {
+                                    case "1":
+                                        mdcEfficiencyListDto.setLevel1(depart1.getDepartName());
+                                        break;
+                                    case "2":
+                                        mdcEfficiencyListDto.setLevel2(depart1.getDepartName());
+                                        break;
+                                    case "3":
+                                        mdcEfficiencyListDto.setLevel3(depart1.getDepartName());
+                                        break;
+                                    default:
+                                }
+                            });
+                        }
+                    }
+                    List<MdcEfficiencyResultDto> list = new ArrayList<>();
+                    for (String date : dates) {
+                        list.add(this.efficiencyRate(efficiencyList, date, mdcEquDepDto.getEquipmentId(), mdcUtilizationRateList));
+                    }
+                    mdcEfficiencyListDto.setDataList(list);
+                    listDtos.add(mdcEfficiencyListDto);
                 }
-                mdcEfficiencyListDto.setDataList(list);
-                listDtos.add(mdcEfficiencyListDto);
+            } else {
+                // 浜х嚎灞傜骇
+                List<MdcEquProDto> equipmentList = mdcEquipmentService.findEquProList(vo.getEquipmentIdList());
+                // 鏌ヨ鎵�鏈変骇绾夸俊鎭�
+                List<MdcProduction> productionList = mdcProductionService.list(new LambdaQueryWrapper<MdcProduction>().ne(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_1.toString()));
+
+                for (MdcEquProDto mdcEquProDto : equipmentList) {
+                    MdcEfficiencyListDto mdcEfficiencyListDto = new MdcEfficiencyListDto();
+                    mdcEfficiencyListDto.setEquipmentId(mdcEquProDto.getEquipmentId());
+                    mdcEfficiencyListDto.setEquipmentName(mdcEquProDto.getEquipmentName());
+                    mdcEfficiencyListDto.setEquipmentType(mdcEquProDto.getEquipmentType());
+                    switch (mdcEquProDto.getOrgType()) {
+                        case "1":
+                            mdcEfficiencyListDto.setLevel1(mdcEquProDto.getProductionName());
+                            break;
+                        case "2":
+                            mdcEfficiencyListDto.setLevel2(mdcEquProDto.getProductionName());
+                            break;
+                        case "3":
+                            mdcEfficiencyListDto.setLevel3(mdcEquProDto.getProductionName());
+                            break;
+                        default:
+                    }
+                    MdcProduction mdcProduction = productionList.stream().filter(production -> production.getId().equals(mdcEquProDto.getParentId())).findAny().orElse(null);
+                    if (mdcProduction != null) {
+                        switch (mdcProduction.getOrgType()) {
+                            case "1":
+                                mdcEfficiencyListDto.setLevel1(mdcProduction.getProductionName());
+                                break;
+                            case "2":
+                                mdcEfficiencyListDto.setLevel2(mdcProduction.getProductionName());
+                                break;
+                            case "3":
+                                mdcEfficiencyListDto.setLevel3(mdcProduction.getProductionName());
+                                break;
+                            default:
+                        }
+                        if (StringUtils.isNotEmpty(mdcProduction.getParentId())) {
+                            productionList.stream().filter(production -> production.getId().equals(mdcProduction.getParentId())).findAny().ifPresent(production1 -> {
+                                switch (production1.getOrgType()) {
+                                    case "1":
+                                        mdcEfficiencyListDto.setLevel1(production1.getProductionName());
+                                        break;
+                                    case "2":
+                                        mdcEfficiencyListDto.setLevel2(production1.getProductionName());
+                                        break;
+                                    case "3":
+                                        mdcEfficiencyListDto.setLevel3(production1.getProductionName());
+                                        break;
+                                    default:
+                                }
+                            });
+                        }
+                    }
+                    List<MdcEfficiencyResultDto> list = new ArrayList<>();
+                    for (String date : dates) {
+                        list.add(this.efficiencyRate(efficiencyList, date, mdcEquProDto.getEquipmentId(), mdcUtilizationRateList));
+                    }
+                    mdcEfficiencyListDto.setDataList(list);
+                    listDtos.add(mdcEfficiencyListDto);
+                }
             }
 
             result.setMdcEfficiencyList(listDtos);
@@ -114,11 +230,11 @@
         return null;
     }
 
-    private MdcEfficiencyResultDto efficiencyRate(List<MdcEfficiencyDto> efficiencyList, String date, MdcEquipment mdcEquipment, List<MdcUtilizationRate> mdcUtilizationRateList) {
+    private MdcEfficiencyResultDto efficiencyRate(List<MdcEfficiencyDto> efficiencyList, String date, String equipmentId, List<MdcUtilizationRate> mdcUtilizationRateList) {
         MdcEfficiencyResultDto mdcEfficiencyResultDto = new MdcEfficiencyResultDto();
         if (efficiencyList != null && !efficiencyList.isEmpty()) {
             for (MdcEfficiencyDto efficiencyDto : efficiencyList) {
-                if (date.equals(efficiencyDto.getTheDate()) && efficiencyDto.getEquipmentId().equals(mdcEquipment.getEquipmentId())) {
+                if (date.equals(efficiencyDto.getTheDate()) && efficiencyDto.getEquipmentId().equals(equipmentId)) {
                     mdcEfficiencyResultDto.setTheDate(efficiencyDto.getTheDate());
                     mdcEfficiencyResultDto.setProcessLong(efficiencyDto.getProcessLong());
                     mdcEfficiencyResultDto.setUtilizationRate(efficiencyDto.getUtilizationRate());
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java
index 1307c01..45cca50 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java
@@ -10,6 +10,8 @@
 import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.util.oConvertUtils;
 import org.jeecg.modules.mdc.dto.EquipmentTemperatureDto;
+import org.jeecg.modules.mdc.dto.MdcEquDepDto;
+import org.jeecg.modules.mdc.dto.MdcEquProDto;
 import org.jeecg.modules.mdc.dto.MdcEquipmentDto;
 import org.jeecg.modules.mdc.entity.*;
 import org.jeecg.modules.mdc.mapper.MdcEquipmentMapper;
@@ -634,7 +636,7 @@
     }
 
     /**
-     *  鏍规嵁浜х嚎灞傜骇鏌ヨ璁惧鍗曚釜
+     * 鏍规嵁浜х嚎灞傜骇鏌ヨ璁惧鍗曚釜
      */
     @Override
     public MdcEquipment getEquipmentByPid(String pid, String userId) {
@@ -645,4 +647,26 @@
         return null;
     }
 
+    /**
+     * 鏍规嵁璁惧缂栧彿鏌ヨ璁惧淇℃伅鍜岄儴闂ㄤ俊鎭�
+     *
+     * @param equipmentIdList
+     * @return
+     */
+    @Override
+    public List<MdcEquDepDto> findEquDepList(List<String> equipmentIdList) {
+        return this.baseMapper.findEquDepList(equipmentIdList);
+    }
+
+    /**
+     * 鏍规嵁璁惧缂栧彿鏌ヨ璁惧淇℃伅鍜屼骇绾夸俊鎭�
+     *
+     * @param equipmentIdList
+     * @return
+     */
+    @Override
+    public List<MdcEquProDto> findEquProList(List<String> equipmentIdList) {
+        return this.baseMapper.findEquProList(equipmentIdList);
+    }
+
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcTorqueConfigServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcTorqueConfigServiceImpl.java
index 324ab6b..e029c30 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcTorqueConfigServiceImpl.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcTorqueConfigServiceImpl.java
@@ -27,7 +27,7 @@
  * @Date: 2023-06-29
  */
 @Service
-public class MdcTorqueConfigServiceImpl extends ServiceImpl<MdcTorqueConfigMapper, MdcTorqueConfig> implements IMdcTorqueConfigService{
+public class MdcTorqueConfigServiceImpl extends ServiceImpl<MdcTorqueConfigMapper, MdcTorqueConfig> implements IMdcTorqueConfigService {
 
     @Autowired
     private IMdcEquipmentService mdcEquipmentService;
@@ -59,38 +59,38 @@
 
     @Override
     public List<MdcTorqueConfig> findSpindleRunningCurve(float torqueValue, String equipmentId) {
-        return this.baseMapper.findSpindleRunningCurve(torqueValue,equipmentId);
+        return this.baseMapper.findSpindleRunningCurve(torqueValue, equipmentId);
     }
 
     @Override
     public IPage<MdcTorqueConfig> pageList(String userId, Page page, HttpServletRequest req, MdcTorqueConfig mdcTorqueConfig) {
-        List<String> equipmentIds=new ArrayList<>();
-        if (StringUtils.isNotEmpty(mdcTorqueConfig.getParentId())&&StringUtils.isEmpty(mdcTorqueConfig.getEquipmentId())){
-            if ("2".equals(mdcTorqueConfig.getTypeTree())){
+        List<String> equipmentIds = new ArrayList<>();
+        if (StringUtils.isNotEmpty(mdcTorqueConfig.getParentId()) && StringUtils.isEmpty(mdcTorqueConfig.getEquipmentId())) {
+            if ("2".equals(mdcTorqueConfig.getTypeTree())) {
                 //閮ㄩ棬灞傜骇
-                equipmentIds=mdcEquipmentService.getEquipmentIdsByDepart(userId,mdcTorqueConfig.getParentId());
-            }else {
+                equipmentIds = mdcEquipmentService.getEquipmentIdsByDepart(userId, mdcTorqueConfig.getParentId());
+            } else {
                 //浜х嚎灞傜骇
-                equipmentIds=mdcEquipmentService.getEquipmentIdsProduction(userId,mdcTorqueConfig.getParentId());
+                equipmentIds = mdcEquipmentService.getEquipmentIdsProduction(userId, mdcTorqueConfig.getParentId());
             }
-        }else if (StringUtils.isNotEmpty(mdcTorqueConfig.getEquipmentId())){
+        } else if (StringUtils.isNotEmpty(mdcTorqueConfig.getEquipmentId())) {
             //鍗曞彴璁惧淇℃伅
             mdcTorqueConfig.setMdcSectionIds(Collections.singletonList(mdcTorqueConfig.getEquipmentId()));
-        }else {
+        } else {
             //鏌ヨ鐢ㄦ埛鎵�鎷ユ湁鐨勬墍鏈夎澶囦俊鎭�
-            if ("2".equals(mdcTorqueConfig.getTypeTree())){
+            if ("2".equals(mdcTorqueConfig.getTypeTree())) {
                 //閮ㄩ棬灞傜骇
-                equipmentIds=mdcEquipmentService.getEquipmentIdsByDepart(userId,null);
-            }else {
-                equipmentIds=mdcEquipmentService.getEquipmentIdsProduction(userId,null);
+                equipmentIds = mdcEquipmentService.getEquipmentIdsByDepart(userId, null);
+            } else {
+                equipmentIds = mdcEquipmentService.getEquipmentIdsProduction(userId, null);
             }
         }
-        if (mdcTorqueConfig.getMdcSectionIds()==null||mdcTorqueConfig.getMdcSectionIds().isEmpty()){
+        if (mdcTorqueConfig.getMdcSectionIds() == null || mdcTorqueConfig.getMdcSectionIds().isEmpty()) {
             mdcTorqueConfig.setMdcSectionIds(equipmentIds);
         }
-        if (mdcTorqueConfig.getMdcSectionIds()==null||mdcTorqueConfig.getMdcSectionIds().isEmpty()){
+        if (mdcTorqueConfig.getMdcSectionIds() == null || mdcTorqueConfig.getMdcSectionIds().isEmpty()) {
             return null;
         }
-        return this.baseMapper.pageList(page,mdcTorqueConfig);
+        return this.baseMapper.pageList(page, mdcTorqueConfig);
     }
 }
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/rule/OrgCodeProRule.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/rule/OrgCodeProRule.java
new file mode 100644
index 0000000..cc7ee4a
--- /dev/null
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/rule/OrgCodeProRule.java
@@ -0,0 +1,98 @@
+package org.jeecg.modules.system.rule;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import io.netty.util.internal.StringUtil;
+import org.jeecg.common.handler.IFillRuleHandler;
+import org.jeecg.common.util.SpringContextUtils;
+import org.jeecg.common.util.YouBianCodeUtil;
+import org.jeecg.modules.system.entity.MdcProduction;
+import org.jeecg.modules.system.service.IMdcProductionService;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author: LiuS
+ * @create: 2023-07-04 16:15
+ * @Description: 杞﹂棿鏈烘瀯缂栫爜鐢熸垚瑙勫垯
+ */
+public class OrgCodeProRule implements IFillRuleHandler {
+
+    @Override
+    public Object execute(JSONObject params, JSONObject formData) {
+        IMdcProductionService mdcProductionService = (IMdcProductionService) SpringContextUtils.getBean("mdcProductionServiceImpl");
+
+        LambdaQueryWrapper<MdcProduction> query = new LambdaQueryWrapper<MdcProduction>();
+        LambdaQueryWrapper<MdcProduction> query1 = new LambdaQueryWrapper<MdcProduction>();
+        // 鍒涘缓涓�涓狶ist闆嗗悎,瀛樺偍鏌ヨ杩斿洖鐨勬墍鏈塎dcProduction瀵硅薄
+        List<MdcProduction> mdcProductionList = new ArrayList<>();
+        String[] strArray = new String[2];
+        //瀹氫箟杞﹂棿绫诲瀷
+        String orgType = "";
+        // 瀹氫箟鏂扮紪鐮佸瓧绗︿覆
+        String newOrgCode = "";
+        // 瀹氫箟鏃х紪鐮佸瓧绗︿覆
+        String oldOrgCode = "";
+
+        String parentId = null;
+        if (formData != null && formData.size() > 0) {
+            Object obj = formData.get("parentId");
+            if (obj != null) {
+                parentId = obj.toString();
+            }
+        } else {
+            if (params != null) {
+                Object obj = params.get("parentId");
+                if (obj != null) {
+                    parentId = obj.toString();
+                }
+            }
+        }
+
+        //濡傛灉鏄渶楂樼骇,鍒欐煡璇㈠嚭鍚岀骇鐨刼rg_code, 璋冪敤宸ュ叿绫荤敓鎴愮紪鐮佸苟杩斿洖
+        if (StringUtil.isNullOrEmpty(parentId)) {
+            // 绾垮垽鏂暟鎹簱涓殑琛ㄦ槸鍚︿负绌�,绌哄垯鐩存帴杩斿洖鍒濆缂栫爜
+            query1.eq(MdcProduction::getParentId, "").or().isNull(MdcProduction::getParentId);
+            query1.orderByDesc(MdcProduction::getOrgCode);
+            mdcProductionList = mdcProductionService.list(query1);
+            if (mdcProductionList == null || mdcProductionList.size() == 0) {
+                strArray[0] = YouBianCodeUtil.getNextYouBianCode(null);
+                strArray[1] = "1";
+                return strArray;
+            } else {
+                MdcProduction mdcProduction = mdcProductionList.get(0);
+                oldOrgCode = mdcProduction.getOrgCode();
+                orgType = mdcProduction.getOrgType();
+                newOrgCode = YouBianCodeUtil.getNextYouBianCode(oldOrgCode);
+            }
+        } else {//鍙嶄箣鍒欐煡璇㈠嚭鎵�鏈夊悓绾х殑杞﹂棿,鑾峰彇缁撴灉鍚庢湁涓ょ鎯呭喌,鏈夊悓绾у拰娌℃湁鍚岀骇
+            // 灏佽鏌ヨ鍚岀骇鐨勬潯浠�
+            query.eq(MdcProduction::getParentId, parentId);
+            // 闄嶅簭鎺掑簭
+            query.orderByDesc(MdcProduction::getOrgCode);
+            // 鏌ヨ鍑哄悓绾т骇绾跨殑闆嗗悎
+            List<MdcProduction> parentList = mdcProductionService.list(query);
+            // 鏌ヨ鍑虹埗绾т骇绾�
+            MdcProduction production = mdcProductionService.getById(parentId);
+            // 鑾峰彇鐖剁骇浜х嚎鐨刢ode
+            String parentCode = production.getOrgCode();
+            // 鏍规嵁鐖剁骇浜х嚎绫诲瀷绠楀嚭褰撳墠浜х嚎鐨勭被鍨�
+            orgType = String.valueOf(Integer.valueOf(production.getOrgType()) + 1);
+            // 澶勭悊鍚岀骇浜х嚎涓簄ull鐨勬儏鍐�
+            if (parentList == null || parentList.size() == 0) {
+                // 鐩存帴鐢熸垚褰撳墠鐨勪骇绾跨紪鐮佸苟杩斿洖
+                newOrgCode = YouBianCodeUtil.getSubYouBianCode(parentCode, null);
+            } else { //澶勭悊鏈夊悓绾т骇绾跨殑鎯呭喌
+                // 鑾峰彇鍚岀骇浜х嚎鐨勭紪鐮�,鍒╃敤宸ュ叿绫�
+                String subCode = parentList.get(0).getOrgCode();
+                // 杩斿洖鐢熸垚鐨勫綋鍓嶄骇绾跨紪鐮�
+                newOrgCode = YouBianCodeUtil.getSubYouBianCode(parentCode, subCode);
+            }
+        }
+        // 杩斿洖鏈�缁堝皝瑁呬簡浜х嚎缂栫爜鍜屼骇绾跨被鍨嬬殑鏁扮粍
+        strArray[0] = newOrgCode;
+        strArray[1] = orgType;
+        return strArray;
+    }
+}
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcProductionServiceImpl.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcProductionServiceImpl.java
index d517ef0..0e8f025 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcProductionServiceImpl.java
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcProductionServiceImpl.java
@@ -1,10 +1,13 @@
 package org.jeecg.modules.system.service.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.apache.commons.lang3.StringUtils;
 import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.common.constant.FillRuleConstant;
+import org.jeecg.common.util.FillRuleUtil;
 import org.jeecg.common.util.oConvertUtils;
 import org.jeecg.modules.system.entity.MdcProduction;
 import org.jeecg.modules.system.entity.MdcProductionEquipment;
@@ -122,6 +125,15 @@
                 mdcProduction.setParentId("");
             }
             mdcProduction.setId(IdWorker.getIdStr(mdcProduction));
+            // 鍏堝垽鏂瀵硅薄鏈夋棤鐖剁骇ID,鏈夊垯鎰忓懗鐫�涓嶆槸鏈�楂樼骇,鍚﹀垯鎰忓懗鐫�鏄渶楂樼骇
+            // 鑾峰彇鐖剁骇ID
+            String parentId = mdcProduction.getParentId();
+            JSONObject formData = new JSONObject();
+            formData.put("parentId",parentId);
+            String[] codeArray = (String[]) FillRuleUtil.executeRule(FillRuleConstant.PRODUCTION,formData);
+            mdcProduction.setOrgCode(codeArray[0]);
+            String orgType = codeArray[1];
+            mdcProduction.setOrgType(String.valueOf(orgType));
             mdcProduction.setDelFlag(CommonConstant.DEL_FLAG_0.toString());
             this.save(mdcProduction);
         }

--
Gitblit v1.9.3