浏览代码

feat: 1.多人积分包-业务结算保存、提交;2.结算包结算管理列表

李学松 2 年之前
父节点
当前提交
af62695ade

+ 137 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmScorePackageController.java

@@ -70,7 +70,6 @@ import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
-import java.time.temporal.TemporalAccessor;
 import java.time.temporal.TemporalAdjusters;
 import java.util.*;
 import java.util.concurrent.ExecutionException;
@@ -109,6 +108,7 @@ public class WmScorePackageController {
 	private final WmDaDrugEntMapper wmDaDrugEntMapper;
 	private final WmDaAgentMapper wmDaAgentMapper;
 	private final WmTeamService wmTeamService;
+	private final WmScorePackageSettleNoteMapper settleNoteMapper;
 	private final StringRedisTemplate redisTemplate;
 
 
@@ -2630,6 +2630,142 @@ public class WmScorePackageController {
 		return R.ok(wmScorePackagePage);
 	}
 
+	/**
+	 * 积分包列表(结算包管理列表、无团队限制)
+	 *
+	 * @param packageType1 多个逗号分隔
+	 * @param acceptUser 接单对象,模糊查询
+	 */
+	@ApiOperation(value = "分页查询", notes = "分页查询")
+	@GetMapping("/page-settle-package")
+	public R pageSettlePackage(@RequestParam(value = "current") Integer current,
+								 @RequestParam(value = "size") Integer size,
+								 @RequestParam(value = "packageType1") String 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
+	) {
+
+		Integer sendDeptId = SecurityUtils.getUser().getDeptId();
+		Integer userId = SecurityUtils.getUser().getId();
+
+		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);
+
+		}
+
+		LambdaQueryWrapper<WmScorePackage> queryWrapper = Wrappers.<WmScorePackage>lambdaQuery()
+				.eq(WmScorePackage::getPackageType2, packageType2)
+				.like(StrUtil.isNotEmpty(scorePackageName), WmScorePackage::getScorePackageName, scorePackageName)
+				.eq(scorePackageStatus != null, WmScorePackage::getScorePackageStatus, scorePackageStatus)
+				.eq(WmScorePackage::getSendPackageDeptId, sendDeptId)
+				.between(start != null && end != null, WmScorePackage::getCreateTime, start, end);
+
+		List<String> packageType1List = StrUtil.split(packageType1, StrUtil.COMMA);
+		if (StrUtil.contains(packageType1, StrUtil.COMMA)) {
+			queryWrapper.in(WmScorePackage::getPackageType1, packageType1List);
+		} else {
+			queryWrapper.eq(WmScorePackage::getPackageType1, packageType1);
+		}
+
+
+		if (StringUtil.isEmpty(typeId)) {
+			queryWrapper.in(WmScorePackage::getTypeid, "3", "4");
+		} else {
+			List<String> split = StrUtil.split(typeId, StrUtil.COMMA);
+			queryWrapper.in(WmScorePackage::getTypeid, split);
+		}
+
+//		boolean onePersonScorePackageFlag = packageType1List.contains(PackageTypeEnum.TYPE1_SCOTE_PACKAGE.val())
+//				&& PackageTypeEnum.TYPE2_TASK_PACKAGE.val().equals(String.valueOf(packageType2));
+//		boolean multiPersonScorePackageFlag = packageType1List.contains(PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val())
+//				&& PackageTypeEnum.TYPE2_SETTLE_PACKAGE.val().equals(String.valueOf(packageType2));
+//		if (onePersonScorePackageFlag || multiPersonScorePackageFlag) {
+//			// 如果是个人承接-按积分值/多人承接-按积分值,判断当前用户是否配置了团队负责人
+//			List<WmTeam> teamList = wmTeamService.list(Wrappers.<WmTeam>lambdaQuery()
+//					.eq(WmTeam::getDeptId, sendDeptId)
+//					.eq(WmTeam::getEnableFlag, EnableEnum.ENABLE.val())
+//					.eq(WmTeam::getDelFlag, DelEnum.NOT_DEL.val())
+//					.apply("FIND_IN_SET({0}, leader)", String.valueOf(userId)));
+//			if (CollectionUtil.isNotEmpty(teamList)) {
+//				// 如果配置了,则只查询所在团队下发的积分包
+//				List<String> teamIdList = teamList.stream().map(wmTeam -> String.valueOf(wmTeam.getId())).collect(Collectors.toList());
+//				queryWrapper.in(WmScorePackage::getPackageUserScope, teamIdList);
+//			}
+//		}
+
+		Page<WmScorePackage> wmScorePackagePage = null;
+		if (StrUtil.isNotBlank(acceptUser)) {
+			// 带有接单对象acceptUser模糊查询的查询
+			wmScorePackagePage = wmScorePackageMapper.listScorePackage(new Page<>(current, size), queryWrapper.orderByDesc(WmScorePackage::getCreateTime), acceptUser);
+		} else {
+			wmScorePackagePage = wmScorePackageMapper.selectPage(new Page<>(current, size), queryWrapper
+					.orderByDesc(WmScorePackage::getCreateTime));
+		}
+
+		List<WmScorePackage> pageRecords = wmScorePackagePage.getRecords();
+
+		if (CollUtil.isNotEmpty(pageRecords)) {
+//			List<Future<WmScorePackage>> futureList = new ArrayList<>(pageRecords.size());
+
+			for (WmScorePackage scorePackage : pageRecords) {
+				if (packageType2 == 2) {
+
+					int wsNum = settleNoteMapper.selectCount(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
+							.eq(WmScorePackageSettleNote::getPackageId, scorePackage.getId())
+							.in(WmScorePackageSettleNote::getSettleNoteStatus, 2, 9));
+					int asNum = settleNoteMapper.selectCount(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
+							.eq(WmScorePackageSettleNote::getPackageId, scorePackage.getId())
+							.eq(WmScorePackageSettleNote::getSettleNoteStatus, 1));
+					scorePackage.setWsTaskNum(wsNum);
+					scorePackage.setAsTaskNum(asNum);
+
+				}
+
+				if (PackageTypeEnum.TYPE1_HCP_PACKAGE.getName().equals(scorePackage.getPackageType1())) {
+					// 如果是患者教育,则转换积分值 '分'-> '元'
+					Integer score = scorePackage.getScore();
+					String userScore = scorePackage.getUserScore();
+					if (org.apache.commons.lang3.StringUtils.isNumeric(userScore)) {
+						scorePackage.setUserScore(String.format("%.2f", Integer.parseInt(userScore) / 100.0));
+					}
+				}
+
+				List<WmScoreTaskType> taskTypeList = wmScoreTaskTypeMapper.getScoreTaskTypeByScoreId(scorePackage.getId());
+				if (CollUtil.isNotEmpty(taskTypeList)) {
+					String taskTypes = taskTypeList.stream().map(
+							WmScoreTaskType::getTaskTypeName).collect(Collectors.joining(","));
+					scorePackage.setTaskTypes(taskTypes);
+				}
+			}
+
+//			List<WmScorePackage> finalRecords = new ArrayList<>(pageRecords.size());
+//			try {
+//				for (Future<WmScorePackage> future : futureList) {
+//					WmScorePackage wmScorePackage = future.get();
+//					finalRecords.add(wmScorePackage);
+//
+//				}
+//
+//				wmScorePackagePage.setRecords(finalRecords);
+//			} catch (ExecutionException | InterruptedException e) {
+//				log.error("获取分页信息失败", e);
+//				return R.failed("获取分页信息失败");
+//			}
+		}
+
+		return R.ok(wmScorePackagePage);
+	}
+
 	/**
 	 * 根据id查询积分包信息
 	 *

+ 25 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmScorePackageSettleNoteController.java

@@ -168,6 +168,18 @@ public class WmScorePackageSettleNoteController {
 		return wmScorePackageSettleNoteService.saveSettleInfo(note);
 	}
 
+	/**
+	 * 批量保存业务结算
+	 *
+	 * @param notes note列表
+	 * @return 结果
+	 */
+	@SysLog("批量保存业务结算")
+	@PostMapping("/batch-save-settle")
+	public R<?> batchSaveSettleInfo(@RequestBody List<WmScorePackageSettleNote> notes) {
+		return wmScorePackageSettleNoteService.batchSaveSettleInfo(notes);
+	}
+
 	/**
 	 * 提交结算申请
 	 *
@@ -181,6 +193,19 @@ public class WmScorePackageSettleNoteController {
 		return wmScorePackageSettleNoteService.subSettleInfo(note);
 	}
 
+	/**
+	 * 批量提交业务结算申请
+	 *
+	 * @param notes note列表
+	 * @return R
+	 */
+	@SysLog("批量提交业务结算申请")
+	@PostMapping("/batch-sub-settle")
+	public R<?> batchSubSettleInfo(@RequestBody List<WmScorePackageSettleNote> notes) {
+
+		return wmScorePackageSettleNoteService.batchSubSettleInfo(notes);
+	}
+
 	/**
 	 * 撤销结算申请
 	 *

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

@@ -58,8 +58,24 @@ public interface WmScorePackageSettleNoteService extends IService<WmScorePackage
 
 	R saveSettleInfo(WmScorePackageSettleNote note);
 
+	/**
+	 * 批量业务结算保存
+	 *
+	 * @param noteList note列表
+	 * @return 结果
+	 */
+	R<?> batchSaveSettleInfo(List<WmScorePackageSettleNote> noteList);
+
 	R subSettleInfo(WmScorePackageSettleNote note);
 
+	/**
+	 * 批量业务结算提交
+	 *
+	 * @param noteList note列表
+	 * @return 结果
+	 */
+	R<?> batchSubSettleInfo(List<WmScorePackageSettleNote> noteList);
+
 	R revokeSettle(WmScorePackageSettleNote note);
 
 	/**

+ 2 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmPayOffServiceImpl.java

@@ -408,7 +408,8 @@ public class WmPayOffServiceImpl extends ServiceImpl<WmPayOffMapper, WmPayOff> i
 		updateEntity.setLocation(input.getSubjectLocation());
 		updateEntity.setSettlementDate(LocalDateTime.now());
 
-		if ("2".equals(wmScorePackage.getPackageType2())) {
+		if (PackageTypeEnum.TYPE2_SETTLE_PACKAGE.val().equals(wmScorePackage.getPackageType2())
+				&& !StrUtil.equals(PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val(), wmScorePackage.getPackageType1())) {
 			updateEntity.setPackageFinishStatus("1");
 			updateEntity.setTaskAddFlag("0");
 		}

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

@@ -70,6 +70,7 @@ import org.springframework.http.HttpMethod;
 import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.client.RestTemplate;
 
 import java.math.BigDecimal;
@@ -310,6 +311,19 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 		return R.ok();
 	}
 
+	/**
+	 * 批量业务结算保存
+	 *
+	 * @param noteList note列表
+	 * @return 结果
+	 */
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public R<?> batchSaveSettleInfo(List<WmScorePackageSettleNote> noteList) {
+		noteList.forEach(this::saveSettleInfo);
+		return R.ok();
+	}
+
 	@Override
 	public R subSettleInfo(WmScorePackageSettleNote note) {
 
@@ -459,6 +473,19 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 		return R.ok();
 	}
 
+	/**
+	 * 批量业务结算提交
+	 *
+	 * @param noteList note列表
+	 * @return 结果
+	 */
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public R<?> batchSubSettleInfo(List<WmScorePackageSettleNote> noteList) {
+		noteList.forEach(this::subSettleInfo);
+		return R.ok();
+	}
+
 	@Override
 	public R revokeSettle(WmScorePackageSettleNote note) {
 		WmScorePackageSettleNote updateEntity;