7 커밋 8be502708f ... fd4d280551

작성자 SHA1 메시지 날짜
  dengjia fd4d280551 feat: 优化子查询;超时设到30min 1 개월 전
  lixuesong 245c5d9791 fix: 个人任务明细数据导出接口-部分字段回显问题 1 개월 전
  lixuesong e78b3820e9 fix: 个人任务明细数据导出接口-url错误 1 개월 전
  lixuesong 43a38988c8 feat: 个人任务明细数据导出接口初步实现 1 개월 전
  lixuesong 8eee517b21 fix: 人员导出接口、个人执行包数据导出接口-补充异常结果状态更新 1 개월 전
  lixuesong facd32308e Merge branch 'refs/heads/feat-250729-moreExports' into feat-20250730-userexport 1 개월 전
  lixuesong 64f0ffd3c8 fix: 个人执行包数据导出接口-角色权限限制 1 개월 전
20개의 변경된 파일1211개의 추가작업 그리고 751개의 파일을 삭제
  1. 15 0
      hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/constant/UpmsState.java
  2. 2 1
      hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/constant/enums/ExportType.java
  3. 15 0
      hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/dto/WmTaskDTO.java
  4. 2 2
      hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/model/excel/WmScorePackageSubInfoExcelModel.java
  5. 133 0
      hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/model/excel/WmTaskDetailExcelModel.java
  6. 20 8
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/init/InitController.java
  7. 14 2
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/pkg/WmScorePackageExportController.java
  8. 86 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/task/WmTaskExportController.java
  9. 38 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/event/TaskDetailExportEvent.java
  10. 36 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/listener/TaskDetailExportEventListener.java
  11. 13 1
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmScorePackageExportService.java
  12. 37 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmTaskDetailExportService.java
  13. 2 2
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/SysUserExportServiceImpl.java
  14. 435 601
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmScorePackageExportServiceImpl.java
  15. 268 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmTaskDetailExportServiceImpl.java
  16. 1 1
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmTaskSupervisionServiceImpl.java
  17. 1 1
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/util/ExportUtils.java
  18. 1 1
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/util/OsEnvUtils.java
  19. 1 1
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/util/RedisUtils.java
  20. 91 130
      hnqz-upms/hnqz-upms-biz/src/main/resources/mapper/WmTaskSupervisionMapper.xml

+ 15 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/constant/UpmsState.java

@@ -186,6 +186,21 @@ public class UpmsState {
 
     @EnumValue private final String state;
     private final String desc;
+
+    /**
+     * 根据state获取名称
+     *
+     * @param state 状态
+     * @return {@link String } 名称
+     */
+    public static String getByStateName(String state) {
+      for (TaskState value : values()) {
+        if (value.state.equals(state)) {
+          return value.desc;
+        }
+      }
+      return "";
+    }
   }
 
   @Getter

+ 2 - 1
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/constant/enums/ExportType.java

@@ -17,7 +17,8 @@ public enum ExportType {
 
 	USER("USER", "人员"),
 	CHECK_SUP("CHECK_SUP", "审核监督信息"),
-	SCORE_PACKAGE_SUB("SCORE_PACKAGE_SUB", "个人执行包数据");
+	SCORE_PACKAGE_SUB("SCORE_PACKAGE_SUB", "个人执行包数据"),
+	TASK_DETAIL("TASK_DETAIL", "个人任务明细数据"),;
 
 	/**
 	 * 类型

+ 15 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/dto/WmTaskDTO.java

@@ -7,6 +7,7 @@ import lombok.NoArgsConstructor;
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
+import java.time.LocalDate;
 import java.util.List;
 import java.util.Map;
 
@@ -74,4 +75,18 @@ public final class WmTaskDTO {
 
     }
 
+    /**
+     * 个人任务明细导出参数
+     *
+     * @author snows
+     * @date 2025/08/05
+     */
+    @Data
+    public static class OnTaskDetailExport {
+        @NotNull(message = "开始日期必填")
+        private LocalDate startDate;
+
+        private LocalDate endDate;
+    }
+
 }

+ 2 - 2
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/model/excel/WmScorePackageSubInfoExcelModel.java

@@ -63,10 +63,10 @@ public class WmScorePackageSubInfoExcelModel implements Serializable {
     private String mah;
 
     /**
-     * 接包人名
+     * 接包人
      */
     @ColumnWidth(20)
-    @ExcelProperty("接包人名")
+    @ExcelProperty("接包人名")
     private String taskUserName;
 
     /**

+ 133 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/model/excel/WmTaskDetailExcelModel.java

@@ -0,0 +1,133 @@
+package com.qunzhixinxi.hnqz.admin.api.model.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import lombok.Data;
+
+/**
+ * 个人任务明细Excel模型
+ *
+ * @author snows
+ * @date 2025/08/05
+ */
+@Data
+public class WmTaskDetailExcelModel {
+
+	/**
+	 * 序号
+	 */
+	@ColumnWidth(10)
+	@ExcelProperty("序号")
+	private Integer number;
+
+	/**
+	 * 市场服务供应商名称
+	 */
+	@ColumnWidth(40)
+	@ExcelProperty("市场服务供应商名称")
+	private String serviceName;
+
+	/**
+	 * 父级执行包ID
+	 */
+	@ColumnWidth(20)
+	@ExcelProperty("执行包ID")
+	private String parentPkgId;
+
+	/**
+	 * 父级执行包
+	 */
+	@ColumnWidth(128)
+	@ExcelProperty("省区下发执行包名称")
+	private String parentPkgName;
+
+	/**
+	 * 执行包年度
+	 */
+	@ColumnWidth(20)
+	@ExcelProperty("执行包年度")
+	private String year;
+
+	/**
+	 * 执行包季度
+	 */
+	@ColumnWidth(20)
+	@ExcelProperty("执行包季度")
+	private String quarter;
+
+	/**
+	 * 个人执行包ID
+	 */
+	@ColumnWidth(20)
+	@ExcelProperty("个人执行包ID")
+	private String pkgId;
+
+	/**
+	 * 个人执行包名称
+	 */
+	@ColumnWidth(128)
+	@ExcelProperty("个人执行包名称")
+	private String pkgName;
+
+	/**
+	 * 接包人姓名
+	 */
+	@ColumnWidth(20)
+	@ExcelProperty("接包人姓名")
+	private String taskUserName;
+
+	/**
+	 * 接包人电话
+	 */
+	@ColumnWidth(20)
+	@ExcelProperty("接包人电话")
+	private String taskUserPhone;
+
+	/**
+	 * 任务ID
+	 */
+	@ColumnWidth(20)
+	@ExcelProperty("任务ID")
+	private String taskId;
+
+	/**
+	 * 任务名称
+	 */
+	@ColumnWidth(30)
+	@ExcelProperty("任务类型")
+	private String taskName;
+
+	/**
+	 * 本服务任务对应产品
+	 */
+	@ColumnWidth(30)
+	@ExcelProperty("本服务任务对应产品")
+	private String drugnameTy;
+
+	/**
+	 * 本服务任务对应产品生产企业
+	 */
+	@ColumnWidth(30)
+	@ExcelProperty("本服务任务对应生产企业")
+	private String drugEntName;
+
+	/**
+	 * 服务提交时间
+	 */
+	@ExcelProperty("服务提交时间")
+	private String taskCreateTime;
+
+	/**
+	 * 任务状态
+	 */
+	@ColumnWidth(20)
+	@ExcelProperty("任务状态")
+	private String taskStatus;
+
+	/**
+	 * 拒绝原因
+	 */
+	@ColumnWidth(30)
+	@ExcelProperty("拒绝原因")
+	private String rejectReason;
+}

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

@@ -1466,11 +1466,8 @@ public class InitController {
     return R.ok(r);
   }
 
-  /* @ResponseExcel(
-      name = "taskCheckHistoryExcel",
-      sheets = {@Sheet(sheetName = "审核信息")}) */
   @GetMapping(value = "/cnbg/init/task/check/his/export")
-  public List<TaskCheckHistoryExcelModel> exportTaskCheckHistoryExcel(
+  public R<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])) {
@@ -1481,12 +1478,27 @@ public class InitController {
       throw new RuntimeException("没有导出审核监督明细的权限");
     }
 
-    // sync
-    // return wmTaskSupervisionService.selectTaskSupProcess(SecurityUtils.getUser(), taskPeriod);
-
     // async
     wmTaskSupervisionService.asyncExportTaskCheckSup(SecurityUtils.getUser(), taskPeriod);
-    return List.of();
+    return R.ok(List.of());
+  }
+
+  @ResponseExcel(
+      name = "taskCheckHistoryExcel",
+      sheets = {@Sheet(sheetName = "审核信息")})
+  @GetMapping(value = "/cnbg/init/task/check/his/export-sync")
+  public List<TaskCheckHistoryExcelModel> exportTaskCheckHistoryExcelSync(
+    @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("合法的任务导出区间是一个月");
+    }
+
+    if(!CollUtil.contains(SecurityUtils.getRoles(),53)) {
+      throw new RuntimeException("没有导出审核监督明细的权限");
+    }
+
+    return wmTaskSupervisionService.selectTaskSupProcess(SecurityUtils.getUser(), taskPeriod);
   }
 
   private Map<String, String> getInfo(

+ 14 - 2
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/pkg/WmScorePackageExportController.java

@@ -1,5 +1,6 @@
 package com.qunzhixinxi.hnqz.admin.controller.pkg;
 
+import cn.hutool.core.collection.CollUtil;
 import com.qunzhixinxi.hnqz.admin.api.constant.CacheConstants;
 import com.qunzhixinxi.hnqz.admin.api.constant.enums.ExportType;
 import com.qunzhixinxi.hnqz.admin.api.dto.WmPkgDTO;
@@ -19,6 +20,8 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.time.LocalDate;
+import java.util.Arrays;
+import java.util.List;
 
 /**
  * 积分包导出控制器
@@ -44,19 +47,28 @@ public class WmScorePackageExportController {
 	@SysLog("个人执行包数据异步导出")
 	@PostMapping("/pkg/sub-info/export")
 	public R<Boolean> exportPackageSubInfo(@Validated @RequestBody WmPkgDTO.OnPkgSubExport params) {
+		HnqzUser user = SecurityUtils.getUser();
+		List<Integer> roles = SecurityUtils.getRoles();
+
+		// 4-区域管理员, 37-服务供应商管理员
+		if (!CollUtil.containsAny(roles, Arrays.asList(4, 37))) {
+			throw new RuntimeException("没有导出个人执行包数据权限");
+		}
+
 		LocalDate startDate = params.getStartDate();
 		LocalDate endDate = params.getEndDate();
 
 		LocalDate today = LocalDate.now();
 		if(endDate == null) {
-			endDate = today;
+			// 当月的最后一天
+			endDate = LocalDate.of(today.getYear(),  today.getMonth(), today.lengthOfMonth());
 		}
 		if(startDate == null) {
 			// 当月的第一天
 			startDate = LocalDate.of(today.getYear(),  today.getMonth(), 1);
 		}
 
-		return R.ok(scorePackageExportService.asyncExport(SecurityUtils.getUser(), SecurityUtils.getRoles(), startDate, endDate));
+		return R.ok(scorePackageExportService.asyncExport(user, roles, startDate, endDate));
 	}
 
 	/**

+ 86 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/task/WmTaskExportController.java

@@ -0,0 +1,86 @@
+package com.qunzhixinxi.hnqz.admin.controller.task;
+
+import cn.hutool.core.collection.CollUtil;
+import com.qunzhixinxi.hnqz.admin.api.constant.CacheConstants;
+import com.qunzhixinxi.hnqz.admin.api.constant.enums.ExportType;
+import com.qunzhixinxi.hnqz.admin.api.dto.WmTaskDTO;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmReportOpt;
+import com.qunzhixinxi.hnqz.admin.service.SysCommonExportService;
+import com.qunzhixinxi.hnqz.admin.service.WmTaskDetailExportService;
+import com.qunzhixinxi.hnqz.common.core.util.R;
+import com.qunzhixinxi.hnqz.common.log.annotation.SysLog;
+import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
+import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.time.LocalDate;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 个人任务明细导出控制器
+ *
+ * @author snows
+ * @date 2025/08/06
+ */
+@Slf4j
+@RestController
+@RequiredArgsConstructor
+public class WmTaskExportController {
+
+	private final WmTaskDetailExportService taskDetailExportService;
+	private final SysCommonExportService commonExportService;
+
+
+	/**
+	 * 导出个人任务明细
+	 *
+	 * @param params 查询参数
+	 * @return {@link R }<{@link Boolean }> 是否成功
+	 */
+	@SysLog("个人任务明细异步导出")
+	@PostMapping("/task/export/export-detail")
+	public R<Boolean> exportPackageSubInfo(@Validated @RequestBody WmTaskDTO.OnTaskDetailExport params) {
+		HnqzUser user = SecurityUtils.getUser();
+		List<Integer> roles = SecurityUtils.getRoles();
+
+		// 4-区域管理员, 37-服务供应商管理员
+		if (!CollUtil.containsAny(roles, Arrays.asList(4, 37))) {
+			throw new RuntimeException("没有导出个人任务明细数据权限");
+		}
+
+		LocalDate startDate = params.getStartDate();
+		LocalDate endDate = params.getEndDate();
+
+		LocalDate today = LocalDate.now();
+		if(endDate == null) {
+			// 当月的最后一天
+			endDate = LocalDate.of(today.getYear(),  today.getMonth(), today.lengthOfMonth());
+		}
+		if(startDate == null) {
+			// 当月的第一天
+			startDate = LocalDate.of(today.getYear(),  today.getMonth(), 1);
+		}
+
+		return R.ok(taskDetailExportService.asyncExport(user, roles, startDate, endDate));
+	}
+
+	/**
+	 * 导出个人任务明细的结果
+	 *
+	 * @return {@link WmReportOpt } 状态和结果
+	 */
+	@GetMapping("/task/export/export-detail-result")
+	public R<WmReportOpt> exportResult() {
+		HnqzUser user = SecurityUtils.getUser();
+		String key = String.format(CacheConstants.ASYNC_EXPORT_CACHE, ExportType.TASK_DETAIL.getType(), user.getId());
+
+		return R.ok(commonExportService.exportResult(user, key));
+	}
+}

+ 38 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/event/TaskDetailExportEvent.java

@@ -0,0 +1,38 @@
+package com.qunzhixinxi.hnqz.admin.event;
+
+import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.time.LocalDate;
+import java.util.List;
+
+/**
+ * 个人任务明细数据导出事件
+ *
+ * @author snows
+ * @date 2025/08/05
+ */
+@Getter
+@AllArgsConstructor
+public class TaskDetailExportEvent {
+	/**
+	 * 用户
+	 */
+	private HnqzUser user;
+
+	/**
+	 * 角色
+	 */
+	private List<Integer> roles;
+
+	/**
+	 * 开始时间
+	 */
+	private LocalDate startDate;
+
+	/**
+	 * 结束时间
+	 */
+	private LocalDate endDate;
+}

+ 36 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/listener/TaskDetailExportEventListener.java

@@ -0,0 +1,36 @@
+package com.qunzhixinxi.hnqz.admin.listener;
+
+import com.qunzhixinxi.hnqz.admin.event.TaskDetailExportEvent;
+import com.qunzhixinxi.hnqz.admin.service.WmTaskDetailExportService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.event.EventListener;
+import org.springframework.core.annotation.Order;
+import org.springframework.scheduling.annotation.Async;
+
+/**
+ * 个人任务明细数据导出事件侦听器
+ *
+ * @author snows
+ * @date 2025/08/05
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Configuration
+public class TaskDetailExportEventListener {
+
+	private final WmTaskDetailExportService taskDetailExportService;
+
+	/**
+	 * 推送事件
+	 *
+	 * @param event 事件
+	 */
+	@Async
+	@Order
+	@EventListener(TaskDetailExportEvent.class)
+	public void pushEvent(TaskDetailExportEvent event) {
+		taskDetailExportService.export(event.getUser(), event.getRoles(), event.getStartDate(), event.getEndDate());
+	}
+}

+ 13 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmScorePackageExportService.java

@@ -1,12 +1,13 @@
 package com.qunzhixinxi.hnqz.admin.service;
 
+import com.qunzhixinxi.hnqz.admin.manager.WmPackageExportScope;
 import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
 
 import java.time.LocalDate;
 import java.util.List;
 
 /**
- * 积分包导出服务
+ * 个人执行包导出服务
  *
  * @author snows
  * @date 2025/08/04
@@ -34,4 +35,15 @@ public interface WmScorePackageExportService {
 	 * @return {@link Boolean } 是否成功
 	 */
 	Boolean export(HnqzUser user, List<Integer> roles, LocalDate startDate, LocalDate endDate);
+
+	/**
+	 * 根据不同角色权限获取积分包相关数据
+	 *
+	 * @param user      用户
+	 * @param roles     角色
+	 * @param startDate 开始日期
+	 * @param endDate   结束日期
+	 * @return {@link WmPackageExportScope }
+	 */
+	WmPackageExportScope getWmPackageExportScope(HnqzUser user, List<Integer> roles, LocalDate startDate, LocalDate endDate);
 }

+ 37 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmTaskDetailExportService.java

@@ -0,0 +1,37 @@
+package com.qunzhixinxi.hnqz.admin.service;
+
+import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
+
+import java.time.LocalDate;
+import java.util.List;
+
+/**
+ * 个人任务明细数据导出服务
+ *
+ * @author snows
+ * @date 2025/08/05
+ */
+public interface WmTaskDetailExportService {
+
+	/**
+	 * 异步导出
+	 *
+	 * @param user      用户
+	 * @param roles     角色
+	 * @param startDate 开始日期
+	 * @param endDate   结束日期
+	 * @return {@link Boolean } 是否成功
+	 */
+	Boolean asyncExport(HnqzUser user, List<Integer> roles, LocalDate startDate, LocalDate endDate);
+
+	/**
+	 * 导出积分包
+	 *
+	 * @param user      用户
+	 * @param roles     角色
+	 * @param startDate 开始日期
+	 * @param endDate   结束日期
+	 * @return {@link Boolean } 是否成功
+	 */
+	Boolean export(HnqzUser user, List<Integer> roles, LocalDate startDate, LocalDate endDate);
+}

+ 2 - 2
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/SysUserExportServiceImpl.java

@@ -129,8 +129,8 @@ public class SysUserExportServiceImpl implements SysUserExportService {
 			});
 
 		} finally {
-			// 释放全局限流
-			redisTemplate.opsForValue().decrement(CacheConstants.ASYNC_EXPORT_LIMIT_KEY);
+			redisUtils.releaseExportGlobalAllows();
+			redisUtils.cleanupGenerating(ExportType.USER, user.getId());
 		}
 	}
 	

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 435 - 601
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmScorePackageExportServiceImpl.java


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

@@ -0,0 +1,268 @@
+package com.qunzhixinxi.hnqz.admin.service.impl;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.qunzhixinxi.hnqz.admin.api.constant.UpmsState;
+import com.qunzhixinxi.hnqz.admin.api.constant.enums.EnableEnum;
+import com.qunzhixinxi.hnqz.admin.api.constant.enums.ExportType;
+import com.qunzhixinxi.hnqz.admin.api.constant.enums.PackageStatusEnum;
+import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
+import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmDaDrugEntDrugtable;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmScorePackage;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmScorePackageStatus;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmTask;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskType;
+import com.qunzhixinxi.hnqz.admin.api.model.excel.WmScorePackageSubInfoExcelModel;
+import com.qunzhixinxi.hnqz.admin.api.model.excel.WmTaskDetailExcelModel;
+import com.qunzhixinxi.hnqz.admin.aspect.ExportGuard;
+import com.qunzhixinxi.hnqz.admin.config.UpmsConfig;
+import com.qunzhixinxi.hnqz.admin.event.TaskDetailExportEvent;
+import com.qunzhixinxi.hnqz.admin.manager.WmPackageExportScope;
+import com.qunzhixinxi.hnqz.admin.manager.WmPackageManager;
+import com.qunzhixinxi.hnqz.admin.mapper.SysUserMapper;
+import com.qunzhixinxi.hnqz.admin.mapper.WmScorePackageMapper;
+import com.qunzhixinxi.hnqz.admin.mapper.WmScorePackageStatusMapper;
+import com.qunzhixinxi.hnqz.admin.mapper.WmTaskMapper;
+import com.qunzhixinxi.hnqz.admin.mapper.WmTaskTypeMapper;
+import com.qunzhixinxi.hnqz.admin.service.WmScorePackageExportService;
+import com.qunzhixinxi.hnqz.admin.service.WmTaskDetailExportService;
+import com.qunzhixinxi.hnqz.admin.util.ExportUtils;
+import com.qunzhixinxi.hnqz.admin.util.RedisUtils;
+import com.qunzhixinxi.hnqz.common.core.constant.CommonConstants;
+import com.qunzhixinxi.hnqz.common.core.util.SpringContextHolder;
+import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDate;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+/**
+ * 个人任务明细数据导出服务 impl
+ *
+ * @author snows
+ * @date 2025/08/05
+ */
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class WmTaskDetailExportServiceImpl implements WmTaskDetailExportService {
+	private final WmScorePackageMapper scorePackageMapper;
+	private final WmTaskMapper taskMapper;
+	private final WmTaskTypeMapper taskTypeMapper;
+	private final SysUserMapper userMapper;
+	private final WmScorePackageStatusMapper scorePackageStatusMapper;
+	private final WmScorePackageExportService scorePackageExportService;
+	private final UpmsConfig upmsConfig;
+	private final RedisUtils redisUtils;
+	private final ExportUtils exportUtils;
+
+	Map<Integer, String> quarterMap =
+			Map.ofEntries(
+					Map.entry(1, "一季度"), Map.entry(2, "二季度"), Map.entry(3, "三季度"), Map.entry(4, "四季度"));
+
+	/**
+	 * 异步导出
+	 *
+	 * @param user      用户
+	 * @param roles     角色
+	 * @param startDate 开始日期
+	 * @param endDate   结束日期
+	 * @return {@link Boolean } 是否成功
+	 */
+	@Override
+	@ExportGuard(type = "TASK_DETAIL")
+	public Boolean asyncExport(HnqzUser user, List<Integer> roles, LocalDate startDate, LocalDate endDate) {
+		redisUtils.setExportStarting(ExportType.TASK_DETAIL, user.getId());
+
+		SpringContextHolder.getApplicationContext().publishEvent(new TaskDetailExportEvent(user, roles, startDate, endDate));
+		return Boolean.TRUE;
+	}
+
+	/**
+	 * 导出积分包
+	 *
+	 * @param user      用户
+	 * @param roles     角色
+	 * @param startDate 开始日期
+	 * @param endDate   结束日期
+	 * @return {@link Boolean } 是否成功
+	 */
+	@Override
+	public Boolean export(HnqzUser user, List<Integer> roles, LocalDate startDate, LocalDate endDate) {
+		redisUtils.checkExportGlobalAllows(upmsConfig.getAsyncExportLimit());
+
+		try {
+			// 获取数据
+			List<WmTaskDetailExcelModel> data = this.getExportData(user, roles, startDate, endDate);
+
+			// 导出
+			String resultValue = exportUtils.WriteExportExcel(ExportType.TASK_DETAIL, data, WmTaskDetailExcelModel.class, user);
+			return !StrUtil.startWith(resultValue, "ERROR");
+		} finally {
+			redisUtils.releaseExportGlobalAllows();
+			redisUtils.cleanupGenerating(ExportType.TASK_DETAIL, user.getId());
+		}
+	}
+
+	/**
+	 * 获取导出数据
+	 *
+	 * @param user      用户
+	 * @param roles     角色
+	 * @param startDate 开始日期
+	 * @param endDate   结束日期
+	 * @return {@link List }<{@link WmScorePackageSubInfoExcelModel }> 结果
+	 * @see WmPackageManager#exportPkgInfo(LocalDate, LocalDate) 参考代码(存在冗余待合并)
+	 */
+	private List<WmTaskDetailExcelModel> getExportData(HnqzUser user, List<Integer> roles, LocalDate startDate, LocalDate endDate) {
+		WmPackageExportScope scope = scorePackageExportService.getWmPackageExportScope(user, roles, startDate, endDate);
+		Map<Integer, SysDept> service = scope.getService();
+		Map<String, WmDaDrugEntDrugtable> drugtableMap = scope.getDrugtableMap();
+		List<String> cPkgIds = scope.getCPkgIds();
+		List<WmScorePackage> childrenPkgs = scope.getChildrenPkgs();
+
+		// 获取区域的上级包
+		List<String> parentIds = childrenPkgs.stream()
+				.map(WmScorePackage::getRelationScoreId)
+				.distinct()
+				.sorted()
+				.collect(Collectors.toList());
+
+		Map<String, WmScorePackage> parentPackageMap = scorePackageMapper
+				.selectList(
+						Wrappers.<WmScorePackage>lambdaQuery()
+								.eq(WmScorePackage::getEnableFlag, EnableEnum.ENABLE.val())
+								.in(WmScorePackage::getId, parentIds))
+				.stream()
+				.collect(Collectors.toMap(WmScorePackage::getId, Function.identity()));
+
+		// 获取全部的任务
+		List<WmTask> tasks = taskMapper.selectList(
+				Wrappers.<WmTask>lambdaQuery()
+						.in(WmTask::getScorePackageId, cPkgIds));
+
+		// 任务类型名称
+		List<WmTaskType> taskTypes = taskTypeMapper.selectList(Wrappers.<WmTaskType>lambdaQuery()
+				.eq(WmTaskType::getDelFlag, CommonConstants.STATUS_NORMAL)
+				.lt(WmTaskType::getId, 1000));
+		Map<String, String> taskTypeNameMap =
+				taskTypes.stream().collect(Collectors.toMap(WmTaskType::getId, WmTaskType::getTaskTypeName, (n1, n2) -> n1));
+
+		// 获取所有执行包领取记录
+		List<WmScorePackageStatus> scorePackageStatuses = scorePackageStatusMapper.selectList(
+				Wrappers.<WmScorePackageStatus>lambdaQuery()
+						.in(WmScorePackageStatus::getPackageId, cPkgIds)
+						.eq(WmScorePackageStatus::getStatus, PackageStatusEnum.APPROVED.val()));
+
+		Set<String> userIds = scorePackageStatuses.stream()
+				.map(WmScorePackageStatus::getUserId)
+				.collect(Collectors.toSet());
+
+		// 获取所有任务的user
+		List<SysUser> users = userMapper.selectBatchIds(userIds);
+		Map<Integer, SysUser> userMap = users.stream()
+				.collect(Collectors.toMap(SysUser::getUserId, Function.identity()));
+
+		// 转换为每个执行包对应的接包人信息
+		Map<String, SysUser> packageUserMap = scorePackageStatuses.stream()
+				.collect(Collectors.toMap(
+						WmScorePackageStatus::getPackageId,
+						ps -> userMap.get(Integer.parseInt(ps.getUserId())),
+						(u1, u2) -> u1));
+
+		// 根据包id分组
+		Map<String, List<WmTask>> pkg2TaskListMap = tasks.stream()
+				.collect(Collectors.groupingBy(WmTask::getScorePackageId));
+
+		AtomicInteger index = new AtomicInteger(1);
+		return childrenPkgs.parallelStream()
+				.map(pkg -> buildTaskExcelModel(pkg, service, parentPackageMap, drugtableMap,
+						packageUserMap, pkg2TaskListMap, taskTypeNameMap))
+				.flatMap(Collection::stream).peek(model -> model.setNumber(index.getAndIncrement()))
+				.collect(Collectors.toList());
+	}
+
+	/**
+	 * 构建每个执行包下任务的Excel模型数据
+	 *
+	 * @param pkg              积分包
+	 * @param service          服务商
+	 * @param parentPackageMap 父包映射
+	 * @param drugtableMap     药品map
+	 * @param packageUserMap   积分包接单用户
+	 * @param pkg2TaskListMap  积分包下的任务列表map
+	 * @param taskTypeNameMap  任务类型名称映射
+	 * @return {@link List }<{@link WmTaskDetailExcelModel }> 任务明细数据list
+	 */
+	private List<WmTaskDetailExcelModel> buildTaskExcelModel(
+			WmScorePackage pkg,
+			Map<Integer, SysDept> service,
+			Map<String, WmScorePackage> parentPackageMap,
+			Map<String, WmDaDrugEntDrugtable> drugtableMap,
+			Map<String, SysUser> packageUserMap,
+			Map<String, List<WmTask>> pkg2TaskListMap,
+			Map<String, String> taskTypeNameMap) {
+
+		List<WmTaskDetailExcelModel> models = new ArrayList<>();
+
+		List<WmTask> tasks = pkg2TaskListMap.get(pkg.getId());
+		if (CollUtil.isEmpty(tasks)) {
+			return Collections.emptyList();
+		}
+
+		for (WmTask task : tasks) {
+			WmTaskDetailExcelModel model = new WmTaskDetailExcelModel();
+
+			// 市场服务供应商名称
+			SysDept s = service.get(Integer.parseInt(pkg.getDeptId()));
+			model.setServiceName(s != null ? s.getName() : "");
+
+			// 执行包
+			model.setPkgId(pkg.getId());
+			model.setPkgName(pkg.getScorePackageName());
+
+			// 父级包
+			WmScorePackage parentPackage = parentPackageMap.get(pkg.getRelationScoreId());
+			model.setParentPkgId(parentPackage != null ? parentPackage.getId() : "");
+			model.setParentPkgName(parentPackage != null ? parentPackage.getScorePackageName() : "");
+
+			// 执行包年度、季度
+			model.setYear(String.format("%d年", pkg.getCreateTime().getYear()));
+			model.setQuarter(quarterMap.get(pkg.getCreateTime().getMonthValue() / 3 + 1));
+
+			// 产品&生产企业
+			WmDaDrugEntDrugtable drugtable = drugtableMap.get(pkg.getDrugtable()[0]);
+			model.setDrugnameTy(drugtable == null ? "未分配产品" : drugtable.getDrugnameTy());
+			model.setDrugEntName(drugtable == null ? "未知" : drugtable.getDrugEntName());
+
+			SysUser taskUser = packageUserMap.get(pkg.getId());
+			// 接包人姓名
+			model.setTaskUserName(taskUser != null ? taskUser.getRealname() : "");
+			// 接包人电话
+			model.setTaskUserPhone(taskUser != null ? taskUser.getPhone() : "");
+
+			// 任务ID、任务类型
+			model.setTaskId(task.getId());
+			model.setTaskName(taskTypeNameMap.getOrDefault(task.getTaskTypeId(), ""));
+			model.setTaskStatus(UpmsState.TaskState.getByStateName(task.getTaskStatus()));
+			model.setTaskCreateTime(DateUtil.formatLocalDateTime(task.getCreateTime()));
+			model.setRejectReason(task.getTaskStatusInfo());
+			models.add(model);
+		}
+
+		return models;
+	}
+}

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

@@ -153,7 +153,7 @@ public class WmTaskSupervisionServiceImpl extends ServiceImpl<WmTaskSupervisionM
         List<TaskCheckHistoryExcelModel> t = List.of();
         try {
             t = retryTemplate.execute(retryContext -> {
-                log.info("人员异步导出第{}次重试", retryContext.getRetryCount());
+                log.info("任务审核监督异步导出第{}次重试", retryContext.getRetryCount());
                 redisUtils.checkExportGlobalAllows(upmsConfig.getAsyncExportLimit());
 
                 List<TaskCheckHistoryExcelModel> data = 

+ 1 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/util/ExportUtils.java

@@ -48,7 +48,7 @@ public final class ExportUtils {
 		String ret = ERROR_MSG_UNKNOWN;
 		try {
 			// 写入excel文件
-			EasyExcel.write(fullPath, head).sheet(exportType.getDescription())
+			EasyExcel.write(fullPath).sheet(exportType.getDescription())
 					.doWrite(data);
 			log.info("{}导出生成缓存文件:{}", exportType.getDescription(), fullPath);
 

+ 1 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/util/OsEnvUtils.java

@@ -82,7 +82,7 @@ public final class OsEnvUtils {
       pathMap.put(TargetFile.FONT.getName(), "~/");
       pathMap.put(TargetFile.CONTRACT.getName(), "~/");
       pathMap.put(TargetFile.TEMPLATE.getName(), "~/");
-      pathMap.put(TargetFile.TEMP.getName(), "~/");
+      pathMap.put(TargetFile.TEMP.getName(), "/tmp/");
     }
     if (osName.contains("windows")) {
       pathMap.put(TargetFile.EXCEL.getName(), "D:\\");

+ 1 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/util/RedisUtils.java

@@ -73,7 +73,7 @@ public final class RedisUtils {
 
 			// 设置key的过期时间,避免计数器无限增长
 			if (increment != null && increment.equals(1L)) {
-				redisTemplate.expire(key, 1, TimeUnit.MINUTES);
+				redisTemplate.expire(key, 30, TimeUnit.MINUTES);
 			}
 
 			// 检查是否超过限流阈值

+ 91 - 130
hnqz-upms/hnqz-upms-biz/src/main/resources/mapper/WmTaskSupervisionMapper.xml

@@ -172,7 +172,52 @@
     <result property="financeSubmgrRemarks" column="finance_submgr_remarks"/>
   </resultMap>
 
-<select id="selectTaskSupProcess" resultMap="wmTaskSupProcessMap">
+<select id="selectTaskSupProcess" resultMap="wmTaskSupProcessMap" timeout="1800">
+  WITH base_check_his AS (
+      SELECT
+          target_id,
+          node_id,
+          check_result,
+          check_msg,
+          update_time1,
+          create_by1
+      FROM sys_chain_node_check_his
+      WHERE create_time1 &gt;= #{taskBeginTime}
+  ),
+  check_users AS (
+      SELECT DISTINCT username, realname FROM sys_user
+  ),
+  check_data AS (
+      SELECT
+          b.target_id,
+          b.node_id,
+          b.check_result,
+          b.check_msg,
+          b.update_time1,
+          u.realname
+      FROM base_check_his b
+      JOIN check_users u ON b.create_by1 = u.username
+  ),
+  sup_data AS (
+    select sup."task_id", u.realname, sup.create_time, sup.sup_res, sup."remarks", ur.role_id 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 sup."create_time" &gt;= #{taskBeginTime} 
+  ),
+  adv_data AS (
+    select sup."task_id", u.realname, adv.create_time, adv.advice_result, adv.remarks, ur.role_id 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 sup."create_time" &gt;= #{taskBeginTime} and adv.del_flag = '0' 
+  )
   select
 
     t.id,
@@ -393,15 +438,11 @@
 
   (
 
-    select "target_id", "check_result", "check_msg", his."update_time1" update_time, u."realname"
-
-    from "sys_chain_node_check_his" his
-
-    join (select distinct username, realname from sys_user) u
+    select "target_id", "check_result", "check_msg", "update_time1" update_time, "realname"
 
-    on u."username" = his."create_by1"
+    from check_data
 
-    where "node_id" = 1 and create_time1 &gt;= #{taskBeginTime} <!-- 服务商 -->
+    where "node_id" = 1 <!-- 服务商 -->
 
   ) t1
 
@@ -411,15 +452,11 @@
 
   (
 
-    select "target_id", "check_result", "check_msg", his."update_time1" update_time, u."realname"
+    select "target_id", "check_result", "check_msg", "update_time1" update_time, "realname"
 
-    from "sys_chain_node_check_his" his
+    from check_data
 
-    join (select distinct username, realname from sys_user) u
-
-    on u."username" = his."create_by1"
-
-    where "node_id" = 2 and create_time1 &gt;= #{taskBeginTime} <!-- 地市 -->
+    where "node_id" = 2  <!-- 地市 -->
 
   ) t2
 
@@ -429,13 +466,11 @@
 
   (
 
-    select "target_id", "check_result", "check_msg", his."update_time1" update_time, u."realname"
-
-    from "sys_chain_node_check_his" his join (select distinct username, realname from sys_user) u
+    select "target_id", "check_result", "check_msg", "update_time1" update_time, "realname"
 
-    on u."username" = his."create_by1"
+    from check_data
 
-    where "node_id" = 3 and create_time1 &gt;= #{taskBeginTime} <!-- 区域 -->
+    where "node_id" = 3  <!-- 区域 -->
 
   ) t3
 
@@ -445,13 +480,11 @@
 
   (
 
-    select "target_id", "check_result", "check_msg", his."update_time1" update_time, u."realname"
+    select "target_id", "check_result", "check_msg", "update_time1" update_time, "realname"
 
-    from "sys_chain_node_check_his" his join (select distinct username, realname from sys_user) u
+    from check_data
 
-    on u."username" = his."create_by1"
-
-    where "node_id" = 8 and create_time1 &gt;= #{taskBeginTime} <!-- 市场 -->
+    where "node_id" = 8 <!-- 市场 -->
 
   ) t8
 
@@ -461,13 +494,11 @@
 
     (
 
-    select "target_id", "check_result", "check_msg", his."update_time1" update_time, u."realname"
-
-    from "sys_chain_node_check_his" his join (select distinct username, realname from sys_user) u
+    select "target_id", "check_result", "check_msg", "update_time1" update_time, "realname"
 
-    on u."username" = his."create_by1"
+    from check_data
 
-    where "node_id" = 9 and create_time1 &gt;= #{taskBeginTime} <!-- 商务 -->
+    where "node_id" = 9 <!-- 商务 -->
 
     ) t9
 
@@ -477,13 +508,11 @@
 
     (
 
-    select "target_id", "check_result", "check_msg", his."update_time1" update_time, u."realname"
-
-    from "sys_chain_node_check_his" his join (select distinct username, realname from sys_user) u
+    select "target_id", "check_result", "check_msg", "update_time1" update_time, "realname"
 
-    on u."username" = his."create_by1"
+    from check_data
 
-    where "node_id" = 5 and create_time1 &gt;= #{taskBeginTime} <!-- 分管领导 -->
+    where "node_id" = 5 <!-- 分管领导 -->
 
     ) t5
 
@@ -493,13 +522,11 @@
 
     (
 
-    select distinct "target_id", "check_result", "check_msg", his."update_time1" update_time, u."realname"
+    select "target_id", "check_result", "check_msg", "update_time1" update_time, "realname"
 
-    from "sys_chain_node_check_his" his join (select distinct username, realname from sys_user) u
+    from check_data
 
-    on u."username" = his."create_by1"
-
-    where "node_id" = 6 and create_time1 &gt;= #{taskBeginTime} <!-- 总经理 -->
+    where "node_id" = 6 <!-- 总经理 -->
 
     ) t6
 
@@ -509,15 +536,9 @@
 
     (
 
-    select sup."task_id", u.realname, sup.create_time, sup.sup_res, sup."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"
+    select "task_id", realname, create_time, sup_res, "remarks" from sup_data
 
-    join "sys_user_role" ur on u.user_id = ur."user_id"
-
-    where ur."role_id" = 49 and sup."create_time" &gt;= #{taskBeginTime}  <!-- 厂家财务 -->
+    where "role_id" = 49 <!-- 厂家财务 -->
 
     ) sup1
 
@@ -527,15 +548,9 @@
 
     (
 
-    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" = adv."create_by"
-
-    join "sys_user_role" ur on u.user_id = ur."user_id"
+    select "task_id", realname, create_time, advice_result, remarks from adv_data
 
-    where ur."role_id" = 57 and sup."create_time" &gt;= #{taskBeginTime} and adv.del_flag = '0'   <!-- 厂家财务负责人 -->
+    where "role_id" = 57 <!-- 厂家财务负责人 -->
 
     ) sup11
 
@@ -545,15 +560,9 @@
 
     (
 
-    select sup."task_id", u.realname, adv.create_time, adv.advice_result, adv.remarks  from wm_task_sup sup 
+    select "task_id", realname, create_time, advice_result, remarks from adv_data
 
-    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" &gt;= #{taskBeginTime} and adv.del_flag = '0'  <!-- 厂家财务分管领导 -->
+    where "role_id" = 51 <!-- 厂家财务分管领导 -->
 
     ) sup12
 
@@ -563,13 +572,9 @@
 
     (
 
-    select sup."task_id", u.realname, sup.create_time, sup.sup_res, sup."remarks" from wm_task_sup sup 
+    select "task_id", realname, create_time, sup_res, "remarks" from sup_data
 
-    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" &gt;= #{taskBeginTime}  <!-- 厂家销售 -->
+    where "role_id" = 52 <!-- 厂家销售 -->
 
     ) sup2
 
@@ -579,15 +584,9 @@
 
     (
 
-    select sup."task_id", u.realname, adv.create_time, adv.advice_result, adv.remarks  from wm_task_sup sup 
+    select "task_id", realname, create_time, advice_result, remarks from adv_data
 
-    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" &gt;= #{taskBeginTime} and adv.del_flag = '0'  <!-- 厂家销售负责人 -->
+    where "role_id" = 58 <!-- 厂家销售负责人 -->
 
     ) sup21
 
@@ -597,15 +596,9 @@
 
     (
 
-    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" = adv."create_by"
-
-    join "sys_user_role" ur on u.user_id = ur."user_id"
+    select "task_id", realname, create_time, advice_result, remarks from adv_data
 
-    where ur."role_id" = 61 and sup."create_time" &gt;= #{taskBeginTime} and adv.del_flag = '0'  <!-- 厂家销售分管领导 -->
+    where "role_id" = 61 <!-- 厂家销售分管领导 -->
 
     ) sup22
 
@@ -615,13 +608,9 @@
 
     (
 
-    select sup."task_id", u.realname, sup.create_time, sup.sup_res, sup."remarks" from wm_task_sup sup 
+    select "task_id", realname, create_time, sup_res, "remarks" from sup_data
 
-    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" &gt;= #{taskBeginTime}  <!-- 营销合规 -->
+    where "role_id" = 53 <!-- 营销合规 -->
 
     ) sup3
 
@@ -631,15 +620,9 @@
 
     (
 
-    select sup."task_id", u.realname, adv.create_time, adv.advice_result, adv.remarks  from wm_task_sup sup 
+    select "task_id", realname, create_time, advice_result, remarks from adv_data
 
-    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" &gt;= #{taskBeginTime} and adv.del_flag = '0'  <!-- 营销合规负责人 -->
+    where "role_id" = 60 <!-- 营销合规负责人 -->
 
     ) sup31
 
@@ -649,15 +632,9 @@
 
     (
 
-    select sup."task_id", u.realname, adv.create_time, adv.advice_result, adv.remarks  from wm_task_sup sup 
+    select "task_id", realname, create_time, advice_result, remarks from adv_data
 
-    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" &gt;= #{taskBeginTime} and adv.del_flag = '0'  <!-- 营销合规分管领导 -->
+    where "role_id" = 54 <!-- 营销合规分管领导 -->
 
     ) sup32
 
@@ -667,13 +644,9 @@
 
     (
 
-    select sup."task_id", u.realname, sup.create_time, sup.sup_res, sup."remarks" from wm_task_sup sup 
+    select "task_id", realname, create_time, sup_res, "remarks" from sup_data
 
-    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" &gt;= #{taskBeginTime}  <!-- 营销财务 -->
+    where "role_id" = 56 <!-- 营销财务 -->
 
     ) sup4
 
@@ -683,15 +656,9 @@
 
     (
 
-    select sup."task_id", u.realname, adv.create_time, adv.advice_result, adv.remarks  from wm_task_sup sup 
+    select "task_id", realname, create_time, advice_result, remarks from adv_data
 
-    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" &gt;= #{taskBeginTime} and adv.del_flag = '0'  <!-- 营销财务负责人 -->
+    where "role_id" = 59 <!-- 营销财务负责人 -->
 
     ) sup41
 
@@ -701,15 +668,9 @@
 
     (
 
-    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" = adv."create_by"
-
-    join "sys_user_role" ur on u.user_id = ur."user_id"
+    select "task_id", realname, create_time, advice_result, remarks  from adv_data
 
-    where ur."role_id" = 55 and sup."create_time" &gt;= #{taskBeginTime} and adv.del_flag = '0'  <!-- 营销财务分管领导 -->
+    where "role_id" = 55 <!-- 营销财务分管领导 -->
 
     ) sup42
 

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