Bläddra i källkod

feat: 个人积分包-其他导出excel

lixuesong 1 år sedan
förälder
incheckning
b4891fb974

+ 154 - 2
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmScorePackageController.java

@@ -2725,7 +2725,7 @@ public class WmScorePackageController {
 	 *
 	 * @param acceptUser 接单对象,模糊查询
 	 */
-	@ResponseExcel(name = "exportPackageSettle", sheet = "积分包结算数据")
+	@ResponseExcel(name = "exportPackageSettle", sheet = "个人承接积分值导出")
 	@SysLog("个人承接积分值导出")
 	@GetMapping("/export-score-package")
 	public List<WmScorePackageExcelModel> exportScorePackage(
@@ -2877,9 +2877,161 @@ public class WmScorePackageController {
 						"4".equals(typeid) ? "兼职学术信息沟通专员" : "5".equals(typeid) ? "招商经理" : typeid);
 			}
 
+			excelModel.setNumber(String.valueOf(i+1));
+			excelModel.setFinishRate(String.valueOf(wmScorePackage.getYshtt()));
+			excelModel.setPayScore(wmScorePackage.getShtg());
+			excelModel.setPayRate(String.valueOf(wmScorePackage.getShtgtt()));
+
+			excelModelList.add(excelModel);
+
+		}
+
+		log.info("build积分包耗时:{}", System.currentTimeMillis() - buildStartMillis);
+
+		return excelModelList;
+	}
+
+	/**
+	 * 个人承接积分值-其他导出
+	 *
+	 * @param acceptUser 接单对象,模糊查询
+	 */
+	@ResponseExcel(name = "exportPackageSettle", sheet = "个人承接积分值-其他导出")
+	@SysLog("个人承接积分值-其他导出")
+	@GetMapping("/export-score-package-mah")
+	public List<WmScorePackageExcelModel> exportPackageSettleForMah(
+									   @RequestParam(value = "packageType1") Integer packageType1,
+									   @RequestParam(value = "packageType2") Integer packageType2,
+									   @RequestParam(value = "scorePackageName", required = false) String scorePackageName,
+									   @RequestParam(value = "scorePackageStatus", required = false) Integer scorePackageStatus,
+									   @RequestParam(value = "typeid", required = false) String typeId,
+									   @RequestParam(value = "monthStart", required = false) String monthStart,
+									   @RequestParam(value = "monthEnd", required = false) String monthEnd,
+									   @RequestParam(value = "acceptUser", required = false) String acceptUser,
+									   @RequestParam(value = "relationScoreId", required = false) String relationScoreId,
+									   @RequestParam(value = "toApproval", required = false) Boolean toApproval
+	) {
+
+		Integer sendDeptId = SecurityUtils.getUser().getDeptId();
+
+		LocalDateTime start = null;
+		LocalDateTime end = null;
+
+		if (StrUtil.isNotEmpty(monthStart) && StrUtil.isNotEmpty(monthEnd)) {
+			start = LocalDateTime.of(LocalDate.parse(monthStart + "-01", DatePattern.NORM_DATE_FORMATTER), LocalTime.MIN);
+			LocalDate e = LocalDate.parse(monthEnd + "-01", DatePattern.NORM_DATE_FORMATTER);
+			end = LocalDateTime.of(e.with(TemporalAdjusters.lastDayOfMonth()), LocalTime.MAX);
+
+		}
+
+		QueryWrapper<WmScorePackage> queryWrapper = Wrappers.<WmScorePackage>query()
+				.eq("p.package_type1", packageType1)
+				.eq("p.package_type2", packageType2)
+				.eq(scorePackageStatus != null, "p.score_package_status", scorePackageStatus)
+				.eq("p.mah_settle_dept_id", sendDeptId)
+				.in("p.mah_settle_step", UpmsType.MahSettleStep.BUSINESS.getType(), UpmsType.MahSettleStep.FINANCE.getType())
+				.between(start != null && end != null, "p.create_time", start, end);
+
+		if (StrUtil.isNotBlank(scorePackageName)) {
+			queryWrapper.and(wrapper -> wrapper.like("p.score_package_name", scorePackageName).or().like("p.pkg_sn", scorePackageName));
+		}
+
+		if (StringUtil.isEmpty(typeId)) {
+			queryWrapper.in("p.typeid", "3", "4", "5");
+		} else {
+			List<String> split = StrUtil.split(typeId, StrUtil.COMMA);
+			queryWrapper.in("p.typeid", split);
+		}
+
+		long startMillis = System.currentTimeMillis();
+		List<WmScorePackage> scorePackageList = wmScorePackageMapper.listScorePackage(
+				queryWrapper.orderByDesc("p.settlement_date"), acceptUser, relationScoreId, toApproval);
+
+		log.info("MAH积分包列表sql耗时:{}", System.currentTimeMillis() - startMillis);
+
+		if (CollUtil.isEmpty(scorePackageList)) {
+			return Collections.emptyList();
+		}
+
+		long buildStartMillis = System.currentTimeMillis();
+
+		Set<String> packageIds = scorePackageList.stream().map(WmScorePackage::getId).collect(Collectors.toSet());
+
+		// 任务统计
+		List<WmTask> taskList = wmTaskMapper.selectList(Wrappers.<WmTask>lambdaQuery()
+				.eq(WmTask::getRealFlag, "0")
+				.eq(WmTask::getEnableFlag, "0")
+				.eq(WmTask::getDelFlag, "0")
+				.in(WmTask::getScorePackageId, packageIds)
+		);
+		Map<String, List<WmTask>> taskGoupMap = taskList.stream().collect(Collectors.groupingBy(WmTask::getScorePackageId));
+
+		// 领取积分包记录
+		List<WmScorePackageStatus> scorePackageStatusList = wmScorePackageStatusService.list(Wrappers.<WmScorePackageStatus>lambdaQuery()
+				.in(WmScorePackageStatus::getPackageId, packageIds)
+		);
+		Map<String, List<WmScorePackageStatus>> packageStatusGroupMap = scorePackageStatusList.stream()
+				.collect(Collectors.groupingBy(WmScorePackageStatus::getPackageId));
+
+		//获取上级包
+		Set<String> parentPackageIds = scorePackageList.stream().map(WmScorePackage::getRelationScoreId).collect(Collectors.toSet());
+		List<WmScorePackage> parentPackages = wmScorePackageMapper.selectList(Wrappers.<WmScorePackage>lambdaQuery()
+				.in(WmScorePackage::getId, parentPackageIds));
+		Map<String, WmScorePackage> parentPackageNameMap = parentPackages.stream()
+				.collect(Collectors.toMap(WmScorePackage::getId, Function.identity()));
+
+		// 类型标签
+		List<SysDictItem> dictItems = sysDictItemService.list(Wrappers.<SysDictItem>lambdaQuery()
+				.in(SysDictItem::getType, "package_type1", "package_type2"));
+		Map<String, List<SysDictItem>> dictItemMap = dictItems.stream().collect(Collectors.groupingBy(SysDictItem::getType));
+		List<SysDictItem> packageType1List = dictItemMap.get("package_type1");
+		List<SysDictItem> packageType2List = dictItemMap.get("package_type2");
+
+		// 结算记录
+		List<WmScorePackageSettleNote> noteList = settleNoteMapper.selectList(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
+				.in(WmScorePackageSettleNote::getPackageId, packageIds));
+		Map<String, List<WmScorePackageSettleNote>> noteMap = noteList.stream()
+				.collect(Collectors.groupingBy(WmScorePackageSettleNote::getPackageId));
+
+		// 有效任务类型
+		List<WmScoreTaskType> taskTypeList = wmScoreTaskTypeMapper.getScoreTaskTypeByScoreId(String.join(",", packageIds));
+		Map<String, List<WmScoreTaskType>> taskTypeMap = taskTypeList.stream().collect(Collectors.groupingBy(WmScoreTaskType::getScoreId));
+
+		List<WmScorePackageExcelModel> excelModelList = new ArrayList<>(scorePackageList.size());
+		for (int i = 0; i < scorePackageList.size(); i++) {
+			WmScorePackage wmScorePackage = scorePackageList.get(i);
+			log.info("====> 积分包SN:{}", wmScorePackage.getPackageSn());
+
+			List<WmTask> tasks = taskGoupMap.getOrDefault(wmScorePackage.getId(), new ArrayList<>());
+			List<WmScorePackageStatus> statuses = packageStatusGroupMap.getOrDefault(wmScorePackage.getId(), new ArrayList<>());
+			List<WmScorePackageSettleNote> notes = noteMap.getOrDefault(wmScorePackage.getId(), new ArrayList<>());
+			List<WmScoreTaskType> scoreTaskTypes = taskTypeMap.getOrDefault(wmScorePackage.getId(), new ArrayList<>());
+
+			wmScorePackageService.buildScorePackageSync(wmScorePackage, packageType1, packageType2, tasks, statuses,
+					packageType1List, packageType2List, parentPackageNameMap, notes, scoreTaskTypes);
+
+			WmScorePackageExcelModel excelModel = BeanUtil.copyProperties(wmScorePackage, WmScorePackageExcelModel.class);
+			if (StrUtil.isNotBlank(wmScorePackage.getScorePackageStatus())) {
+				excelModel.setScorePackageStatus(Objects.requireNonNull(ScorePackageStatusEnum.getByVal(wmScorePackage.getScorePackageStatus())).getDesc());
+			}
+
+			if (CollUtil.isNotEmpty(wmScorePackage.getUserList())) {
+				excelModel.setUserNames(String.join(",", wmScorePackage.getUserList()));
+			}
+
+			String typeid = wmScorePackage.getTypeid();
+			if (StrUtil.isNotBlank(typeid)) {
+				excelModel.setTypeidName("3".equals(typeid) ? "全职学术信息沟通专员" :
+						"4".equals(typeid) ? "兼职学术信息沟通专员" : "5".equals(typeid) ? "招商经理" : typeid);
+			}
+
+			excelModel.setNumber(String.valueOf(i+1));
+			excelModel.setFinishRate(String.valueOf(wmScorePackage.getYshtt()));
+			excelModel.setPayScore(wmScorePackage.getShtg());
+			excelModel.setPayRate(String.valueOf(wmScorePackage.getShtgtt()));
+
 			excelModelList.add(excelModel);
 
-			log.info("遍历{} 耗时{}", wmScorePackage.getId(), System.currentTimeMillis() - buildStartMillis);
 		}
 
 		log.info("build积分包耗时:{}", System.currentTimeMillis() - buildStartMillis);