소스 검색

feat: supervision

shc 1 년 전
부모
커밋
761ef18fff
27개의 변경된 파일3571개의 추가작업 그리고 2541개의 파일을 삭제
  1. 33 0
      doc/db/26wm_pkg_sup.sql
  2. 34 0
      doc/db/27wm_task_sup.sql
  3. 87 0
      hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/dto/WmSupervisionDto.java
  4. 50 0
      hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/WmPackageSupervision.java
  5. 139 135
      hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/WmScorePackageStatus.java
  6. 54 0
      hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/WmTaskSupervision.java
  7. 80 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmSupervisionController.java
  8. 4 225
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmTaskController.java
  9. 70 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/manager/SysStatisticManager.java
  10. 324 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/manager/WmSupervisionManager.java
  11. 15 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/WmPackageSupervisionMapper.java
  12. 132 119
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/WmScorePackageMapper.java
  13. 14 15
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/WmScorePackageStatusMapper.java
  14. 9 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/WmTaskMapper.java
  15. 15 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/WmTaskSupervisionMapper.java
  16. 34 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmPackageSupervisionService.java
  17. 10 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmScorePackageService.java
  18. 33 25
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmScorePackageStatusService.java
  19. 11 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmTaskService.java
  20. 23 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmTaskSupervisionService.java
  21. 60 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmPackageSupervisionServiceImpl.java
  22. 13 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmScorePackageServiceImpl.java
  23. 12 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmScorePackageStatusServiceImpl.java
  24. 265 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmTaskServiceImpl.java
  25. 48 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmTaskSupervisionServiceImpl.java
  26. 617 617
      hnqz-upms/hnqz-upms-biz/src/main/resources/mapper/WmScorePackageMapper.xml
  27. 1385 1405
      hnqz-upms/hnqz-upms-biz/src/main/resources/mapper/WmTaskMapper.xml

+ 33 - 0
doc/db/26wm_pkg_sup.sql

@@ -0,0 +1,33 @@
+USE `cnbg_20240511_001`;
+
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+-- ----------------------------
+-- Table structure for wm_pkg_sup
+-- ----------------------------
+DROP TABLE IF EXISTS `wm_pkg_sup`;
+CREATE TABLE `wm_pkg_sup`
+(
+    `sup_id`      BIGINT UNSIGNED AUTO_INCREMENT     NOT NULL COMMENT '监察记录ID',
+    `pkg_id`      BIGINT UNSIGNED                    NOT NULL COMMENT '积分包ID',
+    `sup_res`     TINYINT(1)                         NOT NULL COMMENT '监察意见',
+    `remarks`     VARCHAR(512)                       NOT NULL COMMENT '备注',
+    `create_by`   VARCHAR(32)                        NOT NULL COMMENT '创建人',
+    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建时间',
+    PRIMARY KEY `pk_id` (`sup_id`) USING BTREE,
+    KEY `idx_pid` (`pkg_id`) USING BTREE
+) ENGINE = InnoDB
+  DEFAULT CHARSET = utf8mb4
+  COLLATE = utf8mb4_general_ci
+  ROW_FORMAT = DYNAMIC COMMENT ='服务包监察记录';
+
+
+-- ----------------------------
+-- Records of wm_pkg_sup
+-- ----------------------------
+BEGIN;
+COMMIT;
+
+
+SET FOREIGN_KEY_CHECKS = 1;

+ 34 - 0
doc/db/27wm_task_sup.sql

@@ -0,0 +1,34 @@
+USE `cnbg_20240511_001`;
+
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+-- ----------------------------
+-- Table structure for wm_task_sup
+-- ----------------------------
+DROP TABLE IF EXISTS `wm_task_sup`;
+CREATE TABLE `wm_task_sup`
+(
+    `sup_id`      BIGINT UNSIGNED AUTO_INCREMENT     NOT NULL COMMENT '监察记录ID',
+    `task_id`     BIGINT UNSIGNED                    NOT NULL COMMENT '任务ID',
+    `pkg_id`      BIGINT UNSIGNED                    NOT NULL COMMENT '执行包ID',
+    `sup_res`     TINYINT(1)                         NOT NULL COMMENT '监察意见',
+    `remarks`     VARCHAR(512)                       NOT NULL COMMENT '备注',
+    `create_by`   VARCHAR(32)                        NOT NULL COMMENT '创建人',
+    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建时间',
+    PRIMARY KEY `pk_id` (`sup_id`) USING BTREE,
+    KEY `idx_pid` (`task_id`) USING BTREE
+) ENGINE = InnoDB
+  DEFAULT CHARSET = utf8mb4
+  COLLATE = utf8mb4_general_ci
+  ROW_FORMAT = DYNAMIC COMMENT ='服务任务监察记录';
+
+
+-- ----------------------------
+-- Records of wm_task_sup
+-- ----------------------------
+BEGIN;
+COMMIT;
+
+
+SET FOREIGN_KEY_CHECKS = 1;

+ 87 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/dto/WmSupervisionDto.java

@@ -0,0 +1,87 @@
+package com.qunzhixinxi.hnqz.admin.api.dto;
+
+import lombok.AccessLevel;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * 监察dto
+ *
+ * @author jimmy
+ * @date 11/07/2024 16:57
+ */
+@NoArgsConstructor(access = AccessLevel.NONE)
+public final class WmSupervisionDto {
+
+    @Data
+    public static class OnPkgPage {
+
+        private String pkgName;
+
+        private List<Long> areaCode;
+
+        private String entName;
+
+        private Boolean supervision;
+
+        @NotNull(message = "页码必填")
+        @Min(value = 1, message = "页码最小为{value}")
+        private Integer current;
+
+        @NotNull(message = "分页数量必填")
+        @Min(value = 10, message = "分页数量最小为{value}")
+        @Max(value = 100, message = "分页数量最大为{value}")
+        private Integer size;
+    }
+
+
+    @Data
+    public static class OnPkgSupervision {
+
+        @NotNull(message = "执行包ID必填")
+        private Integer pkgId;
+
+        /**
+         * 监察意见
+         */
+        @NotNull(message = "监察意见必填")
+        private Boolean supervision;
+
+        /**
+         * 备注
+         */
+        @NotBlank(message = "监察说明")
+        private String remarks;
+
+    }
+
+    @Data
+    public static class OnTaskSupervision {
+
+        @NotNull(message = "服务ID必填")
+        private Integer taskId;
+
+        @NotNull(message = "执行包ID必填")
+        private Integer pkgId;
+
+        /**
+         * 监察意见
+         */
+        @NotNull(message = "监察意见必填")
+        private Boolean supervision;
+
+        /**
+         * 备注
+         */
+        @NotBlank(message = "监察说明")
+        private String remarks;
+
+    }
+
+}

+ 50 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/WmPackageSupervision.java

@@ -0,0 +1,50 @@
+package com.qunzhixinxi.hnqz.admin.api.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 服务包监察实体
+ *
+ * @author jimmy
+ * @date 11/07/2024 16:40
+ */
+@Data
+@TableName(value = "wm_pkg_sup")
+public final class WmPackageSupervision implements Serializable {
+    private static final long serialVersionUID = 4003030371588886362L;
+
+    /**
+     * 监察记录ID
+     */
+    @TableId(value = "sup_id", type = IdType.AUTO)
+    private Long supervisionId;
+
+    /**
+     * 服务包ID
+     */
+    @TableField(value = "pkg_id")
+    private Integer packageId;
+
+    /**
+     * 监察结果
+     */
+    @TableField(value = "sup_res")
+    private Boolean supervisionResult;
+
+    /**
+     * 备注
+     */
+    private String remarks;
+
+    private String createBy;
+
+    private LocalDateTime createTime;
+
+}

+ 139 - 135
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/WmScorePackageStatus.java

@@ -3,12 +3,11 @@ package com.qunzhixinxi.hnqz.admin.api.entity;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
 import com.qunzhixinxi.hnqz.admin.api.model.WmQuizResultModel;
 import lombok.Data;
-import lombok.EqualsAndHashCode;
 
+import java.io.Serializable;
 import java.time.LocalDateTime;
 import java.util.List;
 
@@ -18,139 +17,144 @@ import java.util.List;
  * @date 2020-07-17 23:32:01
  */
 @Data
-@EqualsAndHashCode(callSuper = true)
 @TableName(value = "wm_score_package_status", autoResultMap = true)
-public class WmScorePackageStatus extends Model<WmScorePackageStatus> {
-
-	private static final long serialVersionUID = 1L;
-
-	/**
-	 * id
-	 */
-	@TableId
-	private Integer id;
-
-	/**
-	 * 用户id
-	 */
-	private String userId;
-
-	/**
-	 * 积分包id
-	 */
-	private String packageId;
-
-	/**
-	 * 积分包状态
-	 */
-	private String status;
-
-	/**
-	 * 组织机构ID
-	 */
-	private String deptId;
-
-	/**
-	 * 是否删除
-	 */
-	private String delFlag;
-
-	/**
-	 * 是否禁用
-	 */
-	private String enableFlag;
-
-	/**
-	 * 所属租户
-	 */
-	private Integer tenantId;
-
-	/**
-	 * 创建时间
-	 */
-	private LocalDateTime createTime;
-
-	/**
-	 * 创建人
-	 */
-	private Integer createUser;
-
-	/**
-	 * 更新时间
-	 */
-	private LocalDateTime updateTime;
-
-	/**
-	 * 更新人
-	 */
-	private Integer updateUser;
-
-	/**
-	 * 手机号
-	 */
-	@TableField(exist = false)
-	private String phone;
-
-	/**
-	 * 服务地区
-	 */
-	@TableField(exist = false)
-	private String address;
-
-	/**
-	 * 个人预计包值
-	 */
-	private String userScore;
-
-	/**
-	 * 终止方式
-	 */
-	private String enableType;
-
-	/**
-	 * 是否可以继续添加任务,0:不可添加任务,1:可以添加任务
-	 */
-	private String taskAddFlag;
-
-	/**
-	 * 任务数量
-	 */
-	private Integer taskNum;
-
-	/**
-	 * 积分包名称
-	 */
-	@TableField(exist = false)
-	private String scorePackageName;
-
-	/**
-	 * 接单人id
-	 */
-	@TableField(exist = false)
-	private String taskUserId;
-
-	/**
-	 * 专员名称
-	 */
-	@TableField(exist = false)
-	private String userRealName;
-
-	/**
-	 * 团队id list
-	 */
-	@TableField(exist = false)
-	private List<String> teamIdList;
-
-	/**
-	 * 积分包编号
-	 */
-	@TableField(exist = false)
-	private String packageSn;
-
-	/**
-	 * 试卷结果
-	 */
-	@TableField(value = "quiz_res", typeHandler = JacksonTypeHandler.class)
-	private WmQuizResultModel[] quizResult;
+public class WmScorePackageStatus implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @TableId
+    private Integer id;
+
+    /**
+     * 用户id
+     */
+    private String userId;
+
+    /**
+     * 积分包id
+     */
+    private String packageId;
+
+    /**
+     * 积分包状态
+     */
+    private String status;
+
+    /**
+     * 组织机构ID
+     */
+    private String deptId;
+
+    /**
+     * 是否删除
+     */
+    private String delFlag;
+
+    /**
+     * 是否禁用
+     */
+    private String enableFlag;
+
+    /**
+     * 所属租户
+     */
+    private Integer tenantId;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 创建人
+     */
+    private Integer createUser;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+
+    /**
+     * 更新人
+     */
+    private Integer updateUser;
+
+    /**
+     * 手机号
+     */
+    @TableField(exist = false)
+    private String phone;
+
+    /**
+     * 服务地区
+     */
+    @TableField(exist = false)
+    private String address;
+
+    /**
+     * 个人预计包值
+     */
+    private String userScore;
+
+    /**
+     * 终止方式
+     */
+    private String enableType;
+
+    /**
+     * 是否可以继续添加任务,0:不可添加任务,1:可以添加任务
+     */
+    private String taskAddFlag;
+
+    /**
+     * 任务数量
+     */
+    private Integer taskNum;
+
+    /**
+     * 积分包名称
+     */
+    @TableField(exist = false)
+    private String scorePackageName;
+
+    /**
+     * 接单人id
+     */
+    @TableField(exist = false)
+    private String taskUserId;
+
+    /**
+     * 专员名称
+     */
+    @TableField(exist = false)
+    private String userRealName;
+
+    /**
+     * 团队id list
+     */
+    @TableField(exist = false)
+    private List<String> teamIdList;
+
+    /**
+     * 积分包编号
+     */
+    @TableField(exist = false)
+    private String packageSn;
+
+    /**
+     * 试卷结果
+     */
+    @TableField(value = "quiz_res", typeHandler = JacksonTypeHandler.class)
+    private WmQuizResultModel[] quizResult;
+
+    /**
+     * 监察标签
+     */
+    @TableField(value = "sup_flag")
+    private Boolean supervision;
 
 }

+ 54 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/WmTaskSupervision.java

@@ -0,0 +1,54 @@
+package com.qunzhixinxi.hnqz.admin.api.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 服务任务监察实体
+ *
+ * @author jimmy
+ * @date 11/07/2024 14:20
+ */
+@Data
+@TableName("wm_task_sup")
+public final class WmTaskSupervision implements Serializable {
+
+    private static final long serialVersionUID = -8751029179018254028L;
+
+    /**
+     * 监察记录ID
+     */
+    @TableId(value = "sup_id", type = IdType.AUTO)
+    private Long supervisionId;
+
+    /**
+     * 任务ID
+     */
+    private Integer taskId;
+
+    @TableField(value = "pkg_id")
+    private Integer packageId;
+
+    /**
+     * 监察结果
+     */
+    @TableField(value = "sup_res")
+    private Boolean supervisionResult;
+
+    /**
+     * 备注
+     */
+    private String remarks;
+
+    private String createBy;
+
+    private LocalDateTime createTime;
+
+
+}

+ 80 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmSupervisionController.java

@@ -0,0 +1,80 @@
+package com.qunzhixinxi.hnqz.admin.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qunzhixinxi.hnqz.admin.api.dto.WmSupervisionDto;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmPackageSupervision;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmTask;
+import com.qunzhixinxi.hnqz.admin.manager.WmSupervisionManager;
+import com.qunzhixinxi.hnqz.common.core.util.R;
+import com.qunzhixinxi.hnqz.common.log.annotation.SysLog;
+import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
+import lombok.AllArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 监察前端控制器
+ *
+ * @author jimmy
+ * @date 11/07/2024 16:53
+ */
+@RestController
+@AllArgsConstructor
+public class WmSupervisionController {
+
+    private final WmSupervisionManager supervisionManager;
+
+    /**
+     * 监察页面获取
+     *
+     * @param query 查询条件
+     * @return 分页结果
+     */
+    @PostMapping(value = "/supervision/pkg/page")
+    public R<Page<Map<String, Object>>> pagePackage(@Validated @RequestBody WmSupervisionDto.OnPkgPage query) {
+
+        return R.ok(supervisionManager.pagePkg(query));
+    }
+
+    @SysLog(value = "执行包监察")
+    @PostMapping(value = "/supervision/pkg/create")
+    public R<Boolean> createPkgSupervision(@Validated @RequestBody WmSupervisionDto.OnPkgSupervision resource) {
+        return R.ok(supervisionManager.createPkgSupervision(resource, SecurityUtils.getUser()));
+    }
+
+    @GetMapping(value = "/supervision/pkg/res/{sup_id}")
+    public R<WmPackageSupervision> getPkgSupervision(@PathVariable(value = "sup_id") Integer supId) {
+        return R.ok(supervisionManager.getPkgSupervision(supId));
+
+    }
+
+
+    @GetMapping(value = "/supervision/pkg/stat")
+    public R<Map<String, String>> pkgSupervisionStat(@RequestParam(value = "all", required = false) Boolean all,
+                                                     @RequestParam(value = "season", required = false) Integer season) {
+        return R.ok(supervisionManager.pkgSupervisionStat(all, season, SecurityUtils.getUser()));
+
+    }
+
+    @SysLog(value = "服务任务监察")
+    @PostMapping(value = "/supervision/task/create")
+    public R<Boolean> createTaskSupervision(@Validated @RequestBody WmSupervisionDto.OnTaskSupervision resource) {
+        return R.ok(supervisionManager.createTaskSupervision(resource, SecurityUtils.getUser()));
+    }
+
+    @GetMapping(value = "/supervision/task/avail/list")
+    public R<List<Map<String, Object>>> listAvailableTask(@RequestParam(value = "pkgId") Integer pkgId){
+
+        return R.ok(supervisionManager.listAvailableTask(pkgId));
+
+    }
+
+}

+ 4 - 225
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmTaskController.java

@@ -1234,6 +1234,9 @@ public class WmTaskController {
      */
     @GetMapping("/list-review-task-info")
     public R<?> listTaskInfo(@RequestParam("packageId") String packageId, String taskTypeId) {
+
+
+
         QueryWrapper<WmTask> queryWrapper = Wrappers.query();
         if (StrUtil.isNotBlank(taskTypeId)) {
             queryWrapper.eq("task_type_id", taskTypeId);
@@ -1246,231 +1249,7 @@ public class WmTaskController {
         List<WmTask> taskList = wmTaskMapper.selectList(queryWrapper);
 
         // 添加结算详情
-        List<Map<String, Object>> resultList = new ArrayList<>();
-        if (CollUtil.isNotEmpty(taskList)) {
-            // 查询taskType
-            Set<String> taskTypeIdSet = taskList.stream().map(WmTask::getTaskTypeId).collect(Collectors.toSet());
-            List<WmTaskType> taskTypeList = wmTaskTypeService.listByIds(taskTypeIdSet);
-            Map<String, String> taskTypeNameMap = taskTypeList.stream().collect(Collectors.toMap(WmTaskType::getId, WmTaskType::getTaskTypeName));
-            // 查询taskContent
-            Set<String> taskConentIdSet = taskList.stream().map(WmTask::getTaskContentId).collect(Collectors.toSet());
-            List<WmTaskContent> taskContentList = wmTaskContentService.listByIds(taskConentIdSet);
-            Map<Integer, WmTaskContent> taskContentMap = taskContentList.stream().collect(Collectors.toMap(WmTaskContent::getId, Function.identity()));
-            // 查询scorePackage
-            WmScorePackage scorePackage = wmScorePackageService.getById(packageId);
-            // 查询打卡记录userSign
-            boolean hasSignTask = taskList.stream().anyMatch(wmTask -> "5".equals(wmTask.getTaskTypeId())
-                    || "6".equals(wmTask.getTaskTypeId()) || "33".equals(wmTask.getTaskTypeId()));
-            Map<Integer, WmUserSign> userSignMap = new HashMap<>();
-            Map<Integer, WmUserSignDetail> userSignDetailMap = new HashMap<>();
-            Map<String, List<SysDictItem>> userSignPurposeMap = new HashMap<>();
-            if (hasSignTask) {
-                Set<String> userSignIdSet = taskContentList.stream()
-                        .map(WmTaskContent::getTemp3)
-                        .filter(StrUtil::isNotBlank)
-                        .collect(Collectors.toSet());
-                List<WmUserSign> userSignList = wmUserSignService.listByIds(userSignIdSet);
-                userSignMap.putAll(userSignList.stream().collect(Collectors.toMap(WmUserSign::getId, Function.identity())));
-                List<WmUserSignDetail> signDetailList = wmUserSignDetailService.list(Wrappers.<WmUserSignDetail>lambdaQuery()
-                        .in(WmUserSignDetail::getSignId, userSignIdSet));
-                if (CollUtil.isNotEmpty(signDetailList)) {
-                    userSignDetailMap.putAll(signDetailList.stream().collect(Collectors.toMap(WmUserSignDetail::getSignId, Function.identity())));
-                }
-
-                // 拜访目的字典值
-                List<SysDictItem> itemList = sysDictItemService.list(Wrappers.<SysDictItem>lambdaQuery()
-                        .in(SysDictItem::getType, "user_sign_detail_purpose", "user_sign_detail_distribution_purpose", "user_sign_detail_pharmacy_purpose")
-                        .eq(SysDictItem::getDelFlag, DelEnum.NOT_DEL.getVal()));
-                userSignPurposeMap.putAll(itemList.stream().collect(Collectors.groupingBy(SysDictItem::getType)));
-            }
-
-            // 查询任务字段配置
-            Set<String> configedTaskTypeId = new HashSet<>();
-            taskTypeIdSet.forEach(s -> {
-                // 应收账款回款-A类/应收账款回款-B类/应收账款回款-C类 统一设置为 39(应收账款回款-A类)
-                if ("39".equals(s) || "40".equals(s) || "41".equals(s)) {
-                    configedTaskTypeId.add("39");
-                } else if ("42".equals(s) || "43".equals(s) || "44".equals(s)) {
-                    // 手术跟台-一级/手术跟台-二级/手术跟台-三级 都取42
-                    configedTaskTypeId.add("42");
-                } else if ("47".equals(s) || "48".equals(s) || "49".equals(s) || "50".equals(s)) {
-                    // 库存调研、竞品调研、培训、使用情况调查
-                    configedTaskTypeId.add("47");
-                } else {
-                    configedTaskTypeId.add(s);
-                }
-            });
-            WmTaskContentConfig queryConn = new WmTaskContentConfig();
-            queryConn.setDelFlag("0");
-            queryConn.setEnableFlag("0");
-            List<WmTaskContentConfig> listConfig =
-                    wmTaskContentConfigService.list(Wrappers.<WmTaskContentConfig>lambdaQuery()
-                            .eq(WmTaskContentConfig::getDelFlag, DelEnum.NOT_DEL.getVal())
-                            .eq(WmTaskContentConfig::getEnableFlag, EnableEnum.ENABLE.val())
-                            .in(WmTaskContentConfig::getTaskTypeId, configedTaskTypeId));
-            Map<String, List<WmTaskContentConfig>> taskContentConfigMap = new HashMap<>();
-            Map<String, List<SysDictItem>> selectItemMap = new HashMap<>();
-            if (CollUtil.isNotEmpty(listConfig)) {
-                taskContentConfigMap.putAll(listConfig.stream().collect(Collectors.groupingBy(WmTaskContentConfig::getTaskTypeId)));
-                // 查询任务字段配置-字典值
-                Set<String> selectDictSet = listConfig.stream()
-                        .filter(config -> StrUtil.equals(config.getTaskFiledType(), "select"))
-                        .map(WmTaskContentConfig::getDictGroupName)
-                        .collect(Collectors.toSet());
-                if (CollUtil.isNotEmpty(selectDictSet)) {
-                    List<SysDictItem> selectItemList = sysDictItemService.list(Wrappers.<SysDictItem>lambdaQuery()
-                            .in(SysDictItem::getType, selectDictSet)
-                            .eq(SysDictItem::getDelFlag, DelEnum.NOT_DEL.getVal()));
-                    selectItemMap.putAll(selectItemList.stream().collect(Collectors.groupingBy(SysDictItem::getType)));
-                }
-            }
-            // task用户名称
-            List<SysUser> userList = sysUserService.listByIds(taskList.stream().map(WmTask::getTaskUserId).collect(Collectors.toSet()));
-            Map<Integer, String> userMap = userList.stream().collect(Collectors.toMap(SysUser::getUserId, SysUser::getRealname));
-
-            // 任务审核状态
-            Set<Integer> taskIds = taskList.stream().mapToInt(task -> Integer.parseInt(task.getId())).boxed().collect(Collectors.toSet());
-
-            Map<Integer, Map<String, Object>> targetLatestCheckState = checkChainManager.getTargetLatestCheckState(taskIds);
-
-            taskList.forEach(wmTask -> {
-
-                wmTask.setCheckState(targetLatestCheckState.get(Integer.parseInt(wmTask.getId())));
-
-                Map<String, Object> map = new HashMap<>();
-                wmTask.setTaskTypeName(taskTypeNameMap.get(wmTask.getTaskTypeId()));
-                map.put("taskType", wmTask.getTaskTypeId());
-                map.put("score", wmTask.getScore());
-                map.put("taskUserName", userMap.get(Integer.parseInt(wmTask.getTaskUserId())));
-                map.put("taskInfo", wmTask);
-                map.put("id", wmTask.getId());
-
-                WmTaskContent wmTaskContent = taskContentMap.get(Integer.parseInt(wmTask.getTaskContentId()));
-                map.put("wmTaskContent", wmTaskContent);
-
-                if (null != wmTaskContent) {
-                    if (null != scorePackage) {
-                        wmTaskContent.setTemp32(scorePackage.getScorePackageName());
-                    }
-                    // 设置地图地址
-                    if ("30".equals(wmTask.getTaskTypeId()) || "15".equals(wmTask.getTaskTypeId())) {
-                        wmTaskContent.setTemp31(wmTaskContent.getTemp16());
-                    }
-                    if ("16".equals(wmTask.getTaskTypeId())) {
-                        wmTaskContent.setTemp31(wmTaskContent.getTemp4());
-                    }
-
-                    // 医院拜访、商业公司拜访、药店拜访打卡记录
-                    List<WmUserSign> wmUserSignList = new ArrayList<>();
-                    if (Arrays.asList("5", "6", "33").contains(wmTask.getTaskTypeId()) && NumberUtil.isNumber(wmTaskContent.getTemp3())) {
-                        int userSignId = Integer.parseInt(wmTaskContent.getTemp3());
-                        WmUserSign userSign = userSignMap.get(userSignId);
-                        // 关联查询签到详情
-                        WmUserSignDetail userSignDetail = userSignDetailMap.get(userSignId);
-                        if (userSignDetail != null) {
-                            if (ArrayUtil.isNotEmpty(userSignDetail.getPurpose())) {
-                                // 拜访目的字典值匹配
-                                Map<String, String> dictPurposeMap = userSignPurposeMap.get(UserSignPurposeEnum.getDictTypeBySignEntType(userSign.getSignEntType()))
-                                        .stream().collect(Collectors.toMap(SysDictItem::getValue, SysDictItem::getLabel));
-
-                                String[] purposeNameArr = Stream.of(userSignDetail.getPurpose())
-                                        .map(s -> dictPurposeMap.getOrDefault(s, s))
-                                        .toArray(String[]::new);
-                                userSignDetail.setPurposeName(purposeNameArr);
-                            }
-                            if (StrUtil.isNotBlank(userSignDetail.getResult())) {
-                                userSignDetail.setResultName(UserSignResultEnum.resolve(userSignDetail.getResult()).getName());
-                            }
-
-                            // 医院打卡, 兼容历史字段department
-                            if ("1".equals(userSign.getSignEntType())) {
-                                if (CollUtil.isEmpty(userSignDetail.getDetail()) && ArrayUtil.isNotEmpty(userSignDetail.getDepartment())) {
-                                    List<Map<String, Object>> detail = new ArrayList<>();
-                                    for (String dep : userSignDetail.getDepartment()) {
-                                        Map<String, Object> detailMap = new HashMap<>();
-                                        detailMap.put("departmentName", dep);
-                                        detailMap.put("fileUrl", new String[0]);
-                                        detail.add(detailMap);
-                                    }
-                                    userSignDetail.setDetail(detail);
-                                }
-                                userSignDetail.setDepartment(null);
-                            }
-
-                            userSign.setUserSignDetail(userSignDetail);
-                        }
-                        wmUserSignList.add(userSign);
-                    }
-                    map.put("wmUserSignList", wmUserSignList);
-                }
-
-                // 转发分享类任务
-                if ("8".equals(wmTask.getTaskTypeId()) || "11".equals(wmTask.getTaskTypeId())
-                        || "9".equals(wmTask.getTaskTypeId()) || "10".equals(wmTask.getTaskTypeId())) {
-                    map.put("title", "");
-                    map.put("score", wmTask.getScore());
-                    WmWkArticleShare wmWkArticleShare = wmWkArticleShareService.getById(wmTask.getTaskContentId());
-                    if (null != wmWkArticleShare) {
-                        if ("8".equals(wmTask.getTaskTypeId()) || "11".equals(wmTask.getTaskTypeId())) {
-                            WmWkAlbum wmWkAlbum = wmWkAlbumService.getById(wmWkArticleShare.getArctileId());
-                            if (wmWkAlbum != null) {
-                                map.put("title", wmWkAlbum.getXcmc());
-                            }
-                        } else {
-                            WmWkArticle wmWkArticle = wmWkArticleService.getById(wmWkArticleShare.getArctileId());
-                            if (wmWkArticle != null) {
-                                map.put("title", wmWkArticle.getTitle());
-                            }
-                        }
-                        map.put("shareId", wmWkArticleShare.getArctileId());
-                        map.put("remark", wmWkArticleShare.getTemp1());
-                    }
-                }
-
-                // 任务类型字段配置
-                String configTaskTypeId = wmTask.getTaskTypeId();
-                // 应收账款回款-A类/应收账款回款-B类/应收账款回款-C类 统一设置为 39(应收账款回款-A类)
-                if ("39".equals(configTaskTypeId) || "40".equals(configTaskTypeId) || "41".equals(configTaskTypeId)) {
-                    configTaskTypeId = "39";
-                } else if ("42".equals(configTaskTypeId) || "43".equals(configTaskTypeId) || "44".equals(configTaskTypeId)) {
-                    // 手术跟台-一级/手术跟台-二级/手术跟台-三级 都取42
-                    configTaskTypeId = "42";
-                } else if ("47".equals(configTaskTypeId) || "48".equals(configTaskTypeId) || "49".equals(configTaskTypeId) || "50".equals(configTaskTypeId)) {
-                    // 库存调研、竞品调研、培训、使用情况调查
-                    configTaskTypeId = "47";
-                }
-                List<WmTaskContentConfig> taskContentConfigs = taskContentConfigMap.get(configTaskTypeId);
-                if (CollUtil.isNotEmpty(taskContentConfigs)) {
-                    taskContentConfigs.sort(Comparator.comparing(config -> Optional.ofNullable(config.getSeq()).orElse(0)));
-                    // 任务类型字段配置-对应字典值
-                    // select
-                    Map<String, Object> dictMap = new HashMap<>();
-                    taskContentConfigs.forEach(config -> {
-                        Map<String, Object> itemMap = new HashMap<>();
-                        if (StrUtil.equals(config.getTaskFiledType(), "select")) {
-                            List<Map<String, Object>> itemMap1List = selectItemMap.get(config.getDictGroupName()).stream().map(sysDictItem -> {
-                                Map<String, Object> itemMap1 = new HashMap<>();
-                                itemMap1.put("label", sysDictItem.getLabel());
-                                itemMap1.put("value", sysDictItem.getValue());
-                                return itemMap1;
-                            }).collect(Collectors.toList());
-
-                            dictMap.put(config.getDictGroupName(), itemMap1List);
-                        } else if (StrUtil.equals(config.getTaskFiledType(), "domain")) {
-                            if (StrUtil.equals(config.getDictGroupName(), "package_list")) {
-                                itemMap.put("label", scorePackage.getScorePackageName());
-                                itemMap.put("value", scorePackage.getId());
-                                dictMap.put("package_list", Collections.singletonList(itemMap));
-                            }
-                        }
-                    });
-                    map.put("dict", dictMap);
-                }
-
-                map.put("config", taskContentConfigs);
-                resultList.add(map);
-            });
-        }
+        List<Map<String, Object>> resultList = wmTaskService.listTaskInfo(taskList, packageId);
 
         return R.ok(resultList);
     }

+ 70 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/manager/SysStatisticManager.java

@@ -1,8 +1,12 @@
 package com.qunzhixinxi.hnqz.admin.manager;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.lang.tree.Tree;
+import cn.hutool.core.lang.tree.TreeNode;
+import cn.hutool.core.lang.tree.TreeUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.qunzhixinxi.hnqz.admin.api.entity.SysImplementPlan;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmScorePackage;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmTask;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskType;
@@ -15,12 +19,16 @@ import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
+import javax.validation.constraints.NotNull;
+import java.time.LocalDate;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Set;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -172,4 +180,66 @@ public class SysStatisticManager {
 
         return res;
     }
+
+    /**
+     * 获取服务目标统计
+     *
+     * @param user 操作人
+     * @return 统计结果
+     */
+    public List<Tree<Integer>> getImplPlanStat(HnqzUser user) {
+
+
+        List<SysImplementPlan> list = new ArrayList<>(6);
+
+
+
+
+        // List<TreeNode<Long>> collect = list.stream().map(getNodeFunction()).collect(Collectors.toList());
+
+
+        // List<TreeNode<Long>> collect = baseMapper
+        //         .selectList(Wrappers.<SysMenu>lambdaQuery()
+        //                 .like(StrUtil.isNotBlank(menuName), SysMenu::getName, menuName)
+        //                 .in(SysMenu::getMenuId, menuIds)
+        //                 .eq(Objects.nonNull(type), SysMenu::getMenuType, type).orderByAsc(SysMenu::getSortOrder))
+        //         .stream().map(getNodeFunction()).collect(Collectors.toList());
+        //
+        //
+        //
+        // return TreeUtil.build(collect, 1);
+        return null;
+    }
+
+
+    // @NotNull
+    // private Function<SysMenu, TreeNode<Long>> getNodeFunction() {
+    //     return menu -> {
+    //         TreeNode<Long> node = new TreeNode<>();
+    //         node.setId(menu.getMenuId());
+    //         node.setName(menu.getName());
+    //         node.setParentId(menu.getParentId());
+    //         node.setWeight(menu.getSortOrder());
+    //         // 扩展属性
+    //         Map<String, Object> extra = new HashMap<>(5);
+    //         extra.put("path", menu.getPath());
+    //         extra.put("menuType", menu.getMenuType());
+    //         extra.put("permission", menu.getPermission());
+    //         extra.put("sortOrder", menu.getSortOrder());
+    //
+    //         // 适配 vue3
+    //         Map<String, Object> meta = new HashMap<>(7);
+    //         meta.put("title", menu.getName());
+    //         meta.put("isLink", menu.getPath() != null && menu.getPath().startsWith("http") ? menu.getPath() : "");
+    //         meta.put("isHide", !menu.getVisible());
+    //         meta.put("isKeepAlive", menu.getKeepAlive());
+    //         meta.put("isAffix", false);
+    //         meta.put("isIframe", menu.getEmbedded());
+    //         meta.put("icon", menu.getIcon());
+    //
+    //         extra.put("meta", meta);
+    //         node.setExtra(extra);
+    //         return node;
+    //     };
+    // }
 }

+ 324 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/manager/WmSupervisionManager.java

@@ -0,0 +1,324 @@
+package com.qunzhixinxi.hnqz.admin.manager;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.text.CharSequenceUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qunzhixinxi.hnqz.admin.api.dto.WmSupervisionDto;
+import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
+import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmPackageSupervision;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmScorePackageStatus;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmTask;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskSupervision;
+import com.qunzhixinxi.hnqz.admin.service.SysDeptService;
+import com.qunzhixinxi.hnqz.admin.service.SysEnterpriseAreaService;
+import com.qunzhixinxi.hnqz.admin.service.SysUserService;
+import com.qunzhixinxi.hnqz.admin.service.WmPackageSupervisionService;
+import com.qunzhixinxi.hnqz.admin.service.WmScorePackageService;
+import com.qunzhixinxi.hnqz.admin.service.WmScorePackageStatusService;
+import com.qunzhixinxi.hnqz.admin.service.WmTaskService;
+import com.qunzhixinxi.hnqz.admin.service.WmTaskSupervisionService;
+import com.qunzhixinxi.hnqz.common.core.exception.BizException;
+import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+/**
+ * 监察管理
+ *
+ * @author jimmy
+ * @date 11/07/2024 18:28
+ */
+@Slf4j
+@Service
+@AllArgsConstructor
+public class WmSupervisionManager {
+
+    private static final LocalDate SEASON1_BEGIN_DATE = LocalDate.of(LocalDate.now().getYear(), 4, 1);
+    private static final LocalDate SEASON2_BEGIN_DATE = LocalDate.of(LocalDate.now().getYear(), 7, 1);
+    private static final LocalDate SEASON3_BEGIN_DATE = LocalDate.of(LocalDate.now().getYear(), 10, 1);
+    private static final LocalDate SEASON4_BEGIN_DATE = LocalDate.of(LocalDate.now().getYear(), 1, 1);
+
+
+    private final WmPackageSupervisionService packageSupervisionService;
+    private final WmTaskSupervisionService taskSupervisionService;
+    private final WmScorePackageStatusService packageStatusService;
+    private final WmScorePackageService packageService;
+    private final WmTaskService taskService;
+    private final SysDeptService deptService;
+    private final SysUserService userService;
+    private final SysEnterpriseAreaService enterpriseAreaService;
+
+
+    /**
+     * 获取监察分页
+     *
+     * @param query 查询条件
+     * @return 分页结果
+     */
+    public Page<Map<String, Object>> pagePkg(WmSupervisionDto.OnPkgPage query) {
+
+        Page<Map<String, Object>> page = new Page<>(query.getCurrent(), query.getSize());
+
+        // 筛查区域和服务商名称
+        List<Long> areaCode = query.getAreaCode();
+        List<Long> entIds;
+        if (CollUtil.isNotEmpty(areaCode)) {
+            entIds = enterpriseAreaService.listAreaEnts(areaCode);
+            if (CollUtil.isEmpty(entIds)) {
+                return page;
+            }
+        } else {
+            entIds = Collections.emptyList();
+        }
+
+        String entName = query.getEntName();
+        Set<Integer> finalEntIds = new HashSet<>();
+        if (CharSequenceUtil.isNotBlank(entName)) {
+            List<SysDept> enterprises = deptService.list(Wrappers.<SysDept>lambdaQuery().like(SysDept::getName, entName).in(CollUtil.isNotEmpty(entIds), SysDept::getDeptId, entIds));
+            List<Integer> deptIds = enterprises.stream().mapToInt(SysDept::getDeptId).boxed().distinct().collect(Collectors.toList());
+            if (CollUtil.isEmpty(deptIds)) {
+                return page;
+            }
+            finalEntIds.addAll(deptIds);
+        } else {
+            finalEntIds.addAll(entIds.stream().map(Long::intValue).collect(Collectors.toSet()));
+        }
+
+        packageService.pageForSupervision(page, query.getPkgName(), query.getSupervision(), finalEntIds);
+
+        List<Map<String, Object>> records = page.getRecords();
+        if (CollUtil.isNotEmpty(records)) {
+
+            // 获取服务商信息
+            Set<Integer> deptId = records.stream().mapToInt(map -> Integer.parseInt((String) map.get("deptId"))).boxed().collect(Collectors.toSet());
+            Map<Integer, String> deptIdToDeptNameMap = deptService.listByIds(deptId).stream().collect(Collectors.toMap(SysDept::getDeptId, SysDept::getName));
+
+            // 获取监察信息 && 任务监察
+            Set<Integer> pkgIds = records.stream().filter(map ->
+                    Objects.nonNull(map.get("supFlag"))).mapToInt(map -> (Integer) map.get("id")).boxed().collect(Collectors.toSet());
+
+            Map<Integer, String> pkgIdToCreatorNameMap;
+            Map<Integer, WmPackageSupervision> pkgIdToSupervisionMap;
+            Map<Integer, Map<String, String>> taskSupStatMap = new HashMap<>(pkgIds.size());
+            if (CollUtil.isNotEmpty(pkgIds)) {
+
+                Map<Integer, List<WmTaskSupervision>> pkgIdToTaskSupMap = taskSupervisionService.list(Wrappers.<WmTaskSupervision>lambdaQuery().in(WmTaskSupervision::getPackageId, pkgIds)).stream()
+                        .collect(Collectors.groupingBy(WmTaskSupervision::getPackageId));
+
+                Map<String, List<WmTask>> pkgIdToTaskMap = taskService.list(Wrappers.<WmTask>lambdaQuery().in(WmTask::getScorePackageId, pkgIds)).stream().collect(Collectors.groupingBy(WmTask::getScorePackageId));
+
+
+                pkgIds.forEach(pid -> {
+                    Map<String, String> stat = new HashMap<>(2);
+
+                    List<WmTaskSupervision> wmTaskSupervisions = pkgIdToTaskSupMap.get(pid);
+                    stat.put("supTotal", CollUtil.isNotEmpty(wmTaskSupervisions) ? String.valueOf(wmTaskSupervisions.size()) : "0");
+
+                    List<WmTask> total = pkgIdToTaskMap.get(pid.toString());
+                    stat.put("total", CollUtil.isNotEmpty(total) ? String.valueOf(total.size()) : "0");
+                    taskSupStatMap.put(pid, stat);
+                });
+
+
+                List<WmPackageSupervision> supervisions = packageSupervisionService.list(Wrappers.<WmPackageSupervision>lambdaQuery().in(WmPackageSupervision::getPackageId, pkgIds));
+
+                pkgIdToSupervisionMap = supervisions.stream().collect(Collectors.toMap(WmPackageSupervision::getPackageId, Function.identity()));
+
+                Map<Integer, String> pkgIdAndSupCreateorUsernameMap = supervisions.stream()
+                        .collect(Collectors.toMap(WmPackageSupervision::getPackageId, WmPackageSupervision::getCreateBy, (v1, v2) -> v2));
+                Collection<String> values = pkgIdAndSupCreateorUsernameMap.values();
+                if (CollUtil.isNotEmpty(values)) {
+                    Map<String, String> userToNameMap = userService.list(Wrappers.<SysUser>lambdaQuery().in(SysUser::getUsername, values)).stream().collect(Collectors.toMap(SysUser::getUsername, SysUser::getRealname));
+                    pkgIdToCreatorNameMap = new HashMap<>(pkgIdAndSupCreateorUsernameMap.size());
+                    for (Map.Entry<Integer, String> entry : pkgIdAndSupCreateorUsernameMap.entrySet()) {
+                        pkgIdToCreatorNameMap.put(entry.getKey(), userToNameMap.get(entry.getValue()));
+                    }
+                } else {
+                    pkgIdToCreatorNameMap = Collections.emptyMap();
+                }
+
+
+            } else {
+                pkgIdToCreatorNameMap = Collections.emptyMap();
+                pkgIdToSupervisionMap = Collections.emptyMap();
+            }
+
+
+            // 添加参数
+            records.forEach(map -> {
+                map.put("deptName", deptIdToDeptNameMap.get(Integer.parseInt((String) map.get("deptId"))));
+                Integer pkgId = (Integer) map.get("id");
+                map.put("supervisor", pkgIdToCreatorNameMap.get(pkgId));
+                map.put("supervision", pkgIdToSupervisionMap.get(pkgId));
+                map.put("taskSupStat", taskSupStatMap.get(pkgId));
+
+            });
+
+            page.setRecords(records);
+
+        }
+        return page;
+    }
+
+    /**
+     * 执行包监察
+     *
+     * @param resource 监察信息
+     * @param user     操作人
+     * @return 监察结果
+     */
+    public Boolean createPkgSupervision(WmSupervisionDto.OnPkgSupervision resource, HnqzUser user) {
+
+        // 校验周期
+        if (!this.checkDate(15)) {
+            throw new BizException("不在监察周期");
+        }
+
+        // 校验是否已经完成了监察
+        boolean checked = packageSupervisionService.hasChecked(resource.getPkgId());
+        if (checked) {
+            throw new BizException("执行包存在监察记录,请勿重复操作");
+        }
+
+        packageSupervisionService.createPkgSupervision(resource, user);
+
+        // 更新监察结果
+        packageStatusService.updateSupervisionFlag(resource.getPkgId());
+
+        return Boolean.TRUE;
+    }
+
+
+    /**
+     * 周期
+     *
+     * @param period 周期时长
+     * @return 校验结果
+     */
+    private boolean checkDate(int period) {
+
+        LocalDate today = LocalDate.now();
+
+        return (today.isAfter(SEASON1_BEGIN_DATE) && today.isBefore(SEASON1_BEGIN_DATE.plusDays(period))) ||
+                (today.isAfter(SEASON2_BEGIN_DATE) && today.isBefore(SEASON2_BEGIN_DATE.plusDays(period))) ||
+                (today.isAfter(SEASON3_BEGIN_DATE) && today.isBefore(SEASON3_BEGIN_DATE.plusDays(period))) ||
+                (today.isAfter(SEASON4_BEGIN_DATE) && today.isBefore(SEASON4_BEGIN_DATE.plusDays(period)));
+    }
+
+    /**
+     * 获取积分包监察结果
+     *
+     * @param supId 监察记录
+     * @return 监察结果
+     */
+    public WmPackageSupervision getPkgSupervision(Integer supId) {
+        return packageSupervisionService.getById(supId);
+    }
+
+    /**
+     * 查询审查计划
+     *
+     * @param all      是否全部
+     * @param season   季节
+     * @param operator 操作人
+     * @return 统计结果
+     */
+    public Map<String, String> pkgSupervisionStat(Boolean all, Integer season, HnqzUser operator) {
+
+        LocalDate today = LocalDate.now();
+        int month = today.getMonthValue();
+        int year = today.getYear();
+        int startMonth;
+
+        if (month <= 3) {
+            startMonth = 10;
+            year -= 1;
+        } else if (month <= 6) {
+            startMonth = 1;
+        } else if (month <= 9) {
+            startMonth = 4;
+        } else {
+            startMonth = 7;
+        }
+
+        LocalDateTime startTime = LocalDateTime.of(year, startMonth, 1, 0, 0, 0);
+        LocalDateTime entTime = startTime.plusMonths(3).minusSeconds(1);
+
+        log.info("查询周期{} to {}", startTime, entTime);
+
+        // 获取领取记录
+        int total = 0;
+        int allOperatorSubtotal = 0;
+        int curOperatorSubtotal = 0;
+        double allOperatorSupRate = 0;
+        double curOperatorSupRate = 0;
+        List<WmScorePackageStatus> statuses = packageStatusService.list(Wrappers.<WmScorePackageStatus>lambdaQuery().between(WmScorePackageStatus::getCreateTime, startTime, entTime));
+        if (CollUtil.isNotEmpty(statuses)) {
+            Set<Integer> pkgIds = statuses.stream().map(WmScorePackageStatus::getPackageId).mapToInt(Integer::valueOf).boxed().collect(Collectors.toSet());
+            Map<Boolean, List<WmPackageSupervision>> collect = packageSupervisionService.list(Wrappers.<WmPackageSupervision>lambdaQuery().in(WmPackageSupervision::getPackageId, pkgIds)).stream().collect(Collectors.partitioningBy(sup -> CharSequenceUtil.equals(sup.getCreateBy(), operator.getUsername())));
+            total = pkgIds.size();
+            allOperatorSubtotal = collect.get(true).size() + collect.get(false).size();
+            curOperatorSubtotal = collect.get(true).size();
+            allOperatorSupRate = (double) allOperatorSubtotal / total;
+            curOperatorSupRate = (double) curOperatorSubtotal / total;
+
+        }
+
+
+        Map<String, String> stat = new HashMap<>(5);
+        stat.put("total", String.valueOf(total));
+        stat.put("allOperatorSubtotal", String.valueOf(allOperatorSubtotal));
+        stat.put("curOperatorSubtotal", String.valueOf(curOperatorSubtotal));
+        stat.put("allOperatorSupRate", String.valueOf(allOperatorSupRate));
+        stat.put("curOperatorSupRate", String.valueOf(curOperatorSupRate));
+
+
+        return stat;
+    }
+
+
+    /**
+     * 服务任务监察
+     *
+     * @param resource 监察信息
+     * @param user     操作人
+     * @return 操作结果
+     */
+    public Boolean createTaskSupervision(WmSupervisionDto.OnTaskSupervision resource, HnqzUser user) {
+        return taskSupervisionService.createTaskSupervision(resource, user);
+    }
+
+    /**
+     * 获取可以监察的任务
+     *
+     * @param pkgId 执行包ID
+     * @return 任务列表
+     */
+    public List<Map<String, Object>> listAvailableTask(Integer pkgId) {
+
+        // 获取当前积分包已经监察过的任务ID
+        Set<Integer> supTaskIds = taskSupervisionService.list(Wrappers.<WmTaskSupervision>lambdaQuery().eq(WmTaskSupervision::getPackageId, pkgId)).stream().mapToInt(WmTaskSupervision::getTaskId).boxed().collect(Collectors.toSet());
+
+        List<WmTask> wmTasks = taskService.listAvailableTaskForSupervision(pkgId, supTaskIds);
+
+        List<Map<String, Object>> maps = taskService.listTaskInfo(wmTasks, pkgId.toString());
+
+        return maps;
+    }
+}

+ 15 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/WmPackageSupervisionMapper.java

@@ -0,0 +1,15 @@
+package com.qunzhixinxi.hnqz.admin.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmPackageSupervision;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 服务包监察mapper
+ *
+ * @author jimmy
+ * @date 11/07/2024 16:45
+ */
+@Mapper
+public interface WmPackageSupervisionMapper extends BaseMapper<WmPackageSupervision> {
+}

+ 132 - 119
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/WmScorePackageMapper.java

@@ -19,6 +19,7 @@ import org.apache.ibatis.annotations.Param;
 import java.time.LocalDate;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 /**
  * 积分包
@@ -29,80 +30,80 @@ import java.util.Map;
 @Mapper
 public interface WmScorePackageMapper extends DataScopeMapper<WmScorePackage> {
 
-	@SqlParser(filter=true)
-	public List<WmScorePackage> listWmScorePackageAndTask(@Param("query") WmScorePackage wmScorePackage, DataScope dataScope);
+    @SqlParser(filter = true)
+    public List<WmScorePackage> listWmScorePackageAndTask(@Param("query") WmScorePackage wmScorePackage, DataScope dataScope);
 
-	@SqlParser(filter=true)
-	List<WmScorePackage> listWmScorePackageAndTaskExt(@Param("query") WmScorePackage wmScorePackage);
+    @SqlParser(filter = true)
+    List<WmScorePackage> listWmScorePackageAndTaskExt(@Param("query") WmScorePackage wmScorePackage);
 
-	@SqlParser(filter=true)
-	IPage<WmScorePackage> listWmScorePackageAndTaskExt(Page<WmScorePackage> page, @Param("query") WmScorePackage wmScorePackage);
+    @SqlParser(filter = true)
+    IPage<WmScorePackage> listWmScorePackageAndTaskExt(Page<WmScorePackage> page, @Param("query") WmScorePackage wmScorePackage);
 
-	@SqlParser(filter=true)
-	public List<WmScorePackage> listWmScorePackageAndTaskExtOld(@Param("query") WmScorePackage wmScorePackage);
+    @SqlParser(filter = true)
+    public List<WmScorePackage> listWmScorePackageAndTaskExtOld(@Param("query") WmScorePackage wmScorePackage);
 
-	@SqlParser(filter=true)
-	List<WmScorePackage> listWmScorePackageAndTaskExt2(@Param("query") WmScorePackage wmScorePackage);
+    @SqlParser(filter = true)
+    List<WmScorePackage> listWmScorePackageAndTaskExt2(@Param("query") WmScorePackage wmScorePackage);
 
-	@SqlParser(filter=true)
-	IPage<WmScorePackage> listWmScorePackageAndTaskExt2(Page<WmScorePackage> page, @Param("query") WmScorePackage wmScorePackage);
+    @SqlParser(filter = true)
+    IPage<WmScorePackage> listWmScorePackageAndTaskExt2(Page<WmScorePackage> page, @Param("query") WmScorePackage wmScorePackage);
 
-	@SqlParser(filter=true)
-	public List<WmScorePackage> listWmScorePackageAndTaskExt2Old(@Param("query") WmScorePackage wmScorePackage);
+    @SqlParser(filter = true)
+    public List<WmScorePackage> listWmScorePackageAndTaskExt2Old(@Param("query") WmScorePackage wmScorePackage);
 
-	@SqlParser(filter=true)
-	public List<WmScorePackage> listWmScorePackageAndTaskLevel1(@Param("query") WmScorePackage wmScorePackage, DataScope dataScope);
+    @SqlParser(filter = true)
+    public List<WmScorePackage> listWmScorePackageAndTaskLevel1(@Param("query") WmScorePackage wmScorePackage, DataScope dataScope);
 
-	@SqlParser(filter=true)
-	public List<WmScorePackage> listWmScorePackageAndTaskLevel3(@Param("query") WmScorePackage wmScorePackage, DataScope dataScope);
+    @SqlParser(filter = true)
+    public List<WmScorePackage> listWmScorePackageAndTaskLevel3(@Param("query") WmScorePackage wmScorePackage, DataScope dataScope);
 
-	public IPage<WmScorePackage> getExportPackageTotalList(Page page, @Param("query") WmScorePackage wmScorePackage);
+    public IPage<WmScorePackage> getExportPackageTotalList(Page page, @Param("query") WmScorePackage wmScorePackage);
 
-	public IPage<WmScorePackage> getExportPackageTotalList1(Page page, @Param("query") WmScorePackage wmScorePackage);
+    public IPage<WmScorePackage> getExportPackageTotalList1(Page page, @Param("query") WmScorePackage wmScorePackage);
 
 
-	public IPage<Map<String,Object>> getPlatTotalData(Page page,@Param("query") WmScorePackage wmScorePackage);
+    public IPage<Map<String, Object>> getPlatTotalData(Page page, @Param("query") WmScorePackage wmScorePackage);
 
-	public IPage<Map<String,Object>> selectWmScorePackageList(Page page,@Param("query") WmScorePackage wmScorePackage);
+    public IPage<Map<String, Object>> selectWmScorePackageList(Page page, @Param("query") WmScorePackage wmScorePackage);
 
-	WmScorePackage selectByPackage(String id);
+    WmScorePackage selectByPackage(String id);
 
-	public List<WmScorePackage> selectLists(@Param("query") WmScorePackage wmScorePackage);
+    public List<WmScorePackage> selectLists(@Param("query") WmScorePackage wmScorePackage);
 
-	public List<Map<String, Object>> selectListById(@Param("query") WmScorePackage wmScorePackage);
+    public List<Map<String, Object>> selectListById(@Param("query") WmScorePackage wmScorePackage);
 
-	WmScorePackage finishRate(@Param("query") WmScorePackage wmScorePackage);
+    WmScorePackage finishRate(@Param("query") WmScorePackage wmScorePackage);
 
-	WmScorePackage newFinishRate(@Param("query") WmScorePackage wmScorePackage);
+    WmScorePackage newFinishRate(@Param("query") WmScorePackage wmScorePackage);
 
-	WmScorePackage selectkfpjf(String scoreId);
+    WmScorePackage selectkfpjf(String scoreId);
 
-	List<WmScorePackage> listWmScorePackages(WmScorePackage wmScorePackage);
+    List<WmScorePackage> listWmScorePackages(WmScorePackage wmScorePackage);
 
-	WmScorePackage selectBywmId(String id);
+    WmScorePackage selectBywmId(String id);
 
-	boolean insertWmScorePackage(WmScorePackage record);
+    boolean insertWmScorePackage(WmScorePackage record);
 
-	int updateByPrimaryKeySelective(WmScorePackage record);
+    int updateByPrimaryKeySelective(WmScorePackage record);
 
-	WmScorePackage selectByScoreId(String scoreId);
+    WmScorePackage selectByScoreId(String scoreId);
 
-	WmScorePackage selectByScoreIds(String scoreName);
+    WmScorePackage selectByScoreIds(String scoreName);
 
-	WmScorePackage selectByName(WmScorePackage wmScorePackage);
+    WmScorePackage selectByName(WmScorePackage wmScorePackage);
 
-	List<WmScorePackage> selectWmScorePackageByCode(Map<String, Object> map);
+    List<WmScorePackage> selectWmScorePackageByCode(Map<String, Object> map);
 
-	Page<WmScorePackage> selectWmScorePackageLists(Page page,@Param("query") WmScorePackage wmScorePackage);
+    Page<WmScorePackage> selectWmScorePackageLists(Page page, @Param("query") WmScorePackage wmScorePackage);
 
-	Page<WmScorePackage> newSelectWmScorePackageLists(Page<WmScorePackage> page,
-													  @Param(value = "sendDeptId") String sendDeptId,
-													  @Param(value = "scorePackageName") String scorePackageName,
-													  @Param(value = "acceptSug") String acceptSug,
-													  @Param(value = "allocationDate") LocalDate allocationDate,
-													  @Param(value = "endLabelDate") LocalDate endLabelDate);
+    Page<WmScorePackage> newSelectWmScorePackageLists(Page<WmScorePackage> page,
+                                                      @Param(value = "sendDeptId") String sendDeptId,
+                                                      @Param(value = "scorePackageName") String scorePackageName,
+                                                      @Param(value = "acceptSug") String acceptSug,
+                                                      @Param(value = "allocationDate") LocalDate allocationDate,
+                                                      @Param(value = "endLabelDate") LocalDate endLabelDate);
 
-	WmScorePackage selectByRelationScoreId(String relationScoreId);
+    WmScorePackage selectByRelationScoreId(String relationScoreId);
 
     List<WmScorePackage> selectRelationScoreId(String relationScoreId);
 
@@ -110,84 +111,96 @@ public interface WmScorePackageMapper extends DataScopeMapper<WmScorePackage> {
 
     List<WmScorePackage> selectByRelationScoreIdList(String relationScoreId);
 
-	List<WmScorePackage> getScorePackagekfpjf(@Param("query") WmScorePackage wmScorePackage);
+    List<WmScorePackage> getScorePackagekfpjf(@Param("query") WmScorePackage wmScorePackage);
 
-	IPage<WmScorePackage> getScorePackageList(Page page,@Param("query") WmScorePackage wmScorePackage);
+    IPage<WmScorePackage> getScorePackageList(Page page, @Param("query") WmScorePackage wmScorePackage);
 
-	IPage<WmScorePackage> newGetScorePackageList(Page<WmScorePackage> page,
-											  @Param(value = "packageType1") Integer packageType1,
-											  @Param(value = "packageType2") Integer packageType2,
-											  @Param(value = "scorePackageName") String scorePackageName,
-											  @Param(value = "scorePackageStatus") Integer scorePackageStatus,
-											  @Param(value = "sendDeptId") Integer sendDeptId);
+    IPage<WmScorePackage> newGetScorePackageList(Page<WmScorePackage> page,
+                                                 @Param(value = "packageType1") Integer packageType1,
+                                                 @Param(value = "packageType2") Integer packageType2,
+                                                 @Param(value = "scorePackageName") String scorePackageName,
+                                                 @Param(value = "scorePackageStatus") Integer scorePackageStatus,
+                                                 @Param(value = "sendDeptId") Integer sendDeptId);
 
     WmScorePackage selectRelationScoreIdList(String id);
 
-	WmScorePackage getScorePackagePageById(@Param("id")String id);
-
-	IPage<WmScorePackageApiOutput> getPackageListForReceive(Page page,@Param("query")WmScorePackage wmScorePackage);
-
-	/**
-	 * 积分包结算管理
-	 *
-	 * @param page
-	 * @param input
-	 * @return
-	 */
-	Page<WmScorePackageSettleOutput> listPackageSettleList(Page<WmScorePackageSettleOutput> page, @Param("query") WmScorePackageSettleInput input);
-
-	/**
-	 * 结算包结算列表
-	 *
-	 * @param input
-	 * @return
-	 */
-	List<WmScorePackageSettleOutput> listAllPackageSettle(@Param("query")WmScorePackageSettleInput input);
-
-	/**
-	 * 结算包结算列表
-	 *
-	 * @param input
-	 * @return
-	 */
-	List<WmScorePackageSettleOutput> listAllPackageSettle2(@Param("query")WmScorePackageSettleInput input);
-
-	/**
-	 * 积分包列表查询-单独处理有acceptUser条件的情况
-	 *
-	 * @param page
-	 * @param queryWrapper
-	 * @param acceptUser
-	 * @return
-	 */
-	Page<WmScorePackage> listScorePackage(Page<WmScorePackage> page, @Param(Constants.WRAPPER) QueryWrapper<WmScorePackage> queryWrapper,
-										  @Param("acceptUser") String acceptUser, @Param("relationScoreId") String relationScoreId,
-										  @Param("toApproval") Boolean toApproval);
-
-	/**
-	 * 积分包列表查询-不分页
-	 *
-	 * @param queryWrapper
-	 * @param acceptUser
-	 * @return
-	 */
-	List<WmScorePackage> listScorePackage(@Param(Constants.WRAPPER) QueryWrapper<WmScorePackage> queryWrapper,
-										  @Param("acceptUser") String acceptUser, @Param("relationScoreId") String relationScoreId,
-										  @Param("toApproval") Boolean toApproval);
-
-	/**
-	 * 查询财务结算复核汇总
-	 *
-	 * @param query 查询条件
-	 * @return 结果
-	 */
-	List<SettleFinancialReviewVO> listFinancialReview(@Param("query") SettleFinancialReviewVO query);
-
-	/**
-	 * 查询财务结算复核数据详情
-	 *
-	 * @param query 查询条件
-	 * @return 结果
-	 */
-	IPage<WmScorePackageSettleOutput> pageFinancialReviewDetail(Page<WmScorePackageSettleOutput> page, @Param("query") SettleFinancialReviewVO query);
+    WmScorePackage getScorePackagePageById(@Param("id") String id);
+
+    IPage<WmScorePackageApiOutput> getPackageListForReceive(Page page, @Param("query") WmScorePackage wmScorePackage);
+
+    /**
+     * 积分包结算管理
+     *
+     * @param page
+     * @param input
+     * @return
+     */
+    Page<WmScorePackageSettleOutput> listPackageSettleList(Page<WmScorePackageSettleOutput> page, @Param("query") WmScorePackageSettleInput input);
+
+    /**
+     * 结算包结算列表
+     *
+     * @param input
+     * @return
+     */
+    List<WmScorePackageSettleOutput> listAllPackageSettle(@Param("query") WmScorePackageSettleInput input);
+
+    /**
+     * 结算包结算列表
+     *
+     * @param input
+     * @return
+     */
+    List<WmScorePackageSettleOutput> listAllPackageSettle2(@Param("query") WmScorePackageSettleInput input);
+
+    /**
+     * 积分包列表查询-单独处理有acceptUser条件的情况
+     *
+     * @param page
+     * @param queryWrapper
+     * @param acceptUser
+     * @return
+     */
+    Page<WmScorePackage> listScorePackage(Page<WmScorePackage> page, @Param(Constants.WRAPPER) QueryWrapper<WmScorePackage> queryWrapper,
+                                          @Param("acceptUser") String acceptUser, @Param("relationScoreId") String relationScoreId,
+                                          @Param("toApproval") Boolean toApproval);
+
+    /**
+     * 积分包列表查询-不分页
+     *
+     * @param queryWrapper
+     * @param acceptUser
+     * @return
+     */
+    List<WmScorePackage> listScorePackage(@Param(Constants.WRAPPER) QueryWrapper<WmScorePackage> queryWrapper,
+                                          @Param("acceptUser") String acceptUser, @Param("relationScoreId") String relationScoreId,
+                                          @Param("toApproval") Boolean toApproval);
+
+    /**
+     * 查询财务结算复核汇总
+     *
+     * @param query 查询条件
+     * @return 结果
+     */
+    List<SettleFinancialReviewVO> listFinancialReview(@Param("query") SettleFinancialReviewVO query);
+
+    /**
+     * 查询财务结算复核数据详情
+     *
+     * @param query 查询条件
+     * @return 结果
+     */
+    IPage<WmScorePackageSettleOutput> pageFinancialReviewDetail(Page<WmScorePackageSettleOutput> page, @Param("query") SettleFinancialReviewVO query);
+
+    /**
+     * 获取服务包监察
+     *
+     * @param pkgName     包名称
+     * @param supervision 监察标记
+     * @param finalEntIds 所属服务商
+     */
+    Page<Map<String, Object>> pageForSupervision(@Param(value = "page") Page<Map<String, Object>> page,
+                                                 @Param(value = "pkgName") String pkgName,
+                                                 @Param(value = "supervision") Boolean supervision,
+                                                 @Param(value = "entIds") Set<Integer> finalEntIds);
 }

+ 14 - 15
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/WmScorePackageStatusMapper.java

@@ -22,23 +22,22 @@ import java.util.Map;
 @Mapper
 public interface WmScorePackageStatusMapper extends BaseMapper<WmScorePackageStatus> {
 
-	IPage<WmScorePackageStatus> getPage(Page page, @Param("query")WmScorePackageStatus wmScorePackageStatus);
+    IPage<WmScorePackageStatus> getPage(Page page, @Param("query") WmScorePackageStatus wmScorePackageStatus);
 
-    List<WmScorePackageStatus> getByPackageId(@Param("query")WmScorePackageStatus wmScorePackageStatus);
+    List<WmScorePackageStatus> getByPackageId(@Param("query") WmScorePackageStatus wmScorePackageStatus);
 
-	IPage<WmScorePackageApiOutput> getReceivedPackageList(Page page, @Param("query") WmScorePackageApiInput input);
+    IPage<WmScorePackageApiOutput> getReceivedPackageList(Page page, @Param("query") WmScorePackageApiInput input);
 
-	IPage<WmScorePackageStatus> getWmScorePackageStatusPage(Page page, @Param("query")WmScorePackageStatus wmScorePackageStatus);
-
-	/**
-	 * 获取当前部门已接单人的列表
-	 *
-	 * @param deptId 部门id
-	 * @param packageType1 积分包任务类型1
-	 * @param packageType2 积分包任务类型2
-	 * @return
-	 */
-	List<Map<String, String>> getDeptReceiveUserList(@Param("deptId") String deptId, @Param("packageType1") String packageType1,
-													 @Param("packageType2") String packageType2);
+    IPage<WmScorePackageStatus> getWmScorePackageStatusPage(Page page, @Param("query") WmScorePackageStatus wmScorePackageStatus);
 
+    /**
+     * 获取当前部门已接单人的列表
+     *
+     * @param deptId       部门id
+     * @param packageType1 积分包任务类型1
+     * @param packageType2 积分包任务类型2
+     * @return
+     */
+    List<Map<String, String>> getDeptReceiveUserList(@Param("deptId") String deptId, @Param("packageType1") String packageType1,
+                                                     @Param("packageType2") String packageType2);
 }

+ 9 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/WmTaskMapper.java

@@ -12,6 +12,7 @@ import org.apache.ibatis.annotations.Param;
 
 import java.sql.Timestamp;
 import java.time.LocalDateTime;
+import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 
@@ -198,4 +199,12 @@ public interface WmTaskMapper extends DataScopeMapper<WmTask> {
      * @return 分页
      */
     Page<WmTaskVO> entTaskPageByTaskType(Page<WmTaskVO> page, @Param("query") Map<String, Object> wmReport);
+
+    /**
+     * 获取可以监察任务
+     *
+     * @param pkgId 积分包ID
+     * @return 任务列表
+     */
+    List<WmTask> listAvailableTaskForSupervision(@Param(value = "pkgId") Integer pkgId, @Param(value = "ignoreIds") Collection<Integer> ignoreIds);
 }

+ 15 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/WmTaskSupervisionMapper.java

@@ -0,0 +1,15 @@
+package com.qunzhixinxi.hnqz.admin.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskSupervision;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 任务监察mapper
+ *
+ * @author jimmy
+ * @date 11/07/2024 16:46
+ */
+@Mapper
+public interface WmTaskSupervisionMapper extends BaseMapper<WmTaskSupervision> {
+}

+ 34 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmPackageSupervisionService.java

@@ -0,0 +1,34 @@
+package com.qunzhixinxi.hnqz.admin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qunzhixinxi.hnqz.admin.api.dto.WmSupervisionDto;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmPackageSupervision;
+import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
+
+import java.util.Map;
+
+/**
+ * 服务包监察服务
+ *
+ * @author jimmy
+ * @date 11/07/2024 16:49
+ */
+public interface WmPackageSupervisionService extends IService<WmPackageSupervision> {
+
+    /**
+     * 监察结果
+     *
+     * @param resource 监察信息
+     * @param user     操作人
+     * @return 监察结果
+     */
+    Boolean createPkgSupervision(WmSupervisionDto.OnPkgSupervision resource, HnqzUser user);
+
+    /**
+     * 校验积分包是否已经监察过了
+     *
+     * @param pkgId 积分包ID
+     * @return 校验结果
+     */
+    boolean hasChecked(Integer pkgId);
+}

+ 10 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmScorePackageService.java

@@ -25,6 +25,7 @@ import com.qunzhixinxi.hnqz.common.core.util.R;
 import java.time.LocalDate;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.Future;
 
 /**
@@ -256,4 +257,13 @@ public interface WmScorePackageService extends IService<WmScorePackage> {
      * @return 结果
      */
     IPage<WmScorePackageSettleOutput> pageFinancialReviewDetail(Page<WmScorePackageSettleOutput> page, SettleFinancialReviewVO query);
+
+    /**
+     * 获取积分包监察分页
+     *
+     * @param pkgName     包名称
+     * @param supervision 监察状态
+     * @param finalEntIds 所属服务商ID
+     */
+    void pageForSupervision(Page<Map<String, Object>> page, String pkgName, Boolean supervision, Set<Integer> finalEntIds);
 }

+ 33 - 25
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmScorePackageStatusService.java

@@ -13,6 +13,7 @@ import com.qunzhixinxi.hnqz.common.core.util.R;
 
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 /**
  * 积分包状态
@@ -22,39 +23,46 @@ import java.util.Map;
  */
 public interface WmScorePackageStatusService extends IService<WmScorePackageStatus> {
 
-	R<?> getPage(Page page, WmScorePackageStatus wmScorePackageStatus);
+    R<?> getPage(Page page, WmScorePackageStatus wmScorePackageStatus);
 
-	R<?> approvalStatus(WmScorePackageStatus wmScorePackageStatus);
+    R<?> approvalStatus(WmScorePackageStatus wmScorePackageStatus);
 
-	R<?> updateZZ(WmScorePackageStatus wmScorePackageStatus);
+    R<?> updateZZ(WmScorePackageStatus wmScorePackageStatus);
 
-	List<WmScorePackageStatus> getByPackageId(WmScorePackageStatus wmScorePackageStatus);
+    List<WmScorePackageStatus> getByPackageId(WmScorePackageStatus wmScorePackageStatus);
 
-	boolean delStatusByPackageId(String packageId);
+    boolean delStatusByPackageId(String packageId);
 
-	IPage<WmScorePackageApiOutput> getReceivedPackageList(Page page, WmScorePackageApiInput input);
+    IPage<WmScorePackageApiOutput> getReceivedPackageList(Page page, WmScorePackageApiInput input);
 
-	void updatePackageAndStatus(WmTask wmTask, WmScorePackage wmScorePackage, WmScorePackageStatus scorePackageStatus);
+    void updatePackageAndStatus(WmTask wmTask, WmScorePackage wmScorePackage, WmScorePackageStatus scorePackageStatus);
 
-	void updateScorePackageStatus(String ScorePackageId);
+    void updateScorePackageStatus(String ScorePackageId);
 
-	IPage<WmScorePackageStatus> getWmScorePackageStatusPage(Page page, WmScorePackageStatus wmScorePackageStatus);
+    IPage<WmScorePackageStatus> getWmScorePackageStatusPage(Page page, WmScorePackageStatus wmScorePackageStatus);
 
-	/**
-	 * 获取当前部门已接单人的列表
-	 *
-	 * @param deptId       部门id
-	 * @param packageType1 积分包任务类型1
-	 * @param packageType2 积分包任务类型2
-	 * @return
-	 */
-	List<Map<String, String>> getDeptReceiveUserList(String deptId, String packageType1, String packageType2);
+    /**
+     * 获取当前部门已接单人的列表
+     *
+     * @param deptId       部门id
+     * @param packageType1 积分包任务类型1
+     * @param packageType2 积分包任务类型2
+     * @return
+     */
+    List<Map<String, String>> getDeptReceiveUserList(String deptId, String packageType1, String packageType2);
 
-	/**
-	 * 批量审核
-	 *
-	 * @param statusBatch 批量审核
-	 * @return 批量审核结果
-	 */
-	Map<String, Integer> approvalStatusBatch(WmScorePackageStatusBatch statusBatch);
+    /**
+     * 批量审核
+     *
+     * @param statusBatch 批量审核
+     * @return 批量审核结果
+     */
+    Map<String, Integer> approvalStatusBatch(WmScorePackageStatusBatch statusBatch);
+
+    /**
+     * 更新积分包审核结果
+     *
+     * @param pkgId 包ID
+     */
+    void updateSupervisionFlag(Integer pkgId);
 }

+ 11 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmTaskService.java

@@ -18,6 +18,7 @@ import org.apache.ibatis.annotations.Param;
 import java.sql.Timestamp;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 
@@ -222,4 +223,14 @@ public interface WmTaskService extends IService<WmTask> {
      */
     void task15_30_16_18ForManualOperation(WmTask task, String taskStatus, String taskStatusInfo);
 
+    /**
+     * 获取可监察的任务
+     *
+     * @param pkgId     积分包ID
+     * @param ignoreIds 忽略的ID
+     * @return 监察任务列表
+     */
+    List<WmTask> listAvailableTaskForSupervision(Integer pkgId, Collection<Integer> ignoreIds);
+
+    List<Map<String, Object>> listTaskInfo(List<WmTask> taskList , String pkgId);
 }

+ 23 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmTaskSupervisionService.java

@@ -0,0 +1,23 @@
+package com.qunzhixinxi.hnqz.admin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qunzhixinxi.hnqz.admin.api.dto.WmSupervisionDto;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskSupervision;
+import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
+
+/**
+ * 任务监察服务
+ *
+ * @author jimmy
+ * @date 11/07/2024 16:48
+ */
+public interface WmTaskSupervisionService extends IService<WmTaskSupervision> {
+    /**
+     * 创建审核
+     *
+     * @param resource 监察信息
+     * @param user     操作人
+     * @return 操作结果
+     */
+    Boolean createTaskSupervision(WmSupervisionDto.OnTaskSupervision resource, HnqzUser user);
+}

+ 60 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmPackageSupervisionServiceImpl.java

@@ -0,0 +1,60 @@
+package com.qunzhixinxi.hnqz.admin.service.impl;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qunzhixinxi.hnqz.admin.api.dto.WmSupervisionDto;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmPackageSupervision;
+import com.qunzhixinxi.hnqz.admin.mapper.WmPackageSupervisionMapper;
+import com.qunzhixinxi.hnqz.admin.service.WmPackageSupervisionService;
+import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDateTime;
+
+
+/**
+ * 服务包监察服务实现
+ *
+ * @author jimmy
+ * @date 11/07/2024 16:50
+ */
+@Slf4j
+@Service
+@AllArgsConstructor
+public class WmPackageSupervisionServiceImpl extends ServiceImpl<WmPackageSupervisionMapper, WmPackageSupervision> implements WmPackageSupervisionService {
+
+    /**
+     * 监察结果
+     *
+     * @param resource 监察信息
+     * @param user     操作人
+     * @return 监察结果
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean createPkgSupervision(WmSupervisionDto.OnPkgSupervision resource, HnqzUser user) {
+
+        WmPackageSupervision supervision = new WmPackageSupervision();
+        supervision.setPackageId(resource.getPkgId());
+        supervision.setSupervisionResult(resource.getSupervision());
+        supervision.setRemarks(resource.getRemarks());
+        supervision.setCreateBy(user.getUsername());
+        supervision.setCreateTime(LocalDateTime.now());
+
+        return this.save(supervision);
+    }
+
+    /**
+     * 校验积分包是否已经监察过了
+     *
+     * @param pkgId 积分包ID
+     * @return 校验结果
+     */
+    @Override
+    public boolean hasChecked(Integer pkgId) {
+        return this.count(Wrappers.<WmPackageSupervision>lambdaQuery().eq(WmPackageSupervision::getPackageId, pkgId)) > 0;
+    }
+}

+ 13 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmScorePackageServiceImpl.java

@@ -3901,6 +3901,19 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
         return detailPage;
     }
 
+    /**
+     * 获取积分包监察分页
+     *
+     * @param page
+     * @param pkgName     包名称
+     * @param supervision 监察状态
+     * @param finalEntIds 所属服务商ID
+     */
+    @Override
+    public void pageForSupervision(Page<Map<String, Object>> page, String pkgName, Boolean supervision, Set<Integer> finalEntIds) {
+        this.baseMapper.pageForSupervision(page, pkgName, supervision, finalEntIds);
+    }
+
     /**
      * 结算数据字段拼接转换
      *

+ 12 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmScorePackageStatusServiceImpl.java

@@ -36,6 +36,7 @@ import java.time.LocalDateTime;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 /**
@@ -520,6 +521,17 @@ public class WmScorePackageStatusServiceImpl extends ServiceImpl<WmScorePackageS
 		return result;
 	}
 
+	/**
+	 * 更新积分包审核结果
+	 *
+	 * @param pkgId 包
+	 */
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void updateSupervisionFlag(Integer pkgId) {
+		this.update(Wrappers.<WmScorePackageStatus>lambdaUpdate().eq(WmScorePackageStatus::getPackageId, pkgId).set(WmScorePackageStatus::getSupervision, true));
+	}
+
 	private Integer oneByOne(WmScorePackageStatus status, WmScorePackageStatusBatch.ApprovalStatus approvalStatus) {
 
 		int res = 0;

+ 265 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmTaskServiceImpl.java

@@ -5,6 +5,8 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.lang.Assert;
 import cn.hutool.core.map.MapUtil;
+import cn.hutool.core.util.ArrayUtil;
+import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSON;
@@ -19,6 +21,8 @@ import com.baomidou.mybatisplus.core.metadata.OrderItem;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qunzhixinxi.hnqz.admin.api.constant.enums.UserSignPurposeEnum;
+import com.qunzhixinxi.hnqz.admin.api.constant.enums.UserSignResultEnum;
 import com.qunzhixinxi.hnqz.admin.api.dto.SysCheckChainNodeCheckHistoryDTO;
 import com.qunzhixinxi.hnqz.admin.api.dto.WmTaskDTO;
 import com.qunzhixinxi.hnqz.admin.api.entity.*;
@@ -36,8 +40,10 @@ import com.qunzhixinxi.hnqz.admin.api.constant.enums.TaskStatusEnum;
 import com.qunzhixinxi.hnqz.admin.manager.SysCheckChainManager;
 import com.qunzhixinxi.hnqz.admin.mapper.WmReportMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.WmScorePackageMapper;
+import com.qunzhixinxi.hnqz.admin.mapper.WmTaskContentConfigMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.WmTaskContentMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.WmTaskMapper;
+import com.qunzhixinxi.hnqz.admin.mapper.WmUserSignMapper;
 import com.qunzhixinxi.hnqz.admin.service.*;
 import com.qunzhixinxi.hnqz.admin.util.RegUtils;
 import com.qunzhixinxi.hnqz.common.core.constant.CommonConstants;
@@ -52,6 +58,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -74,18 +81,23 @@ import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.Collections;
+import java.util.Comparator;
 import java.util.Date;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
+import java.util.Optional;
 import java.util.Set;
 import java.util.UUID;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.function.Function;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * 任务表
@@ -113,6 +125,13 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
     private final RedisTemplate<String, Object> redisTemplate;
     private final UpmsConfig upmsConfig;
     private final SysCheckChainManager checkChainManager;
+    private final SysDictItemService sysDictItemService;
+    private final WmUserSignDetailService wmUserSignDetailService;
+
+    @Resource
+    private WmWkArticleShareService wmWkArticleShareService;
+    private final WmWkArticleService wmWkArticleService;
+    private final WmWkAlbumService wmWkAlbumService;
 
     @Resource
     private WmDaHospitalService wmDaHospitalService;
@@ -122,6 +141,10 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
 
     @Resource
     private WmDaDistributionService wmDaDistributionService;
+    @Autowired
+    private WmTaskContentConfigMapper wmTaskContentConfigMapper;
+    @Autowired
+    private WmUserSignMapper wmUserSignMapper;
 
     @Override
     public List<WmTask> listTask(QueryWrapper wrappers) {
@@ -2889,6 +2912,248 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
         }
     }
 
+    /**
+     * 获取可监察的任务
+     *
+     * @param pkgId     积分包ID
+     * @param ignoreIds 忽略的ID
+     * @return 监察任务列表
+     */
+    @Override
+    public List<WmTask> listAvailableTaskForSupervision(Integer pkgId, Collection<Integer> ignoreIds) {
+        return this.baseMapper.listAvailableTaskForSupervision(pkgId, ignoreIds);
+    }
+
+    @Override
+    public List<Map<String, Object>> listTaskInfo(List<WmTask> taskList, String pkgId) {
+        List<Map<String, Object>> resultList = new ArrayList<>();
+        if (CollUtil.isNotEmpty(taskList)) {
+            // 查询taskType
+            Set<String> taskTypeIdSet = taskList.stream().map(WmTask::getTaskTypeId).collect(Collectors.toSet());
+            List<WmTaskType> taskTypeList = taskTypeService.listByIds(taskTypeIdSet);
+            Map<String, String> taskTypeNameMap = taskTypeList.stream().collect(Collectors.toMap(WmTaskType::getId, WmTaskType::getTaskTypeName));
+            // 查询taskContent
+            Set<String> taskConentIdSet = taskList.stream().map(WmTask::getTaskContentId).collect(Collectors.toSet());
+            List<WmTaskContent> taskContentList = wmTaskContentMapper.selectBatchIds(taskConentIdSet);
+            Map<Integer, WmTaskContent> taskContentMap = taskContentList.stream().collect(Collectors.toMap(WmTaskContent::getId, Function.identity()));
+            // 查询scorePackage
+            WmScorePackage scorePackage = wmScorePackageService.getById(pkgId);
+            // 查询打卡记录userSign
+            boolean hasSignTask = taskList.stream().anyMatch(wmTask -> "5".equals(wmTask.getTaskTypeId())
+                    || "6".equals(wmTask.getTaskTypeId()) || "33".equals(wmTask.getTaskTypeId()));
+            Map<Integer, WmUserSign> userSignMap = new HashMap<>();
+            Map<Integer, WmUserSignDetail> userSignDetailMap = new HashMap<>();
+            Map<String, List<SysDictItem>> userSignPurposeMap = new HashMap<>();
+            if (hasSignTask) {
+                Set<String> userSignIdSet = taskContentList.stream()
+                        .map(WmTaskContent::getTemp3)
+                        .filter(StrUtil::isNotBlank)
+                        .collect(Collectors.toSet());
+                List<WmUserSign> userSignList = wmUserSignMapper.selectBatchIds(userSignIdSet);
+                userSignMap.putAll(userSignList.stream().collect(Collectors.toMap(WmUserSign::getId, Function.identity())));
+                List<WmUserSignDetail> signDetailList = wmUserSignDetailService.list(Wrappers.<WmUserSignDetail>lambdaQuery()
+                        .in(WmUserSignDetail::getSignId, userSignIdSet));
+                if (CollUtil.isNotEmpty(signDetailList)) {
+                    userSignDetailMap.putAll(signDetailList.stream().collect(Collectors.toMap(WmUserSignDetail::getSignId, Function.identity())));
+                }
+
+                // 拜访目的字典值
+                List<SysDictItem> itemList = sysDictItemService.list(Wrappers.<SysDictItem>lambdaQuery()
+                        .in(SysDictItem::getType, "user_sign_detail_purpose", "user_sign_detail_distribution_purpose", "user_sign_detail_pharmacy_purpose")
+                        .eq(SysDictItem::getDelFlag, DelEnum.NOT_DEL.getVal()));
+                userSignPurposeMap.putAll(itemList.stream().collect(Collectors.groupingBy(SysDictItem::getType)));
+            }
+
+            // 查询任务字段配置
+            Set<String> configedTaskTypeId = new HashSet<>();
+            taskTypeIdSet.forEach(s -> {
+                // 应收账款回款-A类/应收账款回款-B类/应收账款回款-C类 统一设置为 39(应收账款回款-A类)
+                if ("39".equals(s) || "40".equals(s) || "41".equals(s)) {
+                    configedTaskTypeId.add("39");
+                } else if ("42".equals(s) || "43".equals(s) || "44".equals(s)) {
+                    // 手术跟台-一级/手术跟台-二级/手术跟台-三级 都取42
+                    configedTaskTypeId.add("42");
+                } else if ("47".equals(s) || "48".equals(s) || "49".equals(s) || "50".equals(s)) {
+                    // 库存调研、竞品调研、培训、使用情况调查
+                    configedTaskTypeId.add("47");
+                } else {
+                    configedTaskTypeId.add(s);
+                }
+            });
+            WmTaskContentConfig queryConn = new WmTaskContentConfig();
+            queryConn.setDelFlag("0");
+            queryConn.setEnableFlag("0");
+            List<WmTaskContentConfig> listConfig =
+                    wmTaskContentConfigMapper.selectList(Wrappers.<WmTaskContentConfig>lambdaQuery()
+                            .eq(WmTaskContentConfig::getDelFlag, DelEnum.NOT_DEL.getVal())
+                            .eq(WmTaskContentConfig::getEnableFlag, EnableEnum.ENABLE.val())
+                            .in(WmTaskContentConfig::getTaskTypeId, configedTaskTypeId));
+            Map<String, List<WmTaskContentConfig>> taskContentConfigMap = new HashMap<>();
+            Map<String, List<SysDictItem>> selectItemMap = new HashMap<>();
+            if (CollUtil.isNotEmpty(listConfig)) {
+                taskContentConfigMap.putAll(listConfig.stream().collect(Collectors.groupingBy(WmTaskContentConfig::getTaskTypeId)));
+                // 查询任务字段配置-字典值
+                Set<String> selectDictSet = listConfig.stream()
+                        .filter(config -> StrUtil.equals(config.getTaskFiledType(), "select"))
+                        .map(WmTaskContentConfig::getDictGroupName)
+                        .collect(Collectors.toSet());
+                if (CollUtil.isNotEmpty(selectDictSet)) {
+                    List<SysDictItem> selectItemList = sysDictItemService.list(Wrappers.<SysDictItem>lambdaQuery()
+                            .in(SysDictItem::getType, selectDictSet)
+                            .eq(SysDictItem::getDelFlag, DelEnum.NOT_DEL.getVal()));
+                    selectItemMap.putAll(selectItemList.stream().collect(Collectors.groupingBy(SysDictItem::getType)));
+                }
+            }
+            // task用户名称
+            List<SysUser> userList = userService.listByIds(taskList.stream().map(WmTask::getTaskUserId).collect(Collectors.toSet()));
+            Map<Integer, String> userMap = userList.stream().collect(Collectors.toMap(SysUser::getUserId, SysUser::getRealname));
+
+            // 任务审核状态
+            Set<Integer> taskIds = taskList.stream().mapToInt(task -> Integer.parseInt(task.getId())).boxed().collect(Collectors.toSet());
+
+            Map<Integer, Map<String, Object>> targetLatestCheckState = checkChainManager.getTargetLatestCheckState(taskIds);
+
+            taskList.forEach(wmTask -> {
+
+                wmTask.setCheckState(targetLatestCheckState.get(Integer.parseInt(wmTask.getId())));
+
+                Map<String, Object> map = new HashMap<>();
+                wmTask.setTaskTypeName(taskTypeNameMap.get(wmTask.getTaskTypeId()));
+                map.put("taskType", wmTask.getTaskTypeId());
+                map.put("score", wmTask.getScore());
+                map.put("taskUserName", userMap.get(Integer.parseInt(wmTask.getTaskUserId())));
+                map.put("taskInfo", wmTask);
+                map.put("id", wmTask.getId());
+
+                WmTaskContent wmTaskContent = taskContentMap.get(Integer.parseInt(wmTask.getTaskContentId()));
+                map.put("wmTaskContent", wmTaskContent);
+
+                if (null != wmTaskContent) {
+                    if (null != scorePackage) {
+                        wmTaskContent.setTemp32(scorePackage.getScorePackageName());
+                    }
+                    // 设置地图地址
+                    if ("30".equals(wmTask.getTaskTypeId()) || "15".equals(wmTask.getTaskTypeId())) {
+                        wmTaskContent.setTemp31(wmTaskContent.getTemp16());
+                    }
+                    if ("16".equals(wmTask.getTaskTypeId())) {
+                        wmTaskContent.setTemp31(wmTaskContent.getTemp4());
+                    }
+
+                    // 医院拜访、商业公司拜访、药店拜访打卡记录
+                    List<WmUserSign> wmUserSignList = new ArrayList<>();
+                    if (Arrays.asList("5", "6", "33").contains(wmTask.getTaskTypeId()) && NumberUtil.isNumber(wmTaskContent.getTemp3())) {
+                        int userSignId = Integer.parseInt(wmTaskContent.getTemp3());
+                        WmUserSign userSign = userSignMap.get(userSignId);
+                        // 关联查询签到详情
+                        WmUserSignDetail userSignDetail = userSignDetailMap.get(userSignId);
+                        if (userSignDetail != null) {
+                            if (ArrayUtil.isNotEmpty(userSignDetail.getPurpose())) {
+                                // 拜访目的字典值匹配
+                                Map<String, String> dictPurposeMap = userSignPurposeMap.get(UserSignPurposeEnum.getDictTypeBySignEntType(userSign.getSignEntType()))
+                                        .stream().collect(Collectors.toMap(SysDictItem::getValue, SysDictItem::getLabel));
+
+                                String[] purposeNameArr = Stream.of(userSignDetail.getPurpose())
+                                        .map(s -> dictPurposeMap.getOrDefault(s, s))
+                                        .toArray(String[]::new);
+                                userSignDetail.setPurposeName(purposeNameArr);
+                            }
+                            if (StrUtil.isNotBlank(userSignDetail.getResult())) {
+                                userSignDetail.setResultName(UserSignResultEnum.resolve(userSignDetail.getResult()).getName());
+                            }
+
+                            // 医院打卡, 兼容历史字段department
+                            if ("1".equals(userSign.getSignEntType())) {
+                                if (CollUtil.isEmpty(userSignDetail.getDetail()) && ArrayUtil.isNotEmpty(userSignDetail.getDepartment())) {
+                                    List<Map<String, Object>> detail = new ArrayList<>();
+                                    for (String dep : userSignDetail.getDepartment()) {
+                                        Map<String, Object> detailMap = new HashMap<>();
+                                        detailMap.put("departmentName", dep);
+                                        detailMap.put("fileUrl", new String[0]);
+                                        detail.add(detailMap);
+                                    }
+                                    userSignDetail.setDetail(detail);
+                                }
+                                userSignDetail.setDepartment(null);
+                            }
+
+                            userSign.setUserSignDetail(userSignDetail);
+                        }
+                        wmUserSignList.add(userSign);
+                    }
+                    map.put("wmUserSignList", wmUserSignList);
+                }
+
+                // 转发分享类任务
+                if ("8".equals(wmTask.getTaskTypeId()) || "11".equals(wmTask.getTaskTypeId())
+                        || "9".equals(wmTask.getTaskTypeId()) || "10".equals(wmTask.getTaskTypeId())) {
+                    map.put("title", "");
+                    map.put("score", wmTask.getScore());
+                    WmWkArticleShare wmWkArticleShare = wmWkArticleShareService.getById(wmTask.getTaskContentId());
+                    if (null != wmWkArticleShare) {
+                        if ("8".equals(wmTask.getTaskTypeId()) || "11".equals(wmTask.getTaskTypeId())) {
+                            WmWkAlbum wmWkAlbum = wmWkAlbumService.getById(wmWkArticleShare.getArctileId());
+                            if (wmWkAlbum != null) {
+                                map.put("title", wmWkAlbum.getXcmc());
+                            }
+                        } else {
+                            WmWkArticle wmWkArticle = wmWkArticleService.getById(wmWkArticleShare.getArctileId());
+                            if (wmWkArticle != null) {
+                                map.put("title", wmWkArticle.getTitle());
+                            }
+                        }
+                        map.put("shareId", wmWkArticleShare.getArctileId());
+                        map.put("remark", wmWkArticleShare.getTemp1());
+                    }
+                }
+
+                // 任务类型字段配置
+                String configTaskTypeId = wmTask.getTaskTypeId();
+                // 应收账款回款-A类/应收账款回款-B类/应收账款回款-C类 统一设置为 39(应收账款回款-A类)
+                if ("39".equals(configTaskTypeId) || "40".equals(configTaskTypeId) || "41".equals(configTaskTypeId)) {
+                    configTaskTypeId = "39";
+                } else if ("42".equals(configTaskTypeId) || "43".equals(configTaskTypeId) || "44".equals(configTaskTypeId)) {
+                    // 手术跟台-一级/手术跟台-二级/手术跟台-三级 都取42
+                    configTaskTypeId = "42";
+                } else if ("47".equals(configTaskTypeId) || "48".equals(configTaskTypeId) || "49".equals(configTaskTypeId) || "50".equals(configTaskTypeId)) {
+                    // 库存调研、竞品调研、培训、使用情况调查
+                    configTaskTypeId = "47";
+                }
+                List<WmTaskContentConfig> taskContentConfigs = taskContentConfigMap.get(configTaskTypeId);
+                if (CollUtil.isNotEmpty(taskContentConfigs)) {
+                    taskContentConfigs.sort(Comparator.comparing(config -> Optional.ofNullable(config.getSeq()).orElse(0)));
+                    // 任务类型字段配置-对应字典值
+                    // select
+                    Map<String, Object> dictMap = new HashMap<>();
+                    taskContentConfigs.forEach(config -> {
+                        Map<String, Object> itemMap = new HashMap<>();
+                        if (StrUtil.equals(config.getTaskFiledType(), "select")) {
+                            List<Map<String, Object>> itemMap1List = selectItemMap.get(config.getDictGroupName()).stream().map(sysDictItem -> {
+                                Map<String, Object> itemMap1 = new HashMap<>();
+                                itemMap1.put("label", sysDictItem.getLabel());
+                                itemMap1.put("value", sysDictItem.getValue());
+                                return itemMap1;
+                            }).collect(Collectors.toList());
+
+                            dictMap.put(config.getDictGroupName(), itemMap1List);
+                        } else if (StrUtil.equals(config.getTaskFiledType(), "domain")) {
+                            if (StrUtil.equals(config.getDictGroupName(), "package_list")) {
+                                itemMap.put("label", scorePackage.getScorePackageName());
+                                itemMap.put("value", scorePackage.getId());
+                                dictMap.put("package_list", Collections.singletonList(itemMap));
+                            }
+                        }
+                    });
+                    map.put("dict", dictMap);
+                }
+
+                map.put("config", taskContentConfigs);
+                resultList.add(map);
+            });
+        }
+        return resultList;
+    }
+
     /**
      * 移除图片缓存
      *

+ 48 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmTaskSupervisionServiceImpl.java

@@ -0,0 +1,48 @@
+package com.qunzhixinxi.hnqz.admin.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qunzhixinxi.hnqz.admin.api.dto.WmSupervisionDto;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskSupervision;
+import com.qunzhixinxi.hnqz.admin.mapper.WmTaskSupervisionMapper;
+import com.qunzhixinxi.hnqz.admin.service.WmTaskSupervisionService;
+import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDateTime;
+
+/**
+ * 任务监察服务实现
+ *
+ * @author jimmy
+ * @date 11/07/2024 16:51
+ */
+@Slf4j
+@Service
+@AllArgsConstructor
+public class WmTaskSupervisionServiceImpl extends ServiceImpl<WmTaskSupervisionMapper, WmTaskSupervision> implements WmTaskSupervisionService {
+
+    /**
+     * 创建审核
+     *
+     * @param resource 监察信息
+     * @param user     操作人
+     * @return 操作结果
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean createTaskSupervision(WmSupervisionDto.OnTaskSupervision resource, HnqzUser user) {
+
+        WmTaskSupervision taskSupervision = new WmTaskSupervision();
+        taskSupervision.setPackageId(resource.getPkgId());
+        taskSupervision.setTaskId(resource.getTaskId());
+        taskSupervision.setSupervisionResult(resource.getSupervision());
+        taskSupervision.setRemarks(resource.getRemarks());
+        taskSupervision.setCreateBy(user.getUsername());
+        taskSupervision.setCreateTime(LocalDateTime.now());
+
+        return this.save(taskSupervision);
+    }
+}

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 617 - 617
hnqz-upms/hnqz-upms-biz/src/main/resources/mapper/WmScorePackageMapper.xml


+ 1385 - 1405
hnqz-upms/hnqz-upms-biz/src/main/resources/mapper/WmTaskMapper.xml

@@ -4,1410 +4,1390 @@
 
 <mapper namespace="com.qunzhixinxi.hnqz.admin.mapper.WmTaskMapper">
 
-	<resultMap id="wmTaskMap" type="com.qunzhixinxi.hnqz.admin.api.entity.WmTask">
-		<id property="id" column="id"/>
-		<result property="taskNumber" column="task_number"/>
-		<result property="taskTypeId" column="task_type_id"/>
-		<result property="taskRuleId" column="task_rule_id"/>
-		<result property="score" column="score"/>
-		<result property="scorePackageDrugId" column="score_package_drug_id"/>
-		<result property="scorePackageId" column="score_package_id"/>
-		<result property="scoreDrugId" column="score_drug_id"/>
-		<result property="lookintoDate" column="lookinto_date"/>
-		<result property="province" column="province"/>
-		<result property="city" column="city"/>
-		<result property="area" column="area"/>
-		<result property="address" column="address"/>
-		<result property="lookintoTypeId" column="lookinto_type_id"/>
-		<result property="taskContentId" column="task_content_id"/>
-		<result property="taskStatus" column="task_status"/>
-		<result property="submitStatus" column="submit_status"/>
-		<result property="taskUserId" column="task_user_id"/>
-		<result property="taskUserType" column="task_user_type"/>
-		<result property="drugEntId" column="drug_ent_id"/>
-		<result property="deptId" column="dept_id"/>
-		<result property="delFlag" column="del_flag"/>
-		<result property="enableFlag" column="enable_flag"/>
-		<result property="tenantId" column="tenant_id"/>
-		<result property="createTime" column="create_time"/>
-		<result property="createUser" column="create_user"/>
-		<result property="updateTime" column="update_time"/>
-		<result property="updateUser" column="update_user"/>
-		<result property="shareImgUrl" column="share_img_url"/>
-		<result property="platAuditStatus" column="plat_audit_status"/>
-		<result property="scorePackageLevel1Id" column="score_package_level1_id"/>
-		<result property="taskInfoImg" column="task_info_img"/>
-		<result property="compareResult" column="compare_result"/>
-		<result property="approvalOpinion" column="approval_opinion"/>
-		<result property="approvalInfo" column="approval_info"/>
-		<result property="realFlag" column="real_flag"/>
-		<result property="reportOneId" column="report_one_id"/>
-		<result property="reportOneApprovalStatus" column="report_one_approval_status"/>
-		<result property="reportOneApprovalOpinion" column="report_one_approval_opinion"/>
-		<result property="reportOneApprovalInfo" column="report_one_approval_info"/>
-		<result property="reportSecondId" column="report_second_id"/>
-		<result property="reportSecondApprovalStatus" column="report_second_approval_status"/>
-		<result property="reportSecondApprovalOpinion" column="report_second_approval_opinion"/>
-		<result property="reportSecondApprovalInfo" column="report_second_approval_info"/>
-		<result property="reportDrugId" column="report_drug_id"/>
-		<result property="reportDrugApprovalStatus" column="report_drug_approval_status"/>
-		<result property="reportDrugApprovalOpinion" column="report_drug_approval_opinion"/>
-		<result property="reportDrugApprovalInfo" column="report_drug_approval_info"/>
-		<result property="taskStatusInfo" column="task_status_info"/>
-		<result property="taskFrom" column="task_from"/>
-		<result property="reviewTaskCount" column="review_task_count"/>
-		<result property="deptReviewTaskCount" column="dept_review_task_count"/>
-		<result property="approvalUserId" column="approval_user_id"/>
-		<result property="approvalTime" column="approval_time"/>
-		<result property="deptApprovalUserId" column="dept_approval_user_id"/>
-		<result property="deptApprovalTime" column="dept_approval_time"/>
-
-	</resultMap>
-
-	<resultMap id="wmTaskWithContentMap" type="com.qunzhixinxi.hnqz.admin.api.entity.WmTask">
-		<id property="id" column="id"/>
-		<result property="taskTypeId" column="task_type_id"/>
-		<result property="taskRuleId" column="task_rule_id"/>
-		<result property="score" column="score"/>
-		<result property="scorePackageDrugId" column="score_package_drug_id"/>
-		<result property="scorePackageId" column="score_package_id"/>
-		<result property="scoreDrugId" column="score_drug_id"/>
-		<result property="lookintoDate" column="lookinto_date"/>
-		<result property="province" column="province"/>
-		<result property="city" column="city"/>
-		<result property="area" column="area"/>
-		<result property="address" column="address"/>
-		<result property="lookintoTypeId" column="lookinto_type_id"/>
-		<result property="taskContentId" column="task_content_id"/>
-		<result property="taskStatus" column="task_status"/>
-		<result property="submitStatus" column="submit_status"/>
-		<result property="taskUserId" column="task_user_id"/>
-		<result property="taskUserType" column="task_user_type"/>
-		<result property="drugEntId" column="drug_ent_id"/>
-		<result property="deptId" column="dept_id"/>
-		<result property="delFlag" column="del_flag"/>
-		<result property="enableFlag" column="enable_flag"/>
-		<result property="tenantId" column="tenant_id"/>
-		<result property="createTime" column="create_time"/>
-		<result property="createUser" column="create_user"/>
-		<result property="updateTime" column="update_time"/>
-		<result property="updateUser" column="update_user"/>
-		<result property="shareImgUrl" column="share_img_url"/>
-		<result property="platAuditStatus" column="plat_audit_status"/>
-		<result property="scorePackageLevel1Id" column="score_package_level1_id"/>
-		<result property="taskInfoImg" column="task_info_img"/>
-		<result property="compareResult" column="compare_result"/>
-		<result property="approvalOpinion" column="approval_opinion"/>
-		<result property="approvalInfo" column="approval_info"/>
-		<result property="realFlag" column="real_flag"/>
-		<result property="reportOneId" column="report_one_id"/>
-		<result property="reportOneApprovalStatus" column="report_one_approval_status"/>
-		<result property="reportOneApprovalOpinion" column="report_one_approval_opinion"/>
-		<result property="reportOneApprovalInfo" column="report_one_approval_info"/>
-		<result property="reportSecondId" column="report_second_id"/>
-		<result property="reportSecondApprovalStatus" column="report_second_approval_status"/>
-		<result property="reportSecondApprovalOpinion" column="report_second_approval_opinion"/>
-		<result property="reportSecondApprovalInfo" column="report_second_approval_info"/>
-		<result property="reportDrugId" column="report_drug_id"/>
-		<result property="reportDrugApprovalStatus" column="report_drug_approval_status"/>
-		<result property="reportDrugApprovalOpinion" column="report_drug_approval_opinion"/>
-		<result property="reportDrugApprovalInfo" column="report_drug_approval_info"/>
-		<result property="taskStatusInfo" column="task_status_info"/>
-		<result property="taskFrom" column="task_from"/>
-		<association property="wmTaskContent" javaType="com.qunzhixinxi.hnqz.admin.api.entity.WmTaskContent">
-			<result property="temp1" column="temp1"/>
-			<result property="temp2" column="temp2"/>
-			<result property="temp3" column="temp3"/>
-			<result property="temp4" column="temp4"/>
-			<result property="temp5" column="temp5"/>
-			<result property="temp6" column="temp6"/>
-			<result property="temp7" column="temp7"/>
-			<result property="temp8" column="temp8"/>
-			<result property="temp9" column="temp9"/>
-			<result property="temp10" column="temp10"/>
-			<result property="temp11" column="temp11"/>
-			<result property="temp12" column="temp12"/>
-			<result property="temp13" column="temp13"/>
-			<result property="temp14" column="temp14"/>
-			<result property="temp15" column="temp15"/>
-			<result property="temp16" column="temp16"/>
-			<result property="temp17" column="temp17"/>
-			<result property="temp18" column="temp18"/>
-			<result property="temp19" column="temp19"/>
-			<result property="temp20" column="temp20"/>
-			<result property="temp21" column="temp21"/>
-			<result property="temp22" column="temp22"/>
-			<result property="temp23" column="temp23"/>
-			<result property="temp24" column="temp24"/>
-			<result property="temp25" column="temp25"/>
-			<result property="temp26" column="temp26"/>
-			<result property="temp28" column="temp28"/>
-			<result property="temp29" column="temp29"/>
-			<result property="temp30" column="temp30"/>
-			<result property="temp31" column="temp31"/>
-			<result property="temp32" column="temp32"/>
-		</association>
-	</resultMap>
-
-	<select id="selectListByExtEnt" resultMap="wmTaskMap">
-		SELECT
-		wm_task.*
-		FROM
-		wm_task,
-		wm_task_content
-		<where>
-			wm_task.task_content_id = wm_task_content.id
-			and wm_task.del_flag='0' and wm_task.enable_flag='0'
-
-
-			<if test="query.extIds != null and query.extIds.size()>0">
-				AND wm_task.task_content_id in (
-
-				<foreach collection="query.extIds" item="pid" index="index">
-					select id from wm_task_content where wm_task_content.temp1  LIKE CONCAT('%',#{pid},'%')
-					<if test="query.extIds.size()>1">
-						<if test="query.extIds.size()>index-1">
-							union
-						</if>
-					</if>
-				</foreach>
-
-				)
-			</if>
-
-			<if test="query.createTime != null and query.createTime != ''">
-				AND <![CDATA[ wm_task.create_time>= #{query.createTime}]]>
-			</if>
-
-			<if test="query.updateTime != null and query.updateTime != ''">
-				AND <![CDATA[ wm_task.update_time<=#{query.updateTime}]]>
-			</if>
-
-			<if test="query.drugEntId != null and query.drugEntId != ''">
-				AND <![CDATA[ wm_task.drug_ent_id=#{query.drugEntId}]]>
-			</if>
-		</where>
-	</select>
-
-
-	<select id="selectListByExtEntNoPage" resultMap="wmTaskMap">
-		SELECT
-		wm_task.*
-		FROM
-		wm_task,
-		wm_task_content
-		<where>
-			wm_task.task_content_id = wm_task_content.id
-			and wm_task.del_flag='0' and wm_task.enable_flag='0'
-
-
-			<if test="query.extIds != null and query.extIds.size()>0">
-				AND wm_task.task_content_id in (
-
-				<foreach collection="query.extIds" item="pid" index="index">
-					select id from wm_task_content where wm_task_content.temp1  LIKE CONCAT('%',#{pid},'%')
-					<if test="query.extIds.size()>1">
-						<if test="query.extIds.size()>index-1">
-							union
-						</if>
-					</if>
-				</foreach>
-
-				)
-			</if>
-
-
-
-			<if test="query.createTime != null and query.createTime != ''">
-				AND <![CDATA[ wm_task.create_time>= #{query.createTime}]]>
-			</if>
-
-			<if test="query.updateTime != null and query.updateTime != ''">
-				AND <![CDATA[ wm_task.update_time<=#{query.updateTime}]]>
-			</if>
-
-			<if test="query.drugEntId != null and query.drugEntId != ''">
-				AND <![CDATA[ wm_task.drug_ent_id<=#{query.drugEntId}]]>
-			</if>
-		</where>
-	</select>
-
-
-	<select id="getTaskListByPackageIds" resultType="java.util.HashMap">
-		select * from (SELECT
-		package_id,
-		score_name,
-		base_id,
-		sum(score) score,
-		count(1) score_count,
-		realname,
-		dept_name,
-		DATE_FORMAT(max( create_time ),'%Y-%m-%d') create_time
-		FROM
-		wm_zb_count
-		where  package_id in (
-		<foreach collection="query.extIds" item="pid" index="index" separator=",">
-			#{pid}
-		</foreach>
-		)
-		group by
-		package_id,
-		score_name,
-		base_id,
-		realname,
-		dept_name
-		) a ORDER BY  a.dept_name,a.score_name,a.realname
-	</select>
-
-	<select id="getTaskListByPackageIdsAndUser" resultType="java.util.HashMap">
-		SELECT
-		*
-		FROM
-		(
-		SELECT
-		score_name,
-		sum( score ) score,
-		count( 1 ) score_count,
-		realname,
-		dept_name
-		FROM
-		wm_zb_count
-		where  package_id in (
-		<foreach collection="query.extIds" item="pid" index="index" separator=",">
-			#{pid}
-		</foreach>
-		)
-		GROUP BY
-		score_name,
-		dept_name,
-		realname
-		) A
-		ORDER BY
-		A.dept_name,
-		a.score_name,
-		a.realname
-	</select>
-
-
-	<select id="getTaskListByPackageIdsCount" resultType="java.util.HashMap">
-		SELECT
-		base_id taskTypeName,
-		sum( score ) taskSum,
-		count( 1 ) taskCount
-		FROM
-		wm_zb_count
-		WHERE
-		package_id IN (
-		<foreach collection="query.extIds" item="pid" index="index" separator=",">
-			#{pid}
-		</foreach>
-		)
-
-		GROUP BY
-		base_id
-	</select>
-
-	<select id="getTaskListByPackageIdsZd" resultType="java.util.HashMap">
-		SELECT
-		DATE_FORMAT(min( create_time ),'%Y-%m-%d') mindate,
-		DATE_FORMAT(max( create_time ),'%Y-%m-%d') maxdate,
-		GROUP_CONCAT( DISTINCT realname ) realname,
-		sum( score ) sumscore,
-		GROUP_CONCAT( DISTINCT task_rule_id ) task_rule_id
-		FROM
-		wm_zb_count
-		where package_id IN (
-		<foreach collection="query.extIds" item="pid" index="index" separator=",">
-			#{pid}
-		</foreach>
-		)
-		or
-		package_id IN (
-		<foreach collection="query.extIds" item="pid" index="index" separator=",">
-			#{pid}
-		</foreach>
-		)
-	</select>
-
-
-
-
-
-	<select id="getTaskListByPackageIdsReturnWmtaskInfo" resultMap="wmTaskMap">
-		SELECT
-		*
-		FROM
-		wm_zb_count
-		where  package_id in (
-		<foreach collection="query.extIds" item="pid" index="index" separator=",">
-			#{pid}
-		</foreach>
-		)
-
-		order by task_user_id asc,create_time asc
-
-	</select>
-
-	<select id="selectZbCount" resultType="java.util.HashMap">
-		select * from (select * from (SELECT
-		package_id,
-		score_name,
-		send_package_dept_id,
-		dept_id,
-		sum(score) score,
-		count(1) score_count,
-		realname,
-		dept_name,
-		DATE_FORMAT(max( create_time ),'%Y-%m-%d') create_time,
-		DATE_FORMAT(max( pcreate_time ),'%Y-%m-%d') pcreate_time
-		FROM
-		wm_zb_count
-		where  package_id in (
-		<foreach collection="query.extIds" item="pid" index="index" separator=",">
-			#{pid}
-		</foreach>
-		)
-		group by
-		package_id,
-		score_name,
-		send_package_dept_id,
-		dept_id,
-		package_score,
-		realname,
-		dept_name
-		) a ORDER BY  a.dept_name,a.score_name,a.realname ) b
-	</select>
-
-	<select id="selectByWmTaskOne" resultType="java.util.HashMap">
-		select
-		sum(score) score,
-		count(1) score_count,
-		dept_id,
-		report_one_approval_status,
-		score_package_id
-		from wm_task
-		where  score_package_id in (
-		<foreach collection="query.extIds" item="pid" index="index" separator=",">
-			#{pid}
-		</foreach>
-		)
-		and
-		task_status = #{query.taskStatus,jdbcType=VARCHAR}
-	</select>
-	<select id="selectByWmTaskSecond" resultType="java.util.HashMap">
-		select
-		sum(score) score,
-		count(1) score_count,
-		dept_id,
-		report_second_approval_status,
-		score_package_id
-		from wm_task
-		where  score_package_id in (
-		<foreach collection="query.extIds" item="pid" index="index" separator=",">
-			#{pid}
-		</foreach>
-		)
-		and
-		task_status = #{query.taskStatus,jdbcType=VARCHAR}
-	</select>
-	<select id="selectByWmTaskDrug" resultType="java.util.HashMap">
-		select
-		sum(score) score,
-		count(1) score_count,
-		dept_id,
-		report_drug_approval_status,
-		score_package_id
-		from wm_task
-		where  score_package_id in (
-		<foreach collection="query.extIds" item="pid" index="index" separator=",">
-			#{pid}
-		</foreach>
-		)
-		and
-		task_status = #{query.taskStatus,jdbcType=VARCHAR}
-	</select>
-
-	<select id="selectByWmTaskId" resultMap="wmTaskMap">
-		select
-		*
-		from wm_task
-		where
-		score_package_id = #{query.scorePackageId,jdbcType=VARCHAR}
-		and
-		task_status = #{query.taskStatus,jdbcType=VARCHAR}
-		and
-		del_flag =0
-   		and
-   		enable_flag=0
-	</select>
-
-	<select id="selectByReportOneApprovalStatus" resultType="java.util.HashMap">
-		select
-		sum(score) score,
-		count(1) score_count,
-		dept_id,
-		report_one_approval_status,
-		score_package_id
-		from wm_task
-		where  score_package_id in (
-		<foreach collection="query.extIds" item="pid" index="index" separator=",">
-			#{pid}
-		</foreach>
-		)
-		and
-		task_status = #{query.taskStatus,jdbcType=VARCHAR}
-		and
-		report_one_approval_status = #{query.reportOneApprovalStatus,jdbcType=VARCHAR}
-		group by dept_id, report_one_approval_status, score_package_id
-	</select>
-
-	<select id="selectByReportSecondApprovalStatus" resultType="java.util.HashMap">
-		select
-		sum(score) score,
-		count(1) score_count,
-		dept_id,
-		report_second_approval_status,
-		score_package_id
-		from wm_task
-		where  score_package_id in (
-		<foreach collection="query.extIds" item="pid" index="index" separator=",">
-			#{pid}
-		</foreach>
-		)
-		and
-		task_status = #{query.taskStatus,jdbcType=VARCHAR}
-		and
-		report_second_approval_status = #{query.reportSecondApprovalStatus,jdbcType=VARCHAR}
-		group by dept_id, report_second_approval_status, score_package_id
-	</select>
-
-	<select id="selectByReportDrugApprovalStatus" resultType="java.util.HashMap">
-		select
-		sum(score) score,
-		count(1) score_count,
-		dept_id,
-		report_drug_approval_status,
-		score_package_id
-		from wm_task
-		where  score_package_id in (
-		<foreach collection="query.extIds" item="pid" index="index" separator=",">
-			#{pid}
-		</foreach>
-		)
-		and
-		task_status = #{query.taskStatus,jdbcType=VARCHAR}
-		and
-		report_drug_approval_status = #{query.reportDrugApprovalStatus,jdbcType=VARCHAR}
-		group by dept_id, report_drug_approval_status, score_package_id
-	</select>
-	<select id="selectById" resultMap="wmTaskMap">
-		select
-		*
-		from wm_task
-		where
-		id = #{query.Id,jdbcType=BIGINT}
-	</select>
-
-	<select id="selectByRealFlag" resultMap="wmTaskMap">
-		select
-		*
-		from wm_task
-		where
-		id = #{Id,jdbcType=BIGINT}
-		and real_flag = 0
-	</select>
-
-	<select id="selectWmTaskById" resultMap="wmTaskMap">
-		select
-		*
-		from wm_task
-		where
-		id = #{query.id,jdbcType=BIGINT}
-		and
-		task_status = #{query.taskStatus,jdbcType=VARCHAR}
-	</select>
-	<select id="selectListByIds" resultMap="wmTaskMap">
-   		SELECT
-   		*
-   		FROM
-   		wm_task
-   		where
-   		score_package_id = #{query.scorePackageId,jdbcType=VARCHAR}
-   		and real_flag = 0
-</select>
-	<select id="selectListByScorePackageId" resultMap="wmTaskMap">
-   		SELECT
-   		*
-   		FROM
-   		wm_task
-   		where
-   		score_package_id = #{query.scorePackageId,jdbcType=VARCHAR}
-   		and
-   		task_status = #{query.taskStatus,jdbcType=VARCHAR}
-   		and
-   		del_flag =0
-   		and
-   		enable_flag=0
-</select>
-	<select id="getTaskListByPackageIdsForJs" resultType="java.util.HashMap">
-		select * from (select * from (SELECT
-		package_id,
-		score_name,
-		package_score,
-		sum(score) score,
-		count(1) score_count,
-		realname,
-		dept_name,
-		DATE_FORMAT(max( create_time ),'%Y-%m-%d') create_time,
-		DATE_FORMAT(max( pcreate_time ),'%Y-%m-%d') pcreate_time
-		FROM
-		wm_zb_count
-		where  package_id in (
-		<foreach collection="query.extIds" item="pid" index="index" separator=",">
-			#{pid}
-		</foreach>
-		)
-		group by
-		package_id,
-		score_name,
-		package_score,
-		realname,
-		dept_name
-		) a ORDER BY  a.dept_name,a.score_name,a.realname ) b
-
-		union
-
-		SELECT
-		"" package_id,
-		"" score_name,
-		package_score,
-		sum(score) score,
-		count(1) score_count,
-		"合计" realname,
-		"" dept_name,
-		"" create_time,
-		"" pcreate_time
-		FROM
-		wm_zb_count
-		where  package_id in (
-		<foreach collection="query.extIds" item="pid" index="index" separator=",">
-			#{pid}
-		</foreach>
-		)
-	</select>
-
-	<select id="getTaskListByPackageIdsForJsUser" resultType="java.util.HashMap">
-		select * from (SELECT
-		*
-		FROM
-		(
-		SELECT
-		sum( score ) score,
-		count( 1 ) score_count,
-		user_id,
-		realname,
-		phone,
-		dept_name,
-		DATE_FORMAT( max( create_time ), '%Y-%m-%d' ) create_time
-		FROM
-		wm_zb_count
-		where  package_id in (
-		<foreach collection="query.extIds" item="pid" index="index" separator=",">
-			#{pid}
-		</foreach>
-		)
-		GROUP BY
-		user_id,
-		realname,
-		phone,
-		dept_name
-		) a
-		ORDER BY
-		a.dept_name,
-		a.realname) bb
-		UNION
-		SELECT
-		sum( score ) score,
-		count( 1 ) score_count,
-		"" user_id,
-		"合计" realname,
-		"" phone,
-		""dept_name,
-		"" create_time
-		FROM
-		wm_zb_count
-		where  package_id in (
-		<foreach collection="query.extIds" item="pid" index="index" separator=",">
-			#{pid}
-		</foreach>
-		)
-	</select>
-
-
-
-
-	<select id="getH5PackageList" resultType="java.util.HashMap">
-		SELECT
-		p.id id ,
-		p.score_package_name as score_name,u.realname,
-	   	p.package_type1 as type1,
-		u.phone,
-		u.user_id as userId,
-		sum( ifnull(t.score, 0) ) taskSum,
-		count( 1 ) taskCount
-		FROM
-		wm_task t
-		left join wm_score_package p on p.id=t.score_package_id
-		left join sys_user u on u.user_id=t.task_user_id
-		where  p.score_package_name in (
-		<foreach collection="query.extIds" item="pid" index="index" separator=",">
-			#{pid}
-		</foreach>
-		)
-		and t.task_status=3
-		and t.del_flag=0
-		and t.enable_flag=0
-		GROUP BY
-		p.id,p.score_package_name,u.realname,u.phone
-	</select>
-
-
-
-	<select id="getH5TaskList" resultType="java.util.HashMap">
-		SELECT
-		t.id id ,
-		p.score_package_name  as score_name,
-		p.package_type2 as `type`,
-		p.package_type1 as type1,
-		u.realname,
-		e.task_type_name,
-		DATE_FORMAT( t.create_time, '%Y-%m-%d' ) create_time,
-		ifnull(t.score, 0) taskSum,
-		ifnull(t.score, 0) taskCount
-		FROM
-		wm_task t
-		left join wm_score_package p on p.id=t.score_package_id
-		left join sys_user u on u.user_id=t.task_user_id
-		left join wm_task_type e on e.id=t.task_type_id
-		where  p.id = #{query.scorePackageId}
-		and t.task_status=3
-		and t.task_user_id= #{query.taskUserId}
-		and t.del_flag=0
-		and t.enable_flag=0
-		ORDER BY
-		t.create_time DESC
-
-</select>
-
-
-	<select id="getTaskListByIds" resultType="java.util.HashMap">
-		select * from (
-		SELECT
-		p.id AS package_id,
-		p.score_package_name AS score_name,
-		c.realname AS realname,
-		d.name AS dept_name,
-		m.label AS base_id,
-		sum(t.score) score,
-		count(1) score_count,
-		DATE_FORMAT(max( t.lookinto_date ),'%Y-%m-%d') create_time
-		FROM wm_task t
-		LEFT JOIN wm_score_package p ON t.score_package_id = p.id
-		JOIN wm_task_type b
-		left join sys_dict_item m on m.type='score_task_type' and b.parent_id=m.`value`
-		JOIN sys_user c
-		JOIN sys_dept d
-		WHERE b.id = t.task_type_id
-		AND c.user_id = t.task_user_id
-		AND c.dept_id = d.dept_id
-		and t.task_status=3
-		and t.enable_flag=0
-		and t.del_flag=0
-		and t.real_flag = '0'
-		<if test="query.id!=null and query.id!=''">
-			AND t.id in(${query.id})
-		</if>
-		group by
-		p.id,
-		p.score_package_name,
-		m.label,
-		c.realname,
-		d.name
-		)a ORDER BY a.dept_name,a.score_name,a.realname
-	</select>
-
-	<select id="getTaskListByIdsOld" resultType="java.util.HashMap">
-		select * from (
-		SELECT
-		p.id AS package_id,
-		p.score_package_name AS score_name,
-		c.realname AS realname,
-		d.name AS dept_name,
-		m.label AS base_id,
-		sum(t.score) score,
-		count(1) score_count,
-		DATE_FORMAT(max( t.lookinto_date ),'%Y-%m-%d') create_time
-		FROM wm_task t
-		LEFT JOIN wm_score_package p ON t.score_package_drug_id = p.id
-		JOIN wm_task_type b
-		left join sys_dict_item m on m.type='score_task_type' and b.parent_id=m.`value`
-		JOIN sys_user c
-		JOIN sys_dept d
-		WHERE b.id = t.task_type_id
-		AND c.user_id = t.task_user_id
-		AND c.dept_id = d.dept_id
-		and t.task_status=3
-		and t.enable_flag=0
-		and t.del_flag=0
-		and t.real_flag = '0'
-		<if test="query.id!=null and query.id!=''">
-			AND t.id in(${query.id})
-		</if>
-		group by
-		p.id,
-		p.score_package_name,
-		m.label,
-		c.realname,
-		d.name
-		)a ORDER BY a.dept_name,a.score_name,a.realname
-	</select>
-
-	<select id="getTaskListByIdsJs" resultType="java.util.HashMap">
-		select * from (
-		SELECT
-		p.id AS package_id,
-		p.score_package_name AS score_name,
-		c.realname AS realname,
-		d.name AS dept_name,
-		m.label AS base_id,
-		sum(t.score) score,
-		count(1) score_count,
-		DATE_FORMAT(max( t.lookinto_date ),'%Y-%m-%d') create_time
-		FROM wm_task t
-		LEFT JOIN wm_score_package p ON t.score_package_id = p.id
-		JOIN wm_task_type b
-		left join sys_dict_item m on m.type='score_task_type' and b.parent_id=m.`value`
-		JOIN sys_user c
-		JOIN sys_dept d
-		WHERE b.id = t.task_type_id
-		AND c.user_id = t.task_user_id
-		and d.dept_id=t.dept_id
-		and t.task_status=3
-		and t.enable_flag=0
-		and t.del_flag=0
-		and p.package_type2=2
-		<if test="query.id!=null and query.id!=''">
-			AND t.id in(${query.id})
-		</if>
-		group by
-		p.id,
-		p.score_package_name,
-		m.label,
-		c.realname,
-		d.name
-		)a ORDER BY a.dept_name,a.score_name,a.realname
-	</select>
-
-
-	<select id="getTaskListByIdsReturnWmtaskInfo" resultMap="wmTaskMap">
-		SELECT
-		t.id AS id,
-		t.task_rule_id AS task_rule_id,
-		t.score AS score,
-		t.score_package_drug_id AS score_package_drug_id,
-		t.score_package_level1_id AS score_package_level1_id,
-		t.score_package_id AS score_package_id,
-		t.task_type_id AS task_type_id,
-		t.lookinto_date AS lookinto_date,
-		t.province AS province,
-		t.city AS city,
-		t.area AS area,
-		t.address AS address,
-		t.lookinto_type_id AS lookinto_type_id,
-		t.task_content_id AS task_content_id,
-		t.task_status AS task_status,
-		t.task_user_id AS task_user_id,
-		t.task_user_type AS task_user_type,
-		t.drug_ent_id AS drug_ent_id,
-		t.dept_id AS dept_id,
-		t.del_flag AS del_flag,
-		t.enable_flag AS enable_flag,
-		t.tenant_id AS tenant_id,
-		t.lookinto_date AS create_time,
-		t.create_user AS create_user,
-		t.update_time AS update_time,
-		t.update_user AS update_user,
-		t.submit_status AS submit_status,
-		t.share_img_url AS share_img_url,
-		t.plat_audit_status AS plat_audit_status,
-		t.ext_ids AS ext_ids,
-		t.task_info_img AS task_info_img
-		FROM wm_task t
-		where 1=1
-		<if test="query.id!=null and query.id!=''">
-			AND t.id in(${query.id})
-		</if>
-		order by t.task_user_id asc,t.create_time asc
-	</select>
-
-	<select id="getTaskListByIdsCount" resultType="java.util.HashMap">
-		SELECT
-		m.label AS taskTypeName,
-		sum( t.score ) taskSum,
-		count( 1 ) taskCount
-		FROM wm_task t
-		LEFT JOIN wm_score_package p ON t.score_package_id = p.id
-		JOIN wm_task_type b
-		left join sys_dict_item m on m.type='score_task_type' and m.`value`=b.parent_id
-		WHERE b.id = t.task_type_id
-		and t.task_status=3
-		and t.enable_flag=0
-		and t.del_flag=0
-		<if test="query.id!=null and query.id!=''">
-			AND t.id in(${query.id})
-		</if>
-		GROUP BY
-		m.label
-	</select>
-
-	<select id="getTaskListByIdsZd" resultType="java.util.HashMap">
-		SELECT
-		DATE_FORMAT(min( t.lookinto_date ),'%Y-%m-%d') mindate,
-		DATE_FORMAT(max( t.lookinto_date ),'%Y-%m-%d') maxdate,
-		GROUP_CONCAT( DISTINCT c.realname ) realname,
-		sum( t.score ) sumscore,
-		GROUP_CONCAT( DISTINCT t.task_rule_id ) task_rule_id
-		FROM wm_task t
-		LEFT JOIN wm_score_package p ON t.score_package_id = p.id
-		JOIN wm_task_type b
-		JOIN sys_user c
-		JOIN sys_dept d
-		WHERE b.id = t.task_type_id
-		AND c.user_id = t.task_user_id
-		AND c.dept_id = d.dept_id
-		and t.task_status=3
-		and t.enable_flag=0
-		and t.del_flag=0
-		<if test="query.id!=null and query.id!=''">
-			AND t.id in(${query.id})
-		</if>
-		ORDER BY
-		t.task_rule_id,
-		t.task_user_id,
-		t.lookinto_date
-
-	</select>
-
-	<select id="getTaskListByIdsZdJs" resultType="java.util.HashMap">
-		SELECT
-		DATE_FORMAT(min( t.lookinto_date ),'%Y-%m-%d') mindate,
-		DATE_FORMAT(max( t.lookinto_date ),'%Y-%m-%d') maxdate,
-		GROUP_CONCAT( DISTINCT c.realname ) realname,
-		sum( t.score ) sumscore,
-		GROUP_CONCAT( DISTINCT t.task_rule_id ) task_rule_id
-		FROM wm_task t
-		LEFT JOIN wm_score_package p ON t.score_package_id = p.id
-		JOIN wm_task_type b
-		JOIN sys_user c
-		JOIN sys_dept d
-		WHERE b.id = t.task_type_id
-		AND c.user_id = t.task_user_id
-		AND t.dept_id = d.dept_id
-		and t.task_status=3
-		and t.enable_flag=0
-		and t.del_flag=0
-		and p.package_type2=2
-		<if test="query.id!=null and query.id!=''">
-			AND t.id in(${query.id})
-		</if>
-		ORDER BY
-		t.task_rule_id,
-		t.task_user_id,
-		t.lookinto_date
-
-	</select>
-
-	<select id="getWmTaskList" resultMap="wmTaskMap">
-		SELECT
-		t.id AS id,
-		t.task_number,
-		t.task_rule_id AS task_rule_id,
-		t.score AS score,
-		p2.id AS score_package_drug_id,
-		p1.id AS score_package_level1_id,
-		p.score_package_name,
-		p.score_package_name AS score_package_id,
-		t.task_type_id AS task_type_id,
-		t.lookinto_date AS lookinto_date,
-		t.real_flag AS realFlag,
-		t.province AS province,
-		t.city AS city,
-		t.area AS area,
-		t.address AS address,
-		t.lookinto_type_id AS lookinto_type_id,
-		t.task_content_id AS task_content_id,
-		t.task_status AS task_status,
-		u.realname AS task_user_id,
-		t.task_user_type AS task_user_type,
-		t.drug_ent_id AS drug_ent_id,
-		d.`name` AS dept_id,
-		t.del_flag AS del_flag,
-		t.enable_flag AS enable_flag,
-		t.tenant_id AS tenant_id,
-		t.lookinto_date AS create_time,
-		t.create_user AS create_user,
-		t.update_time AS update_time,
-		t.update_user AS update_user,
-		t.submit_status AS submit_status,
-		t.share_img_url AS share_img_url,
-		t.plat_audit_status AS plat_audit_status,
-		t.task_info_img AS task_info_img,
-		t.review_task_count,
-		t.report_drug_id,
-		t.report_one_id,
-		t.report_second_id,
-		t.task_status_info,
-		t.approval_user_id,
-		t.approval_time,
-		t.dept_approval_user_id,
-		t.dept_approval_time
-		FROM wm_task t
-		left join sys_user u on  u.user_id=t.task_user_id
-		left join sys_dept d on d.dept_id=t.dept_id
-		left join wm_score_package p on p.id=t.score_package_id
-		left join wm_score_package p1 on p1.id=t.score_package_level1_id
-		left join wm_score_package p2 on p1.id=t.score_package_drug_id
-		where t.del_flag=0
-		and t.real_flag=0
-		and t.task_status !='1'
-		<if test="query.scorePackageDrugId!=null and query.scorePackageDrugId!=''">
-			and t.score_package_drug_id = #{query.scorePackageDrugId}
-		</if>
-		<if test="query.scorePackageLevel1Id!=null and query.scorePackageLevel1Id!=''">
-			and t.score_package_level1_id = #{query.scorePackageLevel1Id}
-		</if>
-		<if test="query.scorePackageId!=null and query.scorePackageId!=''">
-			and  t.score_package_id = #{query.scorePackageId}
-		</if>
-		<if test="query.id!=null and query.id!=''">
-			and  t.id = #{query.id}
-		</if>
-		<if test="query.taskStatus!=null and query.taskStatus!=''">
-			and  t.task_status = #{query.taskStatus}
-		</if>
-		<if test="query.taskUserId!=null and query.taskUserId!=''">
-			and  t.task_user_id = #{query.taskUserId}
-		</if>
-		<if test="query.taskNumber != null and query.taskNumber != ''">
-			and t.task_number like concat('%', #{query.taskNumber}, '%')
-		</if>
-		<if test="query.taskTypeId != null and query.taskTypeId != ''">
-			and  t.task_type_id = #{query.taskTypeId}
-		</if>
-		order by t.lookinto_date
-
-	</select>
-
-	<!-- 根据配置查询任务 -->
-	<select id="listWmTaskByConfig" resultMap="wmTaskMap">
-		SELECT
-		t.id AS id,
-		t.task_rule_id AS task_rule_id,
-		t.score AS score,
-		p.score_package_name AS score_package_id,
-		t.task_type_id AS task_type_id,
-		t.lookinto_date AS lookinto_date,
-		t.province AS province,
-		t.city AS city,
-		t.area AS area,
-		t.address AS address,
-		t.lookinto_type_id AS lookinto_type_id,
-		t.task_content_id AS task_content_id,
-		t.task_status AS task_status,
-		u.realname AS task_user_id,
-		t.task_user_type AS task_user_type,
-		t.drug_ent_id AS drug_ent_id,
-		d.`name` AS dept_id,
-		t.del_flag AS del_flag,
-		t.enable_flag AS enable_flag,
-		t.tenant_id AS tenant_id,
-		t.lookinto_date AS create_time,
-		t.create_user AS create_user,
-		t.update_time AS update_time,
-		t.update_user AS update_user,
-		t.submit_status AS submit_status,
-		t.share_img_url AS share_img_url,
-		t.plat_audit_status AS plat_audit_status,
-		t.task_info_img AS task_info_img
-		FROM wm_task t
-		left join sys_user u on  u.user_id=t.task_user_id
-		left join sys_dept d on d.dept_id=t.dept_id
-		left join wm_score_package p on p.id=t.score_package_id
-		where t.del_flag=0
-		and t.real_flag=0
-		and t.task_status !='1'
-		<if test="query.taskUserId!=null and query.taskUserId!=''">
-			and t.task_user_id = #{query.taskUserId}
-		</if>
-		<if test="query.taskTypeId != null and query.taskTypeId != ''">
-			and t.task_type_id = #{query.taskTypeId}
-		</if>
-		<if test="query.taskStatus!=null and query.taskStatus!=''">
-			and t.task_status in (${query.taskStatus})
-		</if>
-		<if test="query.scorePackageId!=null and query.scorePackageId!=''">
-			and t.score_package_id in (${query.scorePackageId})
-		</if>
-		<if test="query.taskUserType != null and query.taskUserType != ''">
-			and t.task_user_type in (${query.taskUserType})
-		</if>
-		order by t.lookinto_date
-	</select>
-
-	<!-- 根据配置查询任务 -->
-	<select id="listWmTaskByWrapper" resultMap="wmTaskMap">
-		SELECT
-		t.id AS id,
-		t.task_rule_id AS task_rule_id,
-		t.score AS score,
-		p.score_package_name,
-		p.score_package_name AS score_package_id,
-		t.task_type_id AS task_type_id,
-		t.lookinto_date AS lookinto_date,
-		t.province AS province,
-		t.city AS city,
-		t.area AS area,
-		t.address AS address,
-		t.lookinto_type_id AS lookinto_type_id,
-		t.task_content_id AS task_content_id,
-		t.task_status AS task_status,
-		u.realname AS task_user_id,
-		t.task_user_type AS task_user_type,
-		t.drug_ent_id AS drug_ent_id,
-		d.`name` AS dept_id,
-		t.del_flag AS del_flag,
-		t.enable_flag AS enable_flag,
-		t.tenant_id AS tenant_id,
-		t.lookinto_date AS create_time,
-		t.create_user AS create_user,
-		t.update_time AS update_time,
-		t.update_user AS update_user,
-		t.submit_status AS submit_status,
-		t.share_img_url AS share_img_url,
-		t.plat_audit_status AS plat_audit_status,
-		t.task_info_img AS task_info_img,
-		t.approval_user_id,
-		t.approval_time,
-		t.dept_approval_user_id,
-		t.dept_approval_time
-		FROM wm_task t
-		left join sys_user u on  u.user_id=t.task_user_id
-		left join sys_dept d on d.dept_id=t.dept_id
-		left join wm_score_package p on p.id=t.score_package_id
-		${ew.customSqlSegment}
-	</select>
-
-	<select id="selectByTask" resultMap="wmTaskMap">
-		select t.* FROM wm_task t
-		where t.del_flag=0
-		<if test="query.id!=null and query.id!=''">
-			and  t.id = #{query.id}
-		</if>
-		<if test="query.scorePackageId!=null and query.scorePackageId!=''">
-			and  t.score_package_id = #{query.scorePackageId}
-		</if>
-		<if test="query.taskUserId!=null and query.taskUserId!=''">
-			and  t.task_user_id = #{query.taskUserId}
-		</if>
-		<if test="query.enableFlag!=null and query.enableFlag!=''">
-			and  t.enable_flag in (${query.enableFlag})
-		</if>
-
-
-	</select>
-
-	<select id="PackageIsFinishByTask" resultType="java.util.HashMap">
-	SELECT
-	tt.*
-FROM
-	(
-	SELECT
-		b.num,
-		a.task_num,
-		b.scoreSum,
-		a.user_score,
-	CASE
-
-			WHEN b.package_type1 = '1' THEN
-			b.user_score - b.scoreSum
-			WHEN (b.package_type1 = '2' or b.package_type1 = '3') THEN
-			b.task_num - b.num ELSE '1'
-		END AS isFinish,
-		a.id
-	FROM
-		wm_score_package_status a
-		LEFT JOIN (
-		SELECT
-			s.id,
-			p.package_type1,
-			count( t.id ) AS num,
-			sum( t.score ) AS scoreSum ,
-			case when s.user_score is null then p.score else s.user_score end as user_score,
-			case when s.task_num is null then p.task_num else s.task_num end as task_num
-		FROM
-			wm_score_package_status s
-			LEFT JOIN wm_score_package p ON s.package_id = p.id
-			LEFT JOIN wm_task t ON t.score_package_id = p.id
-			AND s.user_id = t.task_user_id
-		WHERE
-			s.del_flag = 0
-			AND s.enable_flag = 0
-			AND s.`status` != 3
-			AND p.del_flag = 0
-			AND t.del_flag = 0
-			AND t.task_status = 3
-			AND p.id = #{query.scorePackageId}
-		GROUP BY
-			s.id,
-			p.package_type1
-		) b ON a.id = b.id
-	WHERE
-		a.del_flag = 0
-		AND a.`status` != 3
-		AND a.enable_flag = 0
-	AND a.package_id = #{query.scorePackageId}
-	) tt
-	</select>
-
-	<select id="getMaxCreateTime" resultType="java.util.HashMap">
-	select max(t.lookinto_date) as MaxTime from wm_task t
-	where 1=1
-	<if test="query.id!=null and query.id!=''">
-		AND t.id in(${query.id})
-	</if>
-	</select>
-
-	<select id="selectListByWmTask" resultMap="wmTaskMap">
-	select * from wm_task where score_package_id
-	in (
-	select id from wm_score_package where id = #{query.id}
-	union all
-	select id from wm_score_package where relation_score_id = #{query.id}
-	union all
-	select id from wm_score_package where relation_score_id in (select id from wm_score_package where relation_score_id = #{query.id})
-	union all
-	select id from wm_score_package where relation_score_id in (select id from wm_score_package where relation_score_id in (select id from wm_score_package where relation_score_id = #{query.id}))
-	)
-	and task_status=3
-	and (
-	(report_drug_approval_status in ( 5,6)  and report_drug_approval_opinion = 1)
-	 or (report_one_approval_status in ( 5,6)and report_one_approval_opinion = 1)
-	 )
-	</select>
-
-
-	<select id="selectSettleTask" resultType="java.util.HashMap">
-		select t.id,
-		t.task_type_id as taskTypeId
-		,p.task_type_name as taskTypeName
-		,t.lookinto_date as lookintoDate
-		,c.temp1,c.temp2,c.temp3,c.temp4
-		from wm_task t
-		left join wm_task_type p on t.task_type_id=p.id
-		left join wm_task_content c on c.id=t.task_content_id
-		where t.del_flag=0
-		<if test="query.id!=null and query.id!=''">
-			and  t.id = #{query.id}
-		</if>
-		<if test="query.scorePackageId!=null and query.scorePackageId!=''">
-			and  t.score_package_id = #{query.scorePackageId}
-		</if>
-		<if test="query.taskUserId!=null and query.taskUserId!=''">
-			and  t.task_user_id = #{query.taskUserId}
-		</if>
-		<if test="query.enableFlag!=null and query.enableFlag!=''">
-			and  t.enable_flag in (${query.enableFlag})
-		</if>
-		order by t.create_time desc
-	</select>
-
-	<select id="getUserTaskSubScore" resultType="java.lang.Integer">
-		SELECT IFNULL(sum(t.score), 0)  FROM
-			wm_task t, wm_score_package p
-		WHERE
-			t.score_package_id = p.id
-		AND p.package_type1 = '1'
-		AND t.task_status != '4'
-		AND t.task_user_id = #{userId,jdbcType=VARCHAR}
-		AND (t.create_time BETWEEN #{startTime,jdbcType=TIMESTAMP} AND #{endTime,jdbcType=TIMESTAMP})
-	</select>
-
-	<select id="newGetUserTaskSubScore" resultType="java.lang.Integer">
-		SELECT IFNULL(sum(t.score), 0)  FROM
-			wm_task t, wm_score_package p
-		WHERE
-			t.score_package_id = p.id
-		  AND p.package_type1 = '1'
-		  AND t.real_flag = '0'
-		  AND t.task_status = '3'
-		  AND t.task_user_id = #{userId,jdbcType=VARCHAR}
-		  AND (t.create_time BETWEEN #{startTime,jdbcType=TIMESTAMP} AND #{endTime,jdbcType=TIMESTAMP})
-	</select>
-
-	<!-- 患者教育-处方列表-分页 -->
-	<select id="listTaskPrescriptionPage" resultMap="wmTaskWithContentMap">
-		SELECT
-		*
-		FROM
-		wm_task t
-		LEFT JOIN wm_task_content tc ON tc.id = t.task_content_id
-		<where>
-			t.del_flag = 0
-			AND t.real_flag = 0
-			AND task_status = 3
-			AND score_package_id = #{scorePackageId, jdbcType=BIGINT}
-			<if test="prescriptionNo != null and prescriptionNo != ''">
-				AND tc.temp3 = #{prescriptionNo, jdbcType=VARCHAR}
-			</if>
-		</where>
-	</select>
-
-	<!-- 患者教育-处方列表 -->
-	<select id="listTaskPrescription" resultMap="wmTaskWithContentMap">
-		SELECT
-		*
-		FROM
-		wm_task t
-		LEFT JOIN wm_task_content tc ON tc.id = t.task_content_id
-		<where>
-			t.del_flag = 0
-			AND t.real_flag = 0
-			AND task_status = 3
-			AND score_package_id = #{scorePackageId, jdbcType=BIGINT}
-			<if test="prescriptionNo != null and prescriptionNo != ''">
-				AND tc.temp3 = #{prescriptionNo, jdbcType=VARCHAR}
-			</if>
-		</where>
-	</select>
-
-	<!-- 查询调查信息审核列表 -->
-	<select id="listInfoAudit" resultMap="wmTaskMap">
-		SELECT
-			temp.*, u.realname AS task_user_name, u.username
-		FROM
-			(
-				SELECT max(id) AS id, max(task_user_id) AS task_user_id, max(create_time) AS create_time,
-					   max(approval_info) AS approval_info, max(plat_audit_status) AS plat_audit_status,
-					   max(task_status) AS task_status, task_content_id, task_type_id
-				FROM wm_task
-				<where>
-					del_flag = '0' AND enable_flag = '0' AND (task_type_id IN ('15', '16', '18', '30') AND task_from != '2')
-					<if test="query.taskTypeId != null and query.taskTypeId != ''">
-						AND task_type_id = #{query.taskTypeId, jdbcType=VARCHAR}
-					</if>
-					<if test="query.platAuditStatus != null and query.platAuditStatus != ''">
-						AND plat_audit_status = #{query.platAuditStatus, jdbcType=VARCHAR}
-					</if>
-					<if test="startDate != null and endDate != null">
-						AND create_time BETWEEN #{startDate, jdbcType=TIMESTAMP} AND #{endDate, jdbcType=TIMESTAMP}
-					</if>
-				</where>
-				GROUP BY task_content_id, task_type_id
-			) temp
-		LEFT JOIN sys_user u ON u.user_id = temp.task_user_id
-		ORDER BY temp.create_time DESC
-	</select>
-
-	<!-- 查询同一家医院一个月做的任务 -->
-	<select id="listCurrentMonthHospitalTask" resultMap="wmTaskMap">
-		SELECT t.*
-		FROM wm_task t
-				 LEFT JOIN wm_task_content tc ON tc.id = t.task_content_id
-		WHERE t.task_status in (1, 2, 3)
-		  AND t.enable_flag = 0
-		  AND t.del_flag = 0
-		  AND YEAR(t.create_time) = YEAR(CURDATE())
-		  AND MONTH(t.create_time) = MONTH(CURDATE())
-		  AND tc.temp29 = #{hospitalId}
-	</select>
-
-	<!-- 查询非审核不通过的会议任务个数 -->
-	<select id="countMeetingTask" resultType="java.lang.Long">
-		SELECT COUNT(*)
-		FROM wm_task
-				 LEFT JOIN wm_task_content ON wm_task.task_content_id = wm_task_content.id
-		WHERE wm_task.task_type_id IN
-		<foreach collection="taskTypeList" item="item" index="index" separator="," open="(" close=")">
-			#{item}
-		</foreach>
-		AND wm_task.task_user_id = #{taskUserId}
-	  	AND wm_task_content.temp4 BETWEEN #{startTime} AND #{endTime}
-		AND wm_task.task_status != 4
-	</select>
-
-	<!-- 企业审核查询任务列表 -->
+    <resultMap id="wmTaskMap" type="com.qunzhixinxi.hnqz.admin.api.entity.WmTask">
+        <id property="id" column="id"/>
+        <result property="taskNumber" column="task_number"/>
+        <result property="taskTypeId" column="task_type_id"/>
+        <result property="taskRuleId" column="task_rule_id"/>
+        <result property="score" column="score"/>
+        <result property="scorePackageDrugId" column="score_package_drug_id"/>
+        <result property="scorePackageId" column="score_package_id"/>
+        <result property="scoreDrugId" column="score_drug_id"/>
+        <result property="lookintoDate" column="lookinto_date"/>
+        <result property="province" column="province"/>
+        <result property="city" column="city"/>
+        <result property="area" column="area"/>
+        <result property="address" column="address"/>
+        <result property="lookintoTypeId" column="lookinto_type_id"/>
+        <result property="taskContentId" column="task_content_id"/>
+        <result property="taskStatus" column="task_status"/>
+        <result property="submitStatus" column="submit_status"/>
+        <result property="taskUserId" column="task_user_id"/>
+        <result property="taskUserType" column="task_user_type"/>
+        <result property="drugEntId" column="drug_ent_id"/>
+        <result property="deptId" column="dept_id"/>
+        <result property="delFlag" column="del_flag"/>
+        <result property="enableFlag" column="enable_flag"/>
+        <result property="tenantId" column="tenant_id"/>
+        <result property="createTime" column="create_time"/>
+        <result property="createUser" column="create_user"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="updateUser" column="update_user"/>
+        <result property="shareImgUrl" column="share_img_url"/>
+        <result property="platAuditStatus" column="plat_audit_status"/>
+        <result property="scorePackageLevel1Id" column="score_package_level1_id"/>
+        <result property="taskInfoImg" column="task_info_img"/>
+        <result property="compareResult" column="compare_result"/>
+        <result property="approvalOpinion" column="approval_opinion"/>
+        <result property="approvalInfo" column="approval_info"/>
+        <result property="realFlag" column="real_flag"/>
+        <result property="reportOneId" column="report_one_id"/>
+        <result property="reportOneApprovalStatus" column="report_one_approval_status"/>
+        <result property="reportOneApprovalOpinion" column="report_one_approval_opinion"/>
+        <result property="reportOneApprovalInfo" column="report_one_approval_info"/>
+        <result property="reportSecondId" column="report_second_id"/>
+        <result property="reportSecondApprovalStatus" column="report_second_approval_status"/>
+        <result property="reportSecondApprovalOpinion" column="report_second_approval_opinion"/>
+        <result property="reportSecondApprovalInfo" column="report_second_approval_info"/>
+        <result property="reportDrugId" column="report_drug_id"/>
+        <result property="reportDrugApprovalStatus" column="report_drug_approval_status"/>
+        <result property="reportDrugApprovalOpinion" column="report_drug_approval_opinion"/>
+        <result property="reportDrugApprovalInfo" column="report_drug_approval_info"/>
+        <result property="taskStatusInfo" column="task_status_info"/>
+        <result property="taskFrom" column="task_from"/>
+        <result property="reviewTaskCount" column="review_task_count"/>
+        <result property="deptReviewTaskCount" column="dept_review_task_count"/>
+        <result property="approvalUserId" column="approval_user_id"/>
+        <result property="approvalTime" column="approval_time"/>
+        <result property="deptApprovalUserId" column="dept_approval_user_id"/>
+        <result property="deptApprovalTime" column="dept_approval_time"/>
+
+    </resultMap>
+
+    <resultMap id="wmTaskWithContentMap" type="com.qunzhixinxi.hnqz.admin.api.entity.WmTask">
+        <id property="id" column="id"/>
+        <result property="taskTypeId" column="task_type_id"/>
+        <result property="taskRuleId" column="task_rule_id"/>
+        <result property="score" column="score"/>
+        <result property="scorePackageDrugId" column="score_package_drug_id"/>
+        <result property="scorePackageId" column="score_package_id"/>
+        <result property="scoreDrugId" column="score_drug_id"/>
+        <result property="lookintoDate" column="lookinto_date"/>
+        <result property="province" column="province"/>
+        <result property="city" column="city"/>
+        <result property="area" column="area"/>
+        <result property="address" column="address"/>
+        <result property="lookintoTypeId" column="lookinto_type_id"/>
+        <result property="taskContentId" column="task_content_id"/>
+        <result property="taskStatus" column="task_status"/>
+        <result property="submitStatus" column="submit_status"/>
+        <result property="taskUserId" column="task_user_id"/>
+        <result property="taskUserType" column="task_user_type"/>
+        <result property="drugEntId" column="drug_ent_id"/>
+        <result property="deptId" column="dept_id"/>
+        <result property="delFlag" column="del_flag"/>
+        <result property="enableFlag" column="enable_flag"/>
+        <result property="tenantId" column="tenant_id"/>
+        <result property="createTime" column="create_time"/>
+        <result property="createUser" column="create_user"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="updateUser" column="update_user"/>
+        <result property="shareImgUrl" column="share_img_url"/>
+        <result property="platAuditStatus" column="plat_audit_status"/>
+        <result property="scorePackageLevel1Id" column="score_package_level1_id"/>
+        <result property="taskInfoImg" column="task_info_img"/>
+        <result property="compareResult" column="compare_result"/>
+        <result property="approvalOpinion" column="approval_opinion"/>
+        <result property="approvalInfo" column="approval_info"/>
+        <result property="realFlag" column="real_flag"/>
+        <result property="reportOneId" column="report_one_id"/>
+        <result property="reportOneApprovalStatus" column="report_one_approval_status"/>
+        <result property="reportOneApprovalOpinion" column="report_one_approval_opinion"/>
+        <result property="reportOneApprovalInfo" column="report_one_approval_info"/>
+        <result property="reportSecondId" column="report_second_id"/>
+        <result property="reportSecondApprovalStatus" column="report_second_approval_status"/>
+        <result property="reportSecondApprovalOpinion" column="report_second_approval_opinion"/>
+        <result property="reportSecondApprovalInfo" column="report_second_approval_info"/>
+        <result property="reportDrugId" column="report_drug_id"/>
+        <result property="reportDrugApprovalStatus" column="report_drug_approval_status"/>
+        <result property="reportDrugApprovalOpinion" column="report_drug_approval_opinion"/>
+        <result property="reportDrugApprovalInfo" column="report_drug_approval_info"/>
+        <result property="taskStatusInfo" column="task_status_info"/>
+        <result property="taskFrom" column="task_from"/>
+        <association property="wmTaskContent" javaType="com.qunzhixinxi.hnqz.admin.api.entity.WmTaskContent">
+            <result property="temp1" column="temp1"/>
+            <result property="temp2" column="temp2"/>
+            <result property="temp3" column="temp3"/>
+            <result property="temp4" column="temp4"/>
+            <result property="temp5" column="temp5"/>
+            <result property="temp6" column="temp6"/>
+            <result property="temp7" column="temp7"/>
+            <result property="temp8" column="temp8"/>
+            <result property="temp9" column="temp9"/>
+            <result property="temp10" column="temp10"/>
+            <result property="temp11" column="temp11"/>
+            <result property="temp12" column="temp12"/>
+            <result property="temp13" column="temp13"/>
+            <result property="temp14" column="temp14"/>
+            <result property="temp15" column="temp15"/>
+            <result property="temp16" column="temp16"/>
+            <result property="temp17" column="temp17"/>
+            <result property="temp18" column="temp18"/>
+            <result property="temp19" column="temp19"/>
+            <result property="temp20" column="temp20"/>
+            <result property="temp21" column="temp21"/>
+            <result property="temp22" column="temp22"/>
+            <result property="temp23" column="temp23"/>
+            <result property="temp24" column="temp24"/>
+            <result property="temp25" column="temp25"/>
+            <result property="temp26" column="temp26"/>
+            <result property="temp28" column="temp28"/>
+            <result property="temp29" column="temp29"/>
+            <result property="temp30" column="temp30"/>
+            <result property="temp31" column="temp31"/>
+            <result property="temp32" column="temp32"/>
+        </association>
+    </resultMap>
+
+    <select id="selectListByExtEnt" resultMap="wmTaskMap">
+        SELECT
+        wm_task.*
+        FROM
+        wm_task,
+        wm_task_content
+        <where>
+            wm_task.task_content_id = wm_task_content.id
+            and wm_task.del_flag='0' and wm_task.enable_flag='0'
+
+
+            <if test="query.extIds != null and query.extIds.size()>0">
+                AND wm_task.task_content_id in (
+
+                <foreach collection="query.extIds" item="pid" index="index">
+                    select id from wm_task_content where wm_task_content.temp1 LIKE CONCAT('%',#{pid},'%')
+                    <if test="query.extIds.size()>1">
+                        <if test="query.extIds.size()>index-1">
+                            union
+                        </if>
+                    </if>
+                </foreach>
+
+                )
+            </if>
+
+            <if test="query.createTime != null and query.createTime != ''">
+                AND <![CDATA[ wm_task.create_time>= #{query.createTime}]]>
+            </if>
+
+            <if test="query.updateTime != null and query.updateTime != ''">
+                AND <![CDATA[ wm_task.update_time<=#{query.updateTime}]]>
+            </if>
+
+            <if test="query.drugEntId != null and query.drugEntId != ''">
+                AND <![CDATA[ wm_task.drug_ent_id=#{query.drugEntId}]]>
+            </if>
+        </where>
+    </select>
+
+
+    <select id="selectListByExtEntNoPage" resultMap="wmTaskMap">
+        SELECT
+        wm_task.*
+        FROM
+        wm_task,
+        wm_task_content
+        <where>
+            wm_task.task_content_id = wm_task_content.id
+            and wm_task.del_flag='0' and wm_task.enable_flag='0'
+
+
+            <if test="query.extIds != null and query.extIds.size()>0">
+                AND wm_task.task_content_id in (
+
+                <foreach collection="query.extIds" item="pid" index="index">
+                    select id from wm_task_content where wm_task_content.temp1 LIKE CONCAT('%',#{pid},'%')
+                    <if test="query.extIds.size()>1">
+                        <if test="query.extIds.size()>index-1">
+                            union
+                        </if>
+                    </if>
+                </foreach>
+
+                )
+            </if>
+
+
+            <if test="query.createTime != null and query.createTime != ''">
+                AND <![CDATA[ wm_task.create_time>= #{query.createTime}]]>
+            </if>
+
+            <if test="query.updateTime != null and query.updateTime != ''">
+                AND <![CDATA[ wm_task.update_time<=#{query.updateTime}]]>
+            </if>
+
+            <if test="query.drugEntId != null and query.drugEntId != ''">
+                AND <![CDATA[ wm_task.drug_ent_id<=#{query.drugEntId}]]>
+            </if>
+        </where>
+    </select>
+
+
+    <select id="getTaskListByPackageIds" resultType="java.util.HashMap">
+        select * from (SELECT
+        package_id,
+        score_name,
+        base_id,
+        sum(score) score,
+        count(1) score_count,
+        realname,
+        dept_name,
+        DATE_FORMAT(max( create_time ),'%Y-%m-%d') create_time
+        FROM
+        wm_zb_count
+        where package_id in (
+        <foreach collection="query.extIds" item="pid" index="index" separator=",">
+            #{pid}
+        </foreach>
+        )
+        group by
+        package_id,
+        score_name,
+        base_id,
+        realname,
+        dept_name
+        ) a ORDER BY a.dept_name,a.score_name,a.realname
+    </select>
+
+    <select id="getTaskListByPackageIdsAndUser" resultType="java.util.HashMap">
+        SELECT
+        *
+        FROM
+        (
+        SELECT
+        score_name,
+        sum( score ) score,
+        count( 1 ) score_count,
+        realname,
+        dept_name
+        FROM
+        wm_zb_count
+        where package_id in (
+        <foreach collection="query.extIds" item="pid" index="index" separator=",">
+            #{pid}
+        </foreach>
+        )
+        GROUP BY
+        score_name,
+        dept_name,
+        realname
+        ) A
+        ORDER BY
+        A.dept_name,
+        a.score_name,
+        a.realname
+    </select>
+
+
+    <select id="getTaskListByPackageIdsCount" resultType="java.util.HashMap">
+        SELECT
+        base_id taskTypeName,
+        sum( score ) taskSum,
+        count( 1 ) taskCount
+        FROM
+        wm_zb_count
+        WHERE
+        package_id IN (
+        <foreach collection="query.extIds" item="pid" index="index" separator=",">
+            #{pid}
+        </foreach>
+        )
+
+        GROUP BY
+        base_id
+    </select>
+
+    <select id="getTaskListByPackageIdsZd" resultType="java.util.HashMap">
+        SELECT
+        DATE_FORMAT(min( create_time ),'%Y-%m-%d') mindate,
+        DATE_FORMAT(max( create_time ),'%Y-%m-%d') maxdate,
+        GROUP_CONCAT( DISTINCT realname ) realname,
+        sum( score ) sumscore,
+        GROUP_CONCAT( DISTINCT task_rule_id ) task_rule_id
+        FROM
+        wm_zb_count
+        where package_id IN (
+        <foreach collection="query.extIds" item="pid" index="index" separator=",">
+            #{pid}
+        </foreach>
+        )
+        or
+        package_id IN (
+        <foreach collection="query.extIds" item="pid" index="index" separator=",">
+            #{pid}
+        </foreach>
+        )
+    </select>
+
+
+    <select id="getTaskListByPackageIdsReturnWmtaskInfo" resultMap="wmTaskMap">
+        SELECT
+        *
+        FROM
+        wm_zb_count
+        where package_id in (
+        <foreach collection="query.extIds" item="pid" index="index" separator=",">
+            #{pid}
+        </foreach>
+        )
+
+        order by task_user_id asc,create_time asc
+
+    </select>
+
+    <select id="selectZbCount" resultType="java.util.HashMap">
+        select * from (select * from (SELECT
+        package_id,
+        score_name,
+        send_package_dept_id,
+        dept_id,
+        sum(score) score,
+        count(1) score_count,
+        realname,
+        dept_name,
+        DATE_FORMAT(max( create_time ),'%Y-%m-%d') create_time,
+        DATE_FORMAT(max( pcreate_time ),'%Y-%m-%d') pcreate_time
+        FROM
+        wm_zb_count
+        where package_id in (
+        <foreach collection="query.extIds" item="pid" index="index" separator=",">
+            #{pid}
+        </foreach>
+        )
+        group by
+        package_id,
+        score_name,
+        send_package_dept_id,
+        dept_id,
+        package_score,
+        realname,
+        dept_name
+        ) a ORDER BY a.dept_name,a.score_name,a.realname ) b
+    </select>
+
+    <select id="selectByWmTaskOne" resultType="java.util.HashMap">
+        select
+        sum(score) score,
+        count(1) score_count,
+        dept_id,
+        report_one_approval_status,
+        score_package_id
+        from wm_task
+        where score_package_id in (
+        <foreach collection="query.extIds" item="pid" index="index" separator=",">
+            #{pid}
+        </foreach>
+        )
+        and
+        task_status = #{query.taskStatus,jdbcType=VARCHAR}
+    </select>
+    <select id="selectByWmTaskSecond" resultType="java.util.HashMap">
+        select
+        sum(score) score,
+        count(1) score_count,
+        dept_id,
+        report_second_approval_status,
+        score_package_id
+        from wm_task
+        where score_package_id in (
+        <foreach collection="query.extIds" item="pid" index="index" separator=",">
+            #{pid}
+        </foreach>
+        )
+        and
+        task_status = #{query.taskStatus,jdbcType=VARCHAR}
+    </select>
+    <select id="selectByWmTaskDrug" resultType="java.util.HashMap">
+        select
+        sum(score) score,
+        count(1) score_count,
+        dept_id,
+        report_drug_approval_status,
+        score_package_id
+        from wm_task
+        where score_package_id in (
+        <foreach collection="query.extIds" item="pid" index="index" separator=",">
+            #{pid}
+        </foreach>
+        )
+        and
+        task_status = #{query.taskStatus,jdbcType=VARCHAR}
+    </select>
+
+    <select id="selectByWmTaskId" resultMap="wmTaskMap">
+        SELECT *
+        FROM wm_task
+        WHERE score_package_id = #{query.scorePackageId,jdbcType=VARCHAR}
+          AND task_status = #{query.taskStatus,jdbcType=VARCHAR}
+          AND del_flag = 0
+          AND enable_flag = 0
+    </select>
+
+    <select id="selectByReportOneApprovalStatus" resultType="java.util.HashMap">
+        select
+        sum(score) score,
+        count(1) score_count,
+        dept_id,
+        report_one_approval_status,
+        score_package_id
+        from wm_task
+        where score_package_id in (
+        <foreach collection="query.extIds" item="pid" index="index" separator=",">
+            #{pid}
+        </foreach>
+        )
+        and
+        task_status = #{query.taskStatus,jdbcType=VARCHAR}
+        and
+        report_one_approval_status = #{query.reportOneApprovalStatus,jdbcType=VARCHAR}
+        group by dept_id, report_one_approval_status, score_package_id
+    </select>
+
+    <select id="selectByReportSecondApprovalStatus" resultType="java.util.HashMap">
+        select
+        sum(score) score,
+        count(1) score_count,
+        dept_id,
+        report_second_approval_status,
+        score_package_id
+        from wm_task
+        where score_package_id in (
+        <foreach collection="query.extIds" item="pid" index="index" separator=",">
+            #{pid}
+        </foreach>
+        )
+        and
+        task_status = #{query.taskStatus,jdbcType=VARCHAR}
+        and
+        report_second_approval_status = #{query.reportSecondApprovalStatus,jdbcType=VARCHAR}
+        group by dept_id, report_second_approval_status, score_package_id
+    </select>
+
+    <select id="selectByReportDrugApprovalStatus" resultType="java.util.HashMap">
+        select
+        sum(score) score,
+        count(1) score_count,
+        dept_id,
+        report_drug_approval_status,
+        score_package_id
+        from wm_task
+        where score_package_id in (
+        <foreach collection="query.extIds" item="pid" index="index" separator=",">
+            #{pid}
+        </foreach>
+        )
+        and
+        task_status = #{query.taskStatus,jdbcType=VARCHAR}
+        and
+        report_drug_approval_status = #{query.reportDrugApprovalStatus,jdbcType=VARCHAR}
+        group by dept_id, report_drug_approval_status, score_package_id
+    </select>
+    <select id="selectById" resultMap="wmTaskMap">
+        SELECT *
+        FROM wm_task
+        WHERE id = #{query.Id,jdbcType=BIGINT}
+    </select>
+
+    <select id="selectByRealFlag" resultMap="wmTaskMap">
+        SELECT *
+        FROM wm_task
+        WHERE id = #{Id,jdbcType=BIGINT}
+          AND real_flag = 0
+    </select>
+
+    <select id="selectWmTaskById" resultMap="wmTaskMap">
+        SELECT *
+        FROM wm_task
+        WHERE id = #{query.id,jdbcType=BIGINT}
+          AND task_status = #{query.taskStatus,jdbcType=VARCHAR}
+    </select>
+    <select id="selectListByIds" resultMap="wmTaskMap">
+        SELECT *
+        FROM wm_task
+        WHERE score_package_id = #{query.scorePackageId,jdbcType=VARCHAR}
+          AND real_flag = 0
+    </select>
+    <select id="selectListByScorePackageId" resultMap="wmTaskMap">
+        SELECT *
+        FROM wm_task
+        WHERE score_package_id = #{query.scorePackageId,jdbcType=VARCHAR}
+          AND task_status = #{query.taskStatus,jdbcType=VARCHAR}
+          AND del_flag = 0
+          AND enable_flag = 0
+    </select>
+    <select id="getTaskListByPackageIdsForJs" resultType="java.util.HashMap">
+        select * from (select * from (SELECT
+        package_id,
+        score_name,
+        package_score,
+        sum(score) score,
+        count(1) score_count,
+        realname,
+        dept_name,
+        DATE_FORMAT(max( create_time ),'%Y-%m-%d') create_time,
+        DATE_FORMAT(max( pcreate_time ),'%Y-%m-%d') pcreate_time
+        FROM
+        wm_zb_count
+        where package_id in (
+        <foreach collection="query.extIds" item="pid" index="index" separator=",">
+            #{pid}
+        </foreach>
+        )
+        group by
+        package_id,
+        score_name,
+        package_score,
+        realname,
+        dept_name
+        ) a ORDER BY a.dept_name,a.score_name,a.realname ) b
+
+        union
+
+        SELECT
+        "" package_id,
+        "" score_name,
+        package_score,
+        sum(score) score,
+        count(1) score_count,
+        "合计" realname,
+        "" dept_name,
+        "" create_time,
+        "" pcreate_time
+        FROM
+        wm_zb_count
+        where package_id in (
+        <foreach collection="query.extIds" item="pid" index="index" separator=",">
+            #{pid}
+        </foreach>
+        )
+    </select>
+
+    <select id="getTaskListByPackageIdsForJsUser" resultType="java.util.HashMap">
+        select * from (SELECT
+        *
+        FROM
+        (
+        SELECT
+        sum( score ) score,
+        count( 1 ) score_count,
+        user_id,
+        realname,
+        phone,
+        dept_name,
+        DATE_FORMAT( max( create_time ), '%Y-%m-%d' ) create_time
+        FROM
+        wm_zb_count
+        where package_id in (
+        <foreach collection="query.extIds" item="pid" index="index" separator=",">
+            #{pid}
+        </foreach>
+        )
+        GROUP BY
+        user_id,
+        realname,
+        phone,
+        dept_name
+        ) a
+        ORDER BY
+        a.dept_name,
+        a.realname) bb
+        UNION
+        SELECT
+        sum( score ) score,
+        count( 1 ) score_count,
+        "" user_id,
+        "合计" realname,
+        "" phone,
+        ""dept_name,
+        "" create_time
+        FROM
+        wm_zb_count
+        where package_id in (
+        <foreach collection="query.extIds" item="pid" index="index" separator=",">
+            #{pid}
+        </foreach>
+        )
+    </select>
+
+
+    <select id="getH5PackageList" resultType="java.util.HashMap">
+        SELECT
+        p.id id ,
+        p.score_package_name as score_name,u.realname,
+        p.package_type1 as type1,
+        u.phone,
+        u.user_id as userId,
+        sum( ifnull(t.score, 0) ) taskSum,
+        count( 1 ) taskCount
+        FROM
+        wm_task t
+        left join wm_score_package p on p.id=t.score_package_id
+        left join sys_user u on u.user_id=t.task_user_id
+        where p.score_package_name in (
+        <foreach collection="query.extIds" item="pid" index="index" separator=",">
+            #{pid}
+        </foreach>
+        )
+        and t.task_status=3
+        and t.del_flag=0
+        and t.enable_flag=0
+        GROUP BY
+        p.id,p.score_package_name,u.realname,u.phone
+    </select>
+
+
+    <select id="getH5TaskList" resultType="java.util.HashMap">
+        SELECT t.id                                   id,
+               p.score_package_name AS                score_name,
+               p.package_type2      AS                `type`,
+               p.package_type1      AS                type1,
+               u.realname,
+               e.task_type_name,
+               DATE_FORMAT(t.create_time, '%Y-%m-%d') create_time,
+               IFNULL(t.score, 0)                     taskSum,
+               IFNULL(t.score, 0)                     taskCount
+        FROM wm_task t
+                 LEFT JOIN wm_score_package p ON p.id = t.score_package_id
+                 LEFT JOIN sys_user u ON u.user_id = t.task_user_id
+                 LEFT JOIN wm_task_type e ON e.id = t.task_type_id
+        WHERE p.id = #{query.scorePackageId}
+          AND t.task_status = 3
+          AND t.task_user_id = #{query.taskUserId}
+          AND t.del_flag = 0
+          AND t.enable_flag = 0
+        ORDER BY t.create_time DESC
+
+    </select>
+
+
+    <select id="getTaskListByIds" resultType="java.util.HashMap">
+        select * from (
+        SELECT
+        p.id AS package_id,
+        p.score_package_name AS score_name,
+        c.realname AS realname,
+        d.name AS dept_name,
+        m.label AS base_id,
+        sum(t.score) score,
+        count(1) score_count,
+        DATE_FORMAT(max( t.lookinto_date ),'%Y-%m-%d') create_time
+        FROM wm_task t
+        LEFT JOIN wm_score_package p ON t.score_package_id = p.id
+        JOIN wm_task_type b
+        left join sys_dict_item m on m.type='score_task_type' and b.parent_id=m.`value`
+        JOIN sys_user c
+        JOIN sys_dept d
+        WHERE b.id = t.task_type_id
+        AND c.user_id = t.task_user_id
+        AND c.dept_id = d.dept_id
+        and t.task_status=3
+        and t.enable_flag=0
+        and t.del_flag=0
+        and t.real_flag = '0'
+        <if test="query.id!=null and query.id!=''">
+            AND t.id in(${query.id})
+        </if>
+        group by
+        p.id,
+        p.score_package_name,
+        m.label,
+        c.realname,
+        d.name
+        )a ORDER BY a.dept_name,a.score_name,a.realname
+    </select>
+
+    <select id="getTaskListByIdsOld" resultType="java.util.HashMap">
+        select * from (
+        SELECT
+        p.id AS package_id,
+        p.score_package_name AS score_name,
+        c.realname AS realname,
+        d.name AS dept_name,
+        m.label AS base_id,
+        sum(t.score) score,
+        count(1) score_count,
+        DATE_FORMAT(max( t.lookinto_date ),'%Y-%m-%d') create_time
+        FROM wm_task t
+        LEFT JOIN wm_score_package p ON t.score_package_drug_id = p.id
+        JOIN wm_task_type b
+        left join sys_dict_item m on m.type='score_task_type' and b.parent_id=m.`value`
+        JOIN sys_user c
+        JOIN sys_dept d
+        WHERE b.id = t.task_type_id
+        AND c.user_id = t.task_user_id
+        AND c.dept_id = d.dept_id
+        and t.task_status=3
+        and t.enable_flag=0
+        and t.del_flag=0
+        and t.real_flag = '0'
+        <if test="query.id!=null and query.id!=''">
+            AND t.id in(${query.id})
+        </if>
+        group by
+        p.id,
+        p.score_package_name,
+        m.label,
+        c.realname,
+        d.name
+        )a ORDER BY a.dept_name,a.score_name,a.realname
+    </select>
+
+    <select id="getTaskListByIdsJs" resultType="java.util.HashMap">
+        select * from (
+        SELECT
+        p.id AS package_id,
+        p.score_package_name AS score_name,
+        c.realname AS realname,
+        d.name AS dept_name,
+        m.label AS base_id,
+        sum(t.score) score,
+        count(1) score_count,
+        DATE_FORMAT(max( t.lookinto_date ),'%Y-%m-%d') create_time
+        FROM wm_task t
+        LEFT JOIN wm_score_package p ON t.score_package_id = p.id
+        JOIN wm_task_type b
+        left join sys_dict_item m on m.type='score_task_type' and b.parent_id=m.`value`
+        JOIN sys_user c
+        JOIN sys_dept d
+        WHERE b.id = t.task_type_id
+        AND c.user_id = t.task_user_id
+        and d.dept_id=t.dept_id
+        and t.task_status=3
+        and t.enable_flag=0
+        and t.del_flag=0
+        and p.package_type2=2
+        <if test="query.id!=null and query.id!=''">
+            AND t.id in(${query.id})
+        </if>
+        group by
+        p.id,
+        p.score_package_name,
+        m.label,
+        c.realname,
+        d.name
+        )a ORDER BY a.dept_name,a.score_name,a.realname
+    </select>
+
+
+    <select id="getTaskListByIdsReturnWmtaskInfo" resultMap="wmTaskMap">
+        SELECT
+        t.id AS id,
+        t.task_rule_id AS task_rule_id,
+        t.score AS score,
+        t.score_package_drug_id AS score_package_drug_id,
+        t.score_package_level1_id AS score_package_level1_id,
+        t.score_package_id AS score_package_id,
+        t.task_type_id AS task_type_id,
+        t.lookinto_date AS lookinto_date,
+        t.province AS province,
+        t.city AS city,
+        t.area AS area,
+        t.address AS address,
+        t.lookinto_type_id AS lookinto_type_id,
+        t.task_content_id AS task_content_id,
+        t.task_status AS task_status,
+        t.task_user_id AS task_user_id,
+        t.task_user_type AS task_user_type,
+        t.drug_ent_id AS drug_ent_id,
+        t.dept_id AS dept_id,
+        t.del_flag AS del_flag,
+        t.enable_flag AS enable_flag,
+        t.tenant_id AS tenant_id,
+        t.lookinto_date AS create_time,
+        t.create_user AS create_user,
+        t.update_time AS update_time,
+        t.update_user AS update_user,
+        t.submit_status AS submit_status,
+        t.share_img_url AS share_img_url,
+        t.plat_audit_status AS plat_audit_status,
+        t.ext_ids AS ext_ids,
+        t.task_info_img AS task_info_img
+        FROM wm_task t
+        where 1=1
+        <if test="query.id!=null and query.id!=''">
+            AND t.id in(${query.id})
+        </if>
+        order by t.task_user_id asc,t.create_time asc
+    </select>
+
+    <select id="getTaskListByIdsCount" resultType="java.util.HashMap">
+        SELECT
+        m.label AS taskTypeName,
+        sum( t.score ) taskSum,
+        count( 1 ) taskCount
+        FROM wm_task t
+        LEFT JOIN wm_score_package p ON t.score_package_id = p.id
+        JOIN wm_task_type b
+        left join sys_dict_item m on m.type='score_task_type' and m.`value`=b.parent_id
+        WHERE b.id = t.task_type_id
+        and t.task_status=3
+        and t.enable_flag=0
+        and t.del_flag=0
+        <if test="query.id!=null and query.id!=''">
+            AND t.id in(${query.id})
+        </if>
+        GROUP BY
+        m.label
+    </select>
+
+    <select id="getTaskListByIdsZd" resultType="java.util.HashMap">
+        SELECT
+        DATE_FORMAT(min( t.lookinto_date ),'%Y-%m-%d') mindate,
+        DATE_FORMAT(max( t.lookinto_date ),'%Y-%m-%d') maxdate,
+        GROUP_CONCAT( DISTINCT c.realname ) realname,
+        sum( t.score ) sumscore,
+        GROUP_CONCAT( DISTINCT t.task_rule_id ) task_rule_id
+        FROM wm_task t
+        LEFT JOIN wm_score_package p ON t.score_package_id = p.id
+        JOIN wm_task_type b
+        JOIN sys_user c
+        JOIN sys_dept d
+        WHERE b.id = t.task_type_id
+        AND c.user_id = t.task_user_id
+        AND c.dept_id = d.dept_id
+        and t.task_status=3
+        and t.enable_flag=0
+        and t.del_flag=0
+        <if test="query.id!=null and query.id!=''">
+            AND t.id in(${query.id})
+        </if>
+        ORDER BY
+        t.task_rule_id,
+        t.task_user_id,
+        t.lookinto_date
+
+    </select>
+
+    <select id="getTaskListByIdsZdJs" resultType="java.util.HashMap">
+        SELECT
+        DATE_FORMAT(min( t.lookinto_date ),'%Y-%m-%d') mindate,
+        DATE_FORMAT(max( t.lookinto_date ),'%Y-%m-%d') maxdate,
+        GROUP_CONCAT( DISTINCT c.realname ) realname,
+        sum( t.score ) sumscore,
+        GROUP_CONCAT( DISTINCT t.task_rule_id ) task_rule_id
+        FROM wm_task t
+        LEFT JOIN wm_score_package p ON t.score_package_id = p.id
+        JOIN wm_task_type b
+        JOIN sys_user c
+        JOIN sys_dept d
+        WHERE b.id = t.task_type_id
+        AND c.user_id = t.task_user_id
+        AND t.dept_id = d.dept_id
+        and t.task_status=3
+        and t.enable_flag=0
+        and t.del_flag=0
+        and p.package_type2=2
+        <if test="query.id!=null and query.id!=''">
+            AND t.id in(${query.id})
+        </if>
+        ORDER BY
+        t.task_rule_id,
+        t.task_user_id,
+        t.lookinto_date
+
+    </select>
+
+    <select id="getWmTaskList" resultMap="wmTaskMap">
+        SELECT
+        t.id AS id,
+        t.task_number,
+        t.task_rule_id AS task_rule_id,
+        t.score AS score,
+        p2.id AS score_package_drug_id,
+        p1.id AS score_package_level1_id,
+        p.score_package_name,
+        p.score_package_name AS score_package_id,
+        t.task_type_id AS task_type_id,
+        t.lookinto_date AS lookinto_date,
+        t.real_flag AS realFlag,
+        t.province AS province,
+        t.city AS city,
+        t.area AS area,
+        t.address AS address,
+        t.lookinto_type_id AS lookinto_type_id,
+        t.task_content_id AS task_content_id,
+        t.task_status AS task_status,
+        u.realname AS task_user_id,
+        t.task_user_type AS task_user_type,
+        t.drug_ent_id AS drug_ent_id,
+        d.`name` AS dept_id,
+        t.del_flag AS del_flag,
+        t.enable_flag AS enable_flag,
+        t.tenant_id AS tenant_id,
+        t.lookinto_date AS create_time,
+        t.create_user AS create_user,
+        t.update_time AS update_time,
+        t.update_user AS update_user,
+        t.submit_status AS submit_status,
+        t.share_img_url AS share_img_url,
+        t.plat_audit_status AS plat_audit_status,
+        t.task_info_img AS task_info_img,
+        t.review_task_count,
+        t.report_drug_id,
+        t.report_one_id,
+        t.report_second_id,
+        t.task_status_info,
+        t.approval_user_id,
+        t.approval_time,
+        t.dept_approval_user_id,
+        t.dept_approval_time
+        FROM wm_task t
+        left join sys_user u on u.user_id=t.task_user_id
+        left join sys_dept d on d.dept_id=t.dept_id
+        left join wm_score_package p on p.id=t.score_package_id
+        left join wm_score_package p1 on p1.id=t.score_package_level1_id
+        left join wm_score_package p2 on p1.id=t.score_package_drug_id
+        where t.del_flag=0
+        and t.real_flag=0
+        and t.task_status !='1'
+        <if test="query.scorePackageDrugId!=null and query.scorePackageDrugId!=''">
+            and t.score_package_drug_id = #{query.scorePackageDrugId}
+        </if>
+        <if test="query.scorePackageLevel1Id!=null and query.scorePackageLevel1Id!=''">
+            and t.score_package_level1_id = #{query.scorePackageLevel1Id}
+        </if>
+        <if test="query.scorePackageId!=null and query.scorePackageId!=''">
+            and t.score_package_id = #{query.scorePackageId}
+        </if>
+        <if test="query.id!=null and query.id!=''">
+            and t.id = #{query.id}
+        </if>
+        <if test="query.taskStatus!=null and query.taskStatus!=''">
+            and t.task_status = #{query.taskStatus}
+        </if>
+        <if test="query.taskUserId!=null and query.taskUserId!=''">
+            and t.task_user_id = #{query.taskUserId}
+        </if>
+        <if test="query.taskNumber != null and query.taskNumber != ''">
+            and t.task_number like concat('%', #{query.taskNumber}, '%')
+        </if>
+        <if test="query.taskTypeId != null and query.taskTypeId != ''">
+            and t.task_type_id = #{query.taskTypeId}
+        </if>
+        order by t.lookinto_date
+
+    </select>
+
+    <!-- 根据配置查询任务 -->
+    <select id="listWmTaskByConfig" resultMap="wmTaskMap">
+        SELECT
+        t.id AS id,
+        t.task_rule_id AS task_rule_id,
+        t.score AS score,
+        p.score_package_name AS score_package_id,
+        t.task_type_id AS task_type_id,
+        t.lookinto_date AS lookinto_date,
+        t.province AS province,
+        t.city AS city,
+        t.area AS area,
+        t.address AS address,
+        t.lookinto_type_id AS lookinto_type_id,
+        t.task_content_id AS task_content_id,
+        t.task_status AS task_status,
+        u.realname AS task_user_id,
+        t.task_user_type AS task_user_type,
+        t.drug_ent_id AS drug_ent_id,
+        d.`name` AS dept_id,
+        t.del_flag AS del_flag,
+        t.enable_flag AS enable_flag,
+        t.tenant_id AS tenant_id,
+        t.lookinto_date AS create_time,
+        t.create_user AS create_user,
+        t.update_time AS update_time,
+        t.update_user AS update_user,
+        t.submit_status AS submit_status,
+        t.share_img_url AS share_img_url,
+        t.plat_audit_status AS plat_audit_status,
+        t.task_info_img AS task_info_img
+        FROM wm_task t
+        left join sys_user u on u.user_id=t.task_user_id
+        left join sys_dept d on d.dept_id=t.dept_id
+        left join wm_score_package p on p.id=t.score_package_id
+        where t.del_flag=0
+        and t.real_flag=0
+        and t.task_status !='1'
+        <if test="query.taskUserId!=null and query.taskUserId!=''">
+            and t.task_user_id = #{query.taskUserId}
+        </if>
+        <if test="query.taskTypeId != null and query.taskTypeId != ''">
+            and t.task_type_id = #{query.taskTypeId}
+        </if>
+        <if test="query.taskStatus!=null and query.taskStatus!=''">
+            and t.task_status in (${query.taskStatus})
+        </if>
+        <if test="query.scorePackageId!=null and query.scorePackageId!=''">
+            and t.score_package_id in (${query.scorePackageId})
+        </if>
+        <if test="query.taskUserType != null and query.taskUserType != ''">
+            and t.task_user_type in (${query.taskUserType})
+        </if>
+        order by t.lookinto_date
+    </select>
+
+    <!-- 根据配置查询任务 -->
+    <select id="listWmTaskByWrapper" resultMap="wmTaskMap">
+        SELECT t.id                 AS id,
+               t.task_rule_id       AS task_rule_id,
+               t.score              AS score,
+               p.score_package_name,
+               p.score_package_name AS score_package_id,
+               t.task_type_id       AS task_type_id,
+               t.lookinto_date      AS lookinto_date,
+               t.province           AS province,
+               t.city               AS city,
+               t.area               AS area,
+               t.address            AS address,
+               t.lookinto_type_id   AS lookinto_type_id,
+               t.task_content_id    AS task_content_id,
+               t.task_status        AS task_status,
+               u.realname           AS task_user_id,
+               t.task_user_type     AS task_user_type,
+               t.drug_ent_id        AS drug_ent_id,
+               d.`name`             AS dept_id,
+               t.del_flag           AS del_flag,
+               t.enable_flag        AS enable_flag,
+               t.tenant_id          AS tenant_id,
+               t.lookinto_date      AS create_time,
+               t.create_user        AS create_user,
+               t.update_time        AS update_time,
+               t.update_user        AS update_user,
+               t.submit_status      AS submit_status,
+               t.share_img_url      AS share_img_url,
+               t.plat_audit_status  AS plat_audit_status,
+               t.task_info_img      AS task_info_img,
+               t.approval_user_id,
+               t.approval_time,
+               t.dept_approval_user_id,
+               t.dept_approval_time
+        FROM wm_task t
+                 LEFT JOIN sys_user u ON u.user_id = t.task_user_id
+                 LEFT JOIN sys_dept d ON d.dept_id = t.dept_id
+                 LEFT JOIN wm_score_package p ON p.id = t.score_package_id
+            ${ew.customSqlSegment}
+    </select>
+
+    <select id="selectByTask" resultMap="wmTaskMap">
+        select t.* FROM wm_task t
+        where t.del_flag=0
+        <if test="query.id!=null and query.id!=''">
+            and t.id = #{query.id}
+        </if>
+        <if test="query.scorePackageId!=null and query.scorePackageId!=''">
+            and t.score_package_id = #{query.scorePackageId}
+        </if>
+        <if test="query.taskUserId!=null and query.taskUserId!=''">
+            and t.task_user_id = #{query.taskUserId}
+        </if>
+        <if test="query.enableFlag!=null and query.enableFlag!=''">
+            and t.enable_flag in (${query.enableFlag})
+        </if>
+
+
+    </select>
+
+    <select id="PackageIsFinishByTask" resultType="java.util.HashMap">
+        SELECT tt.*
+        FROM (SELECT b.num,
+                     a.task_num,
+                     b.scoreSum,
+                     a.user_score,
+                     CASE
+
+                         WHEN b.package_type1 = '1' THEN
+                             b.user_score - b.scoreSum
+                         WHEN (b.package_type1 = '2' OR b.package_type1 = '3') THEN
+                             b.task_num - b.num
+                         ELSE '1'
+                         END AS isFinish,
+                     a.id
+              FROM wm_score_package_status a
+                       LEFT JOIN (SELECT s.id,
+                                         p.package_type1,
+                                         COUNT(t.id)                                                       AS num,
+                                         SUM(t.score)                                                      AS scoreSum,
+                                         CASE WHEN s.user_score IS NULL THEN p.score ELSE s.user_score END AS user_score,
+                                         CASE WHEN s.task_num IS NULL THEN p.task_num ELSE s.task_num END  AS task_num
+                                  FROM wm_score_package_status s
+                                           LEFT JOIN wm_score_package p ON s.package_id = p.id
+                                           LEFT JOIN wm_task t ON t.score_package_id = p.id
+                                      AND s.user_id = t.task_user_id
+                                  WHERE s.del_flag = 0
+                                    AND s.enable_flag = 0
+                                    AND s.`status` != 3
+                                    AND p.del_flag = 0
+                                    AND t.del_flag = 0
+                                    AND t.task_status = 3
+                                    AND p.id = #{query.scorePackageId}
+                                  GROUP BY s.id,
+                                           p.package_type1) b ON a.id = b.id
+              WHERE a.del_flag = 0
+                AND a.`status` != 3
+                AND a.enable_flag = 0
+                AND a.package_id = #{query.scorePackageId}) tt
+    </select>
+
+    <select id="getMaxCreateTime" resultType="java.util.HashMap">
+        select max(t.lookinto_date) as MaxTime from wm_task t
+        where 1=1
+        <if test="query.id!=null and query.id!=''">
+            AND t.id in(${query.id})
+        </if>
+    </select>
+
+    <select id="selectListByWmTask" resultMap="wmTaskMap">
+        SELECT *
+        FROM wm_task
+        WHERE score_package_id
+            IN (SELECT id
+                FROM wm_score_package
+                WHERE id = #{query.id}
+                UNION ALL
+                SELECT id
+                FROM wm_score_package
+                WHERE relation_score_id = #{query.id}
+                UNION ALL
+                SELECT id
+                FROM wm_score_package
+                WHERE relation_score_id IN (SELECT id FROM wm_score_package WHERE relation_score_id = #{query.id})
+                UNION ALL
+                SELECT id
+                FROM wm_score_package
+                WHERE relation_score_id IN
+                      (SELECT id FROM wm_score_package WHERE relation_score_id IN (SELECT id FROM wm_score_package WHERE relation_score_id = #{query.id})))
+          AND task_status = 3
+          AND (
+            (report_drug_approval_status IN (5, 6) AND report_drug_approval_opinion = 1)
+                OR (report_one_approval_status IN (5, 6) AND report_one_approval_opinion = 1)
+            )
+    </select>
+
+
+    <select id="selectSettleTask" resultType="java.util.HashMap">
+        select t.id,
+        t.task_type_id as taskTypeId
+        ,p.task_type_name as taskTypeName
+        ,t.lookinto_date as lookintoDate
+        ,c.temp1,c.temp2,c.temp3,c.temp4
+        from wm_task t
+        left join wm_task_type p on t.task_type_id=p.id
+        left join wm_task_content c on c.id=t.task_content_id
+        where t.del_flag=0
+        <if test="query.id!=null and query.id!=''">
+            and t.id = #{query.id}
+        </if>
+        <if test="query.scorePackageId!=null and query.scorePackageId!=''">
+            and t.score_package_id = #{query.scorePackageId}
+        </if>
+        <if test="query.taskUserId!=null and query.taskUserId!=''">
+            and t.task_user_id = #{query.taskUserId}
+        </if>
+        <if test="query.enableFlag!=null and query.enableFlag!=''">
+            and t.enable_flag in (${query.enableFlag})
+        </if>
+        order by t.create_time desc
+    </select>
+
+    <select id="getUserTaskSubScore" resultType="java.lang.Integer">
+        SELECT IFNULL(SUM(t.score), 0)
+        FROM wm_task t,
+             wm_score_package p
+        WHERE t.score_package_id = p.id
+          AND p.package_type1 = '1'
+          AND t.task_status != '4'
+          AND t.task_user_id = #{userId,jdbcType=VARCHAR}
+          AND (t.create_time BETWEEN #{startTime,jdbcType=TIMESTAMP} AND #{endTime,jdbcType=TIMESTAMP})
+    </select>
+
+    <select id="newGetUserTaskSubScore" resultType="java.lang.Integer">
+        SELECT IFNULL(SUM(t.score), 0)
+        FROM wm_task t,
+             wm_score_package p
+        WHERE t.score_package_id = p.id
+          AND p.package_type1 = '1'
+          AND t.real_flag = '0'
+          AND t.task_status = '3'
+          AND t.task_user_id = #{userId,jdbcType=VARCHAR}
+          AND (t.create_time BETWEEN #{startTime,jdbcType=TIMESTAMP} AND #{endTime,jdbcType=TIMESTAMP})
+    </select>
+
+    <!-- 患者教育-处方列表-分页 -->
+    <select id="listTaskPrescriptionPage" resultMap="wmTaskWithContentMap">
+        SELECT
+        *
+        FROM
+        wm_task t
+        LEFT JOIN wm_task_content tc ON tc.id = t.task_content_id
+        <where>
+            t.del_flag = 0
+            AND t.real_flag = 0
+            AND task_status = 3
+            AND score_package_id = #{scorePackageId, jdbcType=BIGINT}
+            <if test="prescriptionNo != null and prescriptionNo != ''">
+                AND tc.temp3 = #{prescriptionNo, jdbcType=VARCHAR}
+            </if>
+        </where>
+    </select>
+
+    <!-- 患者教育-处方列表 -->
+    <select id="listTaskPrescription" resultMap="wmTaskWithContentMap">
+        SELECT
+        *
+        FROM
+        wm_task t
+        LEFT JOIN wm_task_content tc ON tc.id = t.task_content_id
+        <where>
+            t.del_flag = 0
+            AND t.real_flag = 0
+            AND task_status = 3
+            AND score_package_id = #{scorePackageId, jdbcType=BIGINT}
+            <if test="prescriptionNo != null and prescriptionNo != ''">
+                AND tc.temp3 = #{prescriptionNo, jdbcType=VARCHAR}
+            </if>
+        </where>
+    </select>
+
+    <!-- 查询调查信息审核列表 -->
+    <select id="listInfoAudit" resultMap="wmTaskMap">
+        SELECT
+        temp.*, u.realname AS task_user_name, u.username
+        FROM
+        (
+        SELECT max(id) AS id, max(task_user_id) AS task_user_id, max(create_time) AS create_time,
+        max(approval_info) AS approval_info, max(plat_audit_status) AS plat_audit_status,
+        max(task_status) AS task_status, task_content_id, task_type_id
+        FROM wm_task
+        <where>
+            del_flag = '0' AND enable_flag = '0' AND (task_type_id IN ('15', '16', '18', '30') AND task_from != '2')
+            <if test="query.taskTypeId != null and query.taskTypeId != ''">
+                AND task_type_id = #{query.taskTypeId, jdbcType=VARCHAR}
+            </if>
+            <if test="query.platAuditStatus != null and query.platAuditStatus != ''">
+                AND plat_audit_status = #{query.platAuditStatus, jdbcType=VARCHAR}
+            </if>
+            <if test="startDate != null and endDate != null">
+                AND create_time BETWEEN #{startDate, jdbcType=TIMESTAMP} AND #{endDate, jdbcType=TIMESTAMP}
+            </if>
+        </where>
+        GROUP BY task_content_id, task_type_id
+        ) temp
+        LEFT JOIN sys_user u ON u.user_id = temp.task_user_id
+        ORDER BY temp.create_time DESC
+    </select>
+
+    <!-- 查询同一家医院一个月做的任务 -->
+    <select id="listCurrentMonthHospitalTask" resultMap="wmTaskMap">
+        SELECT t.*
+        FROM wm_task t
+                 LEFT JOIN wm_task_content tc ON tc.id = t.task_content_id
+        WHERE t.task_status IN (1, 2, 3)
+          AND t.enable_flag = 0
+          AND t.del_flag = 0
+          AND YEAR(t.create_time) = YEAR(CURDATE())
+          AND MONTH(t.create_time) = MONTH(CURDATE())
+          AND tc.temp29 = #{hospitalId}
+    </select>
+
+    <!-- 查询非审核不通过的会议任务个数 -->
+    <select id="countMeetingTask" resultType="java.lang.Long">
+        SELECT COUNT(*)
+        FROM wm_task
+        LEFT JOIN wm_task_content ON wm_task.task_content_id = wm_task_content.id
+        WHERE wm_task.task_type_id IN
+        <foreach collection="taskTypeList" item="item" index="index" separator="," open="(" close=")">
+            #{item}
+        </foreach>
+        AND wm_task.task_user_id = #{taskUserId}
+        AND wm_task_content.temp4 BETWEEN #{startTime} AND #{endTime}
+        AND wm_task.task_status != 4
+    </select>
+
+    <!-- 企业审核查询任务列表 -->
     <select id="entTaskPageByTaskType" resultType="com.qunzhixinxi.hnqz.admin.api.vo.WmTaskVO">
-		select t.*, p.typeid, p.score_package_name
-		from wm_task t
-				 left join wm_score_package p on p.id = t.score_package_id
-		where t.task_type_id in
-		<foreach collection="query.taskTypeIdList" item="item" index="index" separator="," open="(" close=")">
-			#{item}
-		</foreach>
-		and (
-			t.report_one_id in (select id from wm_report r where r.drug_ent_id=#{query.drugEntId})
-		    or
-			t.report_second_id in (select id from wm_report r where r.drug_ent_id=#{query.drugEntId})
-			or
-			t.report_drug_id in (select id from wm_report r where r.drug_ent_id=#{query.drugEntId})
-		)
-		<if test="query.approvedStatus != null and query.waitFlag == false">
-			and (
-				<if test="query.deptLevel == 2">
-					t.report_drug_approval_opinion in
-				</if>
-				<if test="query.deptLevel != 2">
-					t.report_one_approval_opinion in
-				</if>
-				<foreach collection="query.entTaskStatus" item="item" index="index" separator="," open="(" close=")">
-					#{item}
-				</foreach>
-			)
-		</if>
-		<if test="query.approvedStatus == null and query.waitFlag == true">
-			and (
-				<if test="query.deptLevel == 2">
-					t.report_drug_approval_opinion is null and t.report_drug_approval_status = 0
-				</if>
-				<if test="query.deptLevel != 2">
-					t.report_one_approval_opinion is null and t.report_one_approval_status = 0
-				</if>
-			)
-		</if>
-		<if test="query.approvedStatus == 1 and query.waitFlag == true">
-			and (
-				<if test="query.deptLevel == 2">
-					(t.report_drug_approval_opinion is null and t.report_drug_approval_status = 0)
-					or t.report_drug_approval_opinion != '2'
-				</if>
-				<if test="query.deptLevel != 2">
-					(t.report_one_approval_opinion is null and t.report_one_approval_status = 0)
-					or t.report_one_approval_opinion != '2'
-				</if>
-			)
-		</if>
-		<if test="query.approvedStatus == 2 and query.waitFlag == true">
-			and (
-				<if test="query.deptLevel == 2">
-					(t.report_drug_approval_opinion is null and t.report_drug_approval_status = 0)
-					or t.report_drug_approval_opinion != '1'
-				</if>
-				<if test="query.deptLevel != 2">
-					(t.report_one_approval_opinion is null and t.report_one_approval_status = 0)
-					or t.report_one_approval_opinion != '1'
-				</if>
-			)
-		</if>
-
-	</select>
+        select t.*, p.typeid, p.score_package_name
+        from wm_task t
+        left join wm_score_package p on p.id = t.score_package_id
+        where t.task_type_id in
+        <foreach collection="query.taskTypeIdList" item="item" index="index" separator="," open="(" close=")">
+            #{item}
+        </foreach>
+        and (
+        t.report_one_id in (select id from wm_report r where r.drug_ent_id=#{query.drugEntId})
+        or
+        t.report_second_id in (select id from wm_report r where r.drug_ent_id=#{query.drugEntId})
+        or
+        t.report_drug_id in (select id from wm_report r where r.drug_ent_id=#{query.drugEntId})
+        )
+        <if test="query.approvedStatus != null and query.waitFlag == false">
+            and (
+            <if test="query.deptLevel == 2">
+                t.report_drug_approval_opinion in
+            </if>
+            <if test="query.deptLevel != 2">
+                t.report_one_approval_opinion in
+            </if>
+            <foreach collection="query.entTaskStatus" item="item" index="index" separator="," open="(" close=")">
+                #{item}
+            </foreach>
+            )
+        </if>
+        <if test="query.approvedStatus == null and query.waitFlag == true">
+            and (
+            <if test="query.deptLevel == 2">
+                t.report_drug_approval_opinion is null and t.report_drug_approval_status = 0
+            </if>
+            <if test="query.deptLevel != 2">
+                t.report_one_approval_opinion is null and t.report_one_approval_status = 0
+            </if>
+            )
+        </if>
+        <if test="query.approvedStatus == 1 and query.waitFlag == true">
+            and (
+            <if test="query.deptLevel == 2">
+                (t.report_drug_approval_opinion is null and t.report_drug_approval_status = 0)
+                or t.report_drug_approval_opinion != '2'
+            </if>
+            <if test="query.deptLevel != 2">
+                (t.report_one_approval_opinion is null and t.report_one_approval_status = 0)
+                or t.report_one_approval_opinion != '2'
+            </if>
+            )
+        </if>
+        <if test="query.approvedStatus == 2 and query.waitFlag == true">
+            and (
+            <if test="query.deptLevel == 2">
+                (t.report_drug_approval_opinion is null and t.report_drug_approval_status = 0)
+                or t.report_drug_approval_opinion != '1'
+            </if>
+            <if test="query.deptLevel != 2">
+                (t.report_one_approval_opinion is null and t.report_one_approval_status = 0)
+                or t.report_one_approval_opinion != '1'
+            </if>
+            )
+        </if>
+
+    </select>
+
+    <select id="listAvailableTaskForSupervision" resultMap="wmTaskMap">
+        SELECT *
+        FROM wm_task t
+        LEFT JOIN sys_chain_node_check_his c ON c.target_id = t.id
+        WHERE c.node_id = 6
+        AND c.check_result = 1
+        AND t.score_package_id = #{pkgId}
+        <if test="ignoreIds != null and ignoreIds.size > 0">
+            AND t.id NOT IN
+            <foreach collection="ignoreIds" item="id" open="(" separator="," close=")">
+                #{id}
+            </foreach>
+        </if>
+    </select>
 </mapper>

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.