瀏覽代碼

feat: 任务频次限制

shc 2 年之前
父節點
當前提交
94fddf00dd

+ 41 - 0
db/v2.1/1wm_task_sub_rule.sql

@@ -0,0 +1,41 @@
+USE hnqzx;
+
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+-- ----------------------------
+-- Table structure for wm_task_sub_rule
+-- ----------------------------
+DROP TABLE IF EXISTS `wm_task_sub_rule`;
+CREATE TABLE `wm_task_sub_rule`
+(
+    `rule_id`     INT(20)     NOT NULL AUTO_INCREMENT COMMENT '规则ID',
+    `dept_id`     INT(20)     NOT NULL COMMENT '企业id',
+    `sub_cate`    VARCHAR(32) NOT NULL COMMENT '次级分类',
+    `sub_rule`    JSON COMMENT '规则',
+    `opt_flag`    VARCHAR(32) NOT NULL COMMENT '操作标记',
+    `create_time` DATETIME    NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+    `update_time` DATETIME    NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
+    PRIMARY KEY (`rule_id`) USING BTREE,
+    INDEX `idx_dept_id` (`dept_id`) USING BTREE,
+    INDEX `idx_sub_cate` (`sub_cate`) USING BTREE
+) ENGINE = InnoDB
+  DEFAULT CHARSET = utf8mb4 COMMENT ='任务提交规则表';
+
+-- ----------------------------
+-- Records of wm_task_sub_rule
+-- ----------------------------
+BEGIN;
+INSERT INTO wm_task_sub_rule (rule_id, dept_id, sub_cate, sub_rule, opt_flag, create_time, update_time) VALUES (1, 1, 'PRODUCT_ALBUM', '[{"manual": "同一个人对同一个相册的转发上限", "frequency": [{"quantity": 20, "timeUnit": "DAY", "separator": "/"}]}]', 'OK', '2022-08-15 18:18:53', '2022-08-15 18:18:53');
+INSERT INTO wm_task_sub_rule (rule_id, dept_id, sub_cate, sub_rule, opt_flag, create_time, update_time) VALUES (2, 1, 'ACADEMIC_INFO_EXCHANGE', '[{"manual": "同一个人对同一篇文章的转发上限", "frequency": [{"quantity": 20, "timeUnit": "DAY", "separator": "/"}]}]', 'OK', '2022-08-15 18:18:53', '2022-08-15 18:18:53');
+INSERT INTO wm_task_sub_rule (rule_id, dept_id, sub_cate, sub_rule, opt_flag, create_time, update_time) VALUES (3, 1, 'CONFERENCE', '[{"manual": "任务有效期限", "frequency": [{"quantity": 30, "timeUnit": "DAY", "separator": "/"}]}, {"manual": "举办次数上限", "frequency": [{"quantity": 2, "timeUnit": "DAY", "separator": "/"}]}]', 'OK', '2022-08-15 18:18:53', '2022-08-15 18:18:53');
+INSERT INTO wm_task_sub_rule (rule_id, dept_id, sub_cate, sub_rule, opt_flag, create_time, update_time) VALUES (4, 1, 'ONE_ON_ONE_INTERVIEW', '[{"manual": "任务有效期限", "frequency": [{"quantity": 30, "timeUnit": "DAY", "separator": ""}]}, {"manual": "举办次数上限", "frequency": [{"quantity": 2, "timeUnit": "DAY", "separator": "/"}]}]', 'OK', '2022-08-15 18:18:53', '2022-08-15 18:18:53');
+INSERT INTO wm_task_sub_rule (rule_id, dept_id, sub_cate, sub_rule, opt_flag, create_time, update_time) VALUES (5, 1, 'TRAINING', '[{"manual": "任务有效期限", "frequency": [{"quantity": 30, "timeUnit": "DAY", "separator": ""}]}, {"manual": "举办次数上限", "frequency": [{"quantity": 2, "timeUnit": "DAY", "separator": "/"}]}]', 'OK', '2022-08-15 18:18:53', '2022-08-15 18:18:53');
+INSERT INTO wm_task_sub_rule (rule_id, dept_id, sub_cate, sub_rule, opt_flag, create_time, update_time) VALUES (6, 1, 'BUSINESS_COMPANY_VISIT', '[{"manual": "打卡时间间隔", "frequency": [{"quantity": 30, "timeUnit": "MINUTE", "separator": ""}]}, {"manual": "同一个人在同一个商业公司的打卡时间间隔", "frequency": [{"quantity": 4, "timeUnit": "HOUR", "separator": ""}]}]', 'OK', '2022-08-15 18:18:53', '2022-08-15 18:18:53');
+INSERT INTO wm_task_sub_rule (rule_id, dept_id, sub_cate, sub_rule, opt_flag, create_time, update_time) VALUES (7, 1, 'HOSPITAL_VISIT', '[{"manual": "打卡时间间隔", "frequency": [{"quantity": 30, "timeUnit": "MINUTE", "separator": ""}]}, {"manual": "同一个人在同一家医院的打卡时间间隔", "frequency": [{"quantity": 4, "timeUnit": "HOUR", "separator": ""}]}]', 'OK', '2022-08-15 18:18:53', '2022-08-15 18:18:53');
+INSERT INTO wm_task_sub_rule (rule_id, dept_id, sub_cate, sub_rule, opt_flag, create_time, update_time) VALUES (8, 1, 'PHARMACY_VISIT', '[{"manual": "打卡时间间隔", "frequency": [{"quantity": 30, "timeUnit": "MINUTE", "separator": ""}]}, {"manual": "同一个人在同一家药店的打卡时间间隔", "frequency": [{"quantity": 4, "timeUnit": "HOUR", "separator": ""}]}]', 'OK', '2022-08-15 18:18:53', '2022-08-15 18:18:53');
+INSERT INTO wm_task_sub_rule (rule_id, dept_id, sub_cate, sub_rule, opt_flag, create_time, update_time) VALUES (9, 1, 'INVENTORY_INFO_COLLECTION', '[{"manual": "任务上限", "frequency": [{"quantity": 3, "timeUnit": "DAY", "separator": "/"}]}]', 'OK', '2022-08-15 18:18:53', '2022-08-15 18:18:53');
+INSERT INTO wm_task_sub_rule (rule_id, dept_id, sub_cate, sub_rule, opt_flag, create_time, update_time) VALUES (10, 1, 'HOSPITAL_INFO_COLLECTION', '[{"manual": "同一家医院的修改次数上限", "frequency": [{"quantity": 3, "timeUnit": "MONTH", "separator": "/"}]}, {"manual": "同一个人对同一家医院的修改次数上限", "frequency": [{"quantity": 1, "timeUnit": "MONTH", "separator": "/"}]}]', 'OK', '2022-08-15 18:18:53', '2022-08-15 18:18:53');
+COMMIT;
+
+SET FOREIGN_KEY_CHECKS = 1;

+ 46 - 0
db/v2.1/2wm_task_type_sub_cate.sql

@@ -0,0 +1,46 @@
+USE hnqzx;
+
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+-- ----------------------------
+-- Table structure for wm_task_type_sub_cate
+-- ----------------------------
+DROP TABLE IF EXISTS `wm_task_type_sub_cate`;
+CREATE TABLE `wm_task_type_sub_cate`
+(
+    `ttsc_id`     INT(20)     NOT NULL AUTO_INCREMENT COMMENT '规则ID',
+    `type_id`     INT(20)     NOT NULL COMMENT '企业id',
+    `type_name`   VARCHAR(32) NOT NULL COMMENT '任务名称',
+    `sub_cate`    VARCHAR(32) NOT NULL COMMENT '次级分类',
+    `create_time` DATETIME    NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+    `update_time` DATETIME    NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
+    PRIMARY KEY (`ttsc_id`) USING BTREE,
+    INDEX `idx_dept_id` (`type_id`) USING BTREE,
+    INDEX `idx_sub_cate` (`sub_cate`) USING BTREE
+) ENGINE = InnoDB
+  DEFAULT CHARSET = utf8mb4 COMMENT ='任务提交规则表';
+
+-- ----------------------------
+-- Records of wm_task_type_sub_cate
+-- ----------------------------
+BEGIN;
+INSERT INTO wm_task_type_sub_cate (ttsc_id, type_id, type_name, sub_cate, create_time, update_time) VALUES (1, 1, '医院科室推广会', 'CONFERENCE', '2022-08-17 17:11:16', '2022-08-17 17:11:16');
+INSERT INTO wm_task_type_sub_cate (ttsc_id, type_id, type_name, sub_cate, create_time, update_time) VALUES (2, 2, '区域学术沙龙', 'CONFERENCE', '2022-08-17 17:11:16', '2022-08-17 17:11:16');
+INSERT INTO wm_task_type_sub_cate (ttsc_id, type_id, type_name, sub_cate, create_time, update_time) VALUES (3, 3, '城市卫星会', 'CONFERENCE', '2022-08-17 17:11:16', '2022-08-17 17:11:16');
+INSERT INTO wm_task_type_sub_cate (ttsc_id, type_id, type_name, sub_cate, create_time, update_time) VALUES (4, 4, '省级学科年会', 'CONFERENCE', '2022-08-17 17:11:16', '2022-08-17 17:11:16');
+INSERT INTO wm_task_type_sub_cate (ttsc_id, type_id, type_name, sub_cate, create_time, update_time) VALUES (5, 5, '医院拜访', 'HOSPITAL_VISIT', '2022-08-17 17:11:16', '2022-08-17 17:11:16');
+INSERT INTO wm_task_type_sub_cate (ttsc_id, type_id, type_name, sub_cate, create_time, update_time) VALUES (6, 6, '商业公司拜访', 'BUSINESS_COMPANY_VISIT', '2022-08-17 17:11:17', '2022-08-17 17:11:17');
+INSERT INTO wm_task_type_sub_cate (ttsc_id, type_id, type_name, sub_cate, create_time, update_time) VALUES (7, 8, '产品相册分享', 'PRODUCT_ALBUM', '2022-08-17 17:11:17', '2022-08-17 17:11:17');
+INSERT INTO wm_task_type_sub_cate (ttsc_id, type_id, type_name, sub_cate, create_time, update_time) VALUES (8, 9, '学术信息交流', 'PRODUCT_ALBUM', '2022-08-17 17:11:17', '2022-08-17 17:11:17');
+INSERT INTO wm_task_type_sub_cate (ttsc_id, type_id, type_name, sub_cate, create_time, update_time) VALUES (9, 10, '受众阅读文章', 'PRODUCT_ALBUM', '2022-08-17 17:11:17', '2022-08-17 17:11:17');
+INSERT INTO wm_task_type_sub_cate (ttsc_id, type_id, type_name, sub_cate, create_time, update_time) VALUES (10, 11, '受众打开产品相册', 'PRODUCT_ALBUM', '2022-08-17 17:11:17', '2022-08-17 17:11:17');
+INSERT INTO wm_task_type_sub_cate (ttsc_id, type_id, type_name, sub_cate, create_time, update_time) VALUES (11, 19, '一对一专访', 'ONE_ON_ONE_INTERVIEW', '2022-08-17 17:11:17', '2022-08-17 17:11:17');
+INSERT INTO wm_task_type_sub_cate (ttsc_id, type_id, type_name, sub_cate, create_time, update_time) VALUES (12, 30, '医院信息修改', 'HOSPITAL_INFO_COLLECTION', '2022-08-17 17:11:17', '2022-08-17 17:11:17');
+INSERT INTO wm_task_type_sub_cate (ttsc_id, type_id, type_name, sub_cate, create_time, update_time) VALUES (13, 33, '药店拜访', 'PHARMACY_VISIT', '2022-08-17 17:11:17', '2022-08-17 17:11:17');
+INSERT INTO wm_task_type_sub_cate (ttsc_id, type_id, type_name, sub_cate, create_time, update_time) VALUES (14, 34, '医院患者教育培训', 'TRAINING', '2022-08-17 17:11:17', '2022-08-17 17:11:17');
+INSERT INTO wm_task_type_sub_cate (ttsc_id, type_id, type_name, sub_cate, create_time, update_time) VALUES (15, 35, '药店药师培训', 'TRAINING', '2022-08-17 17:11:17', '2022-08-17 17:11:17');
+INSERT INTO wm_task_type_sub_cate (ttsc_id, type_id, type_name, sub_cate, create_time, update_time) VALUES (16, 36, '商业公司培训', 'TRAINING', '2022-08-17 17:11:17', '2022-08-17 17:11:17');
+COMMIT;
+
+SET FOREIGN_KEY_CHECKS = 1;

+ 4 - 0
hnqz-common/hnqz-common-core/pom.xml

@@ -84,5 +84,9 @@
 			<groupId>commons-codec</groupId>
 			<artifactId>commons-codec</artifactId>
 		</dependency>
+		<dependency>
+			<groupId>com.baomidou</groupId>
+			<artifactId>mybatis-plus-extension</artifactId>
+		</dependency>
 	</dependencies>
 </project>

+ 32 - 0
hnqz-common/hnqz-common-core/src/main/java/com/qunzhixinxi/hnqz/common/core/constant/enums/CommonFlag.java

@@ -0,0 +1,32 @@
+package com.qunzhixinxi.hnqz.common.core.constant.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 通用标记
+ *
+ * @author jimmy
+ * @version 1.0.0
+ * @date 2022-08-15 15:08
+ */
+public class CommonFlag {
+
+	@Getter
+	@AllArgsConstructor
+	public enum OptFlag {
+		OK("OK", 0, "正常"),
+		LOCKED("LOCKED", 1, "锁定"),
+		DELETED("DELETED", 9, "删除");
+
+		private final String type;
+
+		@EnumValue
+		private final Integer code;
+
+		private final String description;
+
+
+	}
+}

+ 63 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/constant/UpmsType.java

@@ -0,0 +1,63 @@
+package com.qunzhixinxi.hnqz.admin.api.constant;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * Upms 服务枚举
+ *
+ * @author jimmy
+ * @version 1.0.0
+ * @date 2022-08-15 15:24
+ */
+public class UpmsType {
+
+	/**
+	 * 任务大类
+	 */
+	@Getter
+	@AllArgsConstructor
+	public enum TaskCategory {
+
+		FORWARD("FORWARD", "转发类任务"),
+		CONFERENCES_INTERVIEWS("CONFERENCES_INTERVIEWS", "会议与专访"),
+		CUSTOMER_VISIT("CUSTOMER_VISIT", "客户拜访"),
+		MARKET_INFO_COLLECTION("MARKET_INFO_COLLECTION", "市场信息搜集");
+
+		@EnumValue
+		private final String type;
+
+		private final String description;
+
+
+	}
+
+
+	/**
+	 * 任务二级分类
+	 */
+	@Getter
+	@AllArgsConstructor
+	public enum TaskSubCategory {
+
+		PRODUCT_ALBUM("PRODUCT_ALBUM", TaskCategory.FORWARD, "产品相册"),
+		ACADEMIC_INFO_EXCHANGE("ACADEMIC_INFO_EXCHANGE", TaskCategory.FORWARD, "学术信息交流"),
+		CONFERENCE("CONFERENCE", TaskCategory.CONFERENCES_INTERVIEWS, "会议举办"),
+		ONE_ON_ONE_INTERVIEW("ONE_ON_ONE_INTERVIEW", TaskCategory.CONFERENCES_INTERVIEWS, "一对一专访"),
+		TRAINING("TRAINING", TaskCategory.CONFERENCES_INTERVIEWS, "培训"),
+		BUSINESS_COMPANY_VISIT("BUSINESS_COMPANY_VISIT", TaskCategory.CUSTOMER_VISIT, "商业公司拜访"),
+		HOSPITAL_VISIT("HOSPITAL_VISIT", TaskCategory.CUSTOMER_VISIT, "医院拜访"),
+		PHARMACY_VISIT("PHARMACY_VISIT", TaskCategory.CUSTOMER_VISIT, "药店拜访"),
+		INVENTORY_INFO_COLLECTION("INVENTORY_INFO_COLLECTION", TaskCategory.MARKET_INFO_COLLECTION, "库存信息搜集"),
+		HOSPITAL_INFO_COLLECTION("HOSPITAL_INFO_COLLECTION", TaskCategory.MARKET_INFO_COLLECTION, "医院信息搜集");
+
+		@EnumValue
+		private final String type;
+
+		private final TaskCategory category;
+
+		private final String description;
+
+	}
+}

+ 98 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/WmTaskSubmissionRule.java

@@ -0,0 +1,98 @@
+package com.qunzhixinxi.hnqz.admin.api.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
+import com.qunzhixinxi.hnqz.admin.api.constant.UpmsType;
+import com.qunzhixinxi.hnqz.common.core.constant.enums.CommonFlag;
+import lombok.Data;
+import lombok.ToString;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 任务提交规则
+ *
+ * @author jimmy
+ * @version 1.0.0
+ * @date 2022-08-15 14:50
+ */
+@Data
+@ToString
+@TableName(value = "wm_task_sub_rule", autoResultMap = true)
+public class WmTaskSubmissionRule implements Serializable {
+	private static final long serialVersionUID = -3042306831006555056L;
+
+	/**
+	 * 提交规则id
+	 */
+	@TableId(value = "rule_id", type = IdType.AUTO)
+	private Integer ruleId;
+
+	/**
+	 * 企业id
+	 */
+	private Integer deptId;
+
+	/**
+	 * 二级分类
+	 */
+	@TableField(value = "sub_cate")
+	private UpmsType.TaskSubCategory subCategory;
+
+	/**
+	 * 任务规则
+	 */
+	@TableField(value = "sub_rule", typeHandler = FastjsonTypeHandler.class)
+	private List<SubmissionRule> rule;
+
+	/**
+	 * 可操作标记
+	 */
+	private CommonFlag.OptFlag optFlag;
+
+	/**
+	 * 创建时间
+	 */
+	private LocalDateTime createTime;
+
+	/**
+	 * 创建时间
+	 */
+	private LocalDateTime updateTime;
+
+
+	/**
+	 * 提交规则实体
+	 */
+	@Data
+	@ToString
+	public static class SubmissionRule implements Serializable {
+
+		private static final long serialVersionUID = -9205151158528196927L;
+
+		/**
+		 * 限制说明
+		 */
+		private String manual;
+
+		/**
+		 * 限制频次
+		 */
+		private List<Map<String, Object>> frequency;
+
+		/**
+		 * 分隔符
+		 */
+		private String separator;
+
+
+	}
+
+
+}

+ 11 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/WmTaskTypeSubCategory.java

@@ -0,0 +1,11 @@
+package com.qunzhixinxi.hnqz.admin.api.entity;
+
+/**
+ * TODO
+ *
+ * @author jimmy
+ * @version 1.0.0
+ * @date 2022-08-17 17:16
+ */
+public class WmTaskTypeSubCategory {
+}

+ 23 - 3
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/ApiController.java

@@ -20,12 +20,14 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.google.zxing.WriterException;
 import com.qunzhixinxi.hnqz.admin.api.constant.CacheConstants;
+import com.qunzhixinxi.hnqz.admin.api.constant.UpmsType;
 import com.qunzhixinxi.hnqz.admin.api.dto.UserDTO;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysDictItem;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysRole;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmAdRecord;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskSubmissionRule;
 import com.qunzhixinxi.hnqz.admin.api.enums.SignatureStatusEnum;
 import com.qunzhixinxi.hnqz.admin.api.vo.UserVO;
 import com.qunzhixinxi.hnqz.admin.config.UpmsConfig;
@@ -86,6 +88,7 @@ import com.qunzhixinxi.hnqz.admin.service.WmTaskContentConfigService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskContentService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskRuleService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskService;
+import com.qunzhixinxi.hnqz.admin.service.WmTaskSubmissionRuleService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskTypeService;
 import com.qunzhixinxi.hnqz.admin.service.WmUserSignDetailService;
 import com.qunzhixinxi.hnqz.admin.service.WmUserSignService;
@@ -213,6 +216,7 @@ public class ApiController {
 	private final WmAdRecordService adRecordService;
 	private final SysUserSignCertService sysUserSignCertService;
 	private final SysUserExtRecordService sysUserExtRecordService;
+	private final WmTaskSubmissionRuleService taskSubmissionRuleService;
 
 	@SysLog("通过任务类型获取表单配置")
 	@ApiOperation(value = "任务类型表单配置-通过任务类型获取表单配置", notes = "根据任务类型获取表单配置")
@@ -3981,12 +3985,12 @@ public class ApiController {
 	@GetMapping(value = "/eid")
 	public R<?> getEidToken(@RequestParam(value = "idCard") String idCard,
 							@RequestParam(value = "realName") String realName,
-							@RequestParam(value = "endType") String endType){
+							@RequestParam(value = "endType") String endType) {
 
 
 		String tokenUrl = upmsConfig.getGigServiceUrl() + "/gig/operation/eid?idCard={idCard}&realName={realName}&endType={endType}";
 
-		ResponseEntity<String> tokenResult = new RestTemplate().getForEntity(tokenUrl, String.class, idCard,realName, endType);
+		ResponseEntity<String> tokenResult = new RestTemplate().getForEntity(tokenUrl, String.class, idCard, realName, endType);
 
 		log.info("获取e-token:{}", tokenResult.getBody());
 
@@ -4006,7 +4010,7 @@ public class ApiController {
 	 */
 	@GetMapping(value = "/eid/result")
 	public R<?> getEidResult(@RequestParam(value = "token") String token,
-							 @RequestParam(value = "endType") String endType){
+							 @RequestParam(value = "endType") String endType) {
 
 
 		String tokenUrl = upmsConfig.getGigServiceUrl() + "/gig/operation/eid/result?token={token}&endType={endType}";
@@ -4042,6 +4046,22 @@ public class ApiController {
 
 	}
 
+	/**
+	 * 获取任务类型的小程序端限制规则
+	 *
+	 * @param deptId      企业id
+	 * @param subCategory 二级分类
+	 * @return 限制规则
+	 */
+	@GetMapping(value = "/task-sub-rule")
+	public R<?> listTaskSubmissionRule(@RequestParam(value = "deptId") Integer deptId, @RequestParam(value = "subCategory") UpmsType.TaskSubCategory subCategory) {
+		WmTaskSubmissionRule rule = taskSubmissionRuleService.getOne(Wrappers.<WmTaskSubmissionRule>lambdaQuery()
+				.eq(WmTaskSubmissionRule::getDeptId, deptId)
+				.eq(WmTaskSubmissionRule::getSubCategory, subCategory)
+		);
+		return R.ok(rule.getRule());
+
+	}
 
 
 }

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

@@ -0,0 +1,86 @@
+package com.qunzhixinxi.hnqz.admin.controller;
+
+import cn.hutool.core.collection.CollUtil;
+import com.qunzhixinxi.hnqz.admin.api.constant.UpmsType;
+import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskSubmissionRule;
+import com.qunzhixinxi.hnqz.admin.service.SysDeptService;
+import com.qunzhixinxi.hnqz.admin.service.WmTaskSubmissionRuleService;
+import com.qunzhixinxi.hnqz.common.core.util.R;
+import lombok.AllArgsConstructor;
+import org.springframework.http.MediaType;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * 任务提交规则前段控制器
+ *
+ * @author jimmy
+ * @version 1.0.0
+ * @date 2022-08-15 18:35
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping(value = "/task/submission/rule", produces = MediaType.APPLICATION_JSON_VALUE)
+public class WmTaskSubmissionRuleController {
+
+	private final WmTaskSubmissionRuleService taskSubmissionRuleService;
+	private final SysDeptService deptService;
+
+
+	/**
+	 * 获取企业的限制
+	 *
+	 * @return 限制信息
+	 */
+	@GetMapping
+	public R<Map<UpmsType.TaskCategory, List<WmTaskSubmissionRule>>> listDeptTaskSubmissionRules(@RequestParam(value = "deptId") Integer deptId) {
+
+		return R.ok(taskSubmissionRuleService.listDeptTaskSubmissionRules(deptId));
+	}
+
+	/**
+	 * 初始化企业限制
+	 *
+	 * @return 初始结果
+	 */
+	@PostMapping(value = "/init")
+	public R<Boolean> initDeptTaskSubmissionRule() {
+
+		List<SysDept> deptList = deptService.list();
+
+		Set<Integer> deptIds = deptList.stream().map(SysDept::getDeptId).filter(id -> id != 1).collect(Collectors.toSet());
+
+		if (CollUtil.isEmpty(deptIds)) {
+			return R.failed(Boolean.FALSE);
+		}
+
+		return R.ok(taskSubmissionRuleService.initDeptTaskSubmissionRule(deptIds));
+
+	}
+
+	/**
+	 * 更新企业的限制信息
+	 *
+	 * @return 更新结果
+	 */
+	@PutMapping
+	@Transactional(rollbackFor = Exception.class)
+	public R<Boolean> modifyDeptTaskSubmissionRule(@RequestBody List<WmTaskSubmissionRule> rules) {
+
+		return R.ok(taskSubmissionRuleService.updateBatchById(rules));
+
+	}
+
+}

+ 0 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmTaxHelperController.java

@@ -57,7 +57,6 @@ import com.qunzhixinxi.hnqz.common.taxhelper.entity.vo.TaxHelperBingCardConfirmV
 import com.qunzhixinxi.hnqz.common.taxhelper.entity.vo.TaxHelperECheckFaceNotify;
 import com.qunzhixinxi.hnqz.common.taxhelper.enums.TaxHelperCertStatus;
 import com.qunzhixinxi.hnqz.common.taxhelper.service.TaxHelperService;
-import jdk.nashorn.internal.parser.Token;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
 import lombok.extern.slf4j.Slf4j;

+ 16 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/WmTaskSubmissionRuleMapper.java

@@ -0,0 +1,16 @@
+package com.qunzhixinxi.hnqz.admin.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskSubmissionRule;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 任务提交规则mapper
+ *
+ * @author jimmy
+ * @version 1.0.0
+ * @date 2022-08-15 18:03
+ */
+@Mapper
+public interface WmTaskSubmissionRuleMapper extends BaseMapper<WmTaskSubmissionRule> {
+}

+ 36 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmTaskSubmissionRuleService.java

@@ -0,0 +1,36 @@
+package com.qunzhixinxi.hnqz.admin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qunzhixinxi.hnqz.admin.api.constant.UpmsType;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskSubmissionRule;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 任务提交服务
+ *
+ * @author jimmy
+ * @version 1.0.0
+ * @date 2022-08-15 18:06
+ */
+public interface WmTaskSubmissionRuleService extends IService<WmTaskSubmissionRule> {
+
+	/**
+	 * 获取部门限制信息
+	 *
+	 * @param deptId 部门id
+	 * @return 限制信息
+	 */
+	Map<UpmsType.TaskCategory, List<WmTaskSubmissionRule>> listDeptTaskSubmissionRules(Integer deptId);
+
+
+	/**
+	 * 初始化企业限制信息
+	 *
+	 * @param deptIds 企业id集合
+	 * @return 初始化结果
+	 */
+	Boolean initDeptTaskSubmissionRule(Collection<Integer> deptIds);
+}

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

@@ -0,0 +1,85 @@
+package com.qunzhixinxi.hnqz.admin.service.impl;
+
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qunzhixinxi.hnqz.admin.api.constant.UpmsType;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskSubmissionRule;
+import com.qunzhixinxi.hnqz.admin.mapper.WmTaskSubmissionRuleMapper;
+import com.qunzhixinxi.hnqz.admin.service.WmTaskSubmissionRuleService;
+import com.qunzhixinxi.hnqz.common.core.constant.CommonConstants;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 任务提交规则服务实现
+ *
+ * @author jimmy
+ * @version 1.0.0
+ * @date 2022-08-15 18:07
+ */
+@Slf4j
+@Service
+@AllArgsConstructor
+public class WmTaskSubmissionRuleServiceImpl extends ServiceImpl<WmTaskSubmissionRuleMapper, WmTaskSubmissionRule> implements WmTaskSubmissionRuleService {
+
+
+	/**
+	 * 获取部门限制信息
+	 *
+	 * @param deptId 部门id
+	 * @return 限制信息
+	 */
+	@Override
+	public Map<UpmsType.TaskCategory, List<WmTaskSubmissionRule>> listDeptTaskSubmissionRules(Integer deptId) {
+
+		List<WmTaskSubmissionRule> rules = this.list(Wrappers.<WmTaskSubmissionRule>lambdaQuery().eq(WmTaskSubmissionRule::getDeptId, deptId));
+
+		return rules.stream().collect(Collectors.groupingBy(rule -> rule.getSubCategory().getCategory()));
+	}
+
+	/**
+	 * 初始化企业限制信息
+	 *
+	 * @param deptIds 企业id
+	 * @return 初始化结果
+	 */
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public Boolean initDeptTaskSubmissionRule(Collection<Integer> deptIds) {
+
+		// 查询平台的配置
+		List<WmTaskSubmissionRule> platformRules = this.list(Wrappers.<WmTaskSubmissionRule>lambdaQuery().eq(WmTaskSubmissionRule::getDeptId, CommonConstants.TENANT_ID_1));
+
+
+		if (CollUtil.isEmpty(platformRules)) {
+			return Boolean.FALSE;
+		}
+
+
+		List<WmTaskSubmissionRule> deptRules = new ArrayList<>(deptIds.size() * platformRules.size());
+
+
+		deptIds.forEach(deptId -> {
+			platformRules.forEach(r -> {
+				WmTaskSubmissionRule deptRule = new WmTaskSubmissionRule();
+				deptRule.setRule(r.getRule());
+				deptRule.setDeptId(deptId);
+				deptRule.setOptFlag(r.getOptFlag());
+				deptRule.setSubCategory(r.getSubCategory());
+				deptRules.add(deptRule);
+			});
+
+		});
+
+		return this.saveBatch(deptRules);
+	}
+}