浏览代码

feat: 任务统计

lixuesong 1 年之前
父节点
当前提交
f0a9a69350

+ 3 - 0
db/v2.0/20231114.sql

@@ -4,3 +4,6 @@ alter table wm_dept_task_type_template
 alter table wm_user_sign_detail
     add detail json null comment '详情数据';
 
+
+alter table wm_score_package
+    add audit_management_fee_rates decimal(5, 2) default '0.00' not null comment '审核管理费比例';

+ 80 - 65
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmDeptTaskController.java

@@ -34,6 +34,7 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.math.BigDecimal;
@@ -45,6 +46,7 @@ import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * 企业任务控制器
@@ -398,71 +400,6 @@ public class WmDeptTaskController {
 		return R.ok();
 	}
 
-//	/**
-//	 * 企业任务保存
-//	 *
-//	 * @param taskTypeId 任务类型
-//	 * @param paramsStr 指定任务类型对应的参数
-//	 * @return {@link R}<{@link ?}> 结果
-//	 */
-//	@SysLog("企业任务保存-缓存")
-//	@PostMapping("/dept-task/save/{taskTypeId}")
-//	public R<?> saveEntTask(@PathVariable("taskTypeId") String taskTypeId, @RequestBody String paramsStr) {
-//		log.info("企业任务保存:taskTypeId={}, params={}", taskTypeId, paramsStr);
-//		boolean b = Arrays.stream(DeptTaskDTO.DeptTaskTypeParam.values())
-//				.map(DeptTaskDTO.DeptTaskTypeParam::getType)
-//				.anyMatch(type -> StrUtil.equals(type, taskTypeId));
-//		if (!b) {
-//			return R.failed("不支持的企业任务类型");
-//		}
-//
-//		// 根据任务类型,保存不同的任务参数
-//		switch (taskTypeId) {
-//			case "61":
-//				DeptTaskDTO.TaskType61 o61 =
-//						(DeptTaskDTO.TaskType61) JSONUtil.toBean(paramsStr,
-//								Objects.requireNonNull(DeptTaskDTO.DeptTaskTypeParam.getByType(taskTypeId)).getClazz());
-//				return R.ok(wmDeptTaskService.saveEntTaskForTaskType61(o61));
-//			case "62":
-//				DeptTaskDTO.TaskType62 o62 =
-//						(DeptTaskDTO.TaskType62) JSONUtil.toBean(paramsStr,
-//								Objects.requireNonNull(DeptTaskDTO.DeptTaskTypeParam.getByType(taskTypeId)).getClazz());
-//				return R.ok(wmDeptTaskService.saveEntTaskForTaskType62(o62));
-//			case "63":
-//				DeptTaskDTO.TaskType63 o63 =
-//						(DeptTaskDTO.TaskType63) JSONUtil.toBean(paramsStr,
-//								Objects.requireNonNull(DeptTaskDTO.DeptTaskTypeParam.getByType(taskTypeId)).getClazz());
-//				return R.ok(wmDeptTaskService.saveEntTaskForTaskType63(o63));
-//			case "66":
-//				DeptTaskDTO.TaskType66 o66 =
-//						(DeptTaskDTO.TaskType66) JSONUtil.toBean(paramsStr,
-//								Objects.requireNonNull(DeptTaskDTO.DeptTaskTypeParam.getByType(taskTypeId)).getClazz());
-//				return R.ok(wmDeptTaskService.saveEntTaskForTaskType66(o66));
-////			case "67":
-////				DeptTaskDTO.TaskType67 o67 =
-////						(DeptTaskDTO.TaskType67) JSONUtil.toBean(paramsStr,
-////								Objects.requireNonNull(DeptTaskDTO.DeptTaskTypeParam.getByType(taskTypeId)).getClazz());
-////				return R.ok(wmDeptTaskService.saveEntTaskForTaskType67(o67));
-////			case "68":
-////				DeptTaskDTO.TaskType63 o63 =
-////						(DeptTaskDTO.TaskType63) JSONUtil.toBean(paramsStr,
-////								Objects.requireNonNull(DeptTaskDTO.DeptTaskTypeParam.getByType(taskTypeId)).getClazz());
-////				return R.ok(wmDeptTaskService.saveEntTaskForTaskType63(o63));
-////			case "69":
-////				DeptTaskDTO.TaskType63 o63 =
-////						(DeptTaskDTO.TaskType63) JSONUtil.toBean(paramsStr,
-////								Objects.requireNonNull(DeptTaskDTO.DeptTaskTypeParam.getByType(taskTypeId)).getClazz());
-////				return R.ok(wmDeptTaskService.saveEntTaskForTaskType63(o63));
-////			case "70":
-////				DeptTaskDTO.TaskType63 o63 =
-////						(DeptTaskDTO.TaskType63) JSONUtil.toBean(paramsStr,
-////								Objects.requireNonNull(DeptTaskDTO.DeptTaskTypeParam.getByType(taskTypeId)).getClazz());
-////				return R.ok(wmDeptTaskService.saveEntTaskForTaskType63(o63));
-//			default:
-//				return R.failed("不支持此任务类型");
-//		}
-//	}
-
     /**
      * 获取企业任务保存缓存数据
      *
@@ -481,4 +418,82 @@ public class WmDeptTaskController {
 				Objects.requireNonNull(DeptTaskDTO.DeptTaskTypeParam.getByType(taskTypeId)).getClazz());
 		return R.ok(o);
     }
+
+	/**
+	 * 积分包任务统计
+	 *
+	 * @param packageId 积分包id
+	 * @return {@link R}<{@link ?}> 统计结果
+	 */
+	@GetMapping("/dept-task/task-statistics/{pacakgeId}")
+	public R<?> getTaskStatistics(@PathVariable("pacakgeId") String packageId) {
+		Map<String, String> result = new HashMap<>();
+
+		WmScorePackage scorePackage = wmScorePackageService.getById(packageId);
+
+		// 积分包包值
+		result.put("package_score", String.valueOf(scorePackage.getScore()));
+
+		// 查询taskType
+		List<WmTaskType> taskTypeList = wmTaskTypeService.list(Wrappers.<WmTaskType>lambdaQuery()
+				.eq(WmTaskType::getTaskTypeLevel, "1")
+				.eq(WmTaskType::getDelFlag, DelEnum.NOT_DEL.val())
+				.eq(WmTaskType::getEnableFlag, EnableEnum.ENABLE.val()));
+		// 个人任务类型
+		List<String> personalTaskTypeIds = taskTypeList.stream()
+				.filter(taskType -> "1".equals(taskType.getTaskReceiverType()) && !"p-19".equals(taskType.getParentId()))
+				.map(WmTaskType::getId).collect(Collectors.toList());
+		// 企业任务类型
+		List<String> entTaskTypeIds = taskTypeList.stream()
+				.filter(taskType -> "2".equals(taskType.getTaskReceiverType()) && !"p-19".equals(taskType.getParentId()))
+				.map(WmTaskType::getId).collect(Collectors.toList());
+		// 招商经理任务类型
+		List<String> p19TaskTypeIds = taskTypeList.stream()
+				.filter(taskType -> "p-19".equals(taskType.getParentId()))
+				.map(WmTaskType::getId).collect(Collectors.toList());
+
+		// 查询所有审核通过的任务 TODO 待确认 是否要审核通过的
+		List<WmTask> taskList = wmTaskService.list(Wrappers.<WmTask>lambdaQuery().eq(WmTask::getScorePackageId, packageId)
+				.eq(WmTask::getDelFlag, DelEnum.NOT_DEL.val())
+				.eq(WmTask::getEnableFlag, EnableEnum.ENABLE.val())
+				.eq(WmTask::getTaskStatus, TaskStatusEnum.APPROVED.val()));
+
+		List<WmTask> personalTask = taskList.stream()
+				.filter(task -> personalTaskTypeIds.contains(task.getTaskTypeId()))
+				.collect(Collectors.toList());
+		// 个人任务分值
+		result.put("personal_task_score", String.valueOf(personalTask.stream().mapToInt(WmTask::getScore).sum()));
+		// 个人任务条数
+		result.put("personal_task_number", String.valueOf(personalTask.size()));
+
+		List<WmTask> entTask = taskList.stream()
+				.filter(task -> entTaskTypeIds.contains(task.getTaskTypeId()))
+				.collect(Collectors.toList());
+		// 企业任务分值
+		result.put("ent_task_score", String.valueOf(entTask.stream().mapToInt(WmTask::getScore).sum()));
+		// 企业任务条数
+		result.put("ent_task_number", String.valueOf(entTask.size()));
+
+		List<WmTask> p19Task = taskList.stream()
+				.filter(task -> p19TaskTypeIds.contains(task.getTaskTypeId()))
+				.collect(Collectors.toList());
+		// 招商经理任务分值
+		result.put("investment_manager_task_score", String.valueOf(p19Task.stream().mapToInt(WmTask::getScore).sum()));
+		// 招商经理任务条数
+		result.put("investment_manager_task_number", String.valueOf(p19Task.size()));
+
+		// TODO
+		// 全职分值
+		result.put("full_time_task_score", "0");
+		// 全职任务数
+		result.put("full_time_task_number", "0");
+		// 审核管理费分值
+		result.put("audit_management_fee", "0");
+		// 审核任务数
+		result.put("audit_tasks_number", "0");
+		// 实际完成分值
+		result.put("actual_completion_score", "0");
+
+		return R.ok(result);
+	}
 }

+ 5 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/WmScorePackage.java

@@ -501,6 +501,11 @@ public class WmScorePackage extends Model<WmScorePackage> {
 	 */
 	private String[] drugtable;
 
+	/**
+	 * 审核管理费比例(单位%)
+	 */
+	private BigDecimal auditManagementFeeRates;
+
 	/**
 	 * 获取积分包的关联试卷
 	 */