Browse Source

feat: 企业承接包-任务统计

lixuesong 1 year ago
parent
commit
a04ec48553

+ 78 - 26
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmDeptTaskController.java

@@ -17,6 +17,7 @@ import com.qunzhixinxi.hnqz.admin.entity.vo.WmTaskVO;
 import com.qunzhixinxi.hnqz.admin.enums.DelEnum;
 import com.qunzhixinxi.hnqz.admin.enums.EnableEnum;
 import com.qunzhixinxi.hnqz.admin.enums.ReportEnum;
+import com.qunzhixinxi.hnqz.admin.enums.ScorePackageStatusEnum;
 import com.qunzhixinxi.hnqz.admin.enums.TaskStatusEnum;
 import com.qunzhixinxi.hnqz.admin.service.SysUserService;
 import com.qunzhixinxi.hnqz.admin.service.WmDeptTaskService;
@@ -38,9 +39,11 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
@@ -434,37 +437,95 @@ public class WmDeptTaskController {
 		// 积分包包值
 		result.put("package_score", String.valueOf(scorePackage.getScore()));
 
+		Set<String> allPackageIds = new HashSet<>();
+		allPackageIds.add(packageId);
+		// 查询所有子包值
+		List<WmScorePackage> subPackageList = wmScorePackageService.list(Wrappers.<WmScorePackage>lambdaQuery()
+				.eq(WmScorePackage::getRelationScoreId, packageId)
+				.ne(WmScorePackage::getScorePackageStatus, ScorePackageStatusEnum.TERMINATED.val()));
+		if (CollUtil.isNotEmpty(subPackageList)) {
+			Set<String> subPackageIds = subPackageList.stream().map(WmScorePackage::getId).collect(Collectors.toSet());
+			allPackageIds.addAll(subPackageIds);
+			// 查询所有子子包值
+			List<WmScorePackage> subSubPackageList = wmScorePackageService.list(Wrappers.<WmScorePackage>lambdaQuery()
+					.in(WmScorePackage::getRelationScoreId, subPackageIds)
+					.ne(WmScorePackage::getScorePackageStatus, ScorePackageStatusEnum.TERMINATED.val()));
+			if (CollUtil.isNotEmpty(subSubPackageList)) {
+				Set<String> subSubPackageIds = subSubPackageList.stream().map(WmScorePackage::getId).collect(Collectors.toSet());
+				allPackageIds.addAll(subSubPackageIds);
+			}
+		}
+
 		// 查询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()));
-		// 个人任务类型
+
+		// 个人任务类型id
 		List<String> personalTaskTypeIds = taskTypeList.stream()
 				.filter(taskType -> "1".equals(taskType.getTaskReceiverType()) && !"p-19".equals(taskType.getParentId()))
 				.map(WmTaskType::getId).collect(Collectors.toList());
-		// 企业任务类型
+		// 企业任务类型id
 		List<String> entTaskTypeIds = taskTypeList.stream()
 				.filter(taskType -> "2".equals(taskType.getTaskReceiverType()) && !"p-19".equals(taskType.getParentId()))
 				.map(WmTaskType::getId).collect(Collectors.toList());
-		// 招商经理任务类型
+		// 招商经理任务类型id
 		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)
+		// 查询所有审核通过的任务
+		List<WmTask> taskList = wmTaskService.list(Wrappers.<WmTask>lambdaQuery()
+				.in(WmTask::getScorePackageId, allPackageIds)
 				.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_score", "0");
 		// 个人任务条数
-		result.put("personal_task_number", String.valueOf(personalTask.size()));
+		result.put("personal_task_number", "0");
+		// 全职分值
+		result.put("full_time_task_score", "0");
+		// 全职任务数
+		result.put("full_time_task_number", "0");
+		// 招商经理任务分值
+		result.put("investment_manager_task_score", "0");
+		// 招商经理任务条数
+		result.put("investment_manager_task_number", "0");
+
+		// 3,全职学术信息沟通专员
+		// 4,兼职学术信息沟通专员
+		// 5,招商经理
+		switch (scorePackage.getTypeid()) {
+			case "3":
+				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()));
+				break;
+			case "4":
+				// 全职分值
+				result.put("full_time_task_score", String.valueOf(taskList.stream().mapToInt(WmTask::getScore).sum()));
+				// 全职任务数
+				result.put("full_time_task_number", String.valueOf(taskList.size()));
+				break;
+			case "5":
+				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()));
+				break;
+			default:
+		}
 
 		List<WmTask> entTask = taskList.stream()
 				.filter(task -> entTaskTypeIds.contains(task.getTaskTypeId()))
@@ -474,24 +535,15 @@ public class WmDeptTaskController {
 		// 企业任务条数
 		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");
-		// 审核任务数
+		int taskScoreSum = taskList.stream().mapToInt(WmTask::getScore).sum();
+		BigDecimal auditManagementFee = BigDecimal.valueOf(taskScoreSum)
+				.multiply(scorePackage.getAuditManagementFeeRates())
+				.divide(new BigDecimal("100.00"), RoundingMode.HALF_EVEN);
+		result.put("audit_management_fee", auditManagementFee.toString());
+		// 审核任务数 TODO
 		result.put("audit_tasks_number", "0");
-		// 实际完成分值
+		// 实际完成分值 TODO
 		result.put("actual_completion_score", "0");
 
 		return R.ok(result);