Browse Source

feat: 审核和监督导出明细sql

dengjia 2 days ago
parent
commit
5ac39beb56

+ 232 - 59
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/model/excel/TaskCheckHistoryExcelModel.java

@@ -11,110 +11,283 @@ import lombok.Data;
  * @date 2025-01-06 11:24
  */
 @Data
-@ColumnWidth(64)
+@ColumnWidth(16)
 public class TaskCheckHistoryExcelModel {
 
     @ExcelProperty("任务ID")
     private String taskId;
 
-    @ExcelProperty("任务编号")
-    private String taskNumber;
+    @ExcelProperty("区域")
+    private String divisionName;
 
-    @ExcelProperty("执行人")
-    private String salesName;
+    @ExcelProperty("省简称")
+    private String provAbbr;
 
-    @ExcelProperty("执行人所在企业")
-    private String vendorName;
+    @ExcelProperty("市场服务供应商公司名称")
+    private String csoName;
 
-    @ExcelProperty("区域")
-    private String area;
+    @ExcelProperty("省区下发执行包名称")
+    private String scorePackageName;
 
-    @ExcelProperty("执行包名称")
-    private String pkgName;
+    @ExcelProperty("执行包ID")
+    private String scorePackageId;
 
-    @ExcelProperty("任务内容ID")
-    private String taskContentId;
+    @ExcelProperty("执行包年度")
+    private String packageYear;
+
+    @ExcelProperty("执行包开始时间")
+    private String packageStartTime;
+
+    @ExcelProperty("执行包结束时间")
+    private String packageEndTime;
+
+    @ExcelProperty("任务编号")
+    private String taskNumber;
 
     @ExcelProperty("任务类型")
-    private String taskType;
+    private String taskTypeName;
+
+    @ExcelProperty("系统单项任务对应积分")
+    private String taskScore;
+
+    @ExcelProperty("本服务任务对应产品")
+    private String drugnameTy;
+
+    @ExcelProperty("本服务任务对应产品生产企业")
+    private String drugEntName;
 
-    @ExcelProperty("产品名称(通用名)")
-    private String skuName;
+    @ExcelProperty("服务供应商业务员姓名")
+    private String workerRealname;
 
-    @ExcelProperty("生产企业")
-    private String mahName;
+    @ExcelProperty("服务提交时间")
+    private String taskCreateTime;
 
-    // 服务商
-    @ExcelProperty("服务商负责人审核时间")
-    private String vendorCheckTime;
+    @ExcelProperty("服务商管理员名称")
+    private String vendorRealname;
 
-    @ExcelProperty("服务商负责人是否通过")
+    @ExcelProperty("服务审核时间")
+    private String vendorUpdateTime;
+
+    @ExcelProperty("审核意见")
     private String vendorCheckResult;
 
-    @ExcelProperty("服务商负责人审核意见")
+    @ExcelProperty("通过/拒绝原因")
     private String vendorCheckMsg;
 
-    // 地市
-    @ExcelProperty("事业部地市经理审核时间")
-    private String cityCheckTime;
+    @ExcelProperty("地市经理姓名")
+    private String cityRealname;
+
+    @ExcelProperty("服务审核时间")
+    private String cityUpdateTime;
 
-    @ExcelProperty("事业部地市经理是否通过")
+    @ExcelProperty("审核意见")
     private String cityCheckResult;
 
-    @ExcelProperty("事业部地市经理审核意见")
+    @ExcelProperty("通过/拒绝原因")
     private String cityCheckMsg;
 
-    // 区域
-    @ExcelProperty("事业部区域经理审核时间")
-    private String areaCheckTime;
+    @ExcelProperty("区域经理姓名")
+    private String divisionRealname;
+
+    @ExcelProperty("服务审核时间")
+    private String divisionUpdateTime;
+
+    @ExcelProperty("审核意见")
+    private String divisionCheckResult;
 
-    @ExcelProperty("事业部区域经理是否通过")
-    private String areaCheckResult;
+    @ExcelProperty("通过/拒绝原因")
+    private String divisionCheckMsg;
 
-    @ExcelProperty("事业部区域经理审核意见")
-    private String areaCheckMsg;
+    @ExcelProperty("市场组经理姓名")
+    private String marketingRealname;
 
-    // 市场组
-    @ExcelProperty("事业部市场组审核时间")
-    private String mktCheckTime;
+    @ExcelProperty("服务审核时间")
+    private String marketingUpdateTime;
 
-    @ExcelProperty("事业部市场组是否通过")
-    private String mktCheckResult;
+    @ExcelProperty("审核意见")
+    private String marketingCheckResult;
 
-    @ExcelProperty("事业部市场组审核意见")
-    private String mktCheckMsg;
+    @ExcelProperty("通过/拒绝原因")
+    private String marketingCheckMsg;
 
-    // 商务组
-    @ExcelProperty("事业部商务组是否通过")
-    private String bizCheckTime;
+    @ExcelProperty("商务组经理姓名")
+    private String bizRealname;
 
-    @ExcelProperty("事业部商务组是否通过")
+    @ExcelProperty("服务审核时间")
+    private String bizUpdateTime;
+
+    @ExcelProperty("审核意见")
     private String bizCheckResult;
 
-    @ExcelProperty("事业部商务组审核意见")
+    @ExcelProperty("通过/拒绝原因")
     private String bizCheckMsg;
 
-    // 分管领导
-    @ExcelProperty("事业部分管销售领导审核时间")
-    private String subMgrCheckTime;
+    @ExcelProperty("分管领导姓名")
+    private String submgrRealname;
+
+    @ExcelProperty("服务审核时间")
+    private String submgrUpdateTime;
 
-    @ExcelProperty("事业部分管销售领导是否通过")
-    private String subMgrCheckResult;
+    @ExcelProperty("审核意见")
+    private String submgrCheckResult;
 
-    @ExcelProperty("事业部分管销售领导审核意见")
-    private String subMgrCheckMsg;
+    @ExcelProperty("通过/拒绝原因")
+    private String submgrCheckMsg;
 
-    // 总经理
-    @ExcelProperty("事业部总经理审核时间")
-    private String mgrCheckTime;
+    @ExcelProperty("总负责领导姓名")
+    private String mgrRealname;
 
-    @ExcelProperty("事业部总经理是否通过")
+    @ExcelProperty("服务审核时间")
+    private String mgrUpdateTime;
+
+    @ExcelProperty("审核意见")
     private String mgrCheckResult;
 
-    @ExcelProperty("事业部总经理导审核意见")
+    @ExcelProperty("通过/拒绝原因")
     private String mgrCheckMsg;
 
+    @ExcelProperty("生产企业财务监督员")
+    private String factoryFinanceRealname;
+
+    @ExcelProperty("监督检查时间")
+    private String factoryFinanceCreateTime;
+
+    @ExcelProperty("监督意见")
+    private String factoryFinanceSupRes;
+
+    @ExcelProperty("通过/拒绝原因")
+    private String factoryFinanceRemarks;
+
+    @ExcelProperty("生产企业财务负责人")
+    private String factoryFinanceLeaderRealname;
+
+    @ExcelProperty("监督检查时间")
+    private String factoryFinanceLeaderCreateTime;
+
+    @ExcelProperty("监督意见")
+    private String factoryFinanceLeaderAdviceResult;
+
+    @ExcelProperty("通过/拒绝原因")
+    private String factoryFinanceLeaderRemarks;
+
+    @ExcelProperty("生产企业财务分管领导")
+    private String factoryFinanceSubmgrRealname;
+
+    @ExcelProperty("监督检查时间")
+    private String factoryFinanceSubmgrCreateTime;
+
+    @ExcelProperty("监督意见")
+    private String factoryFinanceSubmgrAdviceResult;
+
+    @ExcelProperty("通过/拒绝原因")
+    private String factoryFinanceSubmgrRemarks;
+
+    @ExcelProperty("生产企业销售监督员")
+    private String factoryBizRealname;
+
+    @ExcelProperty("监督检查时间")
+    private String factoryBizCreateTime;
+
+    @ExcelProperty("监督意见")
+    private String factoryBizSupRes;
+
+    @ExcelProperty("通过/拒绝原因")
+    private String factoryBizRemarks;
+
+    @ExcelProperty("生产企业销售负责人")
+    private String factoryBizLeaderRealname;
+
+    @ExcelProperty("监督检查时间")
+    private String factoryBizLeaderCreateTime;
+
+    @ExcelProperty("监督意见")
+    private String factoryBizLeaderAdviceResult;
+
+    @ExcelProperty("通过/拒绝原因")
+    private String factoryBizLeaderRemarks;
+
+    @ExcelProperty("生产企业销售分管领导")
+    private String factoryBizSubmgrRealname;
+
+    @ExcelProperty("监督检查时间")
+    private String factoryBizSubmgrCreateTime;
+
+    @ExcelProperty("监督意见")
+    private String factoryBizSubmgrAdviceResult;
+
+    @ExcelProperty("通过/拒绝原因")
+    private String factoryBizSubmgrRemarks;
+
+    @ExcelProperty("营销合规监督员")
+    private String lawyerRealname;
+
+    @ExcelProperty("监督检查时间")
+    private String lawyerCreateTime;
+
+    @ExcelProperty("监督意见")
+    private String lawyerSupRes;
+
+    @ExcelProperty("通过/拒绝原因")
+    private String lawyerRemarks;
+
+    @ExcelProperty("营销合规监督负责人")
+    private String lawyerLeaderRealname;
+
+    @ExcelProperty("监督检查时间")
+    private String lawyerLeaderCreateTime;
+
+    @ExcelProperty("监督意见")
+    private String lawyerLeaderAdviceResult;
+
+    @ExcelProperty("通过/拒绝原因")
+    private String lawyerLeaderRemarks;
+
+    @ExcelProperty("营销合规监督分管领导")
+    private String lawyerSubmgrRealname;
+
+    @ExcelProperty("监督检查时间")
+    private String lawyerSubmgrCreateTime;
+
+    @ExcelProperty("监督意见")
+    private String lawyerSubmgrAdviceResult;
+
+    @ExcelProperty("通过/拒绝原因")
+    private String lawyerSubmgrRemarks;
+
+    @ExcelProperty("营销财务监督员")
+    private String financeRealname;
+
+    @ExcelProperty("监督检查时间")
+    private String financeCreateTime;
+
+    @ExcelProperty("监督意见")
+    private String financeSupRes;
+
+    @ExcelProperty("通过/拒绝原因")
+    private String financeRemarks;
+
+    @ExcelProperty("营销财务负责人")
+    private String financeLeaderRealname;
+
+    @ExcelProperty("监督检查时间")
+    private String financeLeaderCreateTime;
+
+    @ExcelProperty("监督意见")
+    private String financeLeaderAdviceResult;
+
+    @ExcelProperty("通过/拒绝原因")
+    private String financeLeaderRemarks;
+
+    @ExcelProperty("营销财务监督分管领导")
+    private String financeSubmgrRealname;
+
+    @ExcelProperty("监督检查时间")
+    private String financeSubmgrCreateTime;
 
+    @ExcelProperty("监督意见")
+    private String financeSubmgrAdviceResult;
 
+    @ExcelProperty("通过/拒绝原因")
+    private String financeSubmgrRemarks;
 
 }

+ 11 - 167
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/init/InitController.java

@@ -51,6 +51,7 @@ import com.qunzhixinxi.hnqz.admin.mapper.TargetDept1Mapper;
 import com.qunzhixinxi.hnqz.admin.mapper.WmDaAgentMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.WmDaDrugEntMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.WmPackageTaskTypeQtyMapper;
+import com.qunzhixinxi.hnqz.admin.mapper.WmTaskSupervisionMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.WmTaskTypeMapper;
 import com.qunzhixinxi.hnqz.admin.service.SysAreaEntityService;
 import com.qunzhixinxi.hnqz.admin.service.SysCheckChainNodeCheckHistoryService;
@@ -80,6 +81,8 @@ import java.io.InputStream;
 import java.net.URL;
 import java.net.URLConnection;
 import java.time.format.DateTimeFormatter;
+import java.time.temporal.ChronoUnit;
+import java.time.temporal.TemporalUnit;
 import java.util.Arrays;
 import java.util.Objects;
 import java.util.TreeMap;
@@ -175,6 +178,7 @@ public class InitController {
   private final SysRoleService roleService;
   private final SysChainNodeCheckHisNode43TempMapper node43TempMapper;
   private final TargetDept1Mapper targetDept1Mapper;
+  private final WmTaskSupervisionMapper wmTaskSupervisionMapper;
 
   @Inner(value = false)
   @GetMapping(value = "/cnbg/task/check/stat")
@@ -1462,175 +1466,15 @@ public class InitController {
       name = "taskCheckHistoryExcel",
       sheets = {@Sheet(sheetName = "审核信息")})
   @GetMapping(value = "/cnbg/init/task/check/his/export")
-  public List<TaskCheckHistoryExcelModel> exportTaskCheckHistoryExcel() {
-
-    // 获取全部的审核信息
-    List<SysCheckChainNodeCheckHistory> his = checkChainNodeCheckHistoryService.list();
-
-    if (CollUtil.isEmpty(his)) {
-      return Collections.emptyList();
+  public List<TaskCheckHistoryExcelModel> exportTaskCheckHistoryExcel(
+    @RequestParam(value = "taskPeriod", required = true) LocalDate[] taskPeriod) {
+    
+    if(taskPeriod == null || taskPeriod.length < 2 || taskPeriod[1].minus(31, ChronoUnit.DAYS).isAfter(taskPeriod[0])) {
+      throw new RuntimeException("合法的任务导出区间是一个月");
     }
 
-    ListOperations operations = redisTemplate.opsForList();
-    // 从缓存中获取用户信息
-    List<SysUser> users = operations.range(CacheConstants.USER_KEY, 0, -1);
-    Map<Integer, SysUser> userMap =
-        users.stream().collect(Collectors.toMap(SysUser::getUserId, Function.identity()));
-
-    // 从缓存中获取企业信息
-    List<SysDept> depts = operations.range(CacheConstants.DEPT_KEY, 0, -1);
-    Map<Integer, SysDept> deptMap =
-        depts.stream().collect(Collectors.toMap(SysDept::getDeptId, Function.identity()));
-
-    // 从缓存中获取商品信息
-    List<WmDaDrugEntDrugtable> drugs = operations.range(CacheConstants.DRUG_KEY, 0, -1);
-    Map<String, WmDaDrugEntDrugtable> drugtableMap =
-        drugs.stream().collect(Collectors.toMap(WmDaDrugEntDrugtable::getId, Function.identity()));
-
-    // 丛缓存中获取任务类型
-    List<WmTaskType> range = operations.range(CacheConstants.TASK_TYPE_KEY, 0, -1);
-    Map<String, WmTaskType> taskTypeMap =
-        range.stream().collect(Collectors.toMap(WmTaskType::getId, Function.identity()));
-
-    List<WmScorePackage> pkgs = wmScorePackageService.list();
-
-    Map<String, WmScorePackage> pkgMap =
-        pkgs.stream().collect(Collectors.toMap(WmScorePackage::getId, Function.identity()));
-
-    Map<Integer, List<SysCheckChainNodeCheckHistory>> taskId2HisMap =
-        his.stream().collect(Collectors.groupingBy(SysCheckChainNodeCheckHistory::getTargetId));
-
-    List<WmTask> tasks = taskService.list();
-    Map<String, WmTask> taskMap =
-        tasks.stream().collect(Collectors.toMap(WmTask::getId, Function.identity()));
-
-    // 获取任务
-    DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-    List<TaskCheckHistoryExcelModel> collect =
-        taskId2HisMap.entrySet().parallelStream()
-            .map(
-                entry -> {
-                  Integer key = entry.getKey();
-
-                  WmTask task = taskMap.get(key.toString());
-
-                  if (task == null) {
-                    return null;
-                  }
-
-                  TaskCheckHistoryExcelModel model = new TaskCheckHistoryExcelModel();
-                  model.setTaskId(task.getId());
-                  model.setTaskNumber(task.getTaskNumber());
-
-                  String taskUserId = task.getTaskUserId();
-                  SysUser sysUser = userMap.get(Integer.parseInt(taskUserId));
-
-                  if (sysUser != null) {
-                    model.setSalesName(sysUser.getRealname());
-                    SysDept dept = deptMap.get(sysUser.getDeptId());
-                    model.setVendorName(dept.getName());
-                  } else {
-                    model.setSalesName("");
-                    model.setVendorName("");
-                  }
-
-                  model.setArea("");
-                  model.setTaskContentId(task.getTaskContentId());
-                  WmTaskType wmTaskType = taskTypeMap.get(task.getTaskTypeId());
-                  model.setTaskType(wmTaskType == null ? "" : wmTaskType.getTaskTypeName());
-
-                  WmScorePackage wmScorePackage = pkgMap.get(task.getScorePackageId());
-
-                  model.setPkgName(wmScorePackage.getScorePackageName());
-
-                  String drugId = wmScorePackage.getDrugtable()[0];
-
-                  WmDaDrugEntDrugtable drugtable = drugtableMap.get(drugId);
-
-                  model.setSkuName(drugtable.getDrugnameTy());
-                  model.setMahName(drugtable.getDrugEntName());
-
-                  Map<Integer, List<SysCheckChainNodeCheckHistory>> nodeId2CheckMap =
-                      entry.getValue().stream()
-                          .collect(Collectors.groupingBy(SysCheckChainNodeCheckHistory::getNodeId));
-
-                  // 服务商
-                  List<SysCheckChainNodeCheckHistory> vendor = nodeId2CheckMap.get(1);
-
-                  if (CollUtil.isNotEmpty(vendor)) {
-
-                    Map<String, String> info = getInfo(vendor, dtf);
-
-                    model.setVendorCheckTime(info.get("time"));
-                    model.setVendorCheckResult(info.get("result"));
-                    model.setVendorCheckMsg(info.get("msg"));
-                  }
-
-                  // 地市
-                  List<SysCheckChainNodeCheckHistory> city = nodeId2CheckMap.get(2);
-
-                  if (CollUtil.isNotEmpty(city)) {
-                    Map<String, String> info = getInfo(city, dtf);
-                    model.setCityCheckTime(info.get("time"));
-                    model.setCityCheckResult(info.get("result"));
-                    model.setCityCheckMsg(info.get("msg"));
-                  }
-
-                  // 区域
-                  List<SysCheckChainNodeCheckHistory> area = nodeId2CheckMap.get(3);
-
-                  if (CollUtil.isNotEmpty(area)) {
-                    Map<String, String> info = getInfo(area, dtf);
-                    model.setAreaCheckTime(info.get("time"));
-                    model.setAreaCheckResult(info.get("result"));
-                    model.setAreaCheckMsg(info.get("msg"));
-                  }
-
-                  // 市场
-                  List<SysCheckChainNodeCheckHistory> mkt = nodeId2CheckMap.get(8);
-
-                  if (CollUtil.isNotEmpty(mkt)) {
-                    Map<String, String> info = getInfo(mkt, dtf);
-                    model.setMktCheckTime(info.get("time"));
-                    model.setMktCheckResult(info.get("result"));
-                    model.setMktCheckMsg(info.get("msg"));
-                  }
-
-                  // 商务
-                  List<SysCheckChainNodeCheckHistory> biz = nodeId2CheckMap.get(9);
-
-                  if (CollUtil.isNotEmpty(biz)) {
-                    Map<String, String> info = getInfo(biz, dtf);
-                    model.setBizCheckTime(info.get("time"));
-                    model.setBizCheckResult(info.get("result"));
-                    model.setBizCheckMsg(info.get("msg"));
-                  }
-
-                  // 分管领导
-                  List<SysCheckChainNodeCheckHistory> subMgr = nodeId2CheckMap.get(5);
-
-                  if (CollUtil.isNotEmpty(subMgr)) {
-                    Map<String, String> info = getInfo(subMgr, dtf);
-                    model.setSubMgrCheckTime(info.get("time"));
-                    model.setSubMgrCheckResult(info.get("result"));
-                    model.setSubMgrCheckMsg(info.get("msg"));
-                  }
-
-                  // 总经理
-                  List<SysCheckChainNodeCheckHistory> mgr = nodeId2CheckMap.get(6);
-
-                  if (CollUtil.isNotEmpty(mgr)) {
-                    Map<String, String> info = getInfo(mgr, dtf);
-                    model.setMgrCheckTime(info.get("time"));
-                    model.setMgrCheckResult(info.get("result"));
-                    model.setMgrCheckMsg(info.get("msg"));
-                  }
-
-                  return model;
-                })
-            .collect(Collectors.toList());
-
-    return collect;
+    return wmTaskSupervisionMapper.selectTaskSupProcess(LocalDateTime.of(taskPeriod[0], LocalTime.MIN), LocalDateTime.of(taskPeriod[1], LocalTime.MAX));
+    
   }
 
   private Map<String, String> getInfo(

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

@@ -2,6 +2,7 @@ package com.qunzhixinxi.hnqz.admin.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskSupervision;
+import com.qunzhixinxi.hnqz.admin.api.model.excel.TaskCheckHistoryExcelModel;
 
 import java.time.LocalDateTime;
 import java.util.List;
@@ -19,4 +20,9 @@ public interface WmTaskSupervisionMapper extends BaseMapper<WmTaskSupervision> {
     List<WmTaskSupervision> selectByPkgIds(@Param("pkgIds") List<String> pkgIds,
                                             @Param("taskBeginTime") LocalDateTime taskBeginTime,
                                             @Param("taskEndTime") LocalDateTime taskEndTime);
+
+    List<TaskCheckHistoryExcelModel> selectTaskSupProcess(
+        @Param("taskBeginTime") LocalDateTime taskBeginTime,
+        @Param("taskEndTime") LocalDateTime taskEndTime
+    );
 }

+ 393 - 0
hnqz-upms/hnqz-upms-biz/src/main/resources/mapper/WmTaskSupervisionMapper.xml

@@ -58,4 +58,397 @@
     </where>
   </select>
 
+  <resultMap id="wmTaskSupProcessMap" type="com.qunzhixinxi.hnqz.admin.api.model.excel.TaskCheckHistoryExcelModel">
+    <result property="taskId" column="id"/>
+    <result property="divisionName" column="division_name"/>
+    <result property="provAbbr" column="prov_abbr"/>
+    <result property="csoName" column="cso_name"/>
+    <result property="scorePackageName" column="score_package_name"/>
+    <result property="scorePackageId" column="score_package_id"/>
+    <result property="packageYear" column="package_year"/>
+    <result property="packageStartTime" column="package_start_time"/>
+    <result property="packageEndTime" column="package_end_time"/>
+    <result property="taskNumber" column="task_number"/>
+    <result property="taskType_name" column="task_type_name"/>
+    <result property="taskScore" column="task_score"/>
+    <result property="drugnameTy" column="drugname_ty"/>
+    <result property="drugEntName" column="drug_ent_name"/>
+    <result property="workerRealname" column="worker_realname"/>
+    <result property="taskCreateTime" column="task_create_time"/>
+
+    <result property="vendorRealname" column="vendor_realname"/>
+    <result property="vendorUpdateTime" column="vendor_update_time"/>
+    <result property="vendorCheckResult" column="vendor_check_result"/>
+    <result property="vendorCheckMsg" column="vendor_check_msg"/>
+
+    <result property="cityRealname" column="city_realname"/>
+    <result property="cityUpdateTime" column="city_update_time"/>
+    <result property="cityCheckResult" column="city_check_result"/>
+    <result property="cityCheckMsg" column="city_check_msg"/>
+
+    <result property="divisionRealname" column="division_realname"/>
+    <result property="divisionUpdateTime" column="division_update_time"/>
+    <result property="divisionCheckResult" column="division_check_result"/>
+    <result property="divisionCheckMsg" column="division_check_msg"/>
+
+    <result property="marketingRealname" column="marketing_realname"/>
+    <result property="marketingUpdateTime" column="marketing_update_time"/>
+    <result property="marketingCheckResult" column="marketing_check_result"/>
+    <result property="marketingCheckMsg" column="marketing_check_msg"/>
+
+    <result property="bizRealname" column="biz_realname"/>
+    <result property="bizUpdateTime" column="biz_update_time"/>
+    <result property="bizCheckResult" column="biz_check_result"/>
+    <result property="bizCheckMsg" column="biz_check_msg"/>
+
+    <result property="submgrRealname" column="submgr_realname"/>
+    <result property="submgrUpdateTime" column="submgr_update_time"/>
+    <result property="submgrCheckResult" column="submgr_check_result"/>
+    <result property="submgrCheckMsg" column="submgr_check_msg"/>
+
+    <result property="mgrRealname" column="mgr_realname"/>
+    <result property="mgrUpdateTime" column="mgr_update_time"/>
+    <result property="mgrCheckResult" column="mgr_check_result"/>
+    <result property="mgrCheckMsg" column="mgr_check_msg"/>
+
+    <result property="factoryFinanceRealname" column="factory_finance_realname"/>
+    <result property="factoryFinanceCreateTime" column="factory_finance_create_time"/>
+    <result property="factoryFinanceSupRes" column="factory_finance_sup_res"/>
+    <result property="factoryFinanceRemarks" column="factory_finance_remarks"/>
+
+    <result property="factoryFinanceLeaderRealname" column="factory_finance_leader_realname"/>
+    <result property="factoryFinanceLeaderCreateTime" column="factory_finance_leader_create_time"/>
+    <result property="factoryFinanceLeaderAdviceResult" column="factory_finance_leader_advice_result"/>
+    <result property="factoryFinanceLeaderRemarks" column="factory_finance_leader_remarks"/>
+
+    <result property="factoryFinanceSubmgrRealname" column="factory_finance_submgr_realname"/>
+    <result property="factoryFinanceSubmgrCreateTime" column="factory_finance_submgr_create_time"/>
+    <result property="factoryFinanceSubmgrAdviceResult" column="factory_finance_submgr_advice_result"/>
+    <result property="factoryFinanceSubmgrRemarks" column="factory_finance_submgr_remarks"/>
+
+    <result property="factoryBizRealname" column="factory_biz_realname"/>
+    <result property="factoryBizCreateTime" column="factory_biz_create_time"/>
+    <result property="factoryBizSupRes" column="factory_biz_sup_res"/>
+    <result property="factoryBizRemarks" column="factory_biz_remarks"/>
+
+    <result property="factoryBizLeaderRealname" column="factory_biz_leader_realname"/>
+    <result property="factoryBizLeaderCreateTime" column="factory_biz_leader_create_time"/>
+    <result property="factoryBizLeaderAdviceResult" column="factory_biz_leader_advice_result"/>
+    <result property="factoryBizLeaderRemarks" column="factory_biz_leader_remarks"/>
+
+    <result property="factoryBizSubmgrRealname" column="factory_biz_submgr_realname"/>
+    <result property="factoryBizSubmgrCreateTime" column="factory_biz_submgr_create_time"/>
+    <result property="factoryBizSubmgrAdviceResult" column="factory_biz_submgr_advice_result"/>
+    <result property="factoryBizSubmgrRemarks" column="factory_biz_submgr_remarks"/>
+
+    <result property="lawyerRealname" column="lawyer_realname"/>
+    <result property="lawyerCreateTime" column="lawyer_create_time"/>
+    <result property="lawyerSupRes" column="lawyer_sup_res"/>
+    <result property="lawyerRemarks" column="lawyer_remarks"/>
+
+    <result property="lawyerLeaderRealname" column="lawyer_leader_realname"/>
+    <result property="lawyerLeaderCreateTime" column="lawyer_leader_create_time"/>
+    <result property="lawyerLeaderAdviceResult" column="lawyer_leader_advice_result"/>
+    <result property="lawyerLeaderRemarks" column="lawyer_leader_remarks"/>
+
+    <result property="lawyerSubmgrRealname" column="lawyer_submgr_realname"/>
+    <result property="lawyerSubmgrCreateTime" column="lawyer_submgr_create_time"/>
+    <result property="lawyerSubmgrAdviceResult" column="lawyer_submgr_advice_result"/>
+    <result property="lawyerSubmgrRemarks" column="lawyer_submgr_remarks"/>
+
+    <result property="financeRealname" column="finance_realname"/>
+    <result property="financeCreateTime" column="finance_create_time"/>
+    <result property="financeSupRes" column="finance_sup_res"/>
+    <result property="financeRemarks" column="finance_remarks"/>
+
+    <result property="financeLeaderRealname" column="finance_leader_realname"/>
+    <result property="financeLeaderCreateTime" column="finance_leader_create_time"/>
+    <result property="financeLeaderAdviceResult" column="finance_leader_advice_result"/>
+    <result property="financeLeaderRemarks" column="finance_leader_remarks"/>
+
+    <result property="financeSubmgrRealname" column="finance_submgr_realname"/>
+    <result property="financeSubmgrCreateTime" column="finance_submgr_create_time"/>
+    <result property="financeSubmgrAdviceResult" column="finance_submgr_advice_result"/>
+    <result property="financeSubmgrRemarks" column="finance_submgr_remarks"/>
+  </resultMap>
+
+ <select id="selectTaskSupProcess" resultMap="wmTaskSupProcessMap">
+  select
+    t.id,
+    division.name division_name,
+    pp."prov_abbr",
+    cso.name cso_name,
+    pp.score_package_name,
+    pp.id score_package_id,
+    year(pp.start_time) package_year,
+    pp.start_time package_start_time,
+    pp.end_time package_end_time,
+    t."task_number",
+    ttype.task_type_name,
+    t.score task_score,
+    drug.drugname_ty,
+    drug.drug_ent_name,
+    task_user.realname worker_realname,
+    t.create_time task_create_time,
+    t1.realname vendor_realname,
+    t1.update_time vendor_update_time,
+    t1.check_result vendor_check_result,
+    t1.check_msg vendor_check_msg,
+    t2.realname city_realname,
+    t2.update_time city_update_time,
+    t2.check_result city_check_result,
+    t2.check_msg city_check_msg,
+    t3.realname division_realname,
+    t3.update_time division_update_time,
+    t3.check_result division_check_result,
+    t3.check_msg division_check_msg,
+    t8.realname marketing_realname,
+    t8.update_time marketing_update_time,
+    t8.check_result marketing_check_result,
+    t8.check_msg marketing_check_msg,
+    t9.realname biz_realname,
+    t9.update_time biz_update_time,
+    t9.check_result biz_check_result,
+    t9.check_msg biz_check_msg,
+    t5.realname submgr_realname,
+    t5.update_time submgr_update_time,
+    t5.check_result submgr_check_result,
+    t5.check_msg submgr_check_msg,
+    t6.realname mgr_realname,
+    t6.update_time mgr_update_time,
+    t6.check_result mgr_check_result,
+    t6.check_msg mgr_check_msg,
+    sup1."realname" factory_finance_realname,
+    sup1."create_time" factory_finance_create_time,
+    sup1."sup_res" factory_finance_sup_res,
+    sup1.remarks factory_finance_remarks,
+    sup11."realname" factory_finance_leader_realname,
+    sup11."create_time" factory_finance_leader_create_time,
+    sup11."advice_result" factory_finance_leader_advice_result,
+    sup11.remarks factory_finance_leader_remarks,
+    sup12."realname" factory_finance_submgr_realname,
+    sup12."create_time" factory_finance_submgr_create_time,
+    sup12."advice_result" factory_finance_submgr_advice_result,
+    sup12.remarks factory_finance_submgr_remarks,
+    sup2."realname" factory_biz_realname,
+    sup2."create_time" factory_biz_create_time,
+    sup2."sup_res" factory_biz_sup_res,
+    sup2.remarks factory_biz_remarks,
+    sup21."realname" factory_biz_leader_realname,
+    sup21."create_time" factory_biz_leader_create_time,
+    sup21."advice_result" factory_biz_leader_advice_result,
+    sup21.remarks factory_biz_leader_remarks,
+    sup22."realname" factory_biz_submgr_realname,
+    sup22."create_time" factory_biz_submgr_create_time,
+    sup22."advice_result" factory_biz_submgr_advice_result,
+    sup22.remarks factory_biz_submgr_remarks,
+    sup3."realname" lawyer_realname,
+    sup3."create_time" lawyer_create_time,
+    sup3."sup_res" lawyer_sup_res,
+    sup3.remarks lawyer_remarks,
+    sup31."realname" lawyer_leader_realname,
+    sup31."create_time" lawyer_leader_create_time,
+    sup31."advice_result" lawyer_leader_advice_result,
+    sup31.remarks lawyer_leader_remarks,
+    sup32."realname" lawyer_submgr_realname,
+    sup32."create_time" lawyer_submgr_create_time,
+    sup32."advice_result" lawyer_submgr_advice_result,
+    sup32.remarks lawyer_submgr_remarks,
+    sup4."realname" finance_realname,
+    sup4."create_time" finance_create_time,
+    sup4."sup_res" finance_sup_res,
+    sup4.remarks finance_remarks,
+    sup41."realname" finance_leader_realname,
+    sup41."create_time" finance_leader_create_time,
+    sup41."advice_result" finance_leader_advice_result,
+    sup41.remarks finance_leader_remarks,
+    sup42."realname" finance_submgr_realname,
+    sup42."create_time" finance_submgr_create_time,
+    sup42."advice_result" finance_submgr_advice_result,
+    sup42.remarks finance_submgr_remarks
+  from wm_task t
+  join wm_task_type ttype
+  on t.task_type_id = ttype.id
+  join "wm_score_package" p
+  on t."score_package_id" = p."id"
+  left join "wm_score_package" pp
+  on p.relation_score_id = pp.id
+  left join sys_dept cso
+  on p.dept_id = cso.dept_id
+  left join sys_dept division
+  on pp.send_package_dept_id = division.dept_id
+  left join sys_user task_user
+  on t.task_user_id = task_user.user_id
+  left join wm_da_drug_ent_drugtable drug
+  on p.drugtable = drug.id
+  left join
+  (
+    select "target_id", "check_result", "check_msg", his."update_time1" update_time, u."realname"
+    from "sys_chain_node_check_his" his
+    join sys_user u
+    on u."username" = his."create_by1"
+    where "node_id" = 1 and create_time1 > '2025-07-01' -- 服务商
+  ) t1
+  on t1.target_id = t.id
+  left join
+  (
+    select "target_id", "check_result", "check_msg", his."update_time1" update_time, u."realname"
+    from "sys_chain_node_check_his" his
+    join sys_user u
+    on u."username" = his."create_by1"
+    where "node_id" = 2 and create_time1 > '2025-07-01' -- 地市
+  ) t2
+  on t2.target_id = t.id
+  left join
+  (
+    select "target_id", "check_result", "check_msg", his."update_time1" update_time, u."realname"
+    from "sys_chain_node_check_his" his join sys_user u
+    on u."username" = his."create_by1"
+    where "node_id" = 3 and create_time1 > '2025-07-01' -- 区域
+  ) t3
+  on t3.target_id = t.id
+  left join
+  (
+    select "target_id", "check_result", "check_msg", his."update_time1" update_time, u."realname"
+    from "sys_chain_node_check_his" his join sys_user u
+    on u."username" = his."create_by1"
+    where "node_id" = 8 and create_time1 > '2025-07-01' -- 市场
+  ) t8
+    on t8.target_id = t.id
+    left join
+    (
+    select "target_id", "check_result", "check_msg", his."update_time1" update_time, u."realname"
+    from "sys_chain_node_check_his" his join sys_user u
+    on u."username" = his."create_by1"
+    where "node_id" = 9 and create_time1 > '2025-07-01' -- 商务
+    ) t9
+    on t9.target_id = t.id
+    left join
+    (
+    select "target_id", "check_result", "check_msg", his."update_time1" update_time, u."realname"
+    from "sys_chain_node_check_his" his join sys_user u
+    on u."username" = his."create_by1"
+    where "node_id" = 5 and create_time1 > '2025-07-01' -- 分管领导
+    ) t5
+    on t5.target_id = t.id
+    left join
+    (
+    select "target_id", "check_result", "check_msg", his."update_time1" update_time, u."realname"
+    from "sys_chain_node_check_his" his join sys_user u
+    on u."username" = his."create_by1"
+    where "node_id" = 6 and create_time1 > '2025-07-01' -- 总经理
+    ) t6
+    on t6.target_id = t.id
+    left join
+    (
+    select sup."task_id", u.realname, adv.create_time, adv.advice_result, adv.remarks from wm_task_sup sup 
+    join wm_task_sup_adv adv on adv.task_supervision_id = sup.sup_id
+    join sys_user u on u."username" = sup."create_by"
+    join "sys_user_role" ur on u.user_id = ur."user_id"
+    where ur."role_id" = 49 and sup."create_time" > '2025-07-01'  -- 厂家财务
+    ) sup1
+    on sup1."task_id" = t.id
+    left join
+    (
+    select sup."task_id", u.realname, sup.create_time, sup.sup_res from wm_task_sup sup 
+    join wm_task_sup_adv adv on adv.task_supervision_id = sup.sup_id
+    join sys_user u on u."username" = adv."create_by"
+    join "sys_user_role" ur on u.user_id = ur."user_id"
+    where ur."role_id" = 57 and sup."create_time" > '2025-07-01' and adv.del_flag = '0'  -- 厂家财务负责人
+    ) sup11
+    on sup11."task_id" = t.id
+    left join
+    (
+    select sup."task_id", u.realname, sup.create_time, sup.sup_res from wm_task_sup sup 
+    join wm_task_sup_adv adv on adv.task_supervision_id = sup.sup_id
+    join sys_user u on u."username" = adv."create_by"
+    join "sys_user_role" ur on u.user_id = ur."user_id"
+    where ur."role_id" = 51 and sup."create_time" > '2025-07-01' and adv.del_flag = '0'  -- 厂家财务分管领导
+    ) sup12
+    on sup12."task_id" = t.id
+    left join
+    (
+    select sup."task_id", u.realname, sup.create_time, sup.sup_res from wm_task_sup sup 
+    join sys_user u on u."username" = sup."create_by"
+    join "sys_user_role" ur on u.user_id = ur."user_id"
+    where ur."role_id" = 52 and sup."create_time" > '2025-07-01'  -- 厂家销售
+    ) sup2
+    on sup2."task_id" = t.id
+    left join
+    (
+    select sup."task_id", u.realname, sup.create_time, sup.sup_res from wm_task_sup sup 
+    join wm_task_sup_adv adv on adv.task_supervision_id = sup.sup_id
+    join sys_user u on u."username" = adv."create_by"
+    join "sys_user_role" ur on u.user_id = ur."user_id"
+    where ur."role_id" = 58 and sup."create_time" > '2025-07-01' and adv.del_flag = '0'  -- 厂家销售负责人
+    ) sup21
+    on sup21."task_id" = t.id
+    left join
+    (
+    select sup."task_id", u.realname, sup.create_time, sup.sup_res from wm_task_sup sup 
+    join wm_task_sup_adv adv on adv.task_supervision_id = sup.sup_id
+    join sys_user u on u."username" = adv."create_by"
+    join "sys_user_role" ur on u.user_id = ur."user_id"
+    where ur."role_id" = 61 and sup."create_time" > '2025-07-01' and adv.del_flag = '0'  -- 厂家销售分管领导
+    ) sup22
+    on sup22."task_id" = t.id
+    left join
+    (
+    select sup."task_id", u.realname, sup.create_time, sup.sup_res from wm_task_sup sup 
+    join sys_user u on u."username" = sup."create_by"
+    join "sys_user_role" ur on u.user_id = ur."user_id"
+    where ur."role_id" = 53 and sup."create_time" > '2025-07-01'  -- 营销合规
+    ) sup3
+    on sup3."task_id" = t.id
+    left join
+    (
+    select sup."task_id", u.realname, sup.create_time, sup.sup_res from wm_task_sup sup 
+    join wm_task_sup_adv adv on adv.task_supervision_id = sup.sup_id
+    join sys_user u on u."username" = adv."create_by"
+    join "sys_user_role" ur on u.user_id = ur."user_id"
+    where ur."role_id" = 60 and sup."create_time" > '2025-07-01' and adv.del_flag = '0'  -- 营销合规负责人
+    ) sup31
+    on sup31."task_id" = t.id
+    left join
+    (
+    select sup."task_id", u.realname, sup.create_time, sup.sup_res from wm_task_sup sup 
+    join wm_task_sup_adv adv on adv.task_supervision_id = sup.sup_id
+    join sys_user u on u."username" = adv."create_by"
+    join "sys_user_role" ur on u.user_id = ur."user_id"
+    where ur."role_id" = 54 and sup."create_time" > '2025-07-01' and adv.del_flag = '0'  -- 营销合规分管领导
+    ) sup32
+    on sup32."task_id" = t.id
+    left join
+    (
+    select sup."task_id", u.realname, sup.create_time, sup.sup_res from wm_task_sup sup 
+    join sys_user u on u."username" = sup."create_by"
+    join "sys_user_role" ur on u.user_id = ur."user_id"
+    where ur."role_id" = 56 and sup."create_time" > '2025-07-01'  -- 营销财务
+    ) sup4
+    on sup4."task_id" = t.id
+    left join
+    (
+    select sup."task_id", u.realname, sup.create_time, sup.sup_res from wm_task_sup sup 
+    join wm_task_sup_adv adv on adv.task_supervision_id = sup.sup_id
+    join sys_user u on u."username" = adv."create_by"
+    join "sys_user_role" ur on u.user_id = ur."user_id"
+    where ur."role_id" = 59 and sup."create_time" > '2025-07-01' and adv.del_flag = '0'  -- 营销财务负责人
+    ) sup41
+    on sup41."task_id" = t.id
+    left join
+    (
+    select sup."task_id", u.realname, sup.create_time, sup.sup_res from wm_task_sup sup 
+    join wm_task_sup_adv adv on adv.task_supervision_id = sup.sup_id
+    join sys_user u on u."username" = adv."create_by"
+    join "sys_user_role" ur on u.user_id = ur."user_id"
+    where ur."role_id" = 55 and sup."create_time" > '2025-07-01' and adv.del_flag = '0'  -- 营销财务分管领导
+    ) sup42
+    on sup42."task_id" = t.id
+
+    where t.create_time >= '2025-07-01' and t.create_time <= '2025-08-30' and t.del_flag = '0' 
+
+ </select>
+
+
+
 </mapper>