xy 5 dni temu
rodzic
commit
41c4af828e
28 zmienionych plików z 1053 dodań i 51 usunięć
  1. 34 0
      build-uat/update.sql
  2. 2 0
      tz-module-pressure2/tz-module-pressure2-api/src/main/java/cn/start/tz/module/pressure2/enums/ErrorCodeConstants.java
  3. 49 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/indextodo/IndexTodoController.java
  4. 103 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/indextodo/vo/IndexTodoCountVO.java
  5. 40 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/indextodo/vo/IndexTodoPageReqVO.java
  6. 47 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/indextodo/vo/IndexTodoRespVO.java
  7. 33 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/indextodo/vo/IndexTodoSaveReqVO.java
  8. 55 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/dataobject/indextodo/IndexTodoDO.java
  9. 60 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/mysql/indextodo/IndexTodoMapper.java
  10. 53 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/enums/IndexTodoTypeNameEnum.java
  11. 9 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/acceptorder/AcceptOrderServiceImpl.java
  12. 8 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/acceptorder/PipeAcceptOrderServiceImpl.java
  13. 17 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/appointmentconfirmorder/AppointmentConfirmOrderServiceImpl.java
  14. 16 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/appointmentconfirmorder/PipeAppointmentConfirmOrderServiceImpl.java
  15. 106 4
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorder/BoilerTaskOrderServiceImpl.java
  16. 7 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorderitemreport/BoilerTaskOrderItemReportServiceImpl.java
  17. 9 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorderoperation/BoilerTaskOrderOperationServiceImpl.java
  18. 2 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QC12016_202401ReportOFData.java
  19. 15 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/equipboilerscheduling/EquipBoilerSchedulingServiceImpl.java
  20. 16 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/equippipescheduling/EquipPipeSchedulingServiceImpl.java
  21. 26 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/indextodo/IndexTodoService.java
  22. 212 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/indextodo/IndexTodoServiceImpl.java
  23. 96 47
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorder/PipeTaskOrderServiceImpl.java
  24. 7 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorderitemreport/PipeTaskOrderItemReportServiceImpl.java
  25. 10 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorderoperation/PipeTaskOrderOperationServiceImpl.java
  26. 3 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/mapper/boilertaskorder/BoilerTaskOrderMapper.xml
  27. 12 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/mapper/indextodo/IndexTodoMapper.xml
  28. 6 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/mapper/pipetaskorder/PipeTaskOrderMapper.xml

+ 34 - 0
build-uat/update.sql

@@ -1562,4 +1562,37 @@ comment on column PRESSURE2_BOILER_TASK_ORDER_ITEM_REPORT.QR_CODE_URL is '主报
 alter table PRESSURE2_PIPE_TASK_ORDER_ITEM_REPORT add QR_CODE_URL VARCHAR(128);
 comment on column PRESSURE2_PIPE_TASK_ORDER_ITEM_REPORT.QR_CODE_URL is '主报告二维码地址';
 
+-- 以上已加
+        
+--20260612
+CREATE TABLE "PRESSURE2_INDEX_TODO"
+(
+    "ID" VARCHAR(50) NOT NULL,
+    "TYPE" INTEGER,
+    "TYPE_NAME" VARCHAR(255),
+    "USER_ID" VARCHAR(50),
+    "STATUS" INTEGER,
+    "REF_ID" VARCHAR(50),
+    "EQUIP_MAIN_TYPE" INTEGER,
+    "CREATOR" VARCHAR(64 CHAR),
+"CREATE_TIME" TIMESTAMP(0) NOT NULL,
+"UPDATER" VARCHAR(64 CHAR),
+"UPDATE_TIME" TIMESTAMP(0) NOT NULL,
+"DELETED" BIT DEFAULT 0 NOT NULL,
+NOT CLUSTER PRIMARY KEY("ID")) STORAGE(ON "MAIN", CLUSTERBTR) ;
+
+COMMENT ON TABLE "PRESSURE2_INDEX_TODO" IS '首页待办表';
+COMMENT ON COLUMN "PRESSURE2_INDEX_TODO"."ID" IS '主键';
+COMMENT ON COLUMN "PRESSURE2_INDEX_TODO"."TYPE" IS '待办类型 1待办 2审核';
+COMMENT ON COLUMN "PRESSURE2_INDEX_TODO"."TYPE_NAME" IS '待办名称';
+COMMENT ON COLUMN "PRESSURE2_INDEX_TODO"."USER_ID" IS '用户ID';
+COMMENT ON COLUMN "PRESSURE2_INDEX_TODO"."STATUS" IS '状态 100 进行中 200 完成 300已取消';
+COMMENT ON COLUMN "PRESSURE2_INDEX_TODO"."REF_ID" IS '关联ID';
+COMMENT ON COLUMN "PRESSURE2_INDEX_TODO"."EQUIP_MAIN_TYPE" IS '设备类型 200锅炉 300管道';
+COMMENT ON COLUMN "PRESSURE2_INDEX_TODO"."CREATOR" IS '创建人';
+COMMENT ON COLUMN "PRESSURE2_INDEX_TODO"."CREATE_TIME" IS '创建时间';
+COMMENT ON COLUMN "PRESSURE2_INDEX_TODO"."UPDATER" IS '修改人';
+COMMENT ON COLUMN "PRESSURE2_INDEX_TODO"."UPDATE_TIME" IS '修改时间';
+COMMENT ON COLUMN "PRESSURE2_INDEX_TODO"."DELETED" IS '是否删除';
+
+--已加

+ 2 - 0
tz-module-pressure2/tz-module-pressure2-api/src/main/java/cn/start/tz/module/pressure2/enums/ErrorCodeConstants.java

@@ -155,6 +155,8 @@ public interface ErrorCodeConstants{
 
     ErrorCode PIPE_TASK_ORDER_ITEM_SUSPEND_NOT_EXISTS = new ErrorCode(1075, "管道中止检验记录不存在");
 
+    ErrorCode INDEX_TODO_NOT_EXISTS = new ErrorCode(1076, "首页代办不存在");
+
     ErrorCode EQUIP_BOILER_NOT_EXISTS = new ErrorCode(2000, "锅炉设备不存在");
 
     ErrorCode BOILER_EQUIP_OPERATION_RECORD_NOT_EXISTS = new ErrorCode(2001, "锅炉操作记录不存在");

+ 49 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/indextodo/IndexTodoController.java

@@ -0,0 +1,49 @@
+package cn.start.tz.module.pressure2.controller.admin.indextodo;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
+import jakarta.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.start.tz.framework.common.pojo.PageParam;
+import cn.start.tz.framework.common.pojo.PageResult;
+import cn.start.tz.framework.common.pojo.CommonResult;
+import cn.start.tz.framework.common.util.object.BeanUtils;
+import static cn.start.tz.framework.common.pojo.CommonResult.success;
+
+import cn.start.tz.framework.excel.core.util.ExcelUtils;
+
+import cn.start.tz.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.start.tz.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.start.tz.module.pressure2.controller.admin.indextodo.vo.*;
+import cn.start.tz.module.pressure2.dal.dataobject.indextodo.IndexTodoDO;
+import cn.start.tz.module.pressure2.service.indextodo.IndexTodoService;
+import static cn.start.tz.framework.web.core.util.WebFrameworkUtils.getLoginUserId;
+
+@Tag(name = "管理后台 - 首页代办")
+@RestController
+@RequestMapping("/pressure2/index-todo")
+@Validated
+public class IndexTodoController {
+
+    @Resource
+    private IndexTodoService indexTodoService;
+
+    @GetMapping("/count")
+    @Operation(summary = "获取首页待办/审核数量统计")
+    public CommonResult<IndexTodoCountVO> getTodoCount() {
+        String loginUserId = getLoginUserId();
+        return success(indexTodoService.getTodoCount(loginUserId));
+    }
+
+}

+ 103 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/indextodo/vo/IndexTodoCountVO.java

@@ -0,0 +1,103 @@
+package cn.start.tz.module.pressure2.controller.admin.indextodo.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "首页待办/审核数量统计 Response VO")
+@Data
+public class IndexTodoCountVO {
+
+    // ==================== 锅炉-待办 ====================
+    @Schema(description = "锅炉-计划表数量")
+    private Integer boilerScheduleCount = 0;
+
+    @Schema(description = "锅炉-任务确认数量")
+    private Integer boilerTaskOrderConfirmCount = 0;
+
+    @Schema(description = "锅炉-检测录入数量")
+    private Integer boilerMyTaskCount = 0;
+
+    @Schema(description = "锅炉-报告编制数量")
+    private Integer boilerPrepareReportCount = 0;
+
+    // ==================== 锅炉-审核 ====================
+    @Schema(description = "锅炉-记录校核数量")
+    private Integer boilerRecheckOrderItemCount = 0;
+
+    @Schema(description = "锅炉-报告审核数量")
+    private Integer boilerApproveOrderItemCount = 0;
+
+    @Schema(description = "锅炉-报告审批数量")
+    private Integer boilerRatifyOrderItemCount = 0;
+
+    @Schema(description = "锅炉-上报市局审核数量")
+    private Integer boilerReportCityBureauCount = 0;
+
+    @Schema(description = "锅炉-受理单审核数量")
+    private Integer boilerAcceptOrderCount = 0;
+
+    @Schema(description = "锅炉-缴费单待校核数量")
+    private Integer boilerPressureNonTaxCount = 0;
+
+    @Schema(description = "锅炉-任务单修改审核数量")
+    private Integer boilerTaskOrderCount = 0;
+
+    @Schema(description = "锅炉-检验意见通知书审核数量")
+    private Integer boilerPressureInspectionOpinionNoticeCount = 0;
+
+    @Schema(description = "锅炉-重大问题线索告知审核数量")
+    private Integer boilerPressureSeriousAccidentCount = 0;
+
+    @Schema(description = "锅炉-检验方案审核数量")
+    private Integer boilerPressureInspectionSchemeCount = 0;
+
+    @Schema(description = "锅炉-操作指导书审核数量")
+    private Integer boilerPressureWorkingInstructionCount = 0;
+
+    // ==================== 管道-待办 ====================
+    @Schema(description = "管道-计划表数量")
+    private Integer pipeScheduleCount = 0;
+
+    @Schema(description = "管道-任务确认数量")
+    private Integer pipeTaskOrderConfirmCount = 0;
+
+    @Schema(description = "管道-检测录入数量")
+    private Integer pipeMyTaskCount = 0;
+
+    @Schema(description = "管道-报告编制数量")
+    private Integer pipePrepareReportCount = 0;
+
+    // ==================== 管道-审核 ====================
+    @Schema(description = "管道-记录校核数量")
+    private Integer pipeRecheckOrderItemCount = 0;
+
+    @Schema(description = "管道-报告审核数量")
+    private Integer pipeApproveOrderItemCount = 0;
+
+    @Schema(description = "管道-报告审批数量")
+    private Integer pipeRatifyOrderItemCount = 0;
+
+    @Schema(description = "管道-上报市局审核数量")
+    private Integer pipeReportCityBureauCount = 0;
+
+    @Schema(description = "管道-受理单审核数量")
+    private Integer pipeAcceptOrderCount = 0;
+
+    @Schema(description = "管道-缴费单待校核数量")
+    private Integer pipePressureNonTaxCount = 0;
+
+    @Schema(description = "管道-任务单修改审核数量")
+    private Integer pipeTaskOrderCount = 0;
+
+    @Schema(description = "管道-检验意见通知书审核数量")
+    private Integer pipePressureInspectionOpinionNoticeCount = 0;
+
+    @Schema(description = "管道-重大问题线索告知审核数量")
+    private Integer pipePressureSeriousAccidentCount = 0;
+
+    @Schema(description = "管道-检验方案审核数量")
+    private Integer pipePressureInspectionSchemeCount = 0;
+
+    @Schema(description = "管道-操作指导书审核数量")
+    private Integer pipePressureWorkingInstructionCount = 0;
+}

+ 40 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/indextodo/vo/IndexTodoPageReqVO.java

@@ -0,0 +1,40 @@
+package cn.start.tz.module.pressure2.controller.admin.indextodo.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.start.tz.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.start.tz.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 首页代办分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class IndexTodoPageReqVO extends PageParam {
+
+    @Schema(description = "代办类型 1代办 2审核", example = "2")
+    private Integer type;
+
+    @Schema(description = "代办名称", example = "张三")
+    private String typeName;
+
+    @Schema(description = "用户ID", example = "30517")
+    private String userId;
+
+    @Schema(description = "状态 100 进行中 200 完成 300已取消", example = "2")
+    private Integer status;
+
+    @Schema(description = "关联ID", example = "31589")
+    private String refId;
+
+    @Schema(description = "设备类型 200锅炉 300管道", example = "1")
+    private Integer equipMainType;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 47 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/indextodo/vo/IndexTodoRespVO.java

@@ -0,0 +1,47 @@
+package cn.start.tz.module.pressure2.controller.admin.indextodo.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - 首页代办 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class IndexTodoRespVO {
+
+    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "10170")
+    @ExcelProperty("主键")
+    private String id;
+
+    @Schema(description = "代办类型 1代办 2审核", example = "2")
+    @ExcelProperty("代办类型 1代办 2审核")
+    private Integer type;
+
+    @Schema(description = "代办名称", example = "张三")
+    @ExcelProperty("代办名称")
+    private String typeName;
+
+    @Schema(description = "用户ID", example = "30517")
+    @ExcelProperty("用户ID")
+    private String userId;
+
+    @Schema(description = "状态 100 进行中 200 完成 300已取消", example = "2")
+    @ExcelProperty("状态 100 进行中 200 完成 300已取消")
+    private Integer status;
+
+    @Schema(description = "关联ID", example = "31589")
+    @ExcelProperty("关联ID")
+    private String refId;
+
+    @Schema(description = "设备类型 200锅炉 300管道", example = "1")
+    @ExcelProperty("设备类型 200锅炉 300管道")
+    private Integer equipMainType;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 33 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/indextodo/vo/IndexTodoSaveReqVO.java

@@ -0,0 +1,33 @@
+package cn.start.tz.module.pressure2.controller.admin.indextodo.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import jakarta.validation.constraints.*;
+
+@Schema(description = "管理后台 - 首页代办新增/修改 Request VO")
+@Data
+public class IndexTodoSaveReqVO {
+
+    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "10170")
+    private String id;
+
+    @Schema(description = "代办类型 1代办 2审核", example = "2")
+    private Integer type;
+
+    @Schema(description = "代办名称", example = "张三")
+    private String typeName;
+
+    @Schema(description = "用户ID", example = "30517")
+    private String userId;
+
+    @Schema(description = "状态 100 进行中 200 完成 300已取消", example = "2")
+    private Integer status;
+
+    @Schema(description = "关联ID", example = "31589")
+    private String refId;
+
+    @Schema(description = "设备类型 200锅炉 300管道", example = "1")
+    private Integer equipMainType;
+
+}

+ 55 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/dataobject/indextodo/IndexTodoDO.java

@@ -0,0 +1,55 @@
+package cn.start.tz.module.pressure2.dal.dataobject.indextodo;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import cn.start.tz.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 首页待办 DO
+ *
+ * @author 特种管理员
+ */
+@TableName("pressure2_index_todo")
+@KeySequence("pressure2_index_todo_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class IndexTodoDO extends BaseDO {
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.ASSIGN_UUID)
+    private String id;
+    /**
+     * 待办类型 1待办 2审核
+     */
+    private Integer type;
+    /**
+     * 待办名称
+     */
+    private String typeName;
+    /**
+     * 用户ID
+     */
+    private String userId;
+    /**
+     * 状态 100 进行中 200 完成 300已取消
+     */
+    private Integer status;
+    /**
+     * 关联ID
+     */
+    private String refId;
+    /**
+     * 设备类型 200锅炉 300管道
+     */
+    private Integer equipMainType;
+
+}

+ 60 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/mysql/indextodo/IndexTodoMapper.java

@@ -0,0 +1,60 @@
+package cn.start.tz.module.pressure2.dal.mysql.indextodo;
+
+import java.util.*;
+
+import cn.start.tz.framework.common.pojo.PageResult;
+import cn.start.tz.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.start.tz.framework.mybatis.core.mapper.BaseMapperX;
+import cn.start.tz.module.pressure2.dal.dataobject.indextodo.IndexTodoDO;
+import org.apache.ibatis.annotations.Mapper;
+import cn.start.tz.module.pressure2.controller.admin.indextodo.vo.*;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 首页代办 Mapper
+ *
+ * @author 特种管理员
+ */
+@Mapper
+public interface IndexTodoMapper extends BaseMapperX<IndexTodoDO> {
+
+    default PageResult<IndexTodoDO> selectPage(IndexTodoPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<IndexTodoDO>()
+                .eqIfPresent(IndexTodoDO::getType, reqVO.getType())
+                .likeIfPresent(IndexTodoDO::getTypeName, reqVO.getTypeName())
+                .eqIfPresent(IndexTodoDO::getUserId, reqVO.getUserId())
+                .eqIfPresent(IndexTodoDO::getStatus, reqVO.getStatus())
+                .eqIfPresent(IndexTodoDO::getRefId, reqVO.getRefId())
+                .eqIfPresent(IndexTodoDO::getEquipMainType, reqVO.getEquipMainType())
+                .betweenIfPresent(IndexTodoDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(IndexTodoDO::getId));
+    }
+
+    default List<Map<String, Object>> selectGroupCount(String userId) {
+        List<IndexTodoDO> list = selectList(new LambdaQueryWrapper<IndexTodoDO>()
+                .eq(IndexTodoDO::getUserId, userId)
+                .eq(IndexTodoDO::getStatus, 100));
+        Map<String, Map<String, Integer>> groupMap = new HashMap<>();
+        for (IndexTodoDO item : list) {
+            String equipKey = item.getEquipMainType() != null ? item.getEquipMainType().toString() : "null";
+            groupMap.computeIfAbsent(equipKey, k -> new HashMap<>())
+                    .merge(item.getTypeName(), 1, Integer::sum);
+        }
+        List<Map<String, Object>> result = new ArrayList<>();
+        for (Map.Entry<String, Map<String, Integer>> equipEntry : groupMap.entrySet()) {
+            for (Map.Entry<String, Integer> nameEntry : equipEntry.getValue().entrySet()) {
+                Map<String, Object> row = new HashMap<>();
+                row.put("equipMainType", equipEntry.getKey());
+                row.put("typeName", nameEntry.getKey());
+                row.put("cnt", nameEntry.getValue());
+                result.add(row);
+            }
+        }
+        return result;
+    }
+
+}

+ 53 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/enums/IndexTodoTypeNameEnum.java

@@ -0,0 +1,53 @@
+package cn.start.tz.module.pressure2.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 首页待办类型名称枚举
+ * 对应 pressure2_index_todo 表的 type_name 字段值
+ *
+ * @author 特种管理员
+ */
+@Getter
+@AllArgsConstructor
+public enum IndexTodoTypeNameEnum {
+
+    // ==================== 代办 (type=1) ====================
+    PLAN_SCHEDULING("ScheduleCount", "计划表"),
+    TASK_ORDER_CONFIRM("TaskOrderConfirmCount", "任务确认"),
+    MY_TASK("MyTaskCount", "检测录入"),
+    PREPARE_REPORT("PrepareReportCount", "报告编制"),
+
+    // ==================== 审核 (type=2) ====================
+    RECHECK_ORDER_ITEM("RecheckOrderItemCount", "记录校核"),
+    APPROVE_ORDER_ITEM("ApproveOrderItemCount", "报告审核"),
+    RATIFY_ORDER_ITEM("RatifyOrderItemCount", "报告审批"),
+    REPORT_CITY_BUREAU("ReportCityBureauCount", "上报市局审核"),
+    ACCEPT_ORDER("AcceptOrderCount", "受理单审核"),
+    PRESSURE_NON_TAX("PressureNonTaxCount", "缴费单待校核"),
+    TASK_ORDER("TaskOrderCount", "任务单修改审核"),
+    INSPECTION_OPINION_NOTICE("PressureInspectionOpinionNoticeCount", "检验意见通知书审核"),
+    SERIOUS_ACCIDENT("PressureSeriousAccidentCount", "重大问题线索告知审核"),
+    INSPECTION_SCHEME("PressureInspectionSchemeCount", "检验方案审核"),
+    WORKING_INSTRUCTION("PressureWorkingInstructionCount", "操作指导书审核"),
+    ;
+
+    /** 数据库存储值 */
+    private final String code;
+
+    /** 中文显示名称 */
+    private final String name;
+
+    /**
+     * 根据数据库值查找枚举
+     */
+    public static IndexTodoTypeNameEnum getByCode(String code) {
+        for (IndexTodoTypeNameEnum e : values()) {
+            if (e.code.equals(code)) {
+                return e;
+            }
+        }
+        return null;
+    }
+}

+ 9 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/acceptorder/AcceptOrderServiceImpl.java

@@ -29,6 +29,7 @@ import cn.start.tz.module.member.api.user.MemberUserApi;
 import cn.start.tz.module.pressure.constant.TemplateIdConstants;
 import cn.start.tz.module.pressure2.dal.dataobject.pipeacceptorderuser.PipeAcceptOrderUserDO;
 import cn.start.tz.module.pressure2.dal.mysql.pipeacceptorderuser.PipeAcceptOrderUserMapper;
+import cn.start.tz.module.pressure2.enums.IndexTodoTypeNameEnum;
 import cn.start.tz.module.pressure2.enums.RedisKeyEnums;
 import cn.start.tz.module.pressure2.controller.admin.acceptorder.vo.*;
 import cn.start.tz.module.pressure2.controller.admin.appointmentconfirmorder.vo.*;
@@ -54,6 +55,7 @@ import cn.start.tz.module.pressure2.dal.mysql.reporttemplate.ReportTemplateMappe
 import cn.start.tz.module.pressure2.service.boilertaskorder.BoilerTaskOrderService;
 import cn.start.tz.module.pressure2.service.common.RedisService;
 import cn.start.tz.module.pressure2.service.equipboiler.EquipBoilerService;
+import cn.start.tz.module.pressure2.service.indextodo.IndexTodoService;
 import cn.start.tz.module.pressure2.service.orderreport.OrderReportService;
 import cn.start.tz.module.system.api.dept.DeptApi;
 import cn.start.tz.module.system.api.dept.dto.DeptRespDTO;
@@ -132,6 +134,9 @@ public class AcceptOrderServiceImpl implements AcceptOrderService {
     @Resource
     private EquipBoilerService equipBoilerService;
 
+    @Resource
+    private IndexTodoService indexTodoService;
+
     @Resource
     private AdminUserApi adminUserApi;
 
@@ -618,6 +623,10 @@ public class AcceptOrderServiceImpl implements AcceptOrderService {
                 orderExceptionMapper.insert(orderExceptionDO);
             }
         }
+
+        //删除受理单审核待办
+        indexTodoService.deleteIndexToDO(IndexTodoTypeNameEnum.ACCEPT_ORDER.getCode(),null,acceptOrderDO.getId(),200);
+
  /*
         // 异步推送任务单
         CompletableFuture.runAsync(() -> {

+ 8 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/acceptorder/PipeAcceptOrderServiceImpl.java

@@ -30,6 +30,7 @@ import cn.start.tz.module.member.api.user.MemberUserApi;
 import cn.start.tz.module.pressure.constant.TemplateIdConstants;
 import cn.start.tz.module.pressure2.dal.dataobject.appointmentconfirmorder.AppointmentConfirmOrderDO;
 import cn.start.tz.module.pressure2.dal.dataobject.boileracceptorderuser.BoilerAcceptOrderUserDO;
+import cn.start.tz.module.pressure2.enums.IndexTodoTypeNameEnum;
 import cn.start.tz.module.pressure2.enums.RedisKeyEnums;
 import cn.start.tz.module.pressure2.controller.admin.acceptorder.vo.*;
 import cn.start.tz.module.pressure2.controller.admin.appointmentconfirmorder.vo.*;
@@ -60,6 +61,7 @@ import cn.start.tz.module.pressure2.dal.mysql.pipeorderexception.PipeOrderExcept
 import cn.start.tz.module.pressure2.dal.mysql.reporttemplate.ReportTemplateMapper;
 import cn.start.tz.module.pressure2.service.common.RedisService;
 import cn.start.tz.module.pressure2.service.equippipe.EquipPipeService;
+import cn.start.tz.module.pressure2.service.indextodo.IndexTodoService;
 import cn.start.tz.module.pressure2.service.orderreport.OrderReportService;
 import cn.start.tz.module.pressure2.service.pipetaskorder.PipeTaskOrderService;
 import cn.start.tz.module.system.api.dept.DeptApi;
@@ -139,6 +141,9 @@ public class PipeAcceptOrderServiceImpl implements PipeAcceptOrderService {
     @Resource
     private EquipPipeService equipPipeService;
 
+    @Resource
+    private IndexTodoService indexTodoService;
+
     @Resource
     private AdminUserApi adminUserApi;
 
@@ -615,6 +620,9 @@ public class PipeAcceptOrderServiceImpl implements PipeAcceptOrderService {
             }
         }
 
+        //删除受理单审核待办
+        indexTodoService.deleteIndexToDO(IndexTodoTypeNameEnum.ACCEPT_ORDER.getCode(),null,acceptOrderDO.getId(),300);
+
  /*
         // 异步推送任务单
         CompletableFuture.runAsync(() -> {

+ 17 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/appointmentconfirmorder/AppointmentConfirmOrderServiceImpl.java

@@ -13,7 +13,9 @@ import cn.start.tz.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.start.tz.framework.security.core.LoginUser;
 import cn.start.tz.framework.web.core.util.WebFrameworkUtils;
 import cn.start.tz.module.bpm.api.task.BpmProcessInstanceApi;
+import cn.start.tz.module.bpm.api.task.BpmTaskApi;
 import cn.start.tz.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
+import cn.start.tz.module.bpm.api.task.dto.BpmTaskDTO;
 import cn.start.tz.module.bpm.enums.BpmModelConstants;
 import cn.start.tz.module.bpm.enums.boiler.BoilerBpmModelConstants;
 import cn.start.tz.module.bpm.enums.pipe.PipeBpmModelConstants;
@@ -23,7 +25,9 @@ import cn.start.tz.module.member.api.templatesendlog.dto.TemplateSendLogDto;
 import cn.start.tz.module.member.api.templatesendlog.dto.TemplateSendLogRespDto;
 import cn.start.tz.module.pressure2.controller.admin.boilerorderexception.vo.BoilerOrderExceptionSaveReqVO;
 import cn.start.tz.module.pressure2.dal.dataobject.acceptorder.AcceptOrderDO;
+import cn.start.tz.module.pressure2.dal.dataobject.equippipeschedulinguser.EquipPipeSchedulingUserDO;
 import cn.start.tz.module.pressure2.dal.mysql.equipboilerscheduling.EquipBoilerSchedulingMapper;
+import cn.start.tz.module.pressure2.enums.IndexTodoTypeNameEnum;
 import cn.start.tz.module.pressure2.enums.RedisKeyEnums;
 import cn.start.tz.module.pressure2.controller.admin.appointmentconfirmorder.vo.*;
 import cn.start.tz.module.pressure2.controller.app.appointmentconfirmorder.vo.AppAppointmentRefuseVO;
@@ -54,6 +58,7 @@ import cn.start.tz.module.pressure2.dal.mysql.equipboilerschedulingitem.EquipBoi
 import cn.start.tz.module.pressure2.service.acceptorder.AcceptOrderService;
 import cn.start.tz.module.pressure2.service.common.RedisService;
 import cn.start.tz.module.pressure2.service.equipboilerschedulingcheck.EquipBoilerSchedulingCheckService;
+import cn.start.tz.module.pressure2.service.indextodo.IndexTodoService;
 import cn.start.tz.module.pressure2.service.member.MemberRemoteService;
 import cn.start.tz.module.pressure2.service.member.vo.MemberUserCreateReqVO;
 import cn.start.tz.module.pressure2.service.member.vo.MemberUserRespVO;
@@ -135,6 +140,9 @@ public class AppointmentConfirmOrderServiceImpl implements AppointmentConfirmOrd
     @Resource
     private EquipBoilerMapper equipBoilerMapper;
 
+    @Resource
+    private IndexTodoService indexTodoService;
+
     @Resource
     private BoilerAppointmentConfirmOrderUserMapper appointmentConfirmOrderUserMapper;
 
@@ -159,6 +167,9 @@ public class AppointmentConfirmOrderServiceImpl implements AppointmentConfirmOrd
     @Resource
     private DictDataApi dictDataApi;
 
+    @Resource
+    private BpmTaskApi bpmTaskApi;
+
     @Resource
     private OrgContactApi orgContactApi;
 
@@ -1000,6 +1011,12 @@ public class AppointmentConfirmOrderServiceImpl implements AppointmentConfirmOrd
 
         // 生成受理单报告
         orderReportService.generateBoilerOrderReport(acceptOrder.getId());
+
+        //首页待办 - 受理单审核
+        List<String> userIds = new ArrayList<>();
+        userIds.add(getLoginUserId());
+        indexTodoService.addIndexToDO(IndexTodoTypeNameEnum.ACCEPT_ORDER.getCode(),userIds,acceptOrder.getId(),200);
+
     }
 
     @Override

+ 16 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/appointmentconfirmorder/PipeAppointmentConfirmOrderServiceImpl.java

@@ -14,7 +14,9 @@ import cn.start.tz.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.start.tz.framework.security.core.LoginUser;
 import cn.start.tz.framework.web.core.util.WebFrameworkUtils;
 import cn.start.tz.module.bpm.api.task.BpmProcessInstanceApi;
+import cn.start.tz.module.bpm.api.task.BpmTaskApi;
 import cn.start.tz.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
+import cn.start.tz.module.bpm.api.task.dto.BpmTaskDTO;
 import cn.start.tz.module.bpm.enums.BpmModelConstants;
 import cn.start.tz.module.bpm.enums.boiler.BoilerBpmModelConstants;
 import cn.start.tz.module.bpm.enums.pipe.PipeBpmModelConstants;
@@ -31,6 +33,7 @@ import cn.start.tz.module.pressure2.dal.dataobject.boilerappointmentconfirmorder
 import cn.start.tz.module.pressure2.dal.dataobject.boilerorderexception.BoilerOrderExceptionDO;
 import cn.start.tz.module.pressure2.dal.dataobject.equippipescheduling.EquipPipeSchedulingDO;
 import cn.start.tz.module.pressure2.dal.mysql.equippipescheduling.EquipPipeSchedulingMapper;
+import cn.start.tz.module.pressure2.enums.IndexTodoTypeNameEnum;
 import cn.start.tz.module.pressure2.enums.RedisKeyEnums;
 import cn.start.tz.module.pressure2.controller.admin.appointmentconfirmorder.vo.*;
 import cn.start.tz.module.pressure2.controller.app.appointmentconfirmorder.vo.AppAppointmentRefuseVO;
@@ -75,6 +78,7 @@ import cn.start.tz.module.pressure2.dal.mysql.pipeorderexception.PipeOrderExcept
 import cn.start.tz.module.pressure2.service.acceptorder.PipeAcceptOrderService;
 import cn.start.tz.module.pressure2.service.common.RedisService;
 import cn.start.tz.module.pressure2.service.equippipeschedulingcheck.EquipPipeSchedulingCheckService;
+import cn.start.tz.module.pressure2.service.indextodo.IndexTodoService;
 import cn.start.tz.module.pressure2.service.member.MemberRemoteService;
 import cn.start.tz.module.pressure2.service.member.vo.MemberUserCreateReqVO;
 import cn.start.tz.module.pressure2.service.member.vo.MemberUserRespVO;
@@ -145,6 +149,12 @@ public class PipeAppointmentConfirmOrderServiceImpl implements PipeAppointmentCo
     @Resource
     private DeptApi deptApi;
 
+    @Resource
+    private BpmTaskApi bpmTaskApi;
+
+    @Resource
+    private IndexTodoService indexTodoService;
+
     @Resource
     private ClientUnitApi clientUnitApi;
 
@@ -1127,6 +1137,12 @@ public class PipeAppointmentConfirmOrderServiceImpl implements PipeAppointmentCo
 
         // 生成受理单报告
         orderReportService.generatePipeOrderReport(acceptOrder.getId());
+
+        //首页待办 - 受理单审核
+        List<String> userIds = new ArrayList<>();
+        userIds.add(getLoginUserId());
+        indexTodoService.addIndexToDO(IndexTodoTypeNameEnum.ACCEPT_ORDER.getCode(),userIds,acceptOrder.getId(),300);
+
     }
 
     @Override

+ 106 - 4
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorder/BoilerTaskOrderServiceImpl.java

@@ -42,6 +42,7 @@ import cn.start.tz.module.pressure2.controller.admin.pipetaskorder.vo.PipeTaskOr
 import cn.start.tz.module.pressure2.controller.admin.pipetaskorder.vo.PipeTaskOrderSyncReportVO;
 import cn.start.tz.module.pressure2.controller.appapi.boilertaskorder.vo.BoilerOrderItemBatchClaimVO;
 import cn.start.tz.module.pressure2.dal.dataobject.businessmemberrelation.BusinessMemberRelationDO;
+import cn.start.tz.module.pressure2.dal.dataobject.indextodo.IndexTodoDO;
 import cn.start.tz.module.pressure2.dal.dataobject.notificationformreport.NotificationformReportDO;
 import cn.start.tz.module.pressure2.dal.dataobject.opinionnotificationfollowrecord.OpinionNotificationFollowRecordDO;
 import cn.start.tz.module.pressure2.dal.dataobject.orderreport.OrderReportDO;
@@ -56,16 +57,14 @@ import cn.start.tz.module.pressure2.dal.dataobject.taskordernontaxrecorditem.Tas
 import cn.start.tz.module.pressure2.dal.mysql.boileracceptorderuser.BoilerAcceptOrderUserMapper;
 import cn.start.tz.module.pressure2.dal.mysql.boilerconnectrecordreport.BoilerConnectRecordReportMapper;
 import cn.start.tz.module.pressure2.dal.mysql.businessmemberrelation.BusinessMemberRelationMapper;
+import cn.start.tz.module.pressure2.dal.mysql.indextodo.IndexTodoMapper;
 import cn.start.tz.module.pressure2.dal.mysql.notificationformreport.NotificationformReportMapper;
 import cn.start.tz.module.pressure2.dal.mysql.pipetaskorder.PipeTaskOrderMapper;
 import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitem.PipeTaskOrderItemMapper;
 import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderuser.PipeTaskOrderUserMapper;
 import cn.start.tz.module.pressure2.dal.mysql.taskordernontaxrecord.TaskOrderNonTaxRecordMapper;
 import cn.start.tz.module.pressure2.dal.mysql.taskordernontaxrecorditem.TaskOrderNonTaxRecordItemMapper;
-import cn.start.tz.module.pressure2.enums.AcceptOrderStatusEnum;
-import cn.start.tz.module.pressure2.enums.RedisKeyEnums;
-import cn.start.tz.module.pressure2.enums.TaskOrderItemReportTypeEnum;
-import cn.start.tz.module.pressure2.enums.TaskOrderStatusEnum;
+import cn.start.tz.module.pressure2.enums.*;
 import cn.start.tz.module.pressure2.controller.admin.appointmentconfirmorder.vo.TeamItemVO;
 import cn.start.tz.module.pressure2.controller.admin.appointmentconfirmrefuseyearitem.vo.YearCheckIdVO;
 import cn.start.tz.module.pressure2.controller.admin.boilerorderexception.vo.BoilerOrderExceptionRespVO;
@@ -158,6 +157,7 @@ import cn.start.tz.module.pressure2.service.equipboilerscheduling.EquipBoilerSch
 import cn.start.tz.module.pressure2.service.equipboilerschedulingcheck.EquipBoilerSchedulingCheckService;
 import cn.start.tz.module.pressure2.service.externalOA.ExternalOAService;
 import cn.start.tz.module.pressure2.service.externalOA.vo.*;
+import cn.start.tz.module.pressure2.service.indextodo.IndexTodoService;
 import cn.start.tz.module.pressure2.service.inspectionnature.InspectionNatureService;
 import cn.start.tz.module.pressure2.service.inspectionnature.InspectionNatureTemplateService;
 import cn.start.tz.module.pressure2.service.opinionnotificationfollowrecord.OpinionNotificationFollowRecordService;
@@ -282,6 +282,9 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
     @Resource
     private BoilerTaskOrderItemMapper boilerTaskOrderItemMapper;
 
+    @Resource
+    private IndexTodoService indexTodoService;
+
     @Resource
     private ReportTemplateMapper reportTemplateMapper;
 
@@ -796,6 +799,22 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
                 eq(BoilerTaskOrderDO::getId, taskOrderConfirmVO.getId())
         );
 
+        //首页待办 - 任务确认
+        List<String> userIds = new ArrayList<>();
+        userIds.add(userId);
+        List<BoilerTaskOrderUserDO> taskOrderUserDOList = boilerTaskOrderUserMapper.selectList(new LambdaQueryWrapperX<BoilerTaskOrderUserDO>()
+                .eq(BoilerTaskOrderUserDO::getOrderId, taskOrderDO.getId()));
+        taskOrderUserDOList.forEach(item -> {
+            if (!userIds.contains(item.getUserId())){
+                userIds.add(item.getUserId());
+            }
+        });
+        if (taskOrderConfirmVO.getConfirm()){
+            indexTodoService.addIndexToDO(IndexTodoTypeNameEnum.TASK_ORDER_CONFIRM.getCode(),userIds,taskOrderDO.getId(),200);
+        }else{
+            indexTodoService.deleteIndexToDO(IndexTodoTypeNameEnum.TASK_ORDER_CONFIRM.getCode(),null,taskOrderDO.getId(),200);
+        }
+
         // 无需新增项目
         if (taskOrderConfirmVO.getConfirm() == null || !taskOrderConfirmVO.getConfirm()) {
             return;
@@ -1081,6 +1100,11 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
         //认领时同步报表
         syncAllReportDataByOrderItemId(new BoilerTaskOrderSyncReportVO().setOrderItemId(orderItemIdVO.getId()));
 
+        //首页待办 - 检测录入
+        List<String> userIds = new ArrayList<>();
+        userIds.add(getLoginUserId());
+        indexTodoService.addIndexToDO(IndexTodoTypeNameEnum.MY_TASK.getCode(),userIds,orderItemIdVO.getId(),200);
+
         return true;
     }
 
@@ -1106,6 +1130,9 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
                 set(BoilerTaskOrderItemDO::getMainChecker,null).
                 eq(BoilerTaskOrderItemDO::getId,orderItemIdVO.getId()));
 
+        //首页待办 - 检测录入
+        indexTodoService.deleteIndexToDO(IndexTodoTypeNameEnum.MY_TASK.getCode(),null,orderItemIdVO.getId(),200);
+
         return true;
     }
 
@@ -1680,6 +1707,20 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
         syncReportVO.setReportType("record");
         syncReportData(syncReportVO);
 
+        //首页待办 - 去掉待办
+        String typeName = "";
+        if (reportDO.getReportType() == 600){
+            //检验方案
+            typeName = IndexTodoTypeNameEnum.INSPECTION_SCHEME.getCode();
+        }else if (reportDO.getReportType() == 700){
+            //操作指导书
+            typeName = IndexTodoTypeNameEnum.WORKING_INSTRUCTION.getCode();
+        }else if (reportDO.getReportType() == 400){
+            //检验意见通知
+            typeName = IndexTodoTypeNameEnum.INSPECTION_OPINION_NOTICE.getCode();
+        }
+        indexTodoService.deleteIndexToDO(typeName,null,reportDO.getId(),200);
+
         return true;
     }
 
@@ -2074,6 +2115,9 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
             }
         }
 
+        //首页待办 - 去掉任务单修改
+        indexTodoService.deleteIndexToDO(IndexTodoTypeNameEnum.TASK_ORDER.getCode(),null,id,200);
+
         return true;
     }
 
@@ -3798,6 +3842,18 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
 
         }
 
+        //首页待办 - 去掉记录校核
+        indexTodoService.deleteIndexToDO(IndexTodoTypeNameEnum.RECHECK_ORDER_ITEM.getCode(),null,taskOrderAuditSingleVO.getId(),200);
+        //首页待办 - 主报告编制
+        if (boilerTaskOrderItemReportDO.getReportType() == 100){
+            BoilerTaskOrderItemDO taskOrderItemDO = boilerTaskOrderItemMapper.selectById(boilerTaskOrderItemReportDO.getOrderItemId());
+            if (taskOrderItemDO != null){
+                List<String> userIds = new ArrayList<>();
+                userIds.add(taskOrderItemDO.getMainChecker());
+                indexTodoService.addIndexToDO(IndexTodoTypeNameEnum.PREPARE_REPORT.getCode(),userIds,taskOrderItemDO.getId(),200);
+            }
+        }
+
     }
 
     @Override
@@ -3811,6 +3867,7 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
         BoilerTaskOrderItemReportDO taskOrderItemReportDO = new BoilerTaskOrderItemReportDO();
         taskOrderItemReportDO.setId(taskOrderAuditSingleVO.getId());
         taskOrderItemReportDO.setAuditor(userId);
+        taskOrderItemReportDO.setRecheckId(null); //拒绝后去掉校核人
         taskOrderItemReportDO.setRecheckDate(now());
         taskOrderItemReportDO.setRecheckStatus(300);
         taskOrderItemReportDO.setRecheckReason(taskOrderAuditSingleVO.getReason());
@@ -3832,6 +3889,9 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
         taskOrderItemReportRecordDO.setRemark(taskOrderAuditSingleVO.getReason());
         taskOrderItemReportRecordMapper.insert(taskOrderItemReportRecordDO);
 
+        //首页待办 - 去掉记录校核
+        indexTodoService.deleteIndexToDO(IndexTodoTypeNameEnum.RECHECK_ORDER_ITEM.getCode(),null,taskOrderAuditSingleVO.getId(),200);
+
     }
 
     @Override
@@ -4294,6 +4354,21 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
                     });
                 }
             }
+
+            //首页待办
+            List<String> userIds = new ArrayList<>();
+            userIds.add(getLoginUserId()); //发起人
+            //审核人
+            if (majorIssuesSubmitVO.getAuditUserIds() != null && !majorIssuesSubmitVO.getAuditUserIds().isEmpty()){
+                majorIssuesSubmitVO.getAuditUserIds().forEach(userId -> {
+                    if (!userIds.contains(userId)) {
+                        userIds.add(userId);
+                    }
+                });
+            }
+            //检验方案
+            indexTodoService.addIndexToDO(IndexTodoTypeNameEnum.INSPECTION_SCHEME.getCode(),userIds,itemReportDO.getId(),200);
+
             return true;
         }
 
@@ -4372,6 +4447,28 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
         }
         itemReportDO.setInstrumentId(majorIssuesSubmitVO.getInstrumentId());
         taskOrderItemReportMapper.updateById(itemReportDO);
+
+        //首页待办
+        List<String> userIds = new ArrayList<>();
+        userIds.add(getLoginUserId()); //发起人
+        //审核人
+        if (majorIssuesSubmitVO.getAuditUserIds() != null && !majorIssuesSubmitVO.getAuditUserIds().isEmpty()){
+            majorIssuesSubmitVO.getAuditUserIds().forEach(userId -> {
+                if (!userIds.contains(userId)) {
+                    userIds.add(userId);
+                }
+            });
+        }
+        String typeName = "";
+        if (itemReportDO.getReportType() == 700){
+            //操作指导书
+            typeName = IndexTodoTypeNameEnum.WORKING_INSTRUCTION.getCode();
+        }else if (itemReportDO.getReportType() == 400){
+            //检验意见通知
+            typeName = IndexTodoTypeNameEnum.INSPECTION_OPINION_NOTICE.getCode();
+        }
+        indexTodoService.addIndexToDO(typeName,userIds,itemReportDO.getId(),200);
+
         return true;
 
     }
@@ -4905,6 +5002,11 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
             boilerTaskOrderItemMapper.updateById(updateObj);
         }
 
+        //首页待办 - 记录校核
+        List<String> userIds = new ArrayList<>();
+        userIds.add(recheckOrderItemVO.getRecheckId());
+        indexTodoService.addIndexToDO(IndexTodoTypeNameEnum.RECHECK_ORDER_ITEM.getCode(),userIds,recheckOrderItemVO.getId(),200);
+
         return true;
 
     }

+ 7 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorderitemreport/BoilerTaskOrderItemReportServiceImpl.java

@@ -35,6 +35,7 @@ import cn.start.tz.module.pressure2.service.externalOA.vo.ExternalOACommentInfoR
 import cn.start.tz.module.pressure2.service.externalOA.vo.ExternalOACommentRes;
 import cn.start.tz.module.pressure2.service.externalOA.vo.ExternalOARes;
 import cn.start.tz.module.pressure2.service.boilertaskorderissuereport.BoilerTaskOrderIssueReportService;
+import cn.start.tz.module.pressure2.service.indextodo.IndexTodoService;
 import cn.start.tz.module.pressure2.service.pushtaskorder.PushTaskOrderService;
 import cn.start.tz.module.pressure2.service.synchronization.SynchronizationService;
 import cn.start.tz.module.pressure2.service.taskordernontaxapply.TaskOrderNonTaxApplyService;
@@ -91,6 +92,9 @@ public class BoilerTaskOrderItemReportServiceImpl extends ServiceImpl<BoilerTask
     @Resource
     private ReportTemplateMapper reportTemplateMapper;
 
+    @Resource
+    private IndexTodoService indexTodoService;
+
     @Override
     public String createBoilerTaskOrderItemReport(BoilerTaskOrderItemReportSaveReqVO createReqVO) {
         // 插入
@@ -1031,6 +1035,9 @@ public class BoilerTaskOrderItemReportServiceImpl extends ServiceImpl<BoilerTask
                 equipBoilerCheckHistoryMapper.insert(historyDO);
             }
 
+            //去掉首页的所有任务单相关待办
+            indexTodoService.deleteAllTaskOrderIndexToDO(boilerTaskOrderDO.getId());
+
         }
 
     }

+ 9 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorderoperation/BoilerTaskOrderOperationServiceImpl.java

@@ -11,7 +11,9 @@ import cn.start.tz.module.pressure2.controller.admin.pipetaskorderoperation.vo.P
 import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorder.BoilerTaskOrderDO;
 import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderoperation.PipeTaskOrderOperationDO;
 import cn.start.tz.module.pressure2.dal.mysql.boilertaskorder.BoilerTaskOrderMapper;
+import cn.start.tz.module.pressure2.enums.IndexTodoTypeNameEnum;
 import cn.start.tz.module.pressure2.enums.TaskOrderStatusEnum;
+import cn.start.tz.module.pressure2.service.indextodo.IndexTodoService;
 import cn.start.tz.module.system.api.user.AdminUserApi;
 import cn.start.tz.module.system.api.user.dto.AdminUserRespDTO;
 import org.apache.commons.lang3.StringUtils;
@@ -50,6 +52,8 @@ public class BoilerTaskOrderOperationServiceImpl extends ServiceImpl<BoilerTaskO
     private BpmProcessInstanceApi bpmProcessInstanceApi;
     @Resource
     private AdminUserApi adminUserApi;
+    @Resource
+    private IndexTodoService indexTodoService;
     @Override
     public String createBoilerTaskOrderOperation(BoilerTaskOrderOperationSaveReqVO createReqVO) {
 
@@ -86,6 +90,11 @@ public class BoilerTaskOrderOperationServiceImpl extends ServiceImpl<BoilerTaskO
         updateObj.setSubmitTime(LocalDateTime.now());
         boilerTaskOrderMapper.updateById(updateObj);
 
+        //首页待办 - 任务单修改
+        List<String> userIds = new ArrayList<>();
+        userIds.add(userId); //发起人
+        indexTodoService.addIndexToDO(IndexTodoTypeNameEnum.TASK_ORDER.getCode(),userIds,createReqVO.getObjId(),200);
+
         return boilerTaskOrderOperation.getId();
     }
 

+ 2 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QC12016_202401ReportOFData.java

@@ -131,6 +131,8 @@ public class QC12016_202401ReportOFData implements IDynamicOFData {
 
             result.put("reportNo",itemReportDO.getReportNo());
 
+            result.put("qrCode",itemReportDO.getQrCodeUrl());
+
             //审核人员信息
             AdminUserRespDTO userInfo = adminUserApi.getUser(itemReportDO.getApprovalId()).getData();
             if (userInfo != null){

+ 15 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/equipboilerscheduling/EquipBoilerSchedulingServiceImpl.java

@@ -29,11 +29,13 @@ import cn.start.tz.module.pressure2.dal.mysql.equipboilerschedulingitem.EquipBoi
 import cn.start.tz.module.pressure2.dal.mysql.equipboilerschedulingitem.EquipBoilerSchedulingFeeMapper;
 import cn.start.tz.module.pressure2.dal.mysql.equipboilerschedulingitem.EquipBoilerSchedulingItemMapper;
 import cn.start.tz.module.pressure2.dal.mysql.equipboilerschedulinguser.EquipBoilerSchedulingUserMapper;
+import cn.start.tz.module.pressure2.enums.IndexTodoTypeNameEnum;
 import cn.start.tz.module.pressure2.service.acceptorder.AcceptOrderService;
 import cn.start.tz.module.pressure2.service.appointmentconfirmorder.AppointmentConfirmOrderService;
 import cn.start.tz.module.pressure2.service.equipboilerschedulingcheck.EquipBoilerSchedulingCheckService;
 import cn.start.tz.module.pressure2.service.equipboilerschedulingitem.EquipBoilerSchedulingItemService;
 import cn.start.tz.module.pressure2.service.equipboilerschedulinguser.EquipBoilerSchedulingUserService;
+import cn.start.tz.module.pressure2.service.indextodo.IndexTodoService;
 import cn.start.tz.module.pressure2.util.MapUtils;
 import cn.start.tz.module.system.api.clientunit.ClientUnitApi;
 import cn.start.tz.module.system.api.clientunit.dto.ClientUnitDTO;
@@ -120,6 +122,9 @@ public class EquipBoilerSchedulingServiceImpl extends ServiceImpl<EquipBoilerSch
     @Resource
     private EquipBoilerSchedulingItemService equipBoilerSchedulingItemService;
 
+    @Resource
+    private IndexTodoService indexTodoService;
+
     @Resource
     private AdminUserApi adminUserApi;
     @Resource
@@ -354,6 +359,16 @@ public class EquipBoilerSchedulingServiceImpl extends ServiceImpl<EquipBoilerSch
                 });
             });
         }
+
+        //首页待办 - 计划表
+        allList.forEach(item->{
+
+            List<EquipBoilerSchedulingUserDO> schedulingUserList = equipBoilerSchedulingUserMapper.selectList(new LambdaQueryWrapperX<EquipBoilerSchedulingUserDO>()
+                    .eq(EquipBoilerSchedulingUserDO::getSchedulingId,item.getId()));
+            List<String> userIds = schedulingUserList.stream().map(EquipBoilerSchedulingUserDO::getUserId).toList();
+            indexTodoService.addIndexToDO(IndexTodoTypeNameEnum.PLAN_SCHEDULING.getCode(),userIds,item.getId(),200);
+
+        });
     }
 
     @Override

+ 16 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/equippipescheduling/EquipPipeSchedulingServiceImpl.java

@@ -49,10 +49,12 @@ import cn.start.tz.module.pressure2.dal.mysql.pipeacceptorderuser.PipeAcceptOrde
 import cn.start.tz.module.pressure2.dal.mysql.acceptorder.AcceptOrderMapper;
 import cn.start.tz.module.pressure2.dal.mysql.boilertaskorder.BoilerTaskOrderMapper;
 import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderuser.PipeTaskOrderUserMapper;
+import cn.start.tz.module.pressure2.enums.IndexTodoTypeNameEnum;
 import cn.start.tz.module.pressure2.service.appointmentconfirmorder.AppointmentConfirmOrderService;
 import cn.start.tz.module.pressure2.service.appointmentconfirmorder.PipeAppointmentConfirmOrderService;
 import cn.start.tz.module.pressure2.service.equippipeschedulingcheck.EquipPipeSchedulingCheckService;
 import cn.start.tz.module.pressure2.service.equippipeschedulingitem.EquipPipeSchedulingItemService;
+import cn.start.tz.module.pressure2.service.indextodo.IndexTodoService;
 import cn.start.tz.module.pressure2.util.MapUtils;
 import cn.start.tz.module.system.api.clientunit.ClientUnitApi;
 import cn.start.tz.module.system.api.clientunit.dto.ClientUnitDTO;
@@ -143,6 +145,9 @@ public class EquipPipeSchedulingServiceImpl extends ServiceImpl<EquipPipeSchedul
     @Resource
     private EquipPipeSchedulingItemDetailMapper equipPipeSchedulingItemDetialMapper;
 
+    @Resource
+    private IndexTodoService indexTodoService;
+
     @Resource
     private EquipPipeMapper equipPipeMapper;
 
@@ -476,6 +481,17 @@ public class EquipPipeSchedulingServiceImpl extends ServiceImpl<EquipPipeSchedul
                 });
             });
         }
+
+        //首页待办 - 计划表
+        allList.forEach(item->{
+
+            List<EquipPipeSchedulingUserDO> schedulingUserList = equipPipeSchedulingUserMapper.selectList(new LambdaQueryWrapperX<EquipPipeSchedulingUserDO>()
+                    .eq(EquipPipeSchedulingUserDO::getSchedulingId,item.getId()));
+            List<String> userIds = schedulingUserList.stream().map(EquipPipeSchedulingUserDO::getUserId).toList();
+            indexTodoService.addIndexToDO(IndexTodoTypeNameEnum.PLAN_SCHEDULING.getCode(),userIds,item.getId(),300);
+
+        });
+
     }
 
     @Override

+ 26 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/indextodo/IndexTodoService.java

@@ -0,0 +1,26 @@
+package cn.start.tz.module.pressure2.service.indextodo;
+
+import java.util.*;
+import jakarta.validation.*;
+import cn.start.tz.module.pressure2.controller.admin.indextodo.vo.*;
+import cn.start.tz.module.pressure2.dal.dataobject.indextodo.IndexTodoDO;
+import cn.start.tz.framework.common.pojo.PageResult;
+import cn.start.tz.framework.common.pojo.PageParam;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 首页代办 Service 接口
+ *
+ * @author 特种管理员
+ */
+public interface IndexTodoService extends IService<IndexTodoDO>  {
+
+    IndexTodoCountVO getTodoCount(String userId);
+
+    void addIndexToDO(String typeName,List<String> userIds,String refId,Integer equipMainType);
+
+    void deleteIndexToDO(String typeName,List<String> userIds,String refId,Integer equipMainType);
+
+    void deleteAllTaskOrderIndexToDO(String refId);
+
+}

+ 212 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/indextodo/IndexTodoServiceImpl.java

@@ -0,0 +1,212 @@
+package cn.start.tz.module.pressure2.service.indextodo;
+
+import cn.start.tz.module.pressure2.dal.dataobject.acceptorder.AcceptOrderDO;
+import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorder.BoilerTaskOrderDO;
+import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorderitem.BoilerTaskOrderItemDO;
+import cn.start.tz.module.pressure2.dal.mysql.acceptorder.AcceptOrderMapper;
+import cn.start.tz.module.pressure2.dal.mysql.boilertaskorder.BoilerTaskOrderMapper;
+import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitem.BoilerTaskOrderItemMapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.springframework.stereotype.Service;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.transaction.annotation.Transactional;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import java.util.*;
+import java.util.List;
+import java.util.Map;
+import cn.start.tz.module.pressure2.controller.admin.indextodo.vo.*;
+import cn.start.tz.module.pressure2.dal.dataobject.indextodo.IndexTodoDO;
+import cn.start.tz.framework.common.pojo.PageResult;
+import cn.start.tz.framework.common.pojo.PageParam;
+import cn.start.tz.framework.common.util.object.BeanUtils;
+
+import cn.start.tz.module.pressure2.dal.mysql.indextodo.IndexTodoMapper;
+import cn.start.tz.module.pressure2.enums.IndexTodoTypeNameEnum;
+
+import static cn.start.tz.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.start.tz.module.pressure2.enums.ErrorCodeConstants.*;
+
+/**
+ * 首页待办 Service 实现类
+ *
+ * @author 特种管理员
+ */
+@Service
+@Validated
+public class IndexTodoServiceImpl extends ServiceImpl<IndexTodoMapper, IndexTodoDO> implements IndexTodoService {
+
+    @Resource
+    private IndexTodoMapper indexTodoMapper;
+
+    @Resource
+    private BoilerTaskOrderMapper taskOrderMapper;
+
+    @Resource
+    private BoilerTaskOrderItemMapper boilerTaskOrderItemMapper;
+
+    @Override
+    public IndexTodoCountVO getTodoCount(String userId) {
+        List<Map<String, Object>> groupedList = indexTodoMapper.selectGroupCount(userId);
+        IndexTodoCountVO vo = new IndexTodoCountVO();
+        for (Map<String, Object> row : groupedList) {
+            String equipMainType = String.valueOf(row.get("equipMainType"));
+            String typeName = String.valueOf(row.get("typeName"));
+            int cnt = ((Number) row.get("cnt")).intValue();
+            boolean isBoiler = "200".equals(equipMainType);
+            boolean isPipe = "300".equals(equipMainType);
+
+            IndexTodoTypeNameEnum typeEnum = IndexTodoTypeNameEnum.getByCode(typeName);
+            if (typeEnum == null) {
+                continue;
+            }
+            switch (typeEnum) {
+                case PLAN_SCHEDULING:
+                    if (isBoiler) vo.setBoilerScheduleCount(cnt);
+                    else if (isPipe) vo.setPipeScheduleCount(cnt);
+                    break;
+                case TASK_ORDER_CONFIRM:
+                    if (isBoiler) vo.setBoilerTaskOrderConfirmCount(cnt);
+                    else if (isPipe) vo.setPipeTaskOrderConfirmCount(cnt);
+                    break;
+                case MY_TASK:
+                    if (isBoiler) vo.setBoilerMyTaskCount(cnt);
+                    else if (isPipe) vo.setPipeMyTaskCount(cnt);
+                    break;
+                case PREPARE_REPORT:
+                    if (isBoiler) vo.setBoilerPrepareReportCount(cnt);
+                    else if (isPipe) vo.setPipePrepareReportCount(cnt);
+                    break;
+                case RECHECK_ORDER_ITEM:
+                    if (isBoiler) vo.setBoilerRecheckOrderItemCount(cnt);
+                    else if (isPipe) vo.setPipeRecheckOrderItemCount(cnt);
+                    break;
+                case APPROVE_ORDER_ITEM:
+                    if (isBoiler) vo.setBoilerApproveOrderItemCount(cnt);
+                    else if (isPipe) vo.setPipeApproveOrderItemCount(cnt);
+                    break;
+                case RATIFY_ORDER_ITEM:
+                    if (isBoiler) vo.setBoilerRatifyOrderItemCount(cnt);
+                    else if (isPipe) vo.setPipeRatifyOrderItemCount(cnt);
+                    break;
+                case REPORT_CITY_BUREAU:
+                    if (isBoiler) vo.setBoilerReportCityBureauCount(cnt);
+                    else if (isPipe) vo.setPipeReportCityBureauCount(cnt);
+                    break;
+                case ACCEPT_ORDER:
+                    if (isBoiler) vo.setBoilerAcceptOrderCount(cnt);
+                    else if (isPipe) vo.setPipeAcceptOrderCount(cnt);
+                    break;
+                case PRESSURE_NON_TAX:
+                    if (isBoiler) vo.setBoilerPressureNonTaxCount(cnt);
+                    else if (isPipe) vo.setPipePressureNonTaxCount(cnt);
+                    break;
+                case TASK_ORDER:
+                    if (isBoiler) vo.setBoilerTaskOrderCount(cnt);
+                    else if (isPipe) vo.setPipeTaskOrderCount(cnt);
+                    break;
+                case INSPECTION_OPINION_NOTICE:
+                    if (isBoiler) vo.setBoilerPressureInspectionOpinionNoticeCount(cnt);
+                    else if (isPipe) vo.setPipePressureInspectionOpinionNoticeCount(cnt);
+                    break;
+                case SERIOUS_ACCIDENT:
+                    if (isBoiler) vo.setBoilerPressureSeriousAccidentCount(cnt);
+                    else if (isPipe) vo.setPipePressureSeriousAccidentCount(cnt);
+                    break;
+                case INSPECTION_SCHEME:
+                    if (isBoiler) vo.setBoilerPressureInspectionSchemeCount(cnt);
+                    else if (isPipe) vo.setPipePressureInspectionSchemeCount(cnt);
+                    break;
+                case WORKING_INSTRUCTION:
+                    if (isBoiler) vo.setBoilerPressureWorkingInstructionCount(cnt);
+                    else if (isPipe) vo.setPipePressureWorkingInstructionCount(cnt);
+                    break;
+            }
+        }
+        return vo;
+    }
+
+    @Override
+    @Transactional
+    public void addIndexToDO(String typeName,List<String> userIds,String refId,Integer equipMainType){
+
+        //添加首页待办
+        if (userIds != null && !userIds.isEmpty()){
+            // 去重处理
+            List<String> distinctUserIds = userIds.stream()
+                    .filter(userId -> userId != null && !userId.isEmpty())
+                    .distinct()
+                    .toList();
+            
+            if (!distinctUserIds.isEmpty()) {
+                List<IndexTodoDO> insertList = new ArrayList<>();
+                distinctUserIds.forEach(userId -> {
+                    IndexTodoDO indexTodoDO = new IndexTodoDO();
+                    indexTodoDO.setType(1);
+                    indexTodoDO.setTypeName(typeName);
+                    indexTodoDO.setUserId(userId);
+                    indexTodoDO.setStatus(100);
+                    indexTodoDO.setEquipMainType(equipMainType);
+                    indexTodoDO.setRefId(refId);
+                    insertList.add(indexTodoDO);
+                });
+                indexTodoMapper.insertBatch(insertList);
+
+            }
+        }
+
+    }
+
+    @Override
+    @Transactional
+    public void deleteIndexToDO(String typeName,List<String> userIds,String refId,Integer equipMainType){
+
+        //删除首页待办
+        if (userIds == null || userIds.isEmpty()){
+            indexTodoMapper.delete(new LambdaQueryWrapper<IndexTodoDO>()
+                    .eq(IndexTodoDO::getRefId, refId)
+                    .eq(IndexTodoDO::getTypeName, typeName)
+                    .eq(IndexTodoDO::getEquipMainType, equipMainType));
+        }else{
+            indexTodoMapper.delete(new LambdaQueryWrapper<IndexTodoDO>()
+                    .eq(IndexTodoDO::getRefId, refId)
+                    .eq(IndexTodoDO::getTypeName, typeName)
+                    .eq(IndexTodoDO::getEquipMainType, equipMainType)
+                    .in(IndexTodoDO::getUserId, userIds));
+        }
+
+    }
+
+    @Override
+    @Transactional
+    public void deleteAllTaskOrderIndexToDO(String refId){
+
+        BoilerTaskOrderDO taskOrderDO = taskOrderMapper.selectById(refId);
+
+        if (taskOrderDO != null){
+
+            //删除计划表首页待办
+            if (taskOrderDO.getSchedulingId() != null){
+                deleteIndexToDO(IndexTodoTypeNameEnum.PLAN_SCHEDULING.getCode(), null, taskOrderDO.getSchedulingId(), taskOrderDO.getEquipMainType());
+            }
+            //删除任务确认
+            deleteIndexToDO(IndexTodoTypeNameEnum.TASK_ORDER_CONFIRM.getCode(), null, taskOrderDO.getId(), taskOrderDO.getEquipMainType());
+            //删除检验录入
+            if (taskOrderDO.getEquipMainType() == 200){
+                List<BoilerTaskOrderItemDO> taskOrderItemDOList = boilerTaskOrderItemMapper.selectList(new LambdaQueryWrapper<BoilerTaskOrderItemDO>()
+                        .eq(BoilerTaskOrderItemDO::getOrderId, taskOrderDO.getId()));
+                taskOrderItemDOList.forEach(taskOrderItemDO -> {
+                    deleteIndexToDO(IndexTodoTypeNameEnum.MY_TASK.getCode(), null, taskOrderItemDO.getId(), taskOrderDO.getEquipMainType());
+                });
+            }else if (taskOrderDO.getEquipMainType() == 300){
+                deleteIndexToDO(IndexTodoTypeNameEnum.MY_TASK.getCode(), null, taskOrderDO.getId(), taskOrderDO.getEquipMainType());
+            }
+            //删除报告编制
+            deleteIndexToDO(IndexTodoTypeNameEnum.PREPARE_REPORT.getCode(), null, taskOrderDO.getId(), taskOrderDO.getEquipMainType());
+
+        }
+
+    }
+
+}

+ 96 - 47
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorder/PipeTaskOrderServiceImpl.java

@@ -44,6 +44,7 @@ import cn.start.tz.module.pressure2.dal.dataobject.boilertaskordersignfile.Boile
 import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorderuser.BoilerTaskOrderUserDO;
 import cn.start.tz.module.pressure2.dal.dataobject.businessmemberrelation.BusinessMemberRelationDO;
 import cn.start.tz.module.pressure2.dal.dataobject.equipboilerschedulingitem.EquipBoilerSchedulingCheckDO;
+import cn.start.tz.module.pressure2.dal.dataobject.indextodo.IndexTodoDO;
 import cn.start.tz.module.pressure2.dal.dataobject.notificationformreport.NotificationformReportDO;
 import cn.start.tz.module.pressure2.dal.dataobject.opinionnotificationfollowrecord.OpinionNotificationFollowRecordDO;
 import cn.start.tz.module.pressure2.dal.dataobject.orderreport.OrderReportDO;
@@ -51,13 +52,11 @@ import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderinput.PipeTaskOr
 import cn.start.tz.module.pressure2.dal.mysql.boilerconnectrecordreport.BoilerConnectRecordReportMapper;
 import cn.start.tz.module.pressure2.dal.mysql.boilertaskordersignfile.BoilerTaskOrderSignFileMapper;
 import cn.start.tz.module.pressure2.dal.mysql.businessmemberrelation.BusinessMemberRelationMapper;
+import cn.start.tz.module.pressure2.dal.mysql.indextodo.IndexTodoMapper;
 import cn.start.tz.module.pressure2.dal.mysql.notificationformreport.NotificationformReportMapper;
 import cn.start.tz.module.pressure2.dal.mysql.pipeacceptorderuser.PipeAcceptOrderUserMapper;
 import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderinput.PipeTaskOrderInputMapper;
-import cn.start.tz.module.pressure2.enums.AcceptOrderStatusEnum;
-import cn.start.tz.module.pressure2.enums.RedisKeyEnums;
-import cn.start.tz.module.pressure2.enums.TaskOrderItemReportTypeEnum;
-import cn.start.tz.module.pressure2.enums.TaskOrderStatusEnum;
+import cn.start.tz.module.pressure2.enums.*;
 import cn.start.tz.module.pressure2.constant.TemplateIdConstants;
 import cn.start.tz.module.pressure2.controller.admin.boilerorderexception.vo.BoilerOrderExceptionRespVO;
 import cn.start.tz.module.pressure2.controller.admin.boilertaskorder.vo.*;
@@ -142,6 +141,7 @@ import cn.start.tz.module.pressure2.service.equippipescheduling.EquipPipeSchedul
 import cn.start.tz.module.pressure2.service.equippipeschedulingcheck.EquipPipeSchedulingCheckService;
 import cn.start.tz.module.pressure2.service.externalOA.ExternalOAService;
 import cn.start.tz.module.pressure2.service.externalOA.vo.*;
+import cn.start.tz.module.pressure2.service.indextodo.IndexTodoService;
 import cn.start.tz.module.pressure2.service.inspectionnature.InspectionNatureService;
 import cn.start.tz.module.pressure2.service.inspectionnature.InspectionNatureTemplateService;
 import cn.start.tz.module.pressure2.service.opinionnotificationfollowrecord.OpinionNotificationFollowRecordService;
@@ -251,6 +251,9 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
     @Resource
     private ObjectMapper objectMapper;
 
+    @Resource
+    private IndexTodoService indexTodoService;
+
     @Resource
     private OrgContactApi orgContactApi;
 
@@ -709,6 +712,23 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
                 eq(PipeTaskOrderDO::getId, taskOrderConfirmVO.getId())
         );
 
+        //首页待办 - 任务确认
+        List<String> userIds = new ArrayList<>();
+        userIds.add(updateTaskOrder.getManagerId());
+        List<PipeTaskOrderUserDO> taskOrderUserDOList = pipeTaskOrderUserMapper.selectList(new LambdaQueryWrapperX<PipeTaskOrderUserDO>()
+                .eq(PipeTaskOrderUserDO::getOrderId, taskOrderDO.getId()));
+        taskOrderUserDOList.forEach(item -> {
+            if (!userIds.contains(item.getUserId())){
+                userIds.add(item.getUserId());
+            }
+        });
+        if (taskOrderConfirmVO.getConfirm()){
+            indexTodoService.addIndexToDO(IndexTodoTypeNameEnum.TASK_ORDER_CONFIRM.getCode(),userIds,taskOrderDO.getId(),300);
+        }else{
+            indexTodoService.deleteIndexToDO(IndexTodoTypeNameEnum.TASK_ORDER_CONFIRM.getCode(),null,taskOrderDO.getId(),300);
+        }
+
+
         // 无需新增项目
         //添加检测录入表
         PipeTaskOrderInputDO inputDO = pipeTaskOrderInputService.lambdaQuery().eq(PipeTaskOrderInputDO::getOrderId, taskOrderDO.getId()).one();
@@ -735,6 +755,15 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
                 pipeTaskOrderInputMapper.updateById(inputDO);
             }
         }
+
+        //首页待办 - 检测录入
+        if (taskOrderConfirmVO.getConfirm()){
+            indexTodoService.addIndexToDO(IndexTodoTypeNameEnum.MY_TASK.getCode(),userIds,taskOrderDO.getId(),300);
+        }else{
+            indexTodoService.deleteIndexToDO(IndexTodoTypeNameEnum.MY_TASK.getCode(),null,taskOrderDO.getId(),300);
+        }
+
+
     }
 
     /**
@@ -1733,6 +1762,9 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
             }
         }
 
+        //首页待办 - 去掉任务单修改
+        indexTodoService.deleteIndexToDO(IndexTodoTypeNameEnum.TASK_ORDER.getCode(),null,id,300);
+
         return true;
 
     }
@@ -2994,6 +3026,19 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
             }
 
         }
+
+        //首页待办 - 去掉记录校核
+        indexTodoService.deleteIndexToDO(IndexTodoTypeNameEnum.RECHECK_ORDER_ITEM.getCode(),null,taskOrderAuditSingleVO.getId(),300);
+        //首页待办 - 主报告编制
+        if (boilerTaskOrderItemReportDO.getReportType() == 100){
+            PipeTaskOrderDO taskOrderDO = pipeTaskOrderMapper.selectById(boilerTaskOrderItemReportDO.getOrderId());
+            if (taskOrderDO != null){
+                List<String> userIds = new ArrayList<>();
+                userIds.add(taskOrderDO.getManagerId());
+                indexTodoService.addIndexToDO(IndexTodoTypeNameEnum.PREPARE_REPORT.getCode(),userIds,taskOrderDO.getId(),300);
+            }
+        }
+
     }
 
     @Override
@@ -3028,6 +3073,9 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
         taskOrderItemReportRecordDO.setRemark(taskOrderAuditSingleVO.getReason());
         taskOrderItemReportRecordMapper.insert(taskOrderItemReportRecordDO);
 
+        //首页待办 - 去掉记录校核
+        indexTodoService.deleteIndexToDO(IndexTodoTypeNameEnum.RECHECK_ORDER_ITEM.getCode(),null,taskOrderAuditSingleVO.getId(),300);
+
     }
 
     @Override
@@ -3378,42 +3426,6 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
             return reportDO.getId();
         }
 
-        // 检验方案
-//        if (dynamicTbDO.getTbType() != null && TaskOrderItemReportTypeEnum.INSPECTION_PLAN.getType().intValue() == dynamicTbDO.getTbType()) {
-//            addReport.setPrepareJson(taskOrderMajorIssuesVO.getPrepareJson());
-//            PipeTaskOrderReportDO taskOrderReportDO = BeanUtils.toBean(addReport,PipeTaskOrderReportDO.class);
-//            if (CollUtil.isNotEmpty(taskOrderMajorIssuesVO.getOrderItemIds())) {
-//                taskOrderReportDO.setOrderItemIdsStr(String.join(",", taskOrderMajorIssuesVO.getOrderItemIds()));
-//                taskOrderReportDO.setOrderItemId(String.join(",", taskOrderMajorIssuesVO.getOrderItemIds()));
-//            }
-//            if (StringUtils.isNotEmpty(taskOrderMajorIssuesVO.getReportName())) {
-//                taskOrderReportDO.setReportName(taskOrderMajorIssuesVO.getReportName());
-//            }
-////            taskOrderReportDO.setReportNo(generateOrderItemInspectionPlanReportNo(addReport.getOrderId()));
-//            taskOrderReportMapper.insert(taskOrderReportDO);
-//
-//            //生成报表数据 -- 检验方案表不同暂不通用
-//            CreateInstantiateWithRuleVO ruleVO = new CreateInstantiateWithRuleVO();
-//            ruleVO.setTemplateId(addReport.getTemplateId());
-//            ruleVO.setRefId(taskOrderReportDO.getId());
-//            ruleVO.setRefName(addReport.getReportName());
-//            ruleVO.setReportType(1);
-//            com.alibaba.fastjson2.JSONObject params = new com.alibaba.fastjson2.JSONObject();
-//            params.put("checkUserId",getLoginUserId());
-//            params.put("equipMainType","pipe");
-//            ruleVO.setParams(params);
-//            //获取tbCode的服务方法名
-//            BoilerConnectTbServiceDO tbServiceDO = boilerConnectTbServiceMapper.selectOne(BoilerConnectTbServiceDO::getTbId,dynamicTbDO.getId());
-//            if (tbServiceDO != null){
-//                ruleVO.setServiceName(tbServiceDO.getInitServiceName());
-//                dynamicTbInsService.createInstantiateWithRule(ruleVO);
-//            }else{
-//                //throw new ServiceException(500, "生成报表数据失败,初始化服务方法未配置");
-//            }
-//
-//            return taskOrderReportDO.getId();
-//        }
-
         addReport.setReportNo(reportNo);
         taskOrderItemReportMapper.insert(addReport);
 
@@ -3429,13 +3441,6 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
         syncReportVO.setReportType("record");
         syncReportData(syncReportVO);
 
-        //重大线索 创建版本记录
-//        if (dynamicTbDO.getTbType() != null && TaskOrderItemReportTypeEnum.MAJOR_CLUE.getType().intValue() == dynamicTbDO.getTbType()) {
-//            taskOrderMajorIssuesVO.getOrderFormEnterReqVO().setOrderItemId(taskOrderMajorIssuesVO.getOrderItemId());
-//            taskOrderMajorIssuesVO.getOrderFormEnterReqVO().setFlag(0);
-//            orderFileVersionService.documentHistoricalVersions(taskOrderMajorIssuesVO.getOrderFormEnterReqVO(), getLoginUserId());
-//        }
-
         return addReport.getId();
 
     }
@@ -3520,6 +3525,31 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
         }
         itemReportDO.setInstrumentId(majorIssuesSubmitVO.getInstrumentId());
         taskOrderItemReportMapper.updateById(itemReportDO);
+
+        //首页待办
+        List<String> userIds = new ArrayList<>();
+        userIds.add(getLoginUserId()); //发起人
+        //审核人
+        if (majorIssuesSubmitVO.getAuditUserIds() != null && !majorIssuesSubmitVO.getAuditUserIds().isEmpty()){
+            majorIssuesSubmitVO.getAuditUserIds().forEach(userId -> {
+                if (!userIds.contains(userId)) {
+                    userIds.add(userId);
+                }
+            });
+        }
+        String typeName = "";
+        if (itemReportDO.getReportType() == 600){
+            //检验方案
+            typeName = IndexTodoTypeNameEnum.INSPECTION_SCHEME.getCode();
+        }else if (itemReportDO.getReportType() == 700){
+            //操作指导书
+            typeName = IndexTodoTypeNameEnum.WORKING_INSTRUCTION.getCode();
+        }else if (itemReportDO.getReportType() == 400){
+            //检验意见通知
+            typeName = IndexTodoTypeNameEnum.INSPECTION_OPINION_NOTICE.getCode();
+        }
+        indexTodoService.addIndexToDO(typeName,userIds,itemReportDO.getId(),300);
+
         return true;
 
     }
@@ -3810,6 +3840,11 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
 //            pipeTaskOrderItemMapper.updateById(updateObj);
 //        }
 
+        //首页待办 - 记录校核
+        List<String> userIds = new ArrayList<>();
+        userIds.add(recheckOrderItemVO.getRecheckId());
+        indexTodoService.addIndexToDO(IndexTodoTypeNameEnum.RECHECK_ORDER_ITEM.getCode(),userIds,recheckOrderItemVO.getId(),300);
+
         return true;
 
     }
@@ -4446,6 +4481,20 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
         syncReportVO.setReportType("record");
         syncReportData(syncReportVO);
 
+        //首页待办 - 去掉待办
+        String typeName = "";
+        if (reportDO.getReportType() == 600){
+            //检验方案
+            typeName = IndexTodoTypeNameEnum.INSPECTION_SCHEME.getCode();
+        }else if (reportDO.getReportType() == 700){
+            //操作指导书
+            typeName = IndexTodoTypeNameEnum.WORKING_INSTRUCTION.getCode();
+        }else if (reportDO.getReportType() == 400){
+            //检验意见通知
+            typeName = IndexTodoTypeNameEnum.INSPECTION_OPINION_NOTICE.getCode();
+        }
+        indexTodoService.deleteIndexToDO(typeName,null,reportDO.getId(),300);
+
         return true;
 
     }

+ 7 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorderitemreport/PipeTaskOrderItemReportServiceImpl.java

@@ -38,6 +38,7 @@ import cn.start.tz.module.pressure2.service.externalOA.ExternalOAService;
 import cn.start.tz.module.pressure2.service.externalOA.vo.ExternalOACommentInfoRes;
 import cn.start.tz.module.pressure2.service.externalOA.vo.ExternalOACommentRes;
 import cn.start.tz.module.pressure2.service.externalOA.vo.ExternalOARes;
+import cn.start.tz.module.pressure2.service.indextodo.IndexTodoService;
 import cn.start.tz.module.pressure2.service.pipetaskorder.PipeTaskOrderService;
 import cn.start.tz.module.pressure2.service.pipetaskorderissuereport.PipeTaskOrderIssueReportService;
 import cn.start.tz.module.pressure2.service.pipeuseregistrationreport.PipeUseRegistrationReportService;
@@ -100,6 +101,9 @@ public class PipeTaskOrderItemReportServiceImpl extends ServiceImpl<PipeTaskOrde
     @Resource
     private PipeUseRegistrationReportService pipeUseRegistrationReportService;
 
+    @Resource
+    private IndexTodoService indexTodoService;
+
     @Override
     public String createPipeTaskOrderItemReport(PipeTaskOrderItemReportSaveReqVO createReqVO) {
         // 插入
@@ -935,6 +939,9 @@ public class PipeTaskOrderItemReportServiceImpl extends ServiceImpl<PipeTaskOrde
                 }
             }
 
+            //去掉首页的所有任务单相关待办
+            indexTodoService.deleteAllTaskOrderIndexToDO(pipeTaskOrderDO.getId());
+
         }
 
     }

+ 10 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorderoperation/PipeTaskOrderOperationServiceImpl.java

@@ -9,7 +9,9 @@ import cn.start.tz.module.bpm.enums.task.BpmTaskStatusEnum;
 import cn.start.tz.module.pressure2.controller.admin.boilertaskorderoperation.vo.BoilerTaskOrderOperationSaveReqVO;
 import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorder.PipeTaskOrderDO;
 import cn.start.tz.module.pressure2.dal.mysql.pipetaskorder.PipeTaskOrderMapper;
+import cn.start.tz.module.pressure2.enums.IndexTodoTypeNameEnum;
 import cn.start.tz.module.pressure2.enums.TaskOrderStatusEnum;
+import cn.start.tz.module.pressure2.service.indextodo.IndexTodoService;
 import cn.start.tz.module.system.api.user.AdminUserApi;
 import cn.start.tz.module.system.api.user.dto.AdminUserRespDTO;
 import org.apache.commons.lang3.StringUtils;
@@ -49,6 +51,9 @@ public class PipeTaskOrderOperationServiceImpl extends ServiceImpl<PipeTaskOrder
     @Resource
     private PipeTaskOrderMapper pipeTaskOrderMapper;
 
+    @Resource
+    private IndexTodoService indexTodoService;
+
     @Resource
     private AdminUserApi adminUserApi;
 
@@ -89,6 +94,11 @@ public class PipeTaskOrderOperationServiceImpl extends ServiceImpl<PipeTaskOrder
         updateObj.setAfterJson(createReqVO.getAfterJson());
         pipeTaskOrderMapper.updateById(updateObj);
 
+        //首页待办 - 任务单修改
+        List<String> userIds = new ArrayList<>();
+        userIds.add(userId); //发起人
+        indexTodoService.addIndexToDO(IndexTodoTypeNameEnum.TASK_ORDER.getCode(),userIds,createReqVO.getObjId(),300);
+
         return TaskOrderOperation.getId();
 
     }

+ 3 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/mapper/boilertaskorder/BoilerTaskOrderMapper.xml

@@ -357,6 +357,9 @@
             <if test="checkType != null and checkType != ''">
                 AND bto.CHECK_TYPE = #{checkType}
             </if>
+            <if test="deptId != null and deptId != ''">
+                AND bto.DEPT_ID = #{deptId}
+            </if>
             <if test="orderId != null and orderId != ''">
                 AND bto.ID = #{orderId}
             </if>

+ 12 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/mapper/indextodo/IndexTodoMapper.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.start.tz.module.pressure2.dal.mysql.indextodo.IndexTodoMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
+     -->
+
+</mapper>

+ 6 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/mapper/pipetaskorder/PipeTaskOrderMapper.xml

@@ -99,6 +99,9 @@
                 <if test="checkType != null and checkType != ''">
                     AND bto.CHECK_TYPE = #{checkType}
                 </if>
+                <if test="deptId != null and deptId != ''">
+                    AND bto.DEPT_ID = #{deptId}
+                </if>
                 <if test="checkDate != null and checkDate.size() >= 2">
                     AND bto.CHECK_DATE BETWEEN #{checkDate[0]} AND #{checkDate[1]}
                 </if>
@@ -322,6 +325,9 @@
             <if test="checkType != null and checkType != ''">
                 AND bto.CHECK_TYPE = #{checkType}
             </if>
+            <if test="deptId != null and deptId != ''">
+                AND bto.DEPT_ID = #{deptId}
+            </if>
             <if test="orderId != null and orderId != ''">
                 AND bto.ID = #{orderId}
             </if>