Browse Source

feat: 积分包终止调整

lixuesong 1 year ago
parent
commit
a9271bfbce

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

@@ -2071,7 +2071,7 @@ public class WmScorePackageController {
 	@PostMapping("/stopWmScorePackage")
 	@Transactional(rollbackFor = Exception.class)
 	public R stopWmScorePackage(@RequestBody WmScorePackage wmScorePackage) {
-		if (StrUtil.isBlank(wmScorePackage.getId()) || StrUtil.isBlank(wmScorePackage.getEnableType())) {
+		if (StrUtil.isBlank(wmScorePackage.getId()) || StrUtil.equalsAny(wmScorePackage.getEnableType(), "1", "2")) {
 			return R.failed("必填参数为空");
 		}
 
@@ -3072,7 +3072,7 @@ public class WmScorePackageController {
 	@SysLog("终止积分包(个人包)")
 	@GetMapping("/updateEnable")
 	public R terminatePackageForPersonal(WmScorePackage wmScorePackage) {
-		if (StrUtil.isBlank(wmScorePackage.getEnableType()) || StrUtil.isBlank(wmScorePackage.getId())) {
+		if (StrUtil.equalsAny(wmScorePackage.getEnableType(), "1", "2") || StrUtil.isBlank(wmScorePackage.getId())) {
 			return R.failed("必填参数为空");
 		}
 

+ 46 - 39
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmScorePackageServiceImpl.java

@@ -650,7 +650,6 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 		// 2.关联了上级积分包
 		boolean relatedScoreId = StrUtil.isNotBlank(wmScorePackage.getRelationScoreId()) && Integer.parseInt(wmScorePackage.getRelationScoreId()) > 0;
 		SysDeptRecharge deptRecharge = null;
-		int currentScore = 0;
 		LocalDateTime now = LocalDateTime.now();
 		if (!relatedScoreId) {
 			deptRecharge = sysDeptRechargeMapper.selectOne(Wrappers.<SysDeptRecharge>lambdaQuery()
@@ -665,21 +664,6 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 						wmScorePackage.getScore(), deptRecharge.getScore(), limitScore);
 				throw new RuntimeException(String.format("积分余额:%s。积分不足", deptRecharge.getScore()));
 			}
-
-			currentScore = deptRecharge.getScore() - wmScorePackage.getScore();
-
-			// 更新积分充值信息
-			int updateRecharge = sysDeptRechargeMapper.update(null, Wrappers.<SysDeptRecharge>lambdaUpdate()
-					.eq(SysDeptRecharge::getId, deptRecharge.getId())
-					.eq(SysDeptRecharge::getVersion, deptRecharge.getVersion())
-					.set(SysDeptRecharge::getScore, currentScore)
-					.set(SysDeptRecharge::getVersion, deptRecharge.getVersion() + 1)
-					.set(SysDeptRecharge::getUpdateTime, now)
-					.set(SysDeptRecharge::getUpdateUser, currentUser.getId()));
-			if (updateRecharge <= 0) {
-				log.warn("更新积分充值信息失败");
-				throw new RuntimeException("操作失败,请重试");
-			}
 		}
 
 		WmScorePackage relationScorePackage = new WmScorePackage();//关联积分包
@@ -890,15 +874,22 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 		}
 
 		if (!relatedScoreId) {
-			// 查询关联操作对象
-//			List<SysJyEntRelation> jyEntRelations = sysJyEntRelationMapper.selectList(Wrappers.<SysJyEntRelation>lambdaQuery()
-//					.eq(SysJyEntRelation::getEntDept, currentUser.getDeptId()));
+			int currentScore = deptRecharge.getScore() - wmScorePackage.getScore();
+			// 更新积分充值信息
+			int updateRecharge = sysDeptRechargeMapper.update(null, Wrappers.<SysDeptRecharge>lambdaUpdate()
+					.eq(SysDeptRecharge::getId, deptRecharge.getId())
+					.eq(SysDeptRecharge::getVersion, deptRecharge.getVersion())
+					.set(SysDeptRecharge::getScore, currentScore)
+					.set(SysDeptRecharge::getVersion, deptRecharge.getVersion() + 1)
+					.set(SysDeptRecharge::getUpdateTime, now)
+					.set(SysDeptRecharge::getUpdateUser, currentUser.getId()));
+			if (updateRecharge <= 0) {
+				log.warn("更新积分充值信息失败");
+				throw new RuntimeException("操作失败,请重试");
+			}
 			// 更新积分充值记录
 			SysDeptRechargeRecord rechargeRecord = new SysDeptRechargeRecord();
 			rechargeRecord.setDeptId(currentUser.getDeptId());
-//			if (CollUtil.isNotEmpty(jyEntRelations)) {
-//				rechargeRecord.setRelationDeptId(jyEntRelations.get(0).getJyDept());
-//			}
 			rechargeRecord.setChangeScore(-wmScorePackage.getScore());
 			rechargeRecord.setRechargeId(deptRecharge.getId());
 			rechargeRecord.setPackageType(RechargeRecordPackageType.TO_PERSON);
@@ -3031,6 +3022,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 			throw new RuntimeException("请选择企业承接的大包");
 		}
 
+		log.info("当前积分包终止前数据:{}", scorePackage);
 		if (UpmsType.TerminatePackageType.ALL.equals(terminatePackageType)) {
 			// 全部终止的校验
 			int relatedPackageCount = this.count(Wrappers.<WmScorePackage>lambdaQuery()
@@ -3039,24 +3031,39 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 			if (relatedPackageCount > 0 || !scorePackage.getScore().equals(scorePackage.getKfpjf())) {
 				throw new RuntimeException("积分包已被分派,请联系下属CSO终止关联积分包后再进行次操作");
 			}
-		}
-
-		// 更新积分包状态
-		WmScorePackage updateEntity = new WmScorePackage();
-		updateEntity.setId(packageId);
-		updateEntity.setPackageFinishStatus("2");
-		updateEntity.setEnableType(terminatePackageType.getEnableType());
-		updateEntity.setEnableFlag(EnableEnum.DISABLE.val());
-		updateEntity.setScorePackageStatus(ScorePackageStatusEnum.TERMINATED.val());
-		updateEntity.setUpdateTime(now);
-		updateEntity.setUpdateUser(userId);
-		log.info("更新积分包参数:{}", updateEntity);
-		this.updateById(updateEntity);
-
-		if (UpmsType.TerminatePackageType.REMAIN.equals(terminatePackageType)) {
-			// 剩余回收: 回收可分配积分值
+			// 全部终止: 更新积分包状态为已终止
+			WmScorePackage updateEntity = new WmScorePackage();
+			updateEntity.setId(packageId);
+			updateEntity.setPackageFinishStatus("2");
+			updateEntity.setEnableType(terminatePackageType.getEnableType());
+			updateEntity.setEnableFlag(EnableEnum.DISABLE.val());
+			updateEntity.setScorePackageStatus(ScorePackageStatusEnum.TERMINATED.val());
+			updateEntity.setUpdateTime(now);
+			updateEntity.setUpdateUser(userId);
+			log.info("更新积分包参数:{}", updateEntity);
+			this.updateById(updateEntity);
+		} else {
+			// 剩余回收
+			// 已分配积分值
+			int assignedScore = 0;
+			List<WmScorePackage> subPackages = this.list(Wrappers.<WmScorePackage>lambdaQuery()
+					.eq(WmScorePackage::getRelationScoreId, packageId)
+					.ne(WmScorePackage::getScorePackageStatus, ScorePackageStatusEnum.TERMINATED.val()));
+			if (CollUtil.isNotEmpty(subPackages)) {
+				assignedScore = subPackages.stream().mapToInt(WmScorePackage::getScore).sum();
+			}
+			// 剩余收回: 更新积分包分值为已分配的积分
+			WmScorePackage updateEntity = new WmScorePackage();
+			updateEntity.setId(packageId);
+			updateEntity.setEnableType(terminatePackageType.getEnableType());
+			updateEntity.setScore(assignedScore);
+			updateEntity.setUpdateTime(now);
+			updateEntity.setUpdateUser(userId);
+			log.info("更新积分包参数:{}", updateEntity);
+			this.updateById(updateEntity);
+
+			// 可分配积分值
 			int recoveryScore = scorePackage.getKfpjf();
-
 			// 如果关联了大包 回收整包的积分值到大包的可分配积分值。如果没有关联大包,回收整包积分值到该企业的余额
 			boolean relatedScoreId = StrUtil.isNotBlank(scorePackage.getRelationScoreId()) && Integer.parseInt(scorePackage.getRelationScoreId()) > 0;
 			if (relatedScoreId) {