Forráskód Böngészése

init pressure2模块

xuzhancheng 4 napja
szülő
commit
d82cbc9f1e
28 módosított fájl, 916 hozzáadás és 38 törlés
  1. 4 36
      .idea/compiler.xml
  2. 6 0
      .idea/encodings.xml
  3. 1 0
      pom.xml
  4. 5 0
      tz-module-bpm/tz-module-bpm-api/src/main/java/cn/start/tz/module/bpm/enums/BpmModelConstants.java
  5. 31 0
      tz-module-bpm/tz-module-bpm-api/src/main/java/cn/start/tz/module/bpm/enums/boiler/BoilerBpmModeConstantsEnum.java
  6. 54 0
      tz-module-bpm/tz-module-bpm-api/src/main/java/cn/start/tz/module/bpm/enums/boiler/BoilerBpmModelConstants.java
  7. 31 0
      tz-module-bpm/tz-module-bpm-api/src/main/java/cn/start/tz/module/bpm/enums/pipe/PipeBpmModeConstantsEnum.java
  8. 54 0
      tz-module-bpm/tz-module-bpm-api/src/main/java/cn/start/tz/module/bpm/enums/pipe/PipeBpmModelConstants.java
  9. 35 0
      tz-module-bpm/tz-module-bpm-biz/src/main/java/cn/start/tz/module/bpm/service/pressure2/acceptorder/BpmBoilerAcceptOrderStatusListener.java
  10. 34 0
      tz-module-bpm/tz-module-bpm-biz/src/main/java/cn/start/tz/module/bpm/service/pressure2/acceptorder/BpmPipeAcceptOrderStatusListener.java
  11. 33 0
      tz-module-bpm/tz-module-bpm-biz/src/main/java/cn/start/tz/module/bpm/service/pressure2/dynamictb/DynamicTbStatusListener.java
  12. 34 0
      tz-module-bpm/tz-module-bpm-biz/src/main/java/cn/start/tz/module/bpm/service/pressure2/taskorder/BpmBoilerInspectionOpinionNoticeListener.java
  13. 36 0
      tz-module-bpm/tz-module-bpm-biz/src/main/java/cn/start/tz/module/bpm/service/pressure2/taskorder/BpmBoilerPressureInspectionSchemeListener.java
  14. 35 0
      tz-module-bpm/tz-module-bpm-biz/src/main/java/cn/start/tz/module/bpm/service/pressure2/taskorder/BpmBoilerPressureSeriousAccidentListener.java
  15. 36 0
      tz-module-bpm/tz-module-bpm-biz/src/main/java/cn/start/tz/module/bpm/service/pressure2/taskorder/BpmBoilerPressureWorkingInstructionListener.java
  16. 34 0
      tz-module-bpm/tz-module-bpm-biz/src/main/java/cn/start/tz/module/bpm/service/pressure2/taskorder/BpmBoilerTaskOrderStatusListener.java
  17. 34 0
      tz-module-bpm/tz-module-bpm-biz/src/main/java/cn/start/tz/module/bpm/service/pressure2/taskorder/BpmPipeInspectionOpinionNoticeListener.java
  18. 36 0
      tz-module-bpm/tz-module-bpm-biz/src/main/java/cn/start/tz/module/bpm/service/pressure2/taskorder/BpmPipePressureInspectionSchemeListener.java
  19. 35 0
      tz-module-bpm/tz-module-bpm-biz/src/main/java/cn/start/tz/module/bpm/service/pressure2/taskorder/BpmPipePressureSeriousAccidentListener.java
  20. 36 0
      tz-module-bpm/tz-module-bpm-biz/src/main/java/cn/start/tz/module/bpm/service/pressure2/taskorder/BpmPipePressureWorkingInstructionListener.java
  21. 34 0
      tz-module-bpm/tz-module-bpm-biz/src/main/java/cn/start/tz/module/bpm/service/pressure2/taskorder/BpmPipeTaskOrderStatusListener.java
  22. 34 0
      tz-module-bpm/tz-module-bpm-biz/src/main/java/cn/start/tz/module/bpm/service/pressure2/taskordernontaxrecord/BpmBoilerTaskOrderNonTaxRecordStatusListener.java
  23. 1 1
      tz-module-member/tz-module-member-api/src/main/java/cn/start/tz/module/member/api/templatesendlog/dto/TemplateSendLogDto.java
  24. 1 1
      tz-module-pressure/tz-module-pressure-biz/src/main/java/cn/start/tz/module/pressure/service/taskorder/TaskOrderServiceImpl.java
  25. 2 0
      tz-module-system/tz-module-system-api/src/main/java/cn/start/tz/module/system/api/dept/dto/DeptRespDTO.java
  26. 38 0
      tz-module-system/tz-module-system-api/src/main/java/cn/start/tz/module/system/api/userQualifications/AdminUserQualificationsApi.java
  27. 44 0
      tz-module-system/tz-module-system-api/src/main/java/cn/start/tz/module/system/api/userQualifications/dto/AdminUserQualificationsRespDTO.java
  28. 158 0
      tz-module-system/tz-module-system-biz/src/main/java/cn/start/tz/module/system/api/userQualifications/AdminUserQualificationsApiImpl.java

+ 4 - 36
.idea/compiler.xml

@@ -12,43 +12,9 @@
           <entry name="$MAVEN_REPOSITORY$/org/projectlombok/lombok/1.18.36/lombok-1.18.36.jar" />
           <entry name="$MAVEN_REPOSITORY$/org/mapstruct/mapstruct-processor/1.6.3/mapstruct-processor-1.6.3.jar" />
         </processorPath>
-        <module name="tz-spring-boot-starter-env" />
-        <module name="tz-spring-boot-starter-llm" />
-        <module name="tz-spring-boot-starter-protection" />
-        <module name="tz-spring-boot-starter-biz-ip" />
-        <module name="tz-module-member-biz" />
-        <module name="tz-spring-boot-starter-mybatis" />
-        <module name="tz-spring-boot-starter-rpc" />
-        <module name="tz-spring-boot-starter-test" />
-        <module name="tz-gateway" />
-        <module name="tz-module-system-biz" />
-        <module name="tz-module-infra-api" />
-        <module name="tz-spring-boot-starter-biz-tenant" />
-        <module name="tz-spring-boot-starter-job" />
-        <module name="tz-spring-boot-starter-websocket" />
-        <module name="tz-module-system-api" />
+        <module name="tz-module-pressure2-api" />
         <module name="tz-common" />
-        <module name="tz-spring-boot-starter-excel" />
-        <module name="tz-module-mp-api" />
-        <module name="tz-module-pipeline-api" />
-        <module name="tz-spring-boot-starter-biz-data-permission" />
-        <module name="tz-module-grape-city-api" />
-        <module name="tz-module-mp-biz" />
-        <module name="tz-module-pipeline-biz" />
-        <module name="tz-spring-boot-starter-monitor" />
-        <module name="tz-spring-boot-starter-mq" />
-        <module name="tz-module-bpm-api" />
-        <module name="tz-module-infra-biz" />
-        <module name="tz-spring-boot-starter-security" />
-        <module name="tz-module-bpm-biz" />
-        <module name="tz-module-laboratory-api" />
-        <module name="tz-module-pressure-biz" />
-        <module name="tz-spring-boot-starter-web" />
-        <module name="tz-module-laboratory-biz" />
-        <module name="tz-module-pressure-api" />
-        <module name="tz-module-grape-city-biz" />
-        <module name="tz-spring-boot-starter-redis" />
-        <module name="tz-module-member-api" />
+        <module name="tz-module-pressure2-biz" />
       </profile>
     </annotationProcessing>
   </component>
@@ -72,6 +38,8 @@
       <module name="tz-module-pipeline-biz" options="-parameters" />
       <module name="tz-module-pressure-api" options="-parameters" />
       <module name="tz-module-pressure-biz" options="-parameters" />
+      <module name="tz-module-pressure2-api" options="-parameters" />
+      <module name="tz-module-pressure2-biz" options="-parameters" />
       <module name="tz-module-system-api" options="-parameters" />
       <module name="tz-module-system-biz" options="-parameters" />
       <module name="tz-spring-boot-starter-biz-data-permission" options="-parameters" />

+ 6 - 0
.idea/encodings.xml

@@ -91,6 +91,12 @@
     <file url="file://$PROJECT_DIR$/tz-module-pressure/tz-module-pressure-api/src/main/resources" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/tz-module-pressure/tz-module-pressure-biz/src/main/java" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/tz-module-pressure/tz-module-pressure-biz/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/tz-module-pressure2/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/tz-module-pressure2/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/tz-module-pressure2/tz-module-pressure2-api/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/tz-module-pressure2/tz-module-pressure2-api/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/tz-module-pressure2/tz-module-pressure2-biz/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/tz-module-pressure2/tz-module-pressure2-biz/src/main/resources" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/tz-module-system/src/main/java" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/tz-module-system/src/main/resources" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/tz-module-system/tz-module-system-api/src/main/java" charset="UTF-8" />

+ 1 - 0
pom.xml

@@ -21,6 +21,7 @@
         <module>tz-module-pressure</module>
         <module>tz-module-grape-city</module>
         <module>tz-module-pipeline</module>
+        <module>tz-module-pressure2</module>
         <!-- 友情提示:基于 Spring AI 实现 LLM 大模型的接入,需要使用 JDK17 版本,详细可见 https://doc.iocoder.cn/ai/build/ -->
 <!--        <module>tz-module-ai</module>-->
     </modules>

+ 5 - 0
tz-module-bpm/tz-module-bpm-api/src/main/java/cn/start/tz/module/bpm/enums/BpmModelConstants.java

@@ -52,4 +52,9 @@ public interface BpmModelConstants {
      * 检验方案-批准
      */
     String PRESSURE_INSPECTION_SCHEME_RATIFY= "pressure_inspection_scheme_ratify";
+
+    /**
+     * 承压动态报表表单
+     */
+    String DYNAMIC_TB = "DYNAMIC_TB";
 }

+ 31 - 0
tz-module-bpm/tz-module-bpm-api/src/main/java/cn/start/tz/module/bpm/enums/boiler/BoilerBpmModeConstantsEnum.java

@@ -0,0 +1,31 @@
+package cn.start.tz.module.bpm.enums.boiler;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 流程任务的 Comment 评论类型枚举
+ *
+ * @author kehaiyou
+ */
+@Getter
+@AllArgsConstructor
+public enum BoilerBpmModeConstantsEnum {
+    PRESSURE2_INSPECTION_OPINION_NOTICE("pressure2_boiler_inspection_opinion_notice", "检验意见通知书审核"),
+    PRESSURE2_SERIOUS_ACCIDENT("pressure2_boiler_serious_accident", "重大事故审核"),
+    PRESSURE2_INSPECTION_SCHEME("pressure2_boiler_inspection_scheme", "检验方案"),
+    PRESSURE2_WORKING_INSTRUCTION("pressure2_boiler_working_instruction", "作业指导书"),
+    ;
+
+    /**
+     * 审批流标识
+     *
+     * 由于 BPM Comment 类型为 String,所以这里就不使用 Integer
+     */
+    private final String type;
+    /**
+     * 操作名字
+     */
+    private final String name;
+
+}

+ 54 - 0
tz-module-bpm/tz-module-bpm-api/src/main/java/cn/start/tz/module/bpm/enums/boiler/BoilerBpmModelConstants.java

@@ -0,0 +1,54 @@
+package cn.start.tz.module.bpm.enums.boiler;
+
+/**
+ * 锅炉业务审核流程模型常量
+ *
+ * @author zhengjie
+ * @date 2023-01-05
+ */
+public interface BoilerBpmModelConstants {
+    /**
+     * 承压业务审核
+     */
+    String ACCEPT_ORDER="ACCEPT_ORDER";
+
+    /**
+     * 上报市局审批
+     */
+    String REPORT_CITY_BUREAU = "REPORT_CITY_BUREAU";
+
+    /**
+     * 任务单审核
+     */
+    String TASK_ORDER = "TASK_ORDER";
+
+    /**
+     * 检验意见通知书审核
+     */
+    String PRESSURE2_BOILER_INSPECTION_OPINION_NOTICE = "pressure2_boiler_inspection_opinion_notice";
+
+    /**
+     * 重大事故审核
+     */
+    String PRESSURE2_BOILER_SERIOUS_ACCIDENT = "pressure2_boiler_serious_accident";
+
+    /**
+     * 检验方案
+     */
+    String PRESSURE2_BOILER_INSPECTION_SCHEME= "pressure2_boiler_inspection_scheme";
+
+    /**
+     * 作业指导书
+     */
+    String PRESSURE2_BOILER_WORKING_INSTRUCTION= "pressure2_boiler_working_instruction";
+
+    /**
+     *   非税缴费
+     **/
+    String PRESSURE_NON_TAX= "non_tax";
+
+    /**
+     * 承压动态报表表单
+     */
+    String DYNAMIC_TB = "DYNAMIC_TB";
+}

+ 31 - 0
tz-module-bpm/tz-module-bpm-api/src/main/java/cn/start/tz/module/bpm/enums/pipe/PipeBpmModeConstantsEnum.java

@@ -0,0 +1,31 @@
+package cn.start.tz.module.bpm.enums.pipe;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 流程任务的 Comment 评论类型枚举
+ *
+ * @author kehaiyou
+ */
+@Getter
+@AllArgsConstructor
+public enum PipeBpmModeConstantsEnum {
+    PRESSURE2_INSPECTION_OPINION_NOTICE("pressure2_pipe_inspection_opinion_notice", "检验意见通知书审核"),
+    PRESSURE2_SERIOUS_ACCIDENT("pressure2_pipe_serious_accident", "重大事故审核"),
+    PRESSURE2_INSPECTION_SCHEME("pressure2_pipe_inspection_scheme", "检验方案"),
+    PRESSURE2_WORKING_INSTRUCTION("pressure2_pipe_working_instruction", "作业指导书"),
+    ;
+
+    /**
+     * 审批流标识
+     *
+     * 由于 BPM Comment 类型为 String,所以这里就不使用 Integer
+     */
+    private final String type;
+    /**
+     * 操作名字
+     */
+    private final String name;
+
+}

+ 54 - 0
tz-module-bpm/tz-module-bpm-api/src/main/java/cn/start/tz/module/bpm/enums/pipe/PipeBpmModelConstants.java

@@ -0,0 +1,54 @@
+package cn.start.tz.module.bpm.enums.pipe;
+
+/**
+ * 锅炉业务审核流程模型常量
+ *
+ * @author zhengjie
+ * @date 2023-01-05
+ */
+public interface PipeBpmModelConstants {
+    /**
+     * 承压业务审核
+     */
+    String ACCEPT_ORDER="ACCEPT_ORDER";
+
+    /**
+     * 上报市局审批
+     */
+    String REPORT_CITY_BUREAU = "REPORT_CITY_BUREAU";
+
+    /**
+     * 任务单审核
+     */
+    String TASK_ORDER = "TASK_ORDER";
+
+    /**
+     * 检验意见通知书审核
+     */
+    String PRESSURE2_PIPE_INSPECTION_OPINION_NOTICE = "pressure2_pipe_inspection_opinion_notice";
+
+    /**
+     * 重大事故审核
+     */
+    String PRESSURE2_PIPE_SERIOUS_ACCIDENT = "pressure2_pipe_serious_accident";
+
+    /**
+     * 检验方案
+     */
+    String PRESSURE2_PIPE_INSPECTION_SCHEME= "pressure2_pipe_inspection_scheme";
+
+    /**
+     * 作业指导书
+     */
+    String PRESSURE2_PIPE_WORKING_INSTRUCTION= "pressure2_pipe_working_instruction";
+
+    /**
+     *   非税缴费
+     **/
+    String PRESSURE_NON_TAX= "non_tax";
+
+    /**
+     * 承压动态报表表单
+     */
+    String DYNAMIC_TB = "DYNAMIC_TB";
+}

+ 35 - 0
tz-module-bpm/tz-module-bpm-biz/src/main/java/cn/start/tz/module/bpm/service/pressure2/acceptorder/BpmBoilerAcceptOrderStatusListener.java

@@ -0,0 +1,35 @@
+package cn.start.tz.module.bpm.service.pressure2.acceptorder;
+
+import cn.start.tz.module.bpm.event.BpmProcessInstanceStatusEvent;
+import cn.start.tz.module.bpm.event.BpmProcessInstanceStatusEventListener;
+import cn.start.tz.module.pressure2.api.acceptorder.BoilerAcceptOrderApi;
+import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.flowable.engine.RuntimeService;
+import org.springframework.stereotype.Component;
+
+import static cn.start.tz.module.bpm.enums.BpmModelConstants.ACCEPT_ORDER;
+
+
+@Slf4j
+@Component
+public class BpmBoilerAcceptOrderStatusListener extends BpmProcessInstanceStatusEventListener {
+
+    @Resource
+    RuntimeService runtimeService;
+
+    @Resource
+    private BoilerAcceptOrderApi acceptOrderApi;
+
+    @Override
+    protected String getProcessDefinitionKey() {
+        return ACCEPT_ORDER;
+    }
+
+    @Override
+    protected void onEvent(BpmProcessInstanceStatusEvent event) {
+        // TODO 合并的时候要考虑调用哪个接口
+        acceptOrderApi.audit(event.getBusinessKey(), event.getStatus(),event.getReason());
+    }
+
+}

+ 34 - 0
tz-module-bpm/tz-module-bpm-biz/src/main/java/cn/start/tz/module/bpm/service/pressure2/acceptorder/BpmPipeAcceptOrderStatusListener.java

@@ -0,0 +1,34 @@
+package cn.start.tz.module.bpm.service.pressure2.acceptorder;
+
+import cn.start.tz.module.bpm.event.BpmProcessInstanceStatusEvent;
+import cn.start.tz.module.bpm.event.BpmProcessInstanceStatusEventListener;
+import cn.start.tz.module.pressure2.api.acceptorder.PipeAcceptOrderApi;
+import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.flowable.engine.RuntimeService;
+import org.springframework.stereotype.Component;
+
+import static cn.start.tz.module.bpm.enums.BpmModelConstants.ACCEPT_ORDER;
+
+
+@Slf4j
+@Component
+public class BpmPipeAcceptOrderStatusListener extends BpmProcessInstanceStatusEventListener {
+
+    @Resource
+    RuntimeService runtimeService;
+
+    @Resource
+    private PipeAcceptOrderApi acceptOrderApi;
+
+    @Override
+    protected String getProcessDefinitionKey() {
+        return ACCEPT_ORDER;
+    }
+
+    @Override
+    protected void onEvent(BpmProcessInstanceStatusEvent event) {
+        acceptOrderApi.audit(event.getBusinessKey(), event.getStatus(),event.getReason());
+    }
+
+}

+ 33 - 0
tz-module-bpm/tz-module-bpm-biz/src/main/java/cn/start/tz/module/bpm/service/pressure2/dynamictb/DynamicTbStatusListener.java

@@ -0,0 +1,33 @@
+package cn.start.tz.module.bpm.service.pressure2.dynamictb;
+
+import cn.start.tz.module.bpm.enums.BpmModelConstants;
+import cn.start.tz.module.bpm.event.BpmProcessInstanceStatusEvent;
+import cn.start.tz.module.bpm.event.BpmProcessInstanceStatusEventListener;
+import cn.start.tz.module.pressure2.api.dynamictb.DynamicTbApi;
+import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.flowable.engine.RuntimeService;
+import org.springframework.stereotype.Component;
+
+@Slf4j
+@Component
+public class DynamicTbStatusListener extends BpmProcessInstanceStatusEventListener {
+
+    @Resource
+    RuntimeService runtimeService;
+
+    @Resource
+    private DynamicTbApi dynamicTbApi;
+
+    @Override
+    protected String getProcessDefinitionKey() {
+        return BpmModelConstants.DYNAMIC_TB;
+    }
+
+    @Override
+    protected void onEvent(BpmProcessInstanceStatusEvent event) {
+        log.info("承压动态报表表单审核,id:{},status:{},reason:{}",event.getBusinessKey(),event.getStatus(),event.getReason());
+        dynamicTbApi.audit(event.getBusinessKey(), event.getStatus(),event.getReason());
+    }
+
+}

+ 34 - 0
tz-module-bpm/tz-module-bpm-biz/src/main/java/cn/start/tz/module/bpm/service/pressure2/taskorder/BpmBoilerInspectionOpinionNoticeListener.java

@@ -0,0 +1,34 @@
+package cn.start.tz.module.bpm.service.pressure2.taskorder;
+
+import cn.start.tz.module.bpm.enums.boiler.BoilerBpmModelConstants;
+import cn.start.tz.module.bpm.event.BpmProcessInstanceStatusEvent;
+import cn.start.tz.module.bpm.event.BpmProcessInstanceStatusEventListener;
+import cn.start.tz.module.pressure2.api.taskorder.BoilerTaskOrderApi;
+import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.flowable.engine.RuntimeService;
+import org.springframework.stereotype.Component;
+
+
+@Slf4j
+@Component
+public class BpmBoilerInspectionOpinionNoticeListener extends BpmProcessInstanceStatusEventListener {
+
+    @Resource
+    RuntimeService runtimeService;
+
+    @Resource
+    private BoilerTaskOrderApi taskOrderApi;
+
+    @Override
+    protected String getProcessDefinitionKey() {
+        return BoilerBpmModelConstants.PRESSURE2_BOILER_INSPECTION_OPINION_NOTICE;
+    }
+
+    @Override
+    protected void onEvent(BpmProcessInstanceStatusEvent event) {
+        log.info("任务单审核,id:{},status:{},reason:{}",event.getBusinessKey(),event.getStatus(),event.getReason());
+        taskOrderApi.auditInitiateApproval(event.getBusinessKey(), event.getStatus(),event.getReason());
+    }
+
+}

+ 36 - 0
tz-module-bpm/tz-module-bpm-biz/src/main/java/cn/start/tz/module/bpm/service/pressure2/taskorder/BpmBoilerPressureInspectionSchemeListener.java

@@ -0,0 +1,36 @@
+package cn.start.tz.module.bpm.service.pressure2.taskorder;
+
+
+import cn.start.tz.module.bpm.enums.boiler.BoilerBpmModelConstants;
+import cn.start.tz.module.bpm.event.BpmProcessInstanceStatusEvent;
+import cn.start.tz.module.bpm.event.BpmProcessInstanceStatusEventListener;
+import cn.start.tz.module.pressure2.api.taskorder.BoilerTaskOrderApi;
+import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.flowable.engine.RuntimeService;
+import org.springframework.stereotype.Component;
+
+
+@Slf4j
+@Component
+public class BpmBoilerPressureInspectionSchemeListener extends BpmProcessInstanceStatusEventListener {
+
+    @Resource
+    RuntimeService runtimeService;
+
+    @Resource
+    private BoilerTaskOrderApi taskOrderApi;
+
+    @Override
+    protected String getProcessDefinitionKey() {
+        return BoilerBpmModelConstants.PRESSURE2_BOILER_INSPECTION_SCHEME;
+    }
+
+    @Override
+    protected void onEvent(BpmProcessInstanceStatusEvent event) {
+        log.info("任务单审核,id:{},status:{},reason:{}",event.getBusinessKey(),event.getStatus(),event.getReason());
+        taskOrderApi.auditInspectionPlan(event.getBusinessKey(), event.getStatus(),event.getReason());
+    }
+
+
+}

+ 35 - 0
tz-module-bpm/tz-module-bpm-biz/src/main/java/cn/start/tz/module/bpm/service/pressure2/taskorder/BpmBoilerPressureSeriousAccidentListener.java

@@ -0,0 +1,35 @@
+package cn.start.tz.module.bpm.service.pressure2.taskorder;
+
+import cn.start.tz.module.bpm.enums.boiler.BoilerBpmModelConstants;
+import cn.start.tz.module.bpm.event.BpmProcessInstanceStatusEvent;
+import cn.start.tz.module.bpm.event.BpmProcessInstanceStatusEventListener;
+import cn.start.tz.module.pressure2.api.taskorder.BoilerTaskOrderApi;
+import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.flowable.engine.RuntimeService;
+import org.springframework.stereotype.Component;
+
+
+@Slf4j
+@Component
+public class BpmBoilerPressureSeriousAccidentListener extends BpmProcessInstanceStatusEventListener {
+
+    @Resource
+    RuntimeService runtimeService;
+
+    @Resource
+    private BoilerTaskOrderApi taskOrderApi;
+
+    @Override
+    protected String getProcessDefinitionKey() {
+        return BoilerBpmModelConstants.PRESSURE2_BOILER_SERIOUS_ACCIDENT;
+    }
+
+    @Override
+    protected void onEvent(BpmProcessInstanceStatusEvent event) {
+        log.info("任务单审核,id:{},status:{},reason:{}",event.getBusinessKey(),event.getStatus(),event.getReason());
+        taskOrderApi.auditInitiateApproval(event.getBusinessKey(), event.getStatus(),event.getReason());
+    }
+
+
+}

+ 36 - 0
tz-module-bpm/tz-module-bpm-biz/src/main/java/cn/start/tz/module/bpm/service/pressure2/taskorder/BpmBoilerPressureWorkingInstructionListener.java

@@ -0,0 +1,36 @@
+package cn.start.tz.module.bpm.service.pressure2.taskorder;
+
+
+import cn.start.tz.module.bpm.enums.boiler.BoilerBpmModelConstants;
+import cn.start.tz.module.bpm.event.BpmProcessInstanceStatusEvent;
+import cn.start.tz.module.bpm.event.BpmProcessInstanceStatusEventListener;
+import cn.start.tz.module.pressure2.api.taskorder.BoilerTaskOrderApi;
+import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.flowable.engine.RuntimeService;
+import org.springframework.stereotype.Component;
+
+
+@Slf4j
+@Component
+public class BpmBoilerPressureWorkingInstructionListener extends BpmProcessInstanceStatusEventListener {
+
+    @Resource
+    RuntimeService runtimeService;
+
+    @Resource
+    private BoilerTaskOrderApi taskOrderApi;
+
+    @Override
+    protected String getProcessDefinitionKey() {
+        return BoilerBpmModelConstants.PRESSURE2_BOILER_WORKING_INSTRUCTION;
+    }
+
+    @Override
+    protected void onEvent(BpmProcessInstanceStatusEvent event) {
+        log.info("任务单审核,id:{},status:{},reason:{}",event.getBusinessKey(),event.getStatus(),event.getReason());
+        taskOrderApi.auditInitiateApproval(event.getBusinessKey(), event.getStatus(),event.getReason());
+    }
+
+
+}

+ 34 - 0
tz-module-bpm/tz-module-bpm-biz/src/main/java/cn/start/tz/module/bpm/service/pressure2/taskorder/BpmBoilerTaskOrderStatusListener.java

@@ -0,0 +1,34 @@
+package cn.start.tz.module.bpm.service.pressure2.taskorder;
+
+import cn.start.tz.module.bpm.enums.BpmModelConstants;
+import cn.start.tz.module.bpm.event.BpmProcessInstanceStatusEvent;
+import cn.start.tz.module.bpm.event.BpmProcessInstanceStatusEventListener;
+import cn.start.tz.module.pressure2.api.taskorder.BoilerTaskOrderApi;
+import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.flowable.engine.RuntimeService;
+import org.springframework.stereotype.Component;
+
+
+@Slf4j
+@Component
+public class BpmBoilerTaskOrderStatusListener extends BpmProcessInstanceStatusEventListener {
+
+    @Resource
+    RuntimeService runtimeService;
+
+    @Resource
+    private BoilerTaskOrderApi taskOrderApi;
+
+    @Override
+    protected String getProcessDefinitionKey() {
+        return BpmModelConstants.TASK_ORDER;
+    }
+
+    @Override
+    protected void onEvent(BpmProcessInstanceStatusEvent event) {
+        log.info("任务单审核,id:{},status:{},reason:{}",event.getBusinessKey(),event.getStatus(),event.getReason());
+        taskOrderApi.audit(event.getBusinessKey(), event.getStatus(),event.getReason());
+    }
+
+}

+ 34 - 0
tz-module-bpm/tz-module-bpm-biz/src/main/java/cn/start/tz/module/bpm/service/pressure2/taskorder/BpmPipeInspectionOpinionNoticeListener.java

@@ -0,0 +1,34 @@
+package cn.start.tz.module.bpm.service.pressure2.taskorder;
+
+import cn.start.tz.module.bpm.enums.pipe.PipeBpmModelConstants;
+import cn.start.tz.module.bpm.event.BpmProcessInstanceStatusEvent;
+import cn.start.tz.module.bpm.event.BpmProcessInstanceStatusEventListener;
+import cn.start.tz.module.pressure2.api.taskorder.PipeTaskOrderApi;
+import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.flowable.engine.RuntimeService;
+import org.springframework.stereotype.Component;
+
+
+@Slf4j
+@Component
+public class BpmPipeInspectionOpinionNoticeListener extends BpmProcessInstanceStatusEventListener {
+
+    @Resource
+    RuntimeService runtimeService;
+
+    @Resource
+    private PipeTaskOrderApi taskOrderApi;
+
+    @Override
+    protected String getProcessDefinitionKey() {
+        return PipeBpmModelConstants.PRESSURE2_PIPE_INSPECTION_OPINION_NOTICE;
+    }
+
+    @Override
+    protected void onEvent(BpmProcessInstanceStatusEvent event) {
+        log.info("任务单审核,id:{},status:{},reason:{}",event.getBusinessKey(),event.getStatus(),event.getReason());
+        taskOrderApi.auditInitiateApproval(event.getBusinessKey(), event.getStatus(),event.getReason());
+    }
+
+}

+ 36 - 0
tz-module-bpm/tz-module-bpm-biz/src/main/java/cn/start/tz/module/bpm/service/pressure2/taskorder/BpmPipePressureInspectionSchemeListener.java

@@ -0,0 +1,36 @@
+package cn.start.tz.module.bpm.service.pressure2.taskorder;
+
+
+import cn.start.tz.module.bpm.enums.pipe.PipeBpmModelConstants;
+import cn.start.tz.module.bpm.event.BpmProcessInstanceStatusEvent;
+import cn.start.tz.module.bpm.event.BpmProcessInstanceStatusEventListener;
+import cn.start.tz.module.pressure2.api.taskorder.PipeTaskOrderApi;
+import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.flowable.engine.RuntimeService;
+import org.springframework.stereotype.Component;
+
+
+@Slf4j
+@Component
+public class BpmPipePressureInspectionSchemeListener extends BpmProcessInstanceStatusEventListener {
+
+    @Resource
+    RuntimeService runtimeService;
+
+    @Resource
+    private PipeTaskOrderApi taskOrderApi;
+
+    @Override
+    protected String getProcessDefinitionKey() {
+        return PipeBpmModelConstants.PRESSURE2_PIPE_INSPECTION_SCHEME;
+    }
+
+    @Override
+    protected void onEvent(BpmProcessInstanceStatusEvent event) {
+        log.info("任务单审核,id:{},status:{},reason:{}",event.getBusinessKey(),event.getStatus(),event.getReason());
+        taskOrderApi.auditInitiateApproval(event.getBusinessKey(), event.getStatus(),event.getReason());
+    }
+
+
+}

+ 35 - 0
tz-module-bpm/tz-module-bpm-biz/src/main/java/cn/start/tz/module/bpm/service/pressure2/taskorder/BpmPipePressureSeriousAccidentListener.java

@@ -0,0 +1,35 @@
+package cn.start.tz.module.bpm.service.pressure2.taskorder;
+
+import cn.start.tz.module.bpm.enums.pipe.PipeBpmModelConstants;
+import cn.start.tz.module.bpm.event.BpmProcessInstanceStatusEvent;
+import cn.start.tz.module.bpm.event.BpmProcessInstanceStatusEventListener;
+import cn.start.tz.module.pressure2.api.taskorder.PipeTaskOrderApi;
+import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.flowable.engine.RuntimeService;
+import org.springframework.stereotype.Component;
+
+
+@Slf4j
+@Component
+public class BpmPipePressureSeriousAccidentListener extends BpmProcessInstanceStatusEventListener {
+
+    @Resource
+    RuntimeService runtimeService;
+
+    @Resource
+    private PipeTaskOrderApi taskOrderApi;
+
+    @Override
+    protected String getProcessDefinitionKey() {
+        return PipeBpmModelConstants.PRESSURE2_PIPE_SERIOUS_ACCIDENT;
+    }
+
+    @Override
+    protected void onEvent(BpmProcessInstanceStatusEvent event) {
+        log.info("任务单审核,id:{},status:{},reason:{}",event.getBusinessKey(),event.getStatus(),event.getReason());
+        taskOrderApi.auditInitiateApproval(event.getBusinessKey(), event.getStatus(),event.getReason());
+    }
+
+
+}

+ 36 - 0
tz-module-bpm/tz-module-bpm-biz/src/main/java/cn/start/tz/module/bpm/service/pressure2/taskorder/BpmPipePressureWorkingInstructionListener.java

@@ -0,0 +1,36 @@
+package cn.start.tz.module.bpm.service.pressure2.taskorder;
+
+
+import cn.start.tz.module.bpm.enums.pipe.PipeBpmModelConstants;
+import cn.start.tz.module.bpm.event.BpmProcessInstanceStatusEvent;
+import cn.start.tz.module.bpm.event.BpmProcessInstanceStatusEventListener;
+import cn.start.tz.module.pressure2.api.taskorder.PipeTaskOrderApi;
+import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.flowable.engine.RuntimeService;
+import org.springframework.stereotype.Component;
+
+
+@Slf4j
+@Component
+public class BpmPipePressureWorkingInstructionListener extends BpmProcessInstanceStatusEventListener {
+
+    @Resource
+    RuntimeService runtimeService;
+
+    @Resource
+    private PipeTaskOrderApi taskOrderApi;
+
+    @Override
+    protected String getProcessDefinitionKey() {
+        return PipeBpmModelConstants.PRESSURE2_PIPE_WORKING_INSTRUCTION;
+    }
+
+    @Override
+    protected void onEvent(BpmProcessInstanceStatusEvent event) {
+        log.info("任务单审核,id:{},status:{},reason:{}",event.getBusinessKey(),event.getStatus(),event.getReason());
+        taskOrderApi.auditInitiateApproval(event.getBusinessKey(), event.getStatus(),event.getReason());
+    }
+
+
+}

+ 34 - 0
tz-module-bpm/tz-module-bpm-biz/src/main/java/cn/start/tz/module/bpm/service/pressure2/taskorder/BpmPipeTaskOrderStatusListener.java

@@ -0,0 +1,34 @@
+package cn.start.tz.module.bpm.service.pressure2.taskorder;
+
+import cn.start.tz.module.bpm.enums.BpmModelConstants;
+import cn.start.tz.module.bpm.event.BpmProcessInstanceStatusEvent;
+import cn.start.tz.module.bpm.event.BpmProcessInstanceStatusEventListener;
+import cn.start.tz.module.pressure2.api.taskorder.PipeTaskOrderApi;
+import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.flowable.engine.RuntimeService;
+import org.springframework.stereotype.Component;
+
+
+@Slf4j
+@Component
+public class BpmPipeTaskOrderStatusListener extends BpmProcessInstanceStatusEventListener {
+
+    @Resource
+    RuntimeService runtimeService;
+
+    @Resource
+    private PipeTaskOrderApi taskOrderApi;
+
+    @Override
+    protected String getProcessDefinitionKey() {
+        return BpmModelConstants.TASK_ORDER;
+    }
+
+    @Override
+    protected void onEvent(BpmProcessInstanceStatusEvent event) {
+        log.info("任务单审核,id:{},status:{},reason:{}",event.getBusinessKey(),event.getStatus(),event.getReason());
+        taskOrderApi.audit(event.getBusinessKey(), event.getStatus(),event.getReason());
+    }
+
+}

+ 34 - 0
tz-module-bpm/tz-module-bpm-biz/src/main/java/cn/start/tz/module/bpm/service/pressure2/taskordernontaxrecord/BpmBoilerTaskOrderNonTaxRecordStatusListener.java

@@ -0,0 +1,34 @@
+package cn.start.tz.module.bpm.service.pressure2.taskordernontaxrecord;
+
+import cn.start.tz.module.bpm.enums.BpmModelConstants;
+import cn.start.tz.module.bpm.event.BpmProcessInstanceStatusEvent;
+import cn.start.tz.module.bpm.event.BpmProcessInstanceStatusEventListener;
+import cn.start.tz.module.pressure.api.taskordernontaxrecord.TaskOrderNonTaxRecordApi;
+import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.flowable.engine.RuntimeService;
+import org.springframework.stereotype.Component;
+
+
+@Slf4j
+@Component
+public class BpmBoilerTaskOrderNonTaxRecordStatusListener extends BpmProcessInstanceStatusEventListener {
+
+    @Resource
+    RuntimeService runtimeService;
+
+    @Resource
+    private TaskOrderNonTaxRecordApi taskOrderNonTaxRecordApi;
+
+    @Override
+    protected String getProcessDefinitionKey() {
+        return BpmModelConstants.PRESSURE_NON_TAX;
+    }
+
+    @Override
+    protected void onEvent(BpmProcessInstanceStatusEvent event) {
+        log.info("报告审核,id:{},status:{},reason:{}",event.getBusinessKey(),event.getStatus(),event.getReason());
+//        taskOrderNonTaxRecordApi.audit(event.getBusinessKey(), event.getStatus(),event.getReason());
+    }
+
+}

+ 1 - 1
tz-module-member/tz-module-member-api/src/main/java/cn/start/tz/module/member/api/templatesendlog/dto/TemplateSendLogDto.java

@@ -26,7 +26,7 @@ public class TemplateSendLogDto {
     private String mpOpenId;
 
     @Schema(description = "推送状态(0=成功,1=拒绝接收,2=其他原因失败,3=发送失败)", example = "1")
-    private List<Integer> status;
+    private Integer status;
 
     @Schema(description = "创建人名称", example = "王五")
     private String creatorName;

+ 1 - 1
tz-module-pressure/tz-module-pressure-biz/src/main/java/cn/start/tz/module/pressure/service/taskorder/TaskOrderServiceImpl.java

@@ -7419,7 +7419,7 @@ public class TaskOrderServiceImpl extends ServiceImpl<TaskOrderMapper, TaskOrder
         if (pageReqVO.getMpSendStatus() != null) {
             TemplateSendLogDto templateSendLogDto = new TemplateSendLogDto();
             templateSendLogDto.setBusinessType(2);
-            templateSendLogDto.setStatus(pageReqVO.getMpSendStatus());
+            templateSendLogDto.setStatus(pageReqVO.getMpSendStatus().get(0));
             List<TemplateSendLogRespDto> templateSendLogList = templateSendLogApi.getTemplateSendLogNew(templateSendLogDto).getCheckedData();
             if (CollUtil.isEmpty(templateSendLogList)) {
                 return new PageResult<>();

+ 2 - 0
tz-module-system/tz-module-system-api/src/main/java/cn/start/tz/module/system/api/dept/dto/DeptRespDTO.java

@@ -25,4 +25,6 @@ public class DeptRespDTO {
     @Schema(description = "部门状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     private Integer status; // 参见 CommonStatusEnum 枚举
 
+    @Schema(description = "联系电话", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    private String phone;
 }

+ 38 - 0
tz-module-system/tz-module-system-api/src/main/java/cn/start/tz/module/system/api/userQualifications/AdminUserQualificationsApi.java

@@ -0,0 +1,38 @@
+package cn.start.tz.module.system.api.userQualifications;
+
+import cn.start.tz.framework.common.pojo.CommonResult;
+import cn.start.tz.module.system.api.userQualifications.dto.AdminUserQualificationsRespDTO;
+import cn.start.tz.module.system.enums.ApiConstants;
+import com.fhs.core.trans.anno.AutoTrans;
+import com.fhs.trans.service.AutoTransable;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+
+import java.util.List;
+
+import static cn.start.tz.module.system.api.user.AdminUserApi.PREFIX;
+
+@FeignClient(name = ApiConstants.NAME) //
+@Tag(name = "RPC 服务 - 管理员用户")
+@AutoTrans(namespace = PREFIX, fields = {"nickname"})
+public interface AdminUserQualificationsApi extends AutoTransable<AdminUserQualificationsRespDTO> {
+
+    String PREFIX = ApiConstants.PREFIX + "/userQualifications";
+
+    @GetMapping(PREFIX + "/all")
+    @Operation(summary = "所有用户")
+    CommonResult<List<AdminUserQualificationsRespDTO>> all();
+
+    @GetMapping(PREFIX + "/getUserQualificationsPipeType/{type}")
+    @Operation(summary = "获取用户管道资质")
+    CommonResult<List<AdminUserQualificationsRespDTO>> getUserQualificationsType(@PathVariable String type);
+
+
+    @GetMapping(PREFIX + "/get")
+    @Override
+    AdminUserQualificationsRespDTO selectById(Object primaryValue);
+
+}

+ 44 - 0
tz-module-system/tz-module-system-api/src/main/java/cn/start/tz/module/system/api/userQualifications/dto/AdminUserQualificationsRespDTO.java

@@ -0,0 +1,44 @@
+package cn.start.tz.module.system.api.userQualifications.dto;
+
+import cn.start.tz.module.system.api.user.dto.AdminUserRespDTO;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Data
+public class AdminUserQualificationsRespDTO extends AdminUserRespDTO {
+    List<Qualification> qualifications;
+    @Data
+    public static class Qualification {
+        /**
+         * 主键
+         */
+        private String id;
+        /**
+         * 用户id
+         */
+        private String userId;
+        /**
+         * 注册代码
+         */
+        private String registrationCode;
+        /**
+         * 设备类型
+         */
+        private String equipmentType;
+        /**
+         * 级别
+         */
+        private String level;
+        /**
+         * 资质有效期-开始时间
+         */
+        private LocalDateTime qualificationValidityStartTime;
+        /**
+         * 资质有效期结束时间
+         */
+        private LocalDateTime qualificationValidityEndTime;
+
+    }
+}

+ 158 - 0
tz-module-system/tz-module-system-biz/src/main/java/cn/start/tz/module/system/api/userQualifications/AdminUserQualificationsApiImpl.java

@@ -0,0 +1,158 @@
+package cn.start.tz.module.system.api.userQualifications;
+
+import cn.start.tz.framework.common.pojo.CommonResult;
+import cn.start.tz.module.system.api.userQualifications.dto.AdminUserQualificationsRespDTO;
+import cn.start.tz.module.system.dal.dataobject.user.AdminUserDO;
+import cn.start.tz.module.system.dal.dataobject.userqualifications.UserQualificationsDO;
+import cn.start.tz.module.system.dal.mysql.userqualifications.UserQualificationsMapper;
+import cn.start.tz.module.system.service.user.AdminUserService;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import static cn.start.tz.framework.common.pojo.CommonResult.success;
+
+
+@RestController // 提供 RESTful API 接口,给 Feign 调用
+@Validated
+public class AdminUserQualificationsApiImpl implements AdminUserQualificationsApi {
+
+    @Resource
+    private UserQualificationsMapper userQualificationsMapper;
+
+    @Resource
+    private AdminUserService adminUserService;
+
+    @Override
+    public CommonResult<List<AdminUserQualificationsRespDTO>> all() {
+        List<AdminUserDO> userAll = adminUserService.getUserAll();
+        
+        // 分批处理大量用户ID,避免SQL IN查询参数过多的问题
+        List<UserQualificationsDO> userQualificationsDOS = new ArrayList<>();
+        int batchSize = 100; // 每批次处理的用户数
+        List<String> userIds = userAll.stream().map(AdminUserDO::getId).toList();
+        
+        for (int i = 0; i < userIds.size(); i += batchSize) {
+            int endIndex = Math.min(i + batchSize, userIds.size());
+            List<String> batchUserIds = userIds.subList(i, endIndex);
+            
+            List<UserQualificationsDO> batchQualifications = userQualificationsMapper.selectList(
+                    new LambdaUpdateWrapper<UserQualificationsDO>()
+                            .in(UserQualificationsDO::getUserId, batchUserIds));
+            userQualificationsDOS.addAll(batchQualifications);
+        }
+        
+        // 将资质信息按用户ID分组,提高查找效率
+        Map<String, List<UserQualificationsDO>> qualificationsGroupedByUser = 
+            userQualificationsDOS.stream().collect(
+                Collectors.groupingBy(UserQualificationsDO::getUserId));
+        
+        // 组装数据
+        List<AdminUserQualificationsRespDTO> adminUserQualificationsRespDTOS = userAll.stream().map(user -> {
+            AdminUserQualificationsRespDTO adminUserQualificationsRespDTO = new AdminUserQualificationsRespDTO();
+            adminUserQualificationsRespDTO.setId(user.getId());
+            adminUserQualificationsRespDTO.setNickname(user.getUsername());
+            adminUserQualificationsRespDTO.setAvatar(user.getAvatar());
+            adminUserQualificationsRespDTO.setMobile(user.getMobile());
+            adminUserQualificationsRespDTO.setDeptId(user.getDeptId());
+            adminUserQualificationsRespDTO.setEmployeeNo(user.getEmployeeNo());
+            adminUserQualificationsRespDTO.setPostIds(user.getPostIds());
+            adminUserQualificationsRespDTO.setSignUrl(user.getEmail());
+            adminUserQualificationsRespDTO.setStatus(user.getStatus());
+            
+            // 从分组映射中直接获取该用户的资质信息
+            List<UserQualificationsDO> userQualifications = qualificationsGroupedByUser.getOrDefault(user.getId(), Collections.emptyList());
+            adminUserQualificationsRespDTO.setQualifications(
+                    userQualifications.stream()
+                            .map(userQualificationsDO -> new AdminUserQualificationsRespDTO.Qualification().setId(userQualificationsDO.getId())
+                                    .setLevel(userQualificationsDO.getLevel())
+                                    .setUserId(userQualificationsDO.getUserId())
+                                    .setEquipmentType(userQualificationsDO.getEquipmentType())
+                                    .setRegistrationCode(userQualificationsDO.getRegistrationCode())
+                                    .setQualificationValidityStartTime(userQualificationsDO.getQualificationValidityStartTime())
+                                    .setQualificationValidityEndTime(userQualificationsDO.getQualificationValidityEndTime()))
+                            .toList());
+            return adminUserQualificationsRespDTO;
+        }).toList();
+        return success(adminUserQualificationsRespDTOS);
+    }
+
+    @Override
+    public CommonResult<List<AdminUserQualificationsRespDTO>> getUserQualificationsType(String type) {
+        // 先查询具有指定设备类型的资质信息
+        List<UserQualificationsDO> userQualificationsDOS = userQualificationsMapper.selectList(
+                new LambdaUpdateWrapper<UserQualificationsDO>()
+                        .eq(UserQualificationsDO::getEquipmentType, type));
+        
+        // 如果没有找到匹配的资质,则返回空列表
+        if (userQualificationsDOS.isEmpty()) {
+            return success(Collections.emptyList());
+        }
+        
+        // 提取用户ID并去重
+        List<String> userIds = userQualificationsDOS.stream()
+                .map(UserQualificationsDO::getUserId)
+                .distinct()
+                .toList();
+        
+        // 根据用户ID查询用户信息
+        List<AdminUserDO> userAll = adminUserService.getUserList(userIds);
+        
+        // 将资质信息按用户ID分组,提高查找效率
+        Map<String, List<UserQualificationsDO>> qualificationsGroupedByUser = 
+            userQualificationsDOS.stream().collect(
+                Collectors.groupingBy(UserQualificationsDO::getUserId));
+        
+        // 组装数据
+        List<AdminUserQualificationsRespDTO> adminUserQualificationsRespDTOS = userAll.stream().filter(user -> user.getStatus() == 0).map(user -> {
+            AdminUserQualificationsRespDTO adminUserQualificationsRespDTO = new AdminUserQualificationsRespDTO();
+            adminUserQualificationsRespDTO.setId(user.getId())
+            .setNickname(user.getNickname())
+            .setAvatar(user.getAvatar())
+            .setMobile(user.getMobile())
+            .setDeptId(user.getDeptId())
+            .setEmployeeNo(user.getEmployeeNo())
+            .setPostIds(user.getPostIds())
+            .setSignUrl(user.getEmail())
+            .setStatus(user.getStatus());
+            
+            // 从分组映射中直接获取该用户的资质信息
+            List<UserQualificationsDO> userQualifications = qualificationsGroupedByUser.get(user.getId());
+            if (userQualifications != null) {
+                adminUserQualificationsRespDTO.setQualifications(
+                        userQualifications.stream()
+                                .map(userQualificationsDO -> new AdminUserQualificationsRespDTO.Qualification().setId(userQualificationsDO.getId())
+                                        .setLevel(userQualificationsDO.getLevel())
+                                        .setUserId(userQualificationsDO.getUserId())
+                                        .setEquipmentType(userQualificationsDO.getEquipmentType())
+                                        .setRegistrationCode(userQualificationsDO.getRegistrationCode())
+                                        .setQualificationValidityStartTime(userQualificationsDO.getQualificationValidityStartTime())
+                                        .setQualificationValidityEndTime(userQualificationsDO.getQualificationValidityEndTime()))
+                                .toList());
+            } else {
+                adminUserQualificationsRespDTO.setQualifications(Collections.emptyList());
+            }
+            return adminUserQualificationsRespDTO;
+        }).sorted((u1, u2) -> {
+            // 按拼音排序
+            String nickname1 = u1.getNickname();
+            String nickname2 = u2.getNickname();
+            return java.text.Collator.getInstance(java.util.Locale.CHINA).compare(nickname1, nickname2);
+        }).toList();
+                
+        return success(adminUserQualificationsRespDTOS);
+    }
+
+    @Override
+    public AdminUserQualificationsRespDTO selectById(Object primaryValue) {
+        return null;
+    }
+
+}