Browse Source

Merge branch 'feat-20220601-riskcontrol'

shc 3 years ago
parent
commit
8e36ad918c
44 changed files with 2010 additions and 75 deletions
  1. 32 0
      db/v2022/4single_member_settle_same_amount_in_several_months.sql
  2. 32 0
      db/v2022/5single_member_settle_amount_overrun_in_several_months.sql
  3. 33 0
      db/v2022/6single_ent_settle_same_amount_for_members_in_current_month.sql
  4. 32 0
      db/v2022/7single_member_without_such_task_types_in_several_months.sql
  5. 5 0
      hnqz-upms/hnqz-upms-api/pom.xml
  6. 111 0
      hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth.java
  7. 110 0
      hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/SingleMemberSettleAmountOverrunInSeveralMonths.java
  8. 105 0
      hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/SingleMemberSettleSameAmountInSeveralMonths.java
  9. 111 0
      hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/SingleMemberWithoutSuchTaskTypesInSeveralMonths.java
  10. 138 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/RiskControlController.java
  11. 9 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonthMapper.java
  12. 9 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/SingleMemberSettleAmountOverrunInSeveralMonthsMapper.java
  13. 9 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/SingleMemberSettleSameAmountInSeveralMonthsMapper.java
  14. 9 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/SingleMemberWithoutSuchTaskTypesInSeveralMonthsMapper.java
  15. 8 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonthService.java
  16. 8 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/SingleMemberSettleAmountOverrunInSeveralMonthsService.java
  17. 7 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/SingleMemberSettleSameAmountInSeveralMonthsService.java
  18. 7 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/SingleMemberWithoutSuchTaskTypesInSeveralMonthsService.java
  19. 16 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonthServiceImpl.java
  20. 17 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/SingleMemberSettleAmountOverrunInSeveralMonthsServiceImpl.java
  21. 16 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/SingleMemberSettleSameAmountInSeveralMonthsServiceImpl.java
  22. 16 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/SingleMemberWithoutSuchTaskTypesInSeveralMonthsServiceImpl.java
  23. 29 3
      hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/controller/SysJobLogController.java
  24. 100 0
      hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/entity/SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth.java
  25. 95 0
      hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/entity/SingleMemberSettleAmountOverrunInSeveralMonths.java
  26. 111 0
      hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/entity/SingleMemberSettleSameAmountInSeveralMonths.java
  27. 95 0
      hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/entity/SingleMemberWithoutSuchTaskTypesInSeveralMonths.java
  28. 13 0
      hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/entity/SysJobLog.java
  29. 9 0
      hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/mapper/SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonthMapper.java
  30. 9 0
      hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/mapper/SingleMemberSettleAmountOverrunInSeveralMonthsMapper.java
  31. 9 0
      hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/mapper/SingleMemberSettleSameAmountInSeveralMonthsMapper.java
  32. 9 0
      hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/mapper/SingleMemberWithoutSuchTaskTypesInSeveralMonthsMapper.java
  33. 8 0
      hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/mapper/WmScorePackageMapper.java
  34. 8 4
      hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/mapper/WmScorePackageSettleNoteMapper.java
  35. 8 0
      hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/mapper/WmTaskMapper.java
  36. 32 0
      hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/service/WmScorePackageSettleNoteService.java
  37. 6 0
      hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/service/WmTaskService.java
  38. 145 0
      hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/service/impl/WmScorePackageSettleNoteServiceImpl.java
  39. 47 1
      hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/service/impl/WmTaskServiceImpl.java
  40. 271 2
      hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/task/SpringBeanTaskDemo.java
  41. 1 0
      hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/util/SpringBeanTaskInvok.java
  42. 60 31
      hnqz-visual/hnqz-daemon-quartz/src/main/resources/mapper/WmScorePackageMapper.xml
  43. 54 2
      hnqz-visual/hnqz-daemon-quartz/src/main/resources/mapper/WmScorePackageSettleNoteMapper.xml
  44. 51 32
      hnqz-visual/hnqz-daemon-quartz/src/main/resources/mapper/WmTaskMapper.xml

+ 32 - 0
db/v2022/4single_member_settle_same_amount_in_several_months.sql

@@ -0,0 +1,32 @@
+USE hnqzx;
+
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+-- ----------------------------
+-- Table structure for single_member_settle_same_amount_in_several_months
+-- ----------------------------
+DROP TABLE IF EXISTS `single_member_settle_same_amount_in_several_months`;
+CREATE TABLE `single_member_settle_same_amount_in_several_months`
+(
+    `record_id`               INT UNSIGNED AUTO_INCREMENT COMMENT 'id',
+    `note_id`                 INT UNSIGNED NULL COMMENT '积分包计算记录id',
+    `realname`                VARCHAR(32)  NULL COMMENT '用户名称',
+    `username`                VARCHAR(11)  NULL COMMENT '用户名',
+    `id_number`               VARCHAR(18)  NULL COMMENT '身份证',
+    `dept_id`                 INT          NULL COMMENT '结算企业id',
+    `dept_name`               VARCHAR(64)  NULL COMMENT '结算企业名称',
+    `settle_amount`           DECIMAL      NULL COMMENT '结算金额',
+    `sub_to_gig_time`         DATETIME     NULL COMMENT '结算时间',
+    `settle_state`            VARCHAR(16)  NULL COMMENT '结算企业名称',
+    `sub_type_name`           VARCHAR(16)  NULL COMMENT '结算渠道名称',
+    `package_name`            VARCHAR(64)  NULL COMMENT '积分包名称',
+    `settle_note_create_time` DATETIME     NULL COMMENT '结算记录创建时间',
+    `period`                  INT UNSIGNED NULL COMMENT '统计周期',
+    `create_time`             DATETIME     NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+    PRIMARY KEY (`record_id`) USING BTREE
+) ENGINE = InnoDB
+  DEFAULT CHARSET = utf8mb4 COMMENT ='单人连续多月结算相同金额';
+
+
+SET FOREIGN_KEY_CHECKS = 1;

+ 32 - 0
db/v2022/5single_member_settle_amount_overrun_in_several_months.sql

@@ -0,0 +1,32 @@
+USE hnqzx;
+
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+-- ----------------------------
+-- Table structure for single_member_settle_amount_overrun_in_several_months
+-- ----------------------------
+DROP TABLE IF EXISTS `single_member_settle_amount_overrun_in_several_months`;
+CREATE TABLE `single_member_settle_amount_overrun_in_several_months`
+(
+    `record_id`               INT UNSIGNED AUTO_INCREMENT COMMENT 'id',
+    `note_id`                 INT UNSIGNED NULL COMMENT '积分包计算记录id',
+    `realname`                VARCHAR(32)  NULL COMMENT '用户名称',
+    `username`                VARCHAR(11)  NULL COMMENT '用户名',
+    `dept_id`                 INT          NULL COMMENT '结算企业id',
+    `dept_name`               VARCHAR(64)  NULL COMMENT '结算企业名称',
+    `settle_amount`           DECIMAL      NULL COMMENT '结算金额',
+    `sub_to_gig_time`         DATETIME     NULL COMMENT '结算时间',
+    `settle_state`            VARCHAR(16)  NULL COMMENT '结算企业名称',
+    `sub_type_name`           VARCHAR(16)  NULL COMMENT '结算渠道名称',
+    `package_name`            VARCHAR(64)  NULL COMMENT '积分包名称',
+    `settle_note_create_time` DATETIME     NULL COMMENT '结算记录创建时间',
+    `period`                  INT UNSIGNED NULL COMMENT '统计周期',
+    `platform_limit`          DECIMAL      NULL COMMENT '结算限制',
+    `create_time`             DATETIME     NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+    PRIMARY KEY (`record_id`) USING BTREE
+) ENGINE = InnoDB
+  DEFAULT CHARSET = utf8mb4 COMMENT ='单人连续多月结算额超标';
+
+
+SET FOREIGN_KEY_CHECKS = 1;

+ 33 - 0
db/v2022/6single_ent_settle_same_amount_for_members_in_current_month.sql

@@ -0,0 +1,33 @@
+USE hnqzx;
+
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+-- ----------------------------
+-- Table structure for single_ent_settle_same_amount_for_members_in_current_month
+-- ----------------------------
+DROP TABLE IF EXISTS `single_ent_settle_same_amount_for_members_in_current_month`;
+CREATE TABLE `single_ent_settle_same_amount_for_members_in_current_month`
+(
+    `record_id`               INT UNSIGNED AUTO_INCREMENT COMMENT 'id',
+    `note_id`                 INT UNSIGNED NULL COMMENT '积分包计算记录id',
+    `realname`                VARCHAR(32)  NULL COMMENT '用户名称',
+    `username`                VARCHAR(11)  NULL COMMENT '用户名',
+    `id_number`               VARCHAR(18)  NULL COMMENT '身份证',
+    `dept_id`                 INT          NULL COMMENT '结算企业id',
+    `dept_name`               VARCHAR(64)  NULL COMMENT '结算企业名称',
+    `settle_amount`           DECIMAL      NULL COMMENT '结算金额',
+    `sub_to_gig_time`         DATETIME     NULL COMMENT '结算时间',
+    `settle_state`            VARCHAR(16)  NULL COMMENT '结算企业名称',
+    `sub_type_name`           VARCHAR(16)  NULL COMMENT '结算渠道名称',
+    `package_name`            VARCHAR(64)  NULL COMMENT '积分包名称',
+    `settle_note_create_time` DATETIME     NULL COMMENT '结算记录创建时间',
+    `period`                  INT UNSIGNED NULL COMMENT '统计周期',
+    `member_count`            INT UNSIGNED NULL COMMENT '风控人数',
+    `create_time`             DATETIME     NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+    PRIMARY KEY (`record_id`) USING BTREE
+) ENGINE = InnoDB
+  DEFAULT CHARSET = utf8mb4 COMMENT ='单人连续多月结算相同金额';
+
+
+SET FOREIGN_KEY_CHECKS = 1;

+ 32 - 0
db/v2022/7single_member_without_such_task_types_in_several_months.sql

@@ -0,0 +1,32 @@
+USE hnqzx;
+
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+-- ----------------------------
+-- Table structure for single_member_without_such_task_types_in_several_months
+-- ----------------------------
+DROP TABLE IF EXISTS `single_member_without_such_task_types_in_several_months`;
+CREATE TABLE `single_member_without_such_task_types_in_several_months`
+(
+    `record_id`            INT UNSIGNED AUTO_INCREMENT COMMENT 'id',
+    `user_id`              INT UNSIGNED NULL COMMENT '用户id',
+    `package_id`           INT UNSIGNED NULL COMMENT '积分包id',
+    `package_name`         VARCHAR(32)  NULL COMMENT '积分包名称',
+    `status`               VARCHAR(11)  NULL COMMENT '积分包状态',
+    `realname`             VARCHAR(32)  NULL COMMENT '用户名称',
+    `username`             VARCHAR(11)  NULL COMMENT '用户名',
+    `dept_id`              INT          NULL COMMENT '结算企业id',
+    `dept_name`            VARCHAR(64)  NULL COMMENT '结算企业名称',
+    `period`               INT UNSIGNED NULL COMMENT '统计周期',
+    `type_list`            VARCHAR(255) NULL COMMENT '风控任务类型',
+    `package_create_time`  DATETIME     NULL COMMENT '积分包创建时间',
+    `package_pick_up_time` DATETIME     NULL COMMENT '积分包领取时间',
+    `first_task_time`      DATETIME     NULL COMMENT '首个任务时间',
+    `create_time`          DATETIME     NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+    PRIMARY KEY (`record_id`) USING BTREE
+) ENGINE = InnoDB
+  DEFAULT CHARSET = utf8mb4 COMMENT ='单人连续多月结算相同金额';
+
+
+SET FOREIGN_KEY_CHECKS = 1;

+ 5 - 0
hnqz-upms/hnqz-upms-api/pom.xml

@@ -49,5 +49,10 @@
 			<groupId>com.qunzhixinxi</groupId>
 			<groupId>com.qunzhixinxi</groupId>
 			<artifactId>hnqz-common-feign</artifactId>
 			<artifactId>hnqz-common-feign</artifactId>
 		</dependency>
 		</dependency>
+		<dependency>
+			<groupId>com.pig4cloud.excel</groupId>
+			<artifactId>excel-spring-boot-starter</artifactId>
+			<version>0.4.1</version>
+		</dependency>
 	</dependencies>
 	</dependencies>
 </project>
 </project>

+ 111 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth.java

@@ -0,0 +1,111 @@
+package com.qunzhixinxi.hnqz.admin.api.entity;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+
+@Data
+@TableName(value = "single_ent_settle_same_amount_for_members_in_current_month")
+public class SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth implements Serializable {
+
+	private static final long serialVersionUID = -3597822678068222296L;
+
+	/**
+	 * 记录id
+	 */
+	@TableId(type = IdType.AUTO)
+	@ExcelProperty("序号")
+	private Integer recordId;
+
+	/**
+	 * 结算记录id
+	 */
+	@ExcelProperty("结算记录id")
+	private Integer noteId;
+
+	/**
+	 * 真实名称
+	 */
+	@ExcelProperty("真实名称")
+	private String realname;
+
+	/**
+	 * 用户名
+	 */
+	@ExcelProperty("用户名")
+	private String username;
+
+	/**
+	 * 结算企业id
+	 */
+	@ExcelProperty("结算企业id")
+	private String deptId;
+
+	/**
+	 * 结算企业信息
+	 */
+	@ExcelProperty("结算企业信息")
+	private String deptName;
+
+	/**
+	 * 结算金额
+	 */
+	@ExcelProperty("结算金额")
+	private BigDecimal settleAmount;
+
+	/**
+	 * 提交结算时间
+	 */
+	@ExcelProperty("提交结算时间")
+	private LocalDateTime subToGigTime;
+
+	/**
+	 * 结算状态
+	 */
+	@ExcelProperty("结算状态")
+	private String settleState;
+
+	/**
+	 * 结算渠道名称
+	 */
+	@ExcelProperty("结算渠道名称")
+	private String subTypeName;
+
+	/**
+	 * 积分包名称
+	 */
+	@ExcelProperty("积分包名称")
+	private String packageName;
+
+	/**
+	 * 结算记录创建时间
+	 */
+	@ExcelProperty("结算记录创建时间")
+	private String settleNoteCreateTime;
+
+	/**
+	 * 统计周期
+	 */
+	@ExcelProperty("统计周期")
+	private Integer period;
+
+	/**
+	 * 风控人数
+	 */
+	@ExcelProperty("风控人数")
+	private Integer memberCount;
+
+	/**
+	 * 记录创建时间
+	 */
+	@ExcelProperty("记录创建时间")
+	private LocalDateTime createTime;
+
+}

+ 110 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/SingleMemberSettleAmountOverrunInSeveralMonths.java

@@ -0,0 +1,110 @@
+package com.qunzhixinxi.hnqz.admin.api.entity;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Data
+@TableName(value = "single_member_settle_amount_overrun_in_several_months")
+public class SingleMemberSettleAmountOverrunInSeveralMonths implements Serializable {
+
+	private static final long serialVersionUID = -3597822678068222296L;
+
+	/**
+	 * 记录id
+	 */
+	@TableId(type = IdType.AUTO)
+	@ExcelProperty("记录id")
+	private Integer recordId;
+
+	/**
+	 * 结算记录id
+	 */
+	@ExcelProperty("结算记录id")
+	private Integer noteId;
+
+	/**
+	 * 真实名称
+	 */
+	@ExcelProperty("真实名称")
+	private String realname;
+
+	/**
+	 * 用户名
+	 */
+	@ExcelProperty("用户名")
+	private String username;
+
+	/**
+	 * 结算企业id
+	 */
+	@ExcelProperty("结算企业id")
+	private String deptId;
+
+	/**
+	 * 结算企业信息
+	 */
+	@ExcelProperty("结算企业信息")
+	private String deptName;
+
+	/**
+	 * 结算金额
+	 */
+	@ExcelProperty("结算金额")
+	private BigDecimal settleAmount;
+
+	/**
+	 * 提交结算时间
+	 */
+	@ExcelProperty("提交结算时间")
+	private LocalDateTime subToGigTime;
+
+	/**
+	 * 结算状态
+	 */
+	@ExcelProperty("结算状态")
+	private String settleState;
+
+	/**
+	 * 结算渠道名称
+	 */
+	@ExcelProperty("结算渠道名称")
+	private String subTypeName;
+
+	/**
+	 * 积分包名称
+	 */
+	@ExcelProperty("积分包名称")
+	private String packageName;
+
+	/**
+	 * 结算记录创建时间
+	 */
+	@ExcelProperty("结算记录创建时间")
+	private String settleNoteCreateTime;
+
+	/**
+	 * 统计周期
+	 */
+	@ExcelProperty("统计周期")
+	private Integer period;
+
+	/**
+	 * 结算限制
+	 */
+	@ExcelProperty("结算限制")
+	private BigDecimal platformLimit;
+
+	/**
+	 * 记录创建时间
+	 */
+	@ExcelProperty("记录创建时间")
+	private LocalDateTime createTime;
+
+}

+ 105 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/SingleMemberSettleSameAmountInSeveralMonths.java

@@ -0,0 +1,105 @@
+package com.qunzhixinxi.hnqz.admin.api.entity;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+
+@Data
+@TableName(value = "single_member_settle_same_amount_in_several_months")
+public class SingleMemberSettleSameAmountInSeveralMonths implements Serializable {
+
+	private static final long serialVersionUID = -3597822678068222296L;
+
+	/**
+	 * 记录id
+	 */
+	@TableId(type = IdType.AUTO)
+	@ExcelProperty("记录id")
+	private Integer recordId;
+
+	/**
+	 * 结算记录id
+	 */
+	@ExcelProperty("结算记录id")
+	private Integer noteId;
+
+	/**
+	 * 真实名称
+	 */
+	@ExcelProperty("真实名称")
+	private String realname;
+
+	/**
+	 * 用户名
+	 */
+	@ExcelProperty("用户名")
+	private String username;
+
+	/**
+	 * 结算企业id
+	 */
+	@ExcelProperty("结算企业id")
+	private String deptId;
+
+	/**
+	 * 结算企业信息
+	 */
+	@ExcelProperty("结算企业信息")
+	private String deptName;
+
+	/**
+	 * 结算金额
+	 */
+	@ExcelProperty("结算金额")
+	private BigDecimal settleAmount;
+
+	/**
+	 * 提交结算时间
+	 */
+	@ExcelProperty("提交结算时间")
+	private LocalDateTime subToGigTime;
+
+	/**
+	 * 结算状态
+	 */
+	@ExcelProperty("结算状态")
+	private String settleState;
+
+	/**
+	 * 结算渠道名称
+	 */
+	@ExcelProperty("结算渠道名称")
+	private String subTypeName;
+
+	/**
+	 * 积分包名称
+	 */
+	@ExcelProperty("积分包名称")
+	private String packageName;
+
+	/**
+	 * 结算记录创建时间
+	 */
+	@ExcelProperty("结算记录创建时间")
+	private String settleNoteCreateTime;
+
+	/**
+	 * 统计周期
+	 */
+	@ExcelProperty("统计周期")
+	private Integer period;
+
+	/**
+	 * 记录创建时间
+	 */
+	@ExcelProperty("记录创建时间")
+	private LocalDateTime createTime;
+
+}

+ 111 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/SingleMemberWithoutSuchTaskTypesInSeveralMonths.java

@@ -0,0 +1,111 @@
+package com.qunzhixinxi.hnqz.admin.api.entity;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+
+@Data
+@TableName(value = "single_member_without_such_task_types_in_several_months")
+public class SingleMemberWithoutSuchTaskTypesInSeveralMonths implements Serializable {
+
+	private static final long serialVersionUID = -3597822678068222296L;
+
+	/**
+	 * 记录id
+	 */
+	@TableId(type = IdType.AUTO)
+	@ExcelProperty("记录id")
+	private Integer recordId;
+
+	/**
+	 * 积分包id
+	 */
+	@ExcelProperty("积分包id")
+	private Integer packageId;
+
+	/**
+	 * 积分包名称
+	 */
+	@ExcelProperty("积分包名称")
+	private String packageName;
+
+	/**
+	 * 人员id
+	 */
+	@ExcelProperty("人员id")
+	private Integer userId;
+
+	/**
+	 * 真实名称
+	 */
+	@ExcelProperty("真实名称")
+	private String realname;
+
+	/**
+	 * 用户名
+	 */
+	@ExcelProperty("用户名")
+	private String username;
+
+	/**
+	 * 结算企业id
+	 */
+	@ExcelProperty("结算企业id")
+	private String deptId;
+
+	/**
+	 * 结算企业信息
+	 */
+	@ExcelProperty("结算企业信息")
+	private String deptName;
+
+	/**
+	 * 统计周期
+	 */
+	@ExcelProperty("统计周期")
+	private Integer period;
+
+	/**
+	 * 风控任务类型
+	 */
+	@ExcelProperty("风控任务类型")
+	private String typeList;
+
+	/**
+	 * 记录创建时间
+	 */
+	@ExcelProperty("记录创建时间")
+	private LocalDateTime createTime;
+
+	/**
+	 * 积分包状态
+	 */
+	@ExcelProperty("积分包状态")
+	private String status;
+
+
+	/**
+	 * 积分包创建时间
+	 */
+	@ExcelProperty("积分包创建时间")
+	private LocalDateTime packageCreateTime;
+
+	/**
+	 * 积分包领取时间
+	 */
+	@ExcelProperty("积分包领取时间")
+	private LocalDateTime packagePickUpTime;
+
+	/**
+	 * 首个任务时间
+	 */
+	@ExcelProperty("首个任务时间")
+	private LocalDateTime firstTaskTime;
+
+}

+ 138 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/RiskControlController.java

@@ -0,0 +1,138 @@
+package com.qunzhixinxi.hnqz.admin.controller;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.pig4cloud.plugin.excel.annotation.ResponseExcel;
+import com.qunzhixinxi.hnqz.admin.api.entity.SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth;
+import com.qunzhixinxi.hnqz.admin.api.entity.SingleMemberSettleAmountOverrunInSeveralMonths;
+import com.qunzhixinxi.hnqz.admin.api.entity.SingleMemberSettleSameAmountInSeveralMonths;
+import com.qunzhixinxi.hnqz.admin.api.entity.SingleMemberWithoutSuchTaskTypesInSeveralMonths;
+import com.qunzhixinxi.hnqz.admin.service.SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonthService;
+import com.qunzhixinxi.hnqz.admin.service.SingleMemberSettleAmountOverrunInSeveralMonthsService;
+import com.qunzhixinxi.hnqz.admin.service.SingleMemberSettleSameAmountInSeveralMonthsService;
+import com.qunzhixinxi.hnqz.admin.service.SingleMemberWithoutSuchTaskTypesInSeveralMonthsService;
+import com.qunzhixinxi.hnqz.common.core.util.R;
+import lombok.AllArgsConstructor;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * 风险控制前端控制器
+ *
+ * @author jimmy
+ * @version 1.0.0
+ * @date 2022-06-02 13:16
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping(value = "/risk-control", produces = MediaType.APPLICATION_JSON_VALUE)
+public class RiskControlController {
+
+	private final SingleMemberSettleAmountOverrunInSeveralMonthsService singleMemberSettleAmountOverrunInSeveralMonthsService;
+	private final SingleMemberSettleSameAmountInSeveralMonthsService singleMemberSettleSameAmountInSeveralMonthsService;
+	private final SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonthService singleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonthService;
+	private final SingleMemberWithoutSuchTaskTypesInSeveralMonthsService singleMemberWithoutSuchTaskTypesInSeveralMonthsService;
+
+	/**
+	 * 同一用户,连续2个月结算金额相同
+	 *
+	 * @return 风控结果
+	 */
+	@GetMapping(value = "/member/settle-same-amount")
+	public R<?> pageSingleMemberSettleSameAmountInSeveralMonths(Page<SingleMemberSettleSameAmountInSeveralMonths> page) {
+
+		singleMemberSettleSameAmountInSeveralMonthsService.page(page, Wrappers.<SingleMemberSettleSameAmountInSeveralMonths>lambdaQuery().orderByDesc(SingleMemberSettleSameAmountInSeveralMonths::getCreateTime));
+		return R.ok(page);
+	}
+
+	/**
+	 * 同一用户,连续2个月结算金额相同(导出)
+	 *
+	 * @return 风控结果
+	 */
+	@ResponseExcel(name = "SingleMemberSettleSameAmountInSeveralMonths", sheet = "风控数据")
+	@GetMapping(value = "/member/settle-same-amount/export")
+	public List<SingleMemberSettleSameAmountInSeveralMonths> exportSingleMemberSettleSameAmountInSeveralMonths() {
+
+		return singleMemberSettleSameAmountInSeveralMonthsService.list(Wrappers.<SingleMemberSettleSameAmountInSeveralMonths>lambdaQuery().orderByDesc(SingleMemberSettleSameAmountInSeveralMonths::getCreateTime));
+	}
+
+	/**
+	 * 同一企业,给2个及以上用户支付相同金额
+	 *
+	 * @return 风控结果
+	 */
+	@GetMapping(value = "/enterprise/settle-same-amount")
+	public R<?> pageSingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth(Page<SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth> page) {
+
+		singleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonthService.page(page, Wrappers.<SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth>lambdaQuery().orderByDesc(SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth::getCreateTime));
+		return R.ok(page);
+	}
+
+	/**
+	 * 同一企业,给2个及以上用户支付相同金额(导出)
+	 *
+	 * @return 风控结果
+	 */
+	@ResponseExcel(name = "SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth", sheet = "风控数据")
+	@GetMapping(value = "/enterprise/settle-same-amount/export")
+	public List<SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth> exportSingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth() {
+
+		return singleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonthService.list(Wrappers.<SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth>lambdaQuery().orderByDesc(SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth::getCreateTime));
+	}
+
+
+	/**
+	 * 同一用户,连续3个月结算金额超过14万
+	 *
+	 * @return 风控结果
+	 */
+	@GetMapping(value = "/member/settle-amount/overrun")
+	public R<?> pageSingleMemberSettleAmountOverrunInSeveralMonths(Page<SingleMemberSettleAmountOverrunInSeveralMonths> page) {
+
+		singleMemberSettleAmountOverrunInSeveralMonthsService.page(page, Wrappers.<SingleMemberSettleAmountOverrunInSeveralMonths>lambdaQuery().orderByDesc(SingleMemberSettleAmountOverrunInSeveralMonths::getCreateTime));
+		return R.ok(page);
+	}
+
+	/**
+	 * 同一用户,连续3个月结算金额超过14万(导出)
+	 *
+	 * @return 风控结果
+	 */
+	@ResponseExcel(name = "SingleMemberSettleAmountOverrunInSeveralMonths", sheet = "风控数据")
+	@GetMapping(value = "/member/settle-amount/overrun/export")
+	public List<SingleMemberSettleAmountOverrunInSeveralMonths> exportSingleMemberSettleAmountOverrunInSeveralMonths() {
+
+		return singleMemberSettleAmountOverrunInSeveralMonthsService.list(Wrappers.<SingleMemberSettleAmountOverrunInSeveralMonths>lambdaQuery().orderByDesc(SingleMemberSettleAmountOverrunInSeveralMonths::getCreateTime));
+	}
+
+
+	/**
+	 * 同一用户,连续多月没有指定任务类型
+	 *
+	 * @return 风控结果
+	 */
+	@GetMapping(value = "/member/task-type")
+	public R<?> pageSingleMemberWithoutSuchTaskTypesInSeveralMonths(Page<SingleMemberWithoutSuchTaskTypesInSeveralMonths> page) {
+
+		singleMemberWithoutSuchTaskTypesInSeveralMonthsService.page(page, Wrappers.<SingleMemberWithoutSuchTaskTypesInSeveralMonths>lambdaQuery().orderByDesc(SingleMemberWithoutSuchTaskTypesInSeveralMonths::getCreateTime));
+		return R.ok(page);
+	}
+
+	/**
+	 * 同一用户,连续多月没有指定任务类型
+	 *
+	 * @return 风控结果
+	 */
+	@ResponseExcel(name = "SingleMemberWithoutSuchTaskTypesInSeveralMonths", sheet = "风控数据")
+	@GetMapping(value = "/member/task-type/export")
+	public List<SingleMemberWithoutSuchTaskTypesInSeveralMonths> exportSingleMemberWithoutSuchTaskTypesInSeveralMonths() {
+
+		return singleMemberWithoutSuchTaskTypesInSeveralMonthsService.list(Wrappers.<SingleMemberWithoutSuchTaskTypesInSeveralMonths>lambdaQuery().orderByDesc(SingleMemberWithoutSuchTaskTypesInSeveralMonths::getCreateTime));
+
+	}
+}

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

@@ -0,0 +1,9 @@
+package com.qunzhixinxi.hnqz.admin.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qunzhixinxi.hnqz.admin.api.entity.SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonthMapper extends BaseMapper<SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth> {
+}

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

@@ -0,0 +1,9 @@
+package com.qunzhixinxi.hnqz.admin.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qunzhixinxi.hnqz.admin.api.entity.SingleMemberSettleAmountOverrunInSeveralMonths;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface SingleMemberSettleAmountOverrunInSeveralMonthsMapper extends BaseMapper<SingleMemberSettleAmountOverrunInSeveralMonths> {
+}

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

@@ -0,0 +1,9 @@
+package com.qunzhixinxi.hnqz.admin.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qunzhixinxi.hnqz.admin.api.entity.SingleMemberSettleSameAmountInSeveralMonths;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface SingleMemberSettleSameAmountInSeveralMonthsMapper extends BaseMapper<SingleMemberSettleSameAmountInSeveralMonths> {
+}

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

@@ -0,0 +1,9 @@
+package com.qunzhixinxi.hnqz.admin.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qunzhixinxi.hnqz.admin.api.entity.SingleMemberWithoutSuchTaskTypesInSeveralMonths;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface SingleMemberWithoutSuchTaskTypesInSeveralMonthsMapper extends BaseMapper<SingleMemberWithoutSuchTaskTypesInSeveralMonths> {
+}

+ 8 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonthService.java

@@ -0,0 +1,8 @@
+package com.qunzhixinxi.hnqz.admin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qunzhixinxi.hnqz.admin.api.entity.SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth;
+
+
+public interface SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonthService extends IService<SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth> {
+}

+ 8 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/SingleMemberSettleAmountOverrunInSeveralMonthsService.java

@@ -0,0 +1,8 @@
+package com.qunzhixinxi.hnqz.admin.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qunzhixinxi.hnqz.admin.api.entity.SingleMemberSettleAmountOverrunInSeveralMonths;
+
+public interface SingleMemberSettleAmountOverrunInSeveralMonthsService extends IService<SingleMemberSettleAmountOverrunInSeveralMonths> {
+}

+ 7 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/SingleMemberSettleSameAmountInSeveralMonthsService.java

@@ -0,0 +1,7 @@
+package com.qunzhixinxi.hnqz.admin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qunzhixinxi.hnqz.admin.api.entity.SingleMemberSettleSameAmountInSeveralMonths;
+
+public interface SingleMemberSettleSameAmountInSeveralMonthsService extends IService<SingleMemberSettleSameAmountInSeveralMonths> {
+}

+ 7 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/SingleMemberWithoutSuchTaskTypesInSeveralMonthsService.java

@@ -0,0 +1,7 @@
+package com.qunzhixinxi.hnqz.admin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qunzhixinxi.hnqz.admin.api.entity.SingleMemberWithoutSuchTaskTypesInSeveralMonths;
+
+public interface SingleMemberWithoutSuchTaskTypesInSeveralMonthsService extends IService<SingleMemberWithoutSuchTaskTypesInSeveralMonths> {
+}

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

@@ -0,0 +1,16 @@
+package com.qunzhixinxi.hnqz.admin.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qunzhixinxi.hnqz.admin.api.entity.SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth;
+import com.qunzhixinxi.hnqz.admin.mapper.SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonthMapper;
+import com.qunzhixinxi.hnqz.admin.service.SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonthService;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+@Slf4j
+@Service
+@AllArgsConstructor
+public class SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonthServiceImpl extends ServiceImpl<SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonthMapper,
+		SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth> implements SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonthService {
+}

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

@@ -0,0 +1,17 @@
+package com.qunzhixinxi.hnqz.admin.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qunzhixinxi.hnqz.admin.api.entity.SingleMemberSettleAmountOverrunInSeveralMonths;
+import com.qunzhixinxi.hnqz.admin.mapper.SingleMemberSettleAmountOverrunInSeveralMonthsMapper;
+import com.qunzhixinxi.hnqz.admin.service.SingleMemberSettleAmountOverrunInSeveralMonthsService;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+@Slf4j
+@Service
+@AllArgsConstructor
+public class SingleMemberSettleAmountOverrunInSeveralMonthsServiceImpl
+		extends ServiceImpl<SingleMemberSettleAmountOverrunInSeveralMonthsMapper, SingleMemberSettleAmountOverrunInSeveralMonths>
+		implements SingleMemberSettleAmountOverrunInSeveralMonthsService {
+}

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

@@ -0,0 +1,16 @@
+package com.qunzhixinxi.hnqz.admin.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qunzhixinxi.hnqz.admin.api.entity.SingleMemberSettleSameAmountInSeveralMonths;
+import com.qunzhixinxi.hnqz.admin.mapper.SingleMemberSettleSameAmountInSeveralMonthsMapper;
+import com.qunzhixinxi.hnqz.admin.service.SingleMemberSettleSameAmountInSeveralMonthsService;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+@Slf4j
+@Service
+@AllArgsConstructor
+public class SingleMemberSettleSameAmountInSeveralMonthsServiceImpl extends ServiceImpl<SingleMemberSettleSameAmountInSeveralMonthsMapper,
+		SingleMemberSettleSameAmountInSeveralMonths> implements SingleMemberSettleSameAmountInSeveralMonthsService {
+}

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

@@ -0,0 +1,16 @@
+package com.qunzhixinxi.hnqz.admin.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qunzhixinxi.hnqz.admin.api.entity.SingleMemberWithoutSuchTaskTypesInSeveralMonths;
+import com.qunzhixinxi.hnqz.admin.mapper.SingleMemberWithoutSuchTaskTypesInSeveralMonthsMapper;
+import com.qunzhixinxi.hnqz.admin.service.SingleMemberWithoutSuchTaskTypesInSeveralMonthsService;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+@Slf4j
+@Service
+@AllArgsConstructor
+public class SingleMemberWithoutSuchTaskTypesInSeveralMonthsServiceImpl extends ServiceImpl<SingleMemberWithoutSuchTaskTypesInSeveralMonthsMapper,
+		SingleMemberWithoutSuchTaskTypesInSeveralMonths> implements SingleMemberWithoutSuchTaskTypesInSeveralMonthsService {
+}

+ 29 - 3
hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/controller/SysJobLogController.java

@@ -17,6 +17,8 @@
 
 
 package com.qunzhixinxi.hnqz.daemon.quartz.controller;
 package com.qunzhixinxi.hnqz.daemon.quartz.controller;
 
 
+import cn.hutool.core.util.ArrayUtil;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qunzhixinxi.hnqz.common.core.util.R;
 import com.qunzhixinxi.hnqz.common.core.util.R;
@@ -29,6 +31,10 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RestController;
 
 
+import java.time.LocalDateTime;
+import java.time.temporal.ChronoUnit;
+import java.util.concurrent.TimeUnit;
+
 /**
 /**
  * @author frwcloud
  * @author frwcloud
  * <p>
  * <p>
@@ -44,14 +50,34 @@ public class SysJobLogController {
 
 
 	/**
 	/**
 	 * 分页查询
 	 * 分页查询
-	 * @param page 分页对象
+	 *
+	 * @param page      分页对象
 	 * @param sysJobLog 定时任务执行日志表
 	 * @param sysJobLog 定时任务执行日志表
 	 * @return
 	 * @return
 	 */
 	 */
 	@GetMapping("/page")
 	@GetMapping("/page")
 	@ApiOperation(value = "分页定时任务日志查询")
 	@ApiOperation(value = "分页定时任务日志查询")
-	public R getSysJobLogPage(Page page, SysJobLog sysJobLog) {
-		return R.ok(sysJobLogService.page(page, Wrappers.query(sysJobLog)));
+	public R getSysJobLogPage(Page<SysJobLog> page, SysJobLog sysJobLog) {
+
+
+		sysJobLogService.page(page, Wrappers.<SysJobLog>lambdaQuery()
+				.in(SysJobLog::getJobId, 27, 28, 29, 30)
+				.like(StrUtil.isNotBlank(sysJobLog.getJobName()), SysJobLog::getJobName, sysJobLog.getJobName())
+				.eq(StrUtil.isNotBlank(sysJobLog.getJobLogStatus()), SysJobLog::getJobLogStatus, sysJobLog.getJobLogStatus())
+				.between(sysJobLog.getStartTime() != null && sysJobLog.getEndTime() != null, SysJobLog::getCreateTime, sysJobLog.getStartTime(), sysJobLog.getEndTime())
+				.orderByDesc(SysJobLog::getCreateTime)
+
+		);
+
+		page.getRecords().forEach(r -> {
+			LocalDateTime createTime = r.getCreateTime();
+			String executeTime = r.getExecuteTime();
+			int execTime = StrUtil.isBlank(executeTime)? 0 : Integer.parseInt(executeTime);
+			LocalDateTime plus = createTime.plus(execTime, ChronoUnit.MILLIS);
+			r.setEndTime(plus);
+		});
+
+		return R.ok(page);
 	}
 	}
 
 
 }
 }

+ 100 - 0
hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/entity/SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth.java

@@ -0,0 +1,100 @@
+package com.qunzhixinxi.hnqz.daemon.quartz.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+
+@Data
+@TableName(value = "single_ent_settle_same_amount_for_members_in_current_month")
+public class SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth implements Serializable {
+
+	private static final long serialVersionUID = -3597822678068222296L;
+
+	/**
+	 * 记录id
+	 */
+	@TableId(type = IdType.AUTO)
+	private Integer recordId;
+
+	/**
+	 * 结算记录id
+	 */
+	private Integer noteId;
+
+	/**
+	 * 真实名称
+	 */
+	private String realname;
+
+	/**
+	 * 身份证号
+	 */
+	private String IdNumber;
+
+	/**
+	 * 用户名
+	 */
+	private String username;
+
+	/**
+	 * 结算企业id
+	 */
+	private String deptId;
+
+	/**
+	 * 结算企业信息
+	 */
+	private String deptName;
+
+	/**
+	 * 结算金额
+	 */
+	private BigDecimal settleAmount;
+
+	/**
+	 * 提交结算时间
+	 */
+	private LocalDateTime subToGigTime;
+
+	/**
+	 * 结算状态
+	 */
+	private String settleState;
+
+	/**
+	 * 结算渠道名称
+	 */
+	private String subTypeName;
+
+	/**
+	 * 积分包名称
+	 */
+	private String packageName;
+
+	/**
+	 * 结算记录创建时间
+	 */
+	private String settleNoteCreateTime;
+
+	/**
+	 * 统计周期
+	 */
+	private Integer period;
+
+	/**
+	 * 风控人数
+	 */
+	private Integer memberCount;
+
+	/**
+	 * 记录创建时间
+	 */
+	private LocalDateTime createTime;
+
+}

+ 95 - 0
hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/entity/SingleMemberSettleAmountOverrunInSeveralMonths.java

@@ -0,0 +1,95 @@
+package com.qunzhixinxi.hnqz.daemon.quartz.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.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Data
+@TableName(value = "single_member_settle_amount_overrun_in_several_months")
+public class SingleMemberSettleAmountOverrunInSeveralMonths implements Serializable {
+
+	private static final long serialVersionUID = -3597822678068222296L;
+
+	/**
+	 * 记录id
+	 */
+	@TableId(type = IdType.AUTO)
+	private Integer recordId;
+
+	/**
+	 * 结算记录id
+	 */
+	private Integer noteId;
+
+	/**
+	 * 真实名称
+	 */
+	private String realname;
+
+	/**
+	 * 用户名
+	 */
+	private String username;
+
+	/**
+	 * 结算企业id
+	 */
+	private String deptId;
+
+	/**
+	 * 结算企业信息
+	 */
+	private String deptName;
+
+	/**
+	 * 结算金额
+	 */
+	private BigDecimal settleAmount;
+
+	/**
+	 * 提交结算时间
+	 */
+	private LocalDateTime subToGigTime;
+
+	/**
+	 * 结算状态
+	 */
+	private String settleState;
+
+	/**
+	 * 结算渠道名称
+	 */
+	private String subTypeName;
+
+	/**
+	 * 积分包名称
+	 */
+	private String packageName;
+
+	/**
+	 * 结算记录创建时间
+	 */
+	private String settleNoteCreateTime;
+
+	/**
+	 * 统计周期
+	 */
+	private Integer period;
+
+	/**
+	 * 结算限制
+	 */
+	private BigDecimal platformLimit;
+
+	/**
+	 * 记录创建时间
+	 */
+	private LocalDateTime createTime;
+
+}

+ 111 - 0
hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/entity/SingleMemberSettleSameAmountInSeveralMonths.java

@@ -0,0 +1,111 @@
+package com.qunzhixinxi.hnqz.daemon.quartz.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.Objects;
+
+
+@Data
+@TableName(value = "single_member_settle_same_amount_in_several_months")
+public class SingleMemberSettleSameAmountInSeveralMonths implements Serializable {
+
+	private static final long serialVersionUID = -3597822678068222296L;
+
+	/**
+	 * 记录id
+	 */
+	@TableId(type = IdType.AUTO)
+	private Integer recordId;
+
+	/**
+	 * 结算记录id
+	 */
+	private Integer noteId;
+
+	/**
+	 * 真实名称
+	 */
+	private String realname;
+
+	/**
+	 * 身份证号
+	 */
+	private String idNumber;
+
+	/**
+	 * 用户名
+	 */
+	private String username;
+
+	/**
+	 * 结算企业id
+	 */
+	private String deptId;
+
+	/**
+	 * 结算企业信息
+	 */
+	private String deptName;
+
+	/**
+	 * 结算金额
+	 */
+	private BigDecimal settleAmount;
+
+	/**
+	 * 提交结算时间
+	 */
+	private LocalDateTime subToGigTime;
+
+	/**
+	 * 结算状态
+	 */
+	private String settleState;
+
+	/**
+	 * 结算渠道名称
+	 */
+	private String subTypeName;
+
+	/**
+	 * 积分包名称
+	 */
+	private String packageName;
+
+	/**
+	 * 结算记录创建时间
+	 */
+	private String settleNoteCreateTime;
+
+	/**
+	 * 统计周期
+	 */
+	private Integer period;
+
+	/**
+	 * 记录创建时间
+	 */
+	private LocalDateTime createTime;
+
+	@Override
+	public boolean equals(Object o) {
+		if (this == o) return true;
+		if (o == null || getClass() != o.getClass()) return false;
+
+		SingleMemberSettleSameAmountInSeveralMonths that = (SingleMemberSettleSameAmountInSeveralMonths) o;
+
+		return Objects.equals(noteId, that.noteId);
+	}
+
+	@Override
+	public int hashCode() {
+		return noteId != null ? noteId.hashCode() : 0;
+	}
+}

+ 95 - 0
hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/entity/SingleMemberWithoutSuchTaskTypesInSeveralMonths.java

@@ -0,0 +1,95 @@
+package com.qunzhixinxi.hnqz.daemon.quartz.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+
+@Data
+@TableName(value = "single_member_without_such_task_types_in_several_months")
+public class SingleMemberWithoutSuchTaskTypesInSeveralMonths implements Serializable {
+
+	private static final long serialVersionUID = -3597822678068222296L;
+
+	/**
+	 * 记录id
+	 */
+	@TableId(type = IdType.AUTO)
+	private Integer recordId;
+
+	/**
+	 * 积分包id
+	 */
+	private Integer packageId;
+
+	/**
+	 * 用户id
+	 */
+	private Integer userId;
+
+	/**
+	 * 真实名称
+	 */
+	private String realname;
+
+	/**
+	 * 积分包名称
+	 */
+	private String packageName;
+
+	/**
+	 * 用户名
+	 */
+	private String username;
+
+	/**
+	 * 积分包状态
+	 */
+	private String status;
+
+	/**
+	 * 结算企业id
+	 */
+	private String deptId;
+
+	/**
+	 * 结算企业信息
+	 */
+	private String deptName;
+
+	/**
+	 * 积分包创建时间
+	 */
+	private LocalDateTime packageCreateTime;
+
+	/**
+	 * 积分包领取时间
+	 */
+	private LocalDateTime packagePickUpTime;
+
+	/**
+	 * 首个任务时间
+	 */
+	private LocalDateTime firstTaskTime;
+
+	/**
+	 * 统计周期
+	 */
+	private Integer period;
+
+	/**
+	 * 风控人数
+	 */
+	private String typeList;
+
+	/**
+	 * 记录创建时间
+	 */
+	private LocalDateTime createTime;
+
+}

+ 13 - 0
hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/entity/SysJobLog.java

@@ -18,6 +18,7 @@
 package com.qunzhixinxi.hnqz.daemon.quartz.entity;
 package com.qunzhixinxi.hnqz.daemon.quartz.entity;
 
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModel;
@@ -129,4 +130,16 @@ public class SysJobLog extends Model<SysJobLog> {
 	 */
 	 */
 	private Integer tenantId;
 	private Integer tenantId;
 
 
+	/**
+	 * 查询时间
+	 */
+	@TableField(exist = false)
+	private LocalDateTime startTime;
+
+	/**
+	 * 查询时间
+	 */
+	@TableField(exist = false)
+	private LocalDateTime endTime;
+
 }
 }

+ 9 - 0
hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/mapper/SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonthMapper.java

@@ -0,0 +1,9 @@
+package com.qunzhixinxi.hnqz.daemon.quartz.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qunzhixinxi.hnqz.daemon.quartz.entity.SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonthMapper extends BaseMapper<SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth> {
+}

+ 9 - 0
hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/mapper/SingleMemberSettleAmountOverrunInSeveralMonthsMapper.java

@@ -0,0 +1,9 @@
+package com.qunzhixinxi.hnqz.daemon.quartz.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qunzhixinxi.hnqz.daemon.quartz.entity.SingleMemberSettleAmountOverrunInSeveralMonths;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface SingleMemberSettleAmountOverrunInSeveralMonthsMapper extends BaseMapper<SingleMemberSettleAmountOverrunInSeveralMonths> {
+}

+ 9 - 0
hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/mapper/SingleMemberSettleSameAmountInSeveralMonthsMapper.java

@@ -0,0 +1,9 @@
+package com.qunzhixinxi.hnqz.daemon.quartz.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qunzhixinxi.hnqz.daemon.quartz.entity.SingleMemberSettleSameAmountInSeveralMonths;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface SingleMemberSettleSameAmountInSeveralMonthsMapper extends BaseMapper<SingleMemberSettleSameAmountInSeveralMonths> {
+}

+ 9 - 0
hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/mapper/SingleMemberWithoutSuchTaskTypesInSeveralMonthsMapper.java

@@ -0,0 +1,9 @@
+package com.qunzhixinxi.hnqz.daemon.quartz.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qunzhixinxi.hnqz.daemon.quartz.entity.SingleMemberWithoutSuchTaskTypesInSeveralMonths;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface SingleMemberWithoutSuchTaskTypesInSeveralMonthsMapper extends BaseMapper<SingleMemberWithoutSuchTaskTypesInSeveralMonths> {
+}

+ 8 - 0
hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/mapper/WmScorePackageMapper.java

@@ -19,7 +19,13 @@ package com.qunzhixinxi.hnqz.daemon.quartz.mapper;
 
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.qunzhixinxi.hnqz.daemon.quartz.entity.WmScorePackage;
 import com.qunzhixinxi.hnqz.daemon.quartz.entity.WmScorePackage;
+import org.apache.ibatis.annotations.MapKey;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 
 /**
 /**
  * 积分包
  * 积分包
@@ -30,4 +36,6 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 @Mapper
 public interface WmScorePackageMapper extends BaseMapper<WmScorePackage> {
 public interface WmScorePackageMapper extends BaseMapper<WmScorePackage> {
 
 
+	@MapKey(value = "packageId")
+    List<Map<String, Object>> listPackageInfo(@Param(value = "packageIds") Set<String> packageIds);
 }
 }

+ 8 - 4
hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/mapper/WmScorePackageSettleNoteMapper.java

@@ -16,7 +16,9 @@
  */
  */
 
 
 package com.qunzhixinxi.hnqz.daemon.quartz.mapper;
 package com.qunzhixinxi.hnqz.daemon.quartz.mapper;
+
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qunzhixinxi.hnqz.daemon.quartz.entity.SingleMemberSettleSameAmountInSeveralMonths;
 import com.qunzhixinxi.hnqz.daemon.quartz.entity.WmScorePackageSettleNote;
 import com.qunzhixinxi.hnqz.daemon.quartz.entity.WmScorePackageSettleNote;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
@@ -36,12 +38,14 @@ public interface WmScorePackageSettleNoteMapper extends BaseMapper<WmScorePackag
 	/**
 	/**
 	 * 查询指定部门对应的结算数据
 	 * 查询指定部门对应的结算数据
 	 *
 	 *
-	 * @param deptId 部门id
-	 * @param subType 结算渠道
+	 * @param deptId    部门id
+	 * @param subType   结算渠道
 	 * @param startTime 开始时间
 	 * @param startTime 开始时间
-	 * @param endTime 结束时间
+	 * @param endTime   结束时间
 	 * @return
 	 * @return
 	 */
 	 */
 	List<WmScorePackageSettleNote> listSettleAmountByDeptId(@Param("deptId") Integer deptId, @Param("subType") String subType,
 	List<WmScorePackageSettleNote> listSettleAmountByDeptId(@Param("deptId") Integer deptId, @Param("subType") String subType,
-														   @Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime);
+															@Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime);
+
+	List<SingleMemberSettleSameAmountInSeveralMonths> singleMemberSettleSameAmountInSeveralMonths(@Param(value = "startTime") LocalDateTime startTime, @Param(value = "endTime") LocalDateTime endTime);
 }
 }

+ 8 - 0
hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/mapper/WmTaskMapper.java

@@ -19,7 +19,12 @@ package com.qunzhixinxi.hnqz.daemon.quartz.mapper;
 
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.qunzhixinxi.hnqz.daemon.quartz.entity.WmTask;
 import com.qunzhixinxi.hnqz.daemon.quartz.entity.WmTask;
+import org.apache.ibatis.annotations.MapKey;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
 
 
 /**
 /**
  * 任务表
  * 任务表
@@ -30,4 +35,7 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 @Mapper
 public interface WmTaskMapper extends BaseMapper<WmTask> {
 public interface WmTaskMapper extends BaseMapper<WmTask> {
 
 
+	@MapKey(value = "userId")
+	List<Map<String, Object>> listUserInfo(@Param(value = "userIds") List<Integer> userIds);
+
 }
 }

+ 32 - 0
hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/service/WmScorePackageSettleNoteService.java

@@ -1,8 +1,10 @@
 package com.qunzhixinxi.hnqz.daemon.quartz.service;
 package com.qunzhixinxi.hnqz.daemon.quartz.service;
 
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qunzhixinxi.hnqz.daemon.quartz.entity.SingleMemberSettleSameAmountInSeveralMonths;
 import com.qunzhixinxi.hnqz.daemon.quartz.entity.WmScorePackageSettleNote;
 import com.qunzhixinxi.hnqz.daemon.quartz.entity.WmScorePackageSettleNote;
 
 
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.util.List;
 import java.util.List;
 
 
@@ -26,4 +28,34 @@ public interface WmScorePackageSettleNoteService extends IService<WmScorePackage
 	 * @return
 	 * @return
 	 */
 	 */
 	List<WmScorePackageSettleNote> listSettleAmountByDeptId(Integer deptId, String subType, LocalDateTime startTime, LocalDateTime endTime);
 	List<WmScorePackageSettleNote> listSettleAmountByDeptId(Integer deptId, String subType, LocalDateTime startTime, LocalDateTime endTime);
+
+	/**
+	 * 同一用户,连续多月结算金额相同
+	 *
+	 * @param startTime 开始时间
+	 * @param endTime   结束时间
+	 * @return 风控对象集合
+	 */
+	List<SingleMemberSettleSameAmountInSeveralMonths> singleMemberSettleSameAmountInSeveralMonths(LocalDateTime startTime, LocalDateTime endTime);
+
+
+	/**
+	 * 同一用户,连续多月结算金额超过限额
+	 *
+	 * @param startTime 开始时间
+	 * @param endTime   结束时间
+	 * @param limit     限额
+	 * @return 运行结果
+	 */
+	List<SingleMemberSettleSameAmountInSeveralMonths> singleMemberSettleAmountOverrunInSeveralMonths(LocalDateTime startTime, LocalDateTime endTime, BigDecimal limit);
+
+	/**
+	 * 同一企业,当前月给多个用户支付相同金额
+	 *
+	 * @param startTime   开始时间
+	 * @param endTime     结束时间
+	 * @param memberCount 统计个数
+	 * @return 风控对象
+	 */
+	List<SingleMemberSettleSameAmountInSeveralMonths> singleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth(LocalDateTime startTime, LocalDateTime endTime, int memberCount);
 }
 }

+ 6 - 0
hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/service/WmTaskService.java

@@ -20,6 +20,10 @@ package com.qunzhixinxi.hnqz.daemon.quartz.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qunzhixinxi.hnqz.daemon.quartz.entity.WmTask;
 import com.qunzhixinxi.hnqz.daemon.quartz.entity.WmTask;
 
 
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Map;
+
 /**
 /**
  * 任务表
  * 任务表
  *
  *
@@ -29,4 +33,6 @@ import com.qunzhixinxi.hnqz.daemon.quartz.entity.WmTask;
 public interface WmTaskService extends IService<WmTask> {
 public interface WmTaskService extends IService<WmTask> {
 
 
 	public boolean buildTaskImg(String param);
 	public boolean buildTaskImg(String param);
+
+	List<Map<String, Object>> singleMemberWithoutSuchTaskTypesInSeveralMonths(LocalDateTime startTime, LocalDateTime endTime, List<String> typeList);
 }
 }

+ 145 - 0
hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/service/impl/WmScorePackageSettleNoteServiceImpl.java

@@ -1,6 +1,9 @@
 package com.qunzhixinxi.hnqz.daemon.quartz.service.impl;
 package com.qunzhixinxi.hnqz.daemon.quartz.service.impl;
 
 
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DatePattern;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qunzhixinxi.hnqz.daemon.quartz.entity.SingleMemberSettleSameAmountInSeveralMonths;
 import com.qunzhixinxi.hnqz.daemon.quartz.entity.WmScorePackageSettleNote;
 import com.qunzhixinxi.hnqz.daemon.quartz.entity.WmScorePackageSettleNote;
 import com.qunzhixinxi.hnqz.daemon.quartz.mapper.WmScorePackageSettleNoteMapper;
 import com.qunzhixinxi.hnqz.daemon.quartz.mapper.WmScorePackageSettleNoteMapper;
 import com.qunzhixinxi.hnqz.daemon.quartz.service.WmScorePackageSettleNoteService;
 import com.qunzhixinxi.hnqz.daemon.quartz.service.WmScorePackageSettleNoteService;
@@ -8,8 +11,18 @@ import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 
 /**
 /**
  * {@code WmScorePackageSettleNoteServiceImpl} 类
  * {@code WmScorePackageSettleNoteServiceImpl} 类
@@ -39,4 +52,136 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 	public List<WmScorePackageSettleNote> listSettleAmountByDeptId(Integer deptId, String subType, LocalDateTime startTime, LocalDateTime endTime) {
 	public List<WmScorePackageSettleNote> listSettleAmountByDeptId(Integer deptId, String subType, LocalDateTime startTime, LocalDateTime endTime) {
 		return wmScorePackageSettleNoteMapper.listSettleAmountByDeptId(deptId, subType, startTime, endTime);
 		return wmScorePackageSettleNoteMapper.listSettleAmountByDeptId(deptId, subType, startTime, endTime);
 	}
 	}
+
+	/**
+	 * 同一用户,连续多月结算金额相同
+	 * <p>
+	 * 在A企业下,张三5月份结算了1000(加入是两个积分包500和500),六月份也结算了1000(400和600),这是连续两个月结算金额相同,应该把500、500、400、600四个积分包列出来
+	 * 同一个用户,同一个月结算相同金额不算
+	 *
+	 * @param startTime 开始时间
+	 * @param endTime   结束时间
+	 * @return
+	 */
+	@Override
+	public List<SingleMemberSettleSameAmountInSeveralMonths> singleMemberSettleSameAmountInSeveralMonths(LocalDateTime startTime, LocalDateTime endTime) {
+
+		List<SingleMemberSettleSameAmountInSeveralMonths> list = wmScorePackageSettleNoteMapper.singleMemberSettleSameAmountInSeveralMonths(startTime, endTime);
+
+		// 按照用户分组,然后按照月度分组
+		Map<String, Map<String, List<SingleMemberSettleSameAmountInSeveralMonths>>> collect = list.stream().collect(Collectors.groupingBy(SingleMemberSettleSameAmountInSeveralMonths::getIdNumber,
+				Collectors.groupingBy(e -> DateTimeFormatter.ofPattern(DatePattern.NORM_MONTH_PATTERN).format(LocalDateTime.parse(e.getSettleNoteCreateTime(), DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN))))));
+
+		List<SingleMemberSettleSameAmountInSeveralMonths> riskList = new ArrayList<>(list.size());
+
+		// 遍历结果
+		for (Map.Entry<String, Map<String, List<SingleMemberSettleSameAmountInSeveralMonths>>> entry : collect.entrySet()) {
+			// 如果 只有一个月结算自动跳过
+			if (entry.getValue().size() <= 1){
+				continue;
+			}
+			// 遍历个人
+			Map<BigDecimal, List<SingleMemberSettleSameAmountInSeveralMonths>> temp = new HashMap<>();
+			for (Map.Entry<String, List<SingleMemberSettleSameAmountInSeveralMonths>> ent : entry.getValue().entrySet()) {
+				// 计算每个月份的金额
+				Optional<BigDecimal> reduce = ent.getValue().stream().map(SingleMemberSettleSameAmountInSeveralMonths::getSettleAmount).filter(Objects::nonNull)
+						.reduce(BigDecimal::add);
+
+				if (!reduce.isPresent()) {
+					break;
+				}
+
+				// 判断是否有相同的金额
+				if (temp.containsKey(reduce.get())) {
+					riskList.addAll(temp.get(reduce.get()));
+					riskList.addAll(ent.getValue());
+				}
+				// 记录月份结算值
+				else {
+					temp.put(reduce.get(),ent.getValue());
+				}
+			}
+		}
+
+		return riskList;
+	}
+
+	/**
+	 * 同一用户,连续多月结算金额超过限额
+	 *
+	 * @param startTime 开始时间
+	 * @param endTime   结束时间
+	 * @param limit     限额
+	 * @return 运行结果
+	 */
+	@Override
+	public List<SingleMemberSettleSameAmountInSeveralMonths> singleMemberSettleAmountOverrunInSeveralMonths(LocalDateTime startTime, LocalDateTime endTime, BigDecimal limit) {
+		List<SingleMemberSettleSameAmountInSeveralMonths> list = wmScorePackageSettleNoteMapper.singleMemberSettleSameAmountInSeveralMonths(startTime, endTime);
+
+		Map<String, List<SingleMemberSettleSameAmountInSeveralMonths>> collect = list.stream().collect(Collectors.groupingBy(SingleMemberSettleSameAmountInSeveralMonths::getIdNumber));
+
+		List<SingleMemberSettleSameAmountInSeveralMonths> riskList = new ArrayList<>(list.size());
+
+		for (Map.Entry<String, List<SingleMemberSettleSameAmountInSeveralMonths>> entry : collect.entrySet()) {
+
+			List<SingleMemberSettleSameAmountInSeveralMonths> coll = entry.getValue().stream().filter(e -> e.getSettleAmount() != null).collect(Collectors.toList());
+
+			BigDecimal tmp = BigDecimal.ZERO;
+			for (SingleMemberSettleSameAmountInSeveralMonths e : coll) {
+				tmp = tmp.add(e.getSettleAmount());
+			}
+
+			if (limit.subtract(tmp).doubleValue() < 0.01) {
+				riskList.addAll(entry.getValue());
+			}
+		}
+
+		return riskList;
+	}
+
+	/**
+	 * 同一企业,当前月给多个用户支付相同金额
+	 * <p>
+	 * 统计逻辑通 singleMemberSettleSameAmountInSeveralMonths
+	 *
+	 * @param startTime   开始时间
+	 * @param endTime     结束时间
+	 * @param memberCount 统计个数
+	 * @return 风控对象
+	 */
+	@Override
+	public List<SingleMemberSettleSameAmountInSeveralMonths> singleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth(LocalDateTime startTime, LocalDateTime endTime, int memberCount) {
+		List<SingleMemberSettleSameAmountInSeveralMonths> list = wmScorePackageSettleNoteMapper.singleMemberSettleSameAmountInSeveralMonths(startTime, endTime);
+
+		// 按照企业分组,然后按照用户分组
+		Map<String, Map<String, List<SingleMemberSettleSameAmountInSeveralMonths>>> collect = list.stream().collect(Collectors.groupingBy(SingleMemberSettleSameAmountInSeveralMonths::getDeptId,
+				Collectors.groupingBy(SingleMemberSettleSameAmountInSeveralMonths::getIdNumber)));
+
+		Set<SingleMemberSettleSameAmountInSeveralMonths> riskResult = new HashSet<>(list.size());
+
+		// 遍历所有记录
+		for (Map.Entry<String, Map<String, List<SingleMemberSettleSameAmountInSeveralMonths>>> entry : collect.entrySet()) {
+			// 遍历所有人
+			Map<BigDecimal, List<SingleMemberSettleSameAmountInSeveralMonths>> temp = new HashMap<>();
+			for (Map.Entry<String, List<SingleMemberSettleSameAmountInSeveralMonths>> ent : entry.getValue().entrySet()) {
+				// 计算每个人的结算金额
+				Optional<BigDecimal> reduce = ent.getValue().stream().map(SingleMemberSettleSameAmountInSeveralMonths::getSettleAmount).filter(Objects::nonNull)
+						.reduce(BigDecimal::add);
+
+				if (!reduce.isPresent()) {
+					continue;
+				}
+
+				if (temp.containsKey(reduce.get())) {
+					riskResult.addAll(temp.get(reduce.get()));
+					riskResult.addAll(ent.getValue());
+				} else {
+					temp.put(reduce.get(), ent.getValue());
+				}
+
+			}
+
+		}
+		return new ArrayList<>(riskResult);
+	}
 }
 }

+ 47 - 1
hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/service/impl/WmTaskServiceImpl.java

@@ -16,23 +16,32 @@
  */
  */
 package com.qunzhixinxi.hnqz.daemon.quartz.service.impl;
 package com.qunzhixinxi.hnqz.daemon.quartz.service.impl;
 
 
+import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qunzhixinxi.hnqz.daemon.quartz.config.QuartzAppConfig;
 import com.qunzhixinxi.hnqz.daemon.quartz.config.QuartzAppConfig;
+import com.qunzhixinxi.hnqz.daemon.quartz.entity.WmScorePackage;
 import com.qunzhixinxi.hnqz.daemon.quartz.entity.WmTask;
 import com.qunzhixinxi.hnqz.daemon.quartz.entity.WmTask;
+import com.qunzhixinxi.hnqz.daemon.quartz.mapper.WmScorePackageMapper;
 import com.qunzhixinxi.hnqz.daemon.quartz.mapper.WmTaskMapper;
 import com.qunzhixinxi.hnqz.daemon.quartz.mapper.WmTaskMapper;
 import com.qunzhixinxi.hnqz.daemon.quartz.service.WmTaskService;
 import com.qunzhixinxi.hnqz.daemon.quartz.service.WmTaskService;
 import com.qunzhixinxi.hnqz.daemon.quartz.service.WmWkArticleService;
 import com.qunzhixinxi.hnqz.daemon.quartz.service.WmWkArticleService;
 import com.qunzhixinxi.hnqz.daemon.quartz.util.HttpPostUtil;
 import com.qunzhixinxi.hnqz.daemon.quartz.util.HttpPostUtil;
+import io.prometheus.client.Collector;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Arrays;
+import java.util.HashSet;
 import java.util.List;
 import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 
 /**
 /**
  * 任务表
  * 任务表
@@ -47,6 +56,7 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
 
 
 	private final QuartzAppConfig quartzAppConfig;
 	private final QuartzAppConfig quartzAppConfig;
 
 
+	private final WmScorePackageMapper wmScorePackageMapper;
 	private final List<Integer> taskTypeIdList = new ArrayList<>();
 	private final List<Integer> taskTypeIdList = new ArrayList<>();
 
 
 	{
 	{
@@ -69,7 +79,7 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
 		if (wmTaskList.size() > 0) {
 		if (wmTaskList.size() > 0) {
 			for (WmTask wmTask : wmTaskList) {
 			for (WmTask wmTask : wmTaskList) {
 				// 医院信息收集,商业公司信息收集,药店信息收集,医院信息修改,只导出审核通过的图片
 				// 医院信息收集,商业公司信息收集,药店信息收集,医院信息修改,只导出审核通过的图片
-				log.warn("当前任务:{},类型是:{},当前任务审核状态是:{}",wmTask.getId(),wmTask.getTaskTypeId(),wmTask.getPlatAuditStatus());
+				log.warn("当前任务:{},类型是:{},当前任务审核状态是:{}", wmTask.getId(), wmTask.getTaskTypeId(), wmTask.getPlatAuditStatus());
 				if (taskTypeIdList.contains(Integer.parseInt(wmTask.getTaskTypeId())) && !"1".equals(wmTask.getPlatAuditStatus())) {
 				if (taskTypeIdList.contains(Integer.parseInt(wmTask.getTaskTypeId())) && !"1".equals(wmTask.getPlatAuditStatus())) {
 					log.warn("过滤的任务类型id:【{}】", taskTypeIdList.toString());
 					log.warn("过滤的任务类型id:【{}】", taskTypeIdList.toString());
 					continue;
 					continue;
@@ -86,4 +96,40 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
 
 
 		return true;
 		return true;
 	}
 	}
+
+	@Override
+	public List<Map<String, Object>> singleMemberWithoutSuchTaskTypesInSeveralMonths(LocalDateTime startTime, LocalDateTime endTime, List<String> typeList) {
+		// 获取时间段内的所有任务
+		List<WmTask> list = this.list(Wrappers.<WmTask>lambdaQuery().between(WmTask::getCreateTime, startTime, endTime));
+
+		Map<String, Map<String, List<WmTask>>> collect = list.stream().collect(Collectors.groupingBy(WmTask::getTaskUserId, Collectors.groupingBy(WmTask::getTaskTypeId)));
+
+		Set<String> packageIds = new HashSet<>(collect.size());
+
+		for (Map.Entry<String, Map<String, List<WmTask>>> entry : collect.entrySet()) {
+
+			Set<String> typeIds = entry.getValue().keySet();
+
+			Set<String> result = new HashSet<>(typeList);
+			result.retainAll(typeIds);
+
+			if (result.isEmpty()) {
+				for (Map.Entry<String, List<WmTask>> e : entry.getValue().entrySet()){
+					Set<String> temp = e.getValue().stream().map(WmTask::getScorePackageId).collect(Collectors.toSet());
+					if (CollUtil.isNotEmpty(temp)){
+						packageIds.addAll(temp);
+					}
+				}
+			}
+		}
+
+		if (CollUtil.isEmpty(packageIds)) {
+			return null;
+		}
+
+		List<Map<String, Object>> packageInfo = wmScorePackageMapper.listPackageInfo(packageIds);
+		return packageInfo;
+
+
+	}
 }
 }

+ 271 - 2
hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/task/SpringBeanTaskDemo.java

@@ -17,17 +17,36 @@
 
 
 package com.qunzhixinxi.hnqz.daemon.quartz.task;
 package com.qunzhixinxi.hnqz.daemon.quartz.task;
 
 
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.bean.copier.CopyOptions;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.qunzhixinxi.hnqz.daemon.quartz.constants.HnqzQuartzEnum;
 import com.qunzhixinxi.hnqz.daemon.quartz.constants.HnqzQuartzEnum;
-import com.qunzhixinxi.hnqz.daemon.quartz.entity.WmTaskType;
+import com.qunzhixinxi.hnqz.daemon.quartz.entity.SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth;
+import com.qunzhixinxi.hnqz.daemon.quartz.entity.SingleMemberSettleAmountOverrunInSeveralMonths;
+import com.qunzhixinxi.hnqz.daemon.quartz.entity.SingleMemberSettleSameAmountInSeveralMonths;
+import com.qunzhixinxi.hnqz.daemon.quartz.entity.SingleMemberWithoutSuchTaskTypesInSeveralMonths;
+import com.qunzhixinxi.hnqz.daemon.quartz.entity.WmTask;
+import com.qunzhixinxi.hnqz.daemon.quartz.mapper.SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonthMapper;
+import com.qunzhixinxi.hnqz.daemon.quartz.mapper.SingleMemberSettleAmountOverrunInSeveralMonthsMapper;
+import com.qunzhixinxi.hnqz.daemon.quartz.mapper.SingleMemberSettleSameAmountInSeveralMonthsMapper;
+import com.qunzhixinxi.hnqz.daemon.quartz.mapper.SingleMemberWithoutSuchTaskTypesInSeveralMonthsMapper;
 import com.qunzhixinxi.hnqz.daemon.quartz.service.*;
 import com.qunzhixinxi.hnqz.daemon.quartz.service.*;
 import com.qunzhixinxi.hnqz.daemon.quartz.zhuqu.ZhuaquTest;
 import com.qunzhixinxi.hnqz.daemon.quartz.zhuqu.ZhuaquTest;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import lombok.SneakyThrows;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
-import org.springframework.web.bind.annotation.GetMapping;
 
 
+import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.temporal.TemporalAdjusters;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 
 /**
 /**
  * @author 郑健楠
  * @author 郑健楠
@@ -37,12 +56,17 @@ import java.time.LocalDateTime;
 @AllArgsConstructor
 @AllArgsConstructor
 public class SpringBeanTaskDemo {
 public class SpringBeanTaskDemo {
 	private final WmScorePackageStatusService wmScorePackageStatusService;
 	private final WmScorePackageStatusService wmScorePackageStatusService;
+	private final WmScorePackageSettleNoteService scorePackageSettleNoteService;
 	private final WmScorePackageService wmScorePackageService;
 	private final WmScorePackageService wmScorePackageService;
 	private final ZhuaquTest zhuaquTest;
 	private final ZhuaquTest zhuaquTest;
 	private final WmTaskTypeService wmTaskTypeService;
 	private final WmTaskTypeService wmTaskTypeService;
 	private final WmTaskService wmTaskService;
 	private final WmTaskService wmTaskService;
 	private final WmWkArticleService wmWkArticleService;
 	private final WmWkArticleService wmWkArticleService;
 	private final WmStatisticsService wmStatisticsService;
 	private final WmStatisticsService wmStatisticsService;
+	private final SingleMemberSettleSameAmountInSeveralMonthsMapper singleMemberSettleSameAmountInSeveralMonthsMapper;
+	private final SingleMemberSettleAmountOverrunInSeveralMonthsMapper singleMemberSettleAmountOverrunInSeveralMonthsMapper;
+	private final SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonthMapper singleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonthMapper;
+	private final SingleMemberWithoutSuchTaskTypesInSeveralMonthsMapper singleMemberWithoutSuchTaskTypesInSeveralMonthsMapper;
 
 
 //	/**
 //	/**
 //	 * 测试Spring Bean的演示方法
 //	 * 测试Spring Bean的演示方法
@@ -85,6 +109,7 @@ public class SpringBeanTaskDemo {
 
 
 	/**
 	/**
 	 * 每日GMVs统计
 	 * 每日GMVs统计
+	 *
 	 * @param para
 	 * @param para
 	 * @return
 	 * @return
 	 */
 	 */
@@ -102,7 +127,251 @@ public class SpringBeanTaskDemo {
 		return HnqzQuartzEnum.JOB_LOG_STATUS_SUCCESS.getType();
 		return HnqzQuartzEnum.JOB_LOG_STATUS_SUCCESS.getType();
 	}
 	}
 
 
+	/**
+	 * 同一用户,连续多月结算金额相同
+	 *
+	 * @param para 参数(月数)
+	 * @return 运行结果
+	 */
+	@SneakyThrows
+	public String singleMemberSettleSameAmountInSeveralMonths(String para) {
+		// 校验参数
+		if (StrUtil.isBlank(para)) {
+			log.error("参数缺失");
+			return HnqzQuartzEnum.JOB_LOG_STATUS_FAIL.getType();
+		}
+
+		int period = Integer.parseInt(para.trim());
+
+		if (period < 2) {
+			log.error("参数错误");
+			return HnqzQuartzEnum.JOB_LOG_STATUS_FAIL.getType();
+		}
+
+		// 计算查询时间
+		LocalDate now = LocalDateTime.now().toLocalDate().with(TemporalAdjusters.firstDayOfNextMonth());
+		LocalDateTime startTime = LocalDateTime.of(now.minusMonths(period), LocalTime.MIN);
+		LocalDateTime endTime = LocalDateTime.of(now, LocalTime.MIN).minusSeconds(1);
+
+		log.info("singleMemberSettleSameAmountInSeveralMonths开始于:{},输入参数{}", LocalDateTime.now(), para);
+
+		List<SingleMemberSettleSameAmountInSeveralMonths> result = scorePackageSettleNoteService.singleMemberSettleSameAmountInSeveralMonths(startTime, endTime);
+
+		if (CollUtil.isNotEmpty(result)) {
+			List<SingleMemberSettleSameAmountInSeveralMonths> history = singleMemberSettleSameAmountInSeveralMonthsMapper.selectList(Wrappers.<SingleMemberSettleSameAmountInSeveralMonths>lambdaQuery().between(SingleMemberSettleSameAmountInSeveralMonths::getCreateTime, LocalDateTime.of(LocalDate.now(), LocalTime.MIN), LocalDateTime.of(LocalDate.now(), LocalTime.MAX)));
+			// 删除历史记录
+			log.warn("删除当期的历史记录:{}", history);
+			if (CollUtil.isNotEmpty(history)) {
+				List<Integer> ids = history.stream().mapToInt(SingleMemberSettleSameAmountInSeveralMonths::getRecordId).boxed().collect(Collectors.toList());
+				singleMemberSettleSameAmountInSeveralMonthsMapper.deleteBatchIds(ids);
+			}
+
+			result.forEach(e -> {
+				e.setPeriod(period);
+				singleMemberSettleSameAmountInSeveralMonthsMapper.insert(e);
+			});
+		}
+
+		return HnqzQuartzEnum.JOB_LOG_STATUS_SUCCESS.getType();
+	}
+
+	/**
+	 * 同一用户,连续多月结算金额超过限额
+	 *
+	 * @param para 参数(月数和限额)
+	 * @return 运行结果
+	 */
+	@SneakyThrows
+	public String singleMemberSettleAmountOverrunInSeveralMonths(String para) {
+		// 校验参数
+		if (StrUtil.isBlank(para)) {
+			log.error("参数缺失");
+			return HnqzQuartzEnum.JOB_LOG_STATUS_FAIL.getType();
+		}
+
+		if (!para.contains(StrUtil.COMMA)) {
+			log.error("参数错误");
+			return HnqzQuartzEnum.JOB_LOG_STATUS_FAIL.getType();
+		}
+
+		List<String> params = StrUtil.split(para.trim(), StrUtil.COMMA);
+
+		if (params.size() != 2) {
+			log.error("参数错误");
+			return HnqzQuartzEnum.JOB_LOG_STATUS_FAIL.getType();
+		}
+
+		int period = Integer.parseInt(params.get(0));
+		BigDecimal limit = new BigDecimal(params.get(1));
+
+		if (period < 1 || limit.doubleValue() < 0.01) {
+			log.error("参数错误");
+			return HnqzQuartzEnum.JOB_LOG_STATUS_FAIL.getType();
+		}
+
+		// 计算查询时间
+		LocalDate now = LocalDateTime.now().toLocalDate().with(TemporalAdjusters.firstDayOfNextMonth());
+		LocalDateTime startTime = LocalDateTime.of(now.minusMonths(period), LocalTime.MIN);
+		LocalDateTime endTime = LocalDateTime.of(now, LocalTime.MIN).minusSeconds(1);
+
+		log.info("singleMemberSettleAmountOverrunInSeveralMonths开始于:{},输入参数{}", LocalDateTime.now(), para);
+
+		List<SingleMemberSettleSameAmountInSeveralMonths> result = scorePackageSettleNoteService.singleMemberSettleAmountOverrunInSeveralMonths(startTime, endTime, limit);
+
+		if (CollUtil.isNotEmpty(result)) {
+			List<SingleMemberSettleAmountOverrunInSeveralMonths> history = singleMemberSettleAmountOverrunInSeveralMonthsMapper.selectList(Wrappers.<SingleMemberSettleAmountOverrunInSeveralMonths>lambdaQuery().between(SingleMemberSettleAmountOverrunInSeveralMonths::getCreateTime, LocalDateTime.of(LocalDate.now(), LocalTime.MIN), LocalDateTime.of(LocalDate.now(), LocalTime.MAX)));
+			// 删除历史记录
+			log.warn("删除当期的历史记录:{}", history);
+			if (CollUtil.isNotEmpty(history)) {
+				List<Integer> ids = history.stream().mapToInt(SingleMemberSettleAmountOverrunInSeveralMonths::getRecordId).boxed().collect(Collectors.toList());
+				singleMemberSettleAmountOverrunInSeveralMonthsMapper.deleteBatchIds(ids);
+			}
+
+			result.forEach(e -> {
+				SingleMemberSettleAmountOverrunInSeveralMonths singleMemberSettleAmountOverrunInSeveralMonths
+						= BeanUtil.copyProperties(e, SingleMemberSettleAmountOverrunInSeveralMonths.class);
+				singleMemberSettleAmountOverrunInSeveralMonths.setPeriod(period);
+				singleMemberSettleAmountOverrunInSeveralMonths.setPlatformLimit(limit);
+				singleMemberSettleAmountOverrunInSeveralMonths.setCreateTime(LocalDateTime.now());
+				singleMemberSettleAmountOverrunInSeveralMonthsMapper.insert(singleMemberSettleAmountOverrunInSeveralMonths);
+			});
+		}
+
+		return HnqzQuartzEnum.JOB_LOG_STATUS_SUCCESS.getType();
+
+	}
+
+
+	/**
+	 * 同一企业,当前月给多个用户支付相同金额
+	 *
+	 * @param para 参数(统计人数)
+	 * @return 运行结果
+	 */
+	@SneakyThrows
+	public String singleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth(String para) {
+
+		// 校验参数
+		if (StrUtil.isBlank(para)) {
+			log.error("参数缺失");
+			return HnqzQuartzEnum.JOB_LOG_STATUS_FAIL.getType();
+		}
+
+		int memberCount = Integer.parseInt(para.trim());
+
+		if (memberCount <= 1) {
+			log.error("参数错误");
+			return HnqzQuartzEnum.JOB_LOG_STATUS_FAIL.getType();
+		}
+
+		// 计算查询时间
+		int period = 1;
+		LocalDate now = LocalDateTime.now().toLocalDate().with(TemporalAdjusters.firstDayOfNextMonth());
+		LocalDateTime startTime = LocalDateTime.of(now.minusMonths(period), LocalTime.MIN);
+		LocalDateTime endTime = LocalDateTime.of(now, LocalTime.MIN).minusSeconds(1);
+
+		log.info("singleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth开始于:{},输入参数{}", LocalDateTime.now(), para);
+
+		List<SingleMemberSettleSameAmountInSeveralMonths> result = scorePackageSettleNoteService.singleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth(startTime, endTime, memberCount);
+
+		if (CollUtil.isNotEmpty(result)) {
+			List<SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth> history = singleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonthMapper.selectList(Wrappers.<SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth>lambdaQuery().between(SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth::getCreateTime, LocalDateTime.of(LocalDate.now(), LocalTime.MIN), LocalDateTime.of(LocalDate.now(), LocalTime.MAX)));
+			// 删除历史记录
+			log.warn("删除当期的历史记录:{}", history);
+			if (CollUtil.isNotEmpty(history)) {
+				List<Integer> ids = history.stream().mapToInt(SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth::getRecordId).boxed().collect(Collectors.toList());
+				singleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonthMapper.deleteBatchIds(ids);
+			}
+
+			result.forEach(e -> {
+				SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth singleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth
+						= BeanUtil.copyProperties(e, SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth.class);
+				singleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth.setPeriod(period);
+				singleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth.setMemberCount(memberCount);
+				singleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth.setCreateTime(LocalDateTime.now());
+				singleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonthMapper.insert(singleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth);
+			});
+		}
+
+		return HnqzQuartzEnum.JOB_LOG_STATUS_SUCCESS.getType();
+
+	}
+
+
+	/**
+	 * 同一用户,连续多月没有指定任务类型
+	 *
+	 * @param para 参数(周期和任务类型)
+	 * @return 运行结果
+	 */
+	@SneakyThrows
+	public String singleMemberWithoutSuchTaskTypesInSeveralMonths(String para) {
 
 
+		// 校验参数
+		if (StrUtil.isBlank(para)) {
+			log.error("参数缺失");
+			return HnqzQuartzEnum.JOB_LOG_STATUS_FAIL.getType();
+		}
+
+		if (!para.contains(StrUtil.COMMA)) {
+			log.error("参数错误");
+			return HnqzQuartzEnum.JOB_LOG_STATUS_FAIL.getType();
+		}
+
+		List<String> params = StrUtil.split(para, StrUtil.COMMA);
+
+		if (params.size() < 2) {
+			log.error("参数错误");
+			return HnqzQuartzEnum.JOB_LOG_STATUS_FAIL.getType();
+		}
+
+		int period = Integer.parseInt(params.get(0));
+		if (period < 2) {
+			log.error("参数错误");
+			return HnqzQuartzEnum.JOB_LOG_STATUS_FAIL.getType();
+		}
+
+		List<String> typeList = params.subList(1, params.size());
+
+		// 计算查询时间
+		LocalDate now = LocalDateTime.now().toLocalDate().with(TemporalAdjusters.firstDayOfNextMonth());
+		LocalDateTime startTime = LocalDateTime.of(now.minusMonths(period), LocalTime.MIN);
+		LocalDateTime endTime = LocalDateTime.of(now, LocalTime.MIN).minusSeconds(1);
+
+		log.info("singleMemberWithoutSuchTaskTypesInSeveralMonths开始于:{},输入参数{}", LocalDateTime.now(), para);
+
+		List<Map<String, Object>> result = wmTaskService.singleMemberWithoutSuchTaskTypesInSeveralMonths(startTime, endTime, typeList);
+
+		if (CollUtil.isNotEmpty(result)) {
+			List<SingleMemberWithoutSuchTaskTypesInSeveralMonths> history = singleMemberWithoutSuchTaskTypesInSeveralMonthsMapper.selectList(Wrappers.<SingleMemberWithoutSuchTaskTypesInSeveralMonths>lambdaQuery().between(SingleMemberWithoutSuchTaskTypesInSeveralMonths::getCreateTime, LocalDateTime.of(LocalDate.now(), LocalTime.MIN), LocalDateTime.of(LocalDate.now(), LocalTime.MAX)));
+			// 删除历史记录
+			log.warn("删除当期的历史记录:{}", history);
+			if (CollUtil.isNotEmpty(history)) {
+				List<Integer> ids = history.stream().mapToInt(SingleMemberWithoutSuchTaskTypesInSeveralMonths::getRecordId).boxed().collect(Collectors.toList());
+				singleMemberWithoutSuchTaskTypesInSeveralMonthsMapper.deleteBatchIds(ids);
+			}
+
+			String types = String.join(StrUtil.COMMA, typeList.toArray(new String[0]));
+
+			result.forEach(e -> {
+				SingleMemberWithoutSuchTaskTypesInSeveralMonths singleMemberWithoutSuchTaskTypesInSeveralMonths
+						= BeanUtil.mapToBean(e, SingleMemberWithoutSuchTaskTypesInSeveralMonths.class,true, new CopyOptions());
+
+				List<WmTask> list = wmTaskService.list(Wrappers.<WmTask>lambdaQuery().eq(WmTask::getScorePackageId, e.get(singleMemberWithoutSuchTaskTypesInSeveralMonths.getPackageId())).orderByDesc(WmTask::getCreateTime));
+
+				if (CollUtil.isNotEmpty(list)){
+					singleMemberWithoutSuchTaskTypesInSeveralMonths.setFirstTaskTime(list.get(0).getCreateTime());
+				}
+				singleMemberWithoutSuchTaskTypesInSeveralMonths.setPeriod(period);
+				singleMemberWithoutSuchTaskTypesInSeveralMonths.setTypeList(types);
+				singleMemberWithoutSuchTaskTypesInSeveralMonths.setCreateTime(LocalDateTime.now());
+				singleMemberWithoutSuchTaskTypesInSeveralMonthsMapper.insert(singleMemberWithoutSuchTaskTypesInSeveralMonths);
+			});
+		}
+
+		return HnqzQuartzEnum.JOB_LOG_STATUS_SUCCESS.getType();
+
+	}
 
 
 
 
 }
 }

+ 1 - 0
hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/util/SpringBeanTaskInvok.java

@@ -72,6 +72,7 @@ public class SpringBeanTaskInvok implements ITaskInvok {
 		}
 		}
 		catch (InvocationTargetException e) {
 		catch (InvocationTargetException e) {
 			log.error("定时任务spring bean反射执行异常,执行任务:{}", sysJob.getClassName());
 			log.error("定时任务spring bean反射执行异常,执行任务:{}", sysJob.getClassName());
+			e.printStackTrace();
 			throw new TaskException("定时任务spring bean反射执行异常,执行任务:" + sysJob.getClassName());
 			throw new TaskException("定时任务spring bean反射执行异常,执行任务:" + sysJob.getClassName());
 		}
 		}
 	}
 	}

+ 60 - 31
hnqz-visual/hnqz-daemon-quartz/src/main/resources/mapper/WmScorePackageMapper.xml

@@ -23,35 +23,64 @@
 
 
 <mapper namespace="com.qunzhixinxi.hnqz.daemon.quartz.mapper.WmScorePackageMapper">
 <mapper namespace="com.qunzhixinxi.hnqz.daemon.quartz.mapper.WmScorePackageMapper">
 
 
-  <resultMap id="wmScorePackageMap" type="com.qunzhixinxi.hnqz.daemon.quartz.entity.WmScorePackage">
-                  <id property="id" column="id"/>
-                        <result property="taskRuleId" column="task_rule_id"/>
-                        <result property="drugEntId" column="drug_ent_id"/>
-                        <result property="scoreId" column="score_id"/>
-                        <result property="scoreName" column="score_name"/>
-                        <result property="score" column="score"/>
-                        <result property="agentTypeId" column="agent_type_id"/>
-                        <result property="level1Id" column="level1_id"/>
-                        <result property="level2Id" column="level2_id"/>
-                        <result property="zbId" column="zb_id"/>
-                        <result property="xxdbId" column="xxdb_id"/>
-                        <result property="typeid" column="typeid"/>
-                        <result property="packageStatus" column="package_status"/>
-                        <result property="packageFinishStatus" column="package_finish_status"/>
-                        <result property="sendPackageDeptId" column="send_package_dept_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="ytj" column="ytj"/>
-                        <result property="ysh" column="ysh"/>
-                        <result property="dsh" column="dsh"/>
-                        <result property="ytjtt" column="ytjtt"/>
-                        <result property="ywctt" column="ywctt"/>
-                        <result property="yshtt" column="yshtt"/>
-            </resultMap>
+	<resultMap id="wmScorePackageMap" type="com.qunzhixinxi.hnqz.daemon.quartz.entity.WmScorePackage">
+		<id property="id" column="id"/>
+		<result property="taskRuleId" column="task_rule_id"/>
+		<result property="drugEntId" column="drug_ent_id"/>
+		<result property="scoreId" column="score_id"/>
+		<result property="scoreName" column="score_name"/>
+		<result property="score" column="score"/>
+		<result property="agentTypeId" column="agent_type_id"/>
+		<result property="level1Id" column="level1_id"/>
+		<result property="level2Id" column="level2_id"/>
+		<result property="zbId" column="zb_id"/>
+		<result property="xxdbId" column="xxdb_id"/>
+		<result property="typeid" column="typeid"/>
+		<result property="packageStatus" column="package_status"/>
+		<result property="packageFinishStatus" column="package_finish_status"/>
+		<result property="sendPackageDeptId" column="send_package_dept_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="ytj" column="ytj"/>
+		<result property="ysh" column="ysh"/>
+		<result property="dsh" column="dsh"/>
+		<result property="ytjtt" column="ytjtt"/>
+		<result property="ywctt" column="ywctt"/>
+		<result property="yshtt" column="yshtt"/>
+	</resultMap>
+
+	<select id="listPackageInfo" resultType="map">
+		SELECT sp.id AS `packageId`,
+		u.user_id AS `userId`,
+		u.username,
+		u.realname,
+		sp.score_package_name AS `packageName`,
+		CASE sp.score_package_status
+		WHEN 1 THEN '审核中'
+		WHEN 2 THEN '审核通过'
+		WHEN 3 THEN '审核不通过'
+		WHEN 4 THEN '终止'
+		END `status`,
+		sd.name AS `deptName`,
+		sd.dept_id AS `deptId`,
+		sp.create_time AS `packageCreateTime`,
+		sps.create_time AS `packagePickUpTime`
+		FROM wm_score_package sp
+		LEFT JOIN wm_score_package_status sps ON sp.id = sps.package_id
+		LEFT JOIN sys_user u ON sps.user_id = u.user_id
+		LEFT JOIN sys_dept sd ON sp.send_package_dept_id = sd.dept_id
+		<where>
+
+			sp.id IN
+			<foreach collection="packageIds" index="idx" item="id" separator="," open="(" close=")">
+				#{id}
+			</foreach>
+		</where>
+	</select>
 </mapper>
 </mapper>

+ 54 - 2
hnqz-visual/hnqz-daemon-quartz/src/main/resources/mapper/WmScorePackageSettleNoteMapper.xml

@@ -3,7 +3,8 @@
 
 
 <mapper namespace="com.qunzhixinxi.hnqz.daemon.quartz.mapper.WmScorePackageSettleNoteMapper">
 <mapper namespace="com.qunzhixinxi.hnqz.daemon.quartz.mapper.WmScorePackageSettleNoteMapper">
 
 
-	<resultMap id="wmScorePackageSettleNoteMap" type="com.qunzhixinxi.hnqz.daemon.quartz.entity.WmScorePackageSettleNote">
+	<resultMap id="wmScorePackageSettleNoteMap"
+			   type="com.qunzhixinxi.hnqz.daemon.quartz.entity.WmScorePackageSettleNote">
 		<id property="id" column="id"/>
 		<id property="id" column="id"/>
 		<result property="packageId" column="package_id"/>
 		<result property="packageId" column="package_id"/>
 		<result property="packageStatusId" column="package_status_id"/>
 		<result property="packageStatusId" column="package_status_id"/>
@@ -25,11 +26,27 @@
 		<result property="subType" column="sub_type"/>
 		<result property="subType" column="sub_type"/>
 	</resultMap>
 	</resultMap>
 
 
+	<resultMap id="singleMemberSettleSameAmountInSeveralMonthsMap"
+			   type="com.qunzhixinxi.hnqz.daemon.quartz.entity.SingleMemberSettleSameAmountInSeveralMonths">
+		<id property="noteId" column="id"/>
+		<result property="realname" column="realname"/>
+		<result property="username" column="username"/>
+		<result property="idNumber" column="id_number"/>
+		<result property="deptId" column="dept_id"/>
+		<result property="deptName" column="dept_name"/>
+		<result property="settleAmount" column="settle_amount"/>
+		<result property="subToGigTime" column="sub_to_gig_time"/>
+		<result property="settleState" column="settle_note_status"/>
+		<result property="subTypeName" column="sub_type"/>
+		<result property="packageName" column="score_package_name"/>
+		<result property="settleNoteCreateTime" column="create_time"/>
+	</resultMap>
+
 	<!-- 查询指定部门对应的结算数据 -->
 	<!-- 查询指定部门对应的结算数据 -->
 	<select id="listSettleAmountByDeptId" resultMap="wmScorePackageSettleNoteMap">
 	<select id="listSettleAmountByDeptId" resultMap="wmScorePackageSettleNoteMap">
 		SELECT n.settle_amount
 		SELECT n.settle_amount
 		FROM wm_score_package_settle_note n
 		FROM wm_score_package_settle_note n
-				 LEFT JOIN wm_score_package p on p.id = n.package_id
+				 LEFT JOIN wm_score_package p ON p.id = n.package_id
 		WHERE n.settle_note_status = 1
 		WHERE n.settle_note_status = 1
 		  AND n.settle_amount IS NOT NULL
 		  AND n.settle_amount IS NOT NULL
 		  AND p.send_package_dept_id = #{deptId}
 		  AND p.send_package_dept_id = #{deptId}
@@ -37,4 +54,39 @@
 		  AND n.notify_time BETWEEN #{startTime} AND #{endTime}
 		  AND n.notify_time BETWEEN #{startTime} AND #{endTime}
 	</select>
 	</select>
 
 
+	<select id="singleMemberSettleSameAmountInSeveralMonths" resultMap="singleMemberSettleSameAmountInSeveralMonthsMap">
+		SELECT wspsn.id,
+			   su.realname,
+			   su.username,
+		       su.id_card_number AS `id_number`,
+			   sd.dept_id,
+			   sd.name AS `dept_name`,
+			   wspsn.settle_amount,
+			   wspsn.sub_to_gig_time,
+			   CASE wspsn.settle_note_status
+				   WHEN 1 THEN '结算成功'
+				   WHEN 2 THEN '结算失败'
+				   WHEN 3 THEN '已提交'
+				   WHEN 4 THEN '未结算'
+				   WHEN 5 THEN '部分成功'
+				   WHEN 8 THEN '结算成功(线下)'
+				   WHEN 9 THEN '待结算'
+				   END AS `settle_note_status`,
+			   CASE wspsn.sub_type
+				   WHEN 0 THEN '仁励家'
+				   WHEN 1 THEN '税邦云'
+				   WHEN 2 THEN '自由职家'
+				   END AS `sub_type`,
+			   sp.score_package_name,
+			   wspsn.create_time
+		FROM wm_score_package_settle_note wspsn
+				 LEFT JOIN sys_user su ON wspsn.user_id = su.user_id
+				 LEFT JOIN wm_score_package sp ON sp.id = wspsn.package_id
+				 LEFT JOIN sys_dept sd ON sd.dept_id = sp.dept_id
+		WHERE (wspsn.create_time BETWEEN #{startTime} AND #{endTime})
+		  AND sd.name NOT IN ('上海问云生物科技有限公司', '北京遥领医疗科技有限公司')
+		  AND wspsn.settle_note_status = 1
+		ORDER BY wspsn.user_id ASC, wspsn.create_time DESC
+	</select>
+
 </mapper>
 </mapper>

+ 51 - 32
hnqz-visual/hnqz-daemon-quartz/src/main/resources/mapper/WmTaskMapper.xml

@@ -23,36 +23,55 @@
 
 
 <mapper namespace="com.qunzhixinxi.hnqz.daemon.quartz.mapper.WmTaskMapper">
 <mapper namespace="com.qunzhixinxi.hnqz.daemon.quartz.mapper.WmTaskMapper">
 
 
-  <resultMap id="wmTaskMap" type="com.qunzhixinxi.hnqz.daemon.quartz.entity.WmTask">
-                  <id property="id" column="id"/>
-                        <result property="taskRuleId" column="task_rule_id"/>
-                        <result property="score" column="score"/>
-                        <result property="scorePackageDrugId" column="score_package_drug_id"/>
-                        <result property="scorePackageLevel1Id" column="score_package_level1_id"/>
-                        <result property="scorePackageId" column="score_package_id"/>
-                        <result property="taskTypeId" column="task_type_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="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="submitStatus" column="submit_status"/>
-                        <result property="shareImgUrl" column="share_img_url"/>
-                        <result property="platAuditStatus" column="plat_audit_status"/>
-	  					<result property="taskInfoImg" column="task_info_img"/>
-            </resultMap>
+	<resultMap id="wmTaskMap" type="com.qunzhixinxi.hnqz.daemon.quartz.entity.WmTask">
+		<id property="id" column="id"/>
+		<result property="taskRuleId" column="task_rule_id"/>
+		<result property="score" column="score"/>
+		<result property="scorePackageDrugId" column="score_package_drug_id"/>
+		<result property="scorePackageLevel1Id" column="score_package_level1_id"/>
+		<result property="scorePackageId" column="score_package_id"/>
+		<result property="taskTypeId" column="task_type_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="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="submitStatus" column="submit_status"/>
+		<result property="shareImgUrl" column="share_img_url"/>
+		<result property="platAuditStatus" column="plat_audit_status"/>
+		<result property="taskInfoImg" column="task_info_img"/>
+	</resultMap>
+
+
+	<select id="listUserInfo" resultType="map">
+		SELECT u.user_id AS `userId`,
+		u.username,
+		u.realname,
+		sd.dept_id AS `deptId`,
+		sd.name AS `deptName`
+		FROM sys_user u
+		LEFT JOIN sys_dept sd ON u.dept_id = sd.dept_id
+		<where>
+			sd.name NOT IN ('上海问云生物科技有限公司', '北京遥领医疗科技有限公司')
+			AND u.user_id IN
+			<foreach collection="userIds" item="id" index="idx" separator="," open="(" close=")">
+				#{id}
+			</foreach>
+		</where>
+
+	</select>
 </mapper>
 </mapper>