Эх сурвалжийг харах

Merge branch 'feat-20220531-yaoyilimit'

shc 3 жил өмнө
parent
commit
28d2e1f56b

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

@@ -60,5 +60,10 @@ public class MonitoringIndicator extends Model<MonitoringIndicator> {
 	@ApiModelProperty(value = "限制金额")
 	@ApiModelProperty(value = "限制金额")
 	private BigDecimal limitAmount;
 	private BigDecimal limitAmount;
 
 
+	/**
+	 * 平台限额
+	 */
+	private BigDecimal yaoyiLimitAmount;
+
 	private String subType;
 	private String subType;
 }
 }

+ 2 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/SysDeptSubMapper.java

@@ -38,4 +38,6 @@ public interface SysDeptSubMapper extends BaseMapper<SysDeptSub> {
 	List<SettleAmountMonitorOutput> getSettleAmountMonitor(@Param("query") SettleAmountMonitorInput input);
 	List<SettleAmountMonitorOutput> getSettleAmountMonitor(@Param("query") SettleAmountMonitorInput input);
 
 
 	List<SettleAmountMonitorOutput> getDeptAmountMonitor(@Param("query") SettleAmountMonitorInput input);
 	List<SettleAmountMonitorOutput> getDeptAmountMonitor(@Param("query") SettleAmountMonitorInput input);
+
+	List<SettleAmountMonitorOutput> getYaoyiAmountMonitor(@Param("query") SettleAmountMonitorInput yaoyiMonitorInput);
 }
 }

+ 2 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/SysDeptSubService.java

@@ -46,4 +46,6 @@ public interface SysDeptSubService extends IService<SysDeptSub> {
 	 * @param input
 	 * @param input
 	 */
 	 */
 	void saveSettleConfig(DeptSubLimitAmountInput input);
 	void saveSettleConfig(DeptSubLimitAmountInput input);
+
+	List<SettleAmountMonitorOutput> getYaoyiAmountMonitor(SettleAmountMonitorInput yaoyiMonitorInput);
 }
 }

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

@@ -1081,6 +1081,10 @@ public class PartyAServiceImpl implements PartyAService {
 				.val());
 				.val());
 		List<SettleAmountMonitorOutput> deptAmountMonitor = sysDeptSubService.getDeptAmountMonitor(deptMonitorInput);
 		List<SettleAmountMonitorOutput> deptAmountMonitor = sysDeptSubService.getDeptAmountMonitor(deptMonitorInput);
 
 
+		SettleAmountMonitorInput yaoyiMonitorInput = SettleAmountMonitorInput.fromIdCard(idCard, ids, scorePackageSettleNoteDTO
+				.getChannel()
+				.val());
+		List<SettleAmountMonitorOutput> yaoyiAmountMonitor = sysDeptSubService.getYaoyiAmountMonitor(yaoyiMonitorInput);
 
 
 		SettleAmountMonitorOutput monitorOutput = monitorOutputList.stream().filter(item -> item.getIdCardNumber()
 		SettleAmountMonitorOutput monitorOutput = monitorOutputList.stream().filter(item -> item.getIdCardNumber()
 				.equals(member.getIdCardNumber())).findFirst().orElse(null);
 				.equals(member.getIdCardNumber())).findFirst().orElse(null);
@@ -1088,6 +1092,9 @@ public class PartyAServiceImpl implements PartyAService {
 		SettleAmountMonitorOutput deptMonitorOutput = deptAmountMonitor.stream().filter(item -> item.getUserId()
 		SettleAmountMonitorOutput deptMonitorOutput = deptAmountMonitor.stream().filter(item -> item.getUserId()
 				.equals(member.getUserId())).findFirst().orElse(null);
 				.equals(member.getUserId())).findFirst().orElse(null);
 
 
+		SettleAmountMonitorOutput yaoyiMonitorOutput = yaoyiAmountMonitor.stream().filter(item -> item.getIdCardNumber()
+				.equals(member.getIdCardNumber())).findFirst().orElse(null);
+
 		MonitoringIndicator monitoringIndicator = monitoringIndicatorService.getBySubType(note.getSubType());
 		MonitoringIndicator monitoringIndicator = monitoringIndicatorService.getBySubType(note.getSubType());
 		SysDeptSub sysDeptSub = sysDeptSubService.getOne(Wrappers.<SysDeptSub>lambdaQuery()
 		SysDeptSub sysDeptSub = sysDeptSubService.getOne(Wrappers.<SysDeptSub>lambdaQuery()
 				.eq(SysDeptSub::getDeptId, dept.getDeptId())
 				.eq(SysDeptSub::getDeptId, dept.getDeptId())
@@ -1095,14 +1102,19 @@ public class PartyAServiceImpl implements PartyAService {
 		);
 		);
 		BigDecimal deptLimit = sysDeptSub.getLimitAmount();
 		BigDecimal deptLimit = sysDeptSub.getLimitAmount();
 		BigDecimal monitoringLimit = monitoringIndicator.getLimitAmount();
 		BigDecimal monitoringLimit = monitoringIndicator.getLimitAmount();
+		BigDecimal yaoyiMonitoringLimit = monitoringIndicator.getYaoyiLimitAmount();
 		BigDecimal monitorAmount = note.getSettleAmount();
 		BigDecimal monitorAmount = note.getSettleAmount();
 		BigDecimal deptMonitorAmount = note.getSettleAmount();
 		BigDecimal deptMonitorAmount = note.getSettleAmount();
+		BigDecimal yaoyiMonitorAmount = note.getSettleAmount();
 		if (null != monitorOutput) {
 		if (null != monitorOutput) {
 			monitorAmount = monitorAmount.add(monitorOutput.getTotalAmount());
 			monitorAmount = monitorAmount.add(monitorOutput.getTotalAmount());
 		}
 		}
 		if (null != deptMonitorOutput) {
 		if (null != deptMonitorOutput) {
 			deptMonitorAmount = deptMonitorAmount.add(deptMonitorOutput.getTotalAmount());
 			deptMonitorAmount = deptMonitorAmount.add(deptMonitorOutput.getTotalAmount());
 		}
 		}
+		if (null != yaoyiMonitorOutput) {
+			yaoyiMonitorAmount = yaoyiMonitorAmount.add(yaoyiMonitorOutput.getTotalAmount());
+		}
 		if (null != deptLimit) {
 		if (null != deptLimit) {
 			if (deptMonitorAmount.compareTo(deptLimit) > 0) {
 			if (deptMonitorAmount.compareTo(deptLimit) > 0) {
 				return getResultMap("4000", note.getRealName() + ":超过当月限额");
 				return getResultMap("4000", note.getRealName() + ":超过当月限额");
@@ -1113,6 +1125,11 @@ public class PartyAServiceImpl implements PartyAService {
 				return getResultMap("4000", note.getRealName() + ":超过结算渠道限额");
 				return getResultMap("4000", note.getRealName() + ":超过结算渠道限额");
 			}
 			}
 		}
 		}
+		if (null != yaoyiMonitorAmount) {
+			if (yaoyiMonitorAmount.compareTo(yaoyiMonitoringLimit) > 0) {
+				return getResultMap("4000", note.getRealName() + ":超过平台限额");
+			}
+		}
 
 
 		WmScorePackageSettleNote updateEntity;
 		WmScorePackageSettleNote updateEntity;
 		LocalDateTime localDateTime = LocalDateTime.now();
 		LocalDateTime localDateTime = LocalDateTime.now();
@@ -1294,23 +1311,35 @@ public class PartyAServiceImpl implements PartyAService {
 				.valueOf(user.getUserId())), noteIds, SubjectTypeEnum.TYPE_SHUIBANGYUN.getCode());
 				.valueOf(user.getUserId())), noteIds, SubjectTypeEnum.TYPE_SHUIBANGYUN.getCode());
 		List<SettleAmountMonitorOutput> deptAmountMonitor = sysDeptSubService.getDeptAmountMonitor(deptMonitorInput);
 		List<SettleAmountMonitorOutput> deptAmountMonitor = sysDeptSubService.getDeptAmountMonitor(deptMonitorInput);
 
 
+		SettleAmountMonitorInput yaoyiMonitorInput = SettleAmountMonitorInput.fromIdCard(Collections.singletonList(user
+				.getIdCardNumber()), noteIds, SubjectTypeEnum.TYPE_SHUIBANGYUN.getCode());
+		List<SettleAmountMonitorOutput> yaoyiAmountMonitor = sysDeptSubService.getYaoyiAmountMonitor(yaoyiMonitorInput);
+
 		SettleAmountMonitorOutput monitorOutput = monitorOutputList.stream().filter(item -> item.getIdCardNumber()
 		SettleAmountMonitorOutput monitorOutput = monitorOutputList.stream().filter(item -> item.getIdCardNumber()
 				.equals(user.getIdCardNumber())).findFirst().orElse(null);
 				.equals(user.getIdCardNumber())).findFirst().orElse(null);
 
 
 		SettleAmountMonitorOutput deptMonitorOutput = deptAmountMonitor.stream().filter(item -> item.getUserId()
 		SettleAmountMonitorOutput deptMonitorOutput = deptAmountMonitor.stream().filter(item -> item.getUserId()
 				.equals(String.valueOf(user.getUserId()))).findFirst().orElse(null);
 				.equals(String.valueOf(user.getUserId()))).findFirst().orElse(null);
 
 
-		MonitoringIndicator monitoringIndicator = monitoringIndicatorService.getBySubType(SubjectTypeEnum.TYPE_SHUIBANGYUN
-				.getCode());
+		SettleAmountMonitorOutput yaoyiMonitorOutput = yaoyiAmountMonitor.stream().filter(item -> item.getIdCardNumber()
+				.equals(user.getIdCardNumber())).findFirst().orElse(null);
+
+		MonitoringIndicator monitoringIndicator =
+				monitoringIndicatorService.getBySubType(SubjectTypeEnum.TYPE_SHUIBANGYUN.getCode());
 		BigDecimal monitoringLimit = monitoringIndicator.getLimitAmount();
 		BigDecimal monitoringLimit = monitoringIndicator.getLimitAmount();
+		BigDecimal yaoyiMonitoringLimit = monitoringIndicator.getYaoyiLimitAmount();
 		BigDecimal monitorAmount = settleAmount;
 		BigDecimal monitorAmount = settleAmount;
 		BigDecimal deptMonitorAmount = settleAmount;
 		BigDecimal deptMonitorAmount = settleAmount;
+		BigDecimal yaoyiMonitorAmount = settleAmount;
 		if (null != monitorOutput) {
 		if (null != monitorOutput) {
 			monitorAmount = monitorAmount.add(monitorOutput.getTotalAmount());
 			monitorAmount = monitorAmount.add(monitorOutput.getTotalAmount());
 		}
 		}
 		if (null != deptMonitorOutput) {
 		if (null != deptMonitorOutput) {
 			deptMonitorAmount = deptMonitorAmount.add(deptMonitorOutput.getTotalAmount());
 			deptMonitorAmount = deptMonitorAmount.add(deptMonitorOutput.getTotalAmount());
 		}
 		}
+		if (null != yaoyiMonitorOutput) {
+			yaoyiMonitorAmount = yaoyiMonitorAmount.add(yaoyiMonitorOutput.getTotalAmount());
+		}
 		if (null != limitAmount) {
 		if (null != limitAmount) {
 			if (deptMonitorAmount.compareTo(limitAmount) > 0) {
 			if (deptMonitorAmount.compareTo(limitAmount) > 0) {
 				info = "超过当月限额";
 				info = "超过当月限额";
@@ -1321,6 +1350,11 @@ public class PartyAServiceImpl implements PartyAService {
 				info = "超过结算渠道限额";
 				info = "超过结算渠道限额";
 			}
 			}
 		}
 		}
+		if (null != yaoyiMonitoringLimit) {
+			if (yaoyiMonitorAmount.compareTo(yaoyiMonitoringLimit) > 0) {
+				info = "超过平台限额";
+			}
+		}
 		return info;
 		return info;
 	}
 	}
 
 

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

@@ -82,6 +82,11 @@ public class SysDeptSubServiceImpl extends ServiceImpl<SysDeptSubMapper, SysDept
 		return sysDeptSubMapper.getDeptAmountMonitor(input);
 		return sysDeptSubMapper.getDeptAmountMonitor(input);
 	}
 	}
 
 
+	@Override
+	public List<SettleAmountMonitorOutput> getYaoyiAmountMonitor(SettleAmountMonitorInput yaoyiMonitorInput) {
+		return sysDeptSubMapper.getYaoyiAmountMonitor(yaoyiMonitorInput);
+	}
+
 	/**
 	/**
 	 * 结算管理配置
 	 * 结算管理配置
 	 *
 	 *

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

@@ -330,6 +330,9 @@ public class WmPayOffServiceImpl extends ServiceImpl<WmPayOffMapper, WmPayOff> i
 		SettleAmountMonitorInput deptMonitorInput = SettleAmountMonitorInput.fromUserId(userIds, ids, input.getSubType());
 		SettleAmountMonitorInput deptMonitorInput = SettleAmountMonitorInput.fromUserId(userIds, ids, input.getSubType());
 		List<SettleAmountMonitorOutput> deptAmountMonitor = sysDeptSubService.getDeptAmountMonitor(deptMonitorInput);
 		List<SettleAmountMonitorOutput> deptAmountMonitor = sysDeptSubService.getDeptAmountMonitor(deptMonitorInput);
 
 
+		SettleAmountMonitorInput yaoyiMonitorInput = SettleAmountMonitorInput.fromIdCard(idCard, ids, input.getSubType());
+		List<SettleAmountMonitorOutput> yaoyiAmountMonitor = sysDeptSubService.getYaoyiAmountMonitor(yaoyiMonitorInput);
+
 		// 结算渠道
 		// 结算渠道
 		SysDeptSub condition = new SysDeptSub();
 		SysDeptSub condition = new SysDeptSub();
 		condition.setDeptId(SecurityUtils.getUser().getDeptId());
 		condition.setDeptId(SecurityUtils.getUser().getDeptId());
@@ -345,6 +348,7 @@ public class WmPayOffServiceImpl extends ServiceImpl<WmPayOffMapper, WmPayOff> i
 
 
 		BigDecimal deptLimit = sysDeptSub.getLimitAmount();
 		BigDecimal deptLimit = sysDeptSub.getLimitAmount();
 		BigDecimal monitoringLimit = monitoringIndicator.getLimitAmount();
 		BigDecimal monitoringLimit = monitoringIndicator.getLimitAmount();
+		BigDecimal yaoyiLimitAmount = monitoringIndicator.getYaoyiLimitAmount();
 
 
 		BigDecimal total = new BigDecimal(0);
 		BigDecimal total = new BigDecimal(0);
 		LocalDateTime now = LocalDateTime.now();
 		LocalDateTime now = LocalDateTime.now();
@@ -352,18 +356,25 @@ public class WmPayOffServiceImpl extends ServiceImpl<WmPayOffMapper, WmPayOff> i
 			total = total.add(note.getSettleAmount());
 			total = total.add(note.getSettleAmount());
 			BigDecimal monitorAmount = note.getSettleAmount();
 			BigDecimal monitorAmount = note.getSettleAmount();
 			BigDecimal deptMonitorAmount = note.getSettleAmount();
 			BigDecimal deptMonitorAmount = note.getSettleAmount();
+			BigDecimal yaoyiMonitorAmount = note.getSettleAmount();
 			SettleAmountMonitorOutput monitorOutput = monitorOutputList.stream().filter(item -> item.getIdCardNumber()
 			SettleAmountMonitorOutput monitorOutput = monitorOutputList.stream().filter(item -> item.getIdCardNumber()
 					.equals(note.getIdCardNumber())).findFirst().orElse(null);
 					.equals(note.getIdCardNumber())).findFirst().orElse(null);
 
 
 			SettleAmountMonitorOutput deptMonitorOutput = deptAmountMonitor.stream().filter(item -> item.getUserId()
 			SettleAmountMonitorOutput deptMonitorOutput = deptAmountMonitor.stream().filter(item -> item.getUserId()
 					.equals(note.getUserId())).findFirst().orElse(null);
 					.equals(note.getUserId())).findFirst().orElse(null);
 
 
+			SettleAmountMonitorOutput yaoyiMonitorOutput = yaoyiAmountMonitor.stream().filter(item -> item.getIdCardNumber()
+					.equals(note.getIdCardNumber())).findFirst().orElse(null);
+
 			if (null != monitorOutput) {
 			if (null != monitorOutput) {
 				monitorAmount = monitorAmount.add(monitorOutput.getTotalAmount());
 				monitorAmount = monitorAmount.add(monitorOutput.getTotalAmount());
 			}
 			}
 			if (null != deptMonitorOutput) {
 			if (null != deptMonitorOutput) {
 				deptMonitorAmount = deptMonitorAmount.add(deptMonitorOutput.getTotalAmount());
 				deptMonitorAmount = deptMonitorAmount.add(deptMonitorOutput.getTotalAmount());
 			}
 			}
+			if (null != yaoyiMonitorOutput) {
+				yaoyiMonitorAmount = yaoyiMonitorAmount.add(yaoyiMonitorOutput.getTotalAmount());
+			}
 			if (null != deptLimit) {
 			if (null != deptLimit) {
 				if (deptMonitorAmount.compareTo(deptLimit) > 0) {
 				if (deptMonitorAmount.compareTo(deptLimit) > 0) {
 					return R.failed(note.getRealName() + ":超过当月限额");
 					return R.failed(note.getRealName() + ":超过当月限额");
@@ -374,6 +385,11 @@ public class WmPayOffServiceImpl extends ServiceImpl<WmPayOffMapper, WmPayOff> i
 					return R.failed(note.getRealName() + ":超过结算渠道限额");
 					return R.failed(note.getRealName() + ":超过结算渠道限额");
 				}
 				}
 			}
 			}
+			if (null != yaoyiLimitAmount) {
+				if (yaoyiMonitorAmount.compareTo(yaoyiLimitAmount) > 0) {
+					return R.failed(note.getRealName() + ":超过平台限额");
+				}
+			}
 
 
 			note.setUpdateTime(now);
 			note.setUpdateTime(now);
 			note.setSubTime(now);
 			note.setSubTime(now);
@@ -466,38 +482,51 @@ public class WmPayOffServiceImpl extends ServiceImpl<WmPayOffMapper, WmPayOff> i
 		SettleAmountMonitorInput deptMonitorInput = SettleAmountMonitorInput.fromUserId(userIds, ids, input.getSubType());
 		SettleAmountMonitorInput deptMonitorInput = SettleAmountMonitorInput.fromUserId(userIds, ids, input.getSubType());
 		List<SettleAmountMonitorOutput> deptAmountMonitor = sysDeptSubService.getDeptAmountMonitor(deptMonitorInput);
 		List<SettleAmountMonitorOutput> deptAmountMonitor = sysDeptSubService.getDeptAmountMonitor(deptMonitorInput);
 
 
+		SettleAmountMonitorInput yaoyiMonitorInput = SettleAmountMonitorInput.fromIdCard(idCard, ids, input.getSubType());
+		List<SettleAmountMonitorOutput> yaoyiAmountMonitor = sysDeptSubService.getYaoyiAmountMonitor(yaoyiMonitorInput);
+
+		// 结算渠道
 		SysDeptSub condition = new SysDeptSub();
 		SysDeptSub condition = new SysDeptSub();
 		condition.setDeptId(SecurityUtils.getUser().getDeptId());
 		condition.setDeptId(SecurityUtils.getUser().getDeptId());
 		condition.setSubjectType(input.getSubType());
 		condition.setSubjectType(input.getSubType());
 		condition.setEnableFlag(SubjectTypeEnum.ENABLE_FLAG_TRUE.getCode());
 		condition.setEnableFlag(SubjectTypeEnum.ENABLE_FLAG_TRUE.getCode());
 		SysDeptSub sysDeptSub = sysDeptSubService.getOne(Wrappers.query(condition));
 		SysDeptSub sysDeptSub = sysDeptSubService.getOne(Wrappers.query(condition));
-
 		if (null == sysDeptSub || StringUtils.isBlank(sysDeptSub.getAppId())) {
 		if (null == sysDeptSub || StringUtils.isBlank(sysDeptSub.getAppId())) {
 			return R.failed("人员所在机构未配置结算信息");
 			return R.failed("人员所在机构未配置结算信息");
 		}
 		}
 
 
+		// 限额
 		MonitoringIndicator monitoringIndicator = monitoringIndicatorService.getBySubType(input.getSubType());
 		MonitoringIndicator monitoringIndicator = monitoringIndicatorService.getBySubType(input.getSubType());
 
 
 		BigDecimal deptLimit = sysDeptSub.getLimitAmount();
 		BigDecimal deptLimit = sysDeptSub.getLimitAmount();
 		BigDecimal monitoringLimit = monitoringIndicator.getLimitAmount();
 		BigDecimal monitoringLimit = monitoringIndicator.getLimitAmount();
+		BigDecimal yaoyiLimitAmount = monitoringIndicator.getYaoyiLimitAmount();
 
 
 		BigDecimal total = new BigDecimal(0);
 		BigDecimal total = new BigDecimal(0);
+		LocalDateTime now = LocalDateTime.now();
 		for (WmScorePackageSettleNote note : notes) {
 		for (WmScorePackageSettleNote note : notes) {
 			total = total.add(note.getSettleAmount());
 			total = total.add(note.getSettleAmount());
 			BigDecimal monitorAmount = note.getSettleAmount();
 			BigDecimal monitorAmount = note.getSettleAmount();
 			BigDecimal deptMonitorAmount = note.getSettleAmount();
 			BigDecimal deptMonitorAmount = note.getSettleAmount();
+			BigDecimal yaoyiMonitorAmount = note.getSettleAmount();
 			SettleAmountMonitorOutput monitorOutput = monitorOutputList.stream().filter(item -> item.getIdCardNumber()
 			SettleAmountMonitorOutput monitorOutput = monitorOutputList.stream().filter(item -> item.getIdCardNumber()
 					.equals(note.getIdCardNumber())).findFirst().orElse(null);
 					.equals(note.getIdCardNumber())).findFirst().orElse(null);
 
 
 			SettleAmountMonitorOutput deptMonitorOutput = deptAmountMonitor.stream().filter(item -> item.getUserId()
 			SettleAmountMonitorOutput deptMonitorOutput = deptAmountMonitor.stream().filter(item -> item.getUserId()
 					.equals(note.getUserId())).findFirst().orElse(null);
 					.equals(note.getUserId())).findFirst().orElse(null);
 
 
+			SettleAmountMonitorOutput yaoyiMonitorOutput = yaoyiAmountMonitor.stream().filter(item -> item.getIdCardNumber()
+					.equals(note.getIdCardNumber())).findFirst().orElse(null);
+
 			if (null != monitorOutput) {
 			if (null != monitorOutput) {
 				monitorAmount = monitorAmount.add(monitorOutput.getTotalAmount());
 				monitorAmount = monitorAmount.add(monitorOutput.getTotalAmount());
 			}
 			}
 			if (null != deptMonitorOutput) {
 			if (null != deptMonitorOutput) {
 				deptMonitorAmount = deptMonitorAmount.add(deptMonitorOutput.getTotalAmount());
 				deptMonitorAmount = deptMonitorAmount.add(deptMonitorOutput.getTotalAmount());
 			}
 			}
+			if (null != yaoyiMonitorOutput) {
+				yaoyiMonitorAmount = yaoyiMonitorAmount.add(yaoyiMonitorOutput.getTotalAmount());
+			}
 			if (null != deptLimit) {
 			if (null != deptLimit) {
 				if (deptMonitorAmount.compareTo(deptLimit) > 0) {
 				if (deptMonitorAmount.compareTo(deptLimit) > 0) {
 					return R.failed(note.getRealName() + ":超过当月限额");
 					return R.failed(note.getRealName() + ":超过当月限额");
@@ -508,16 +537,20 @@ public class WmPayOffServiceImpl extends ServiceImpl<WmPayOffMapper, WmPayOff> i
 					return R.failed(note.getRealName() + ":超过结算渠道限额");
 					return R.failed(note.getRealName() + ":超过结算渠道限额");
 				}
 				}
 			}
 			}
+			if (null != yaoyiLimitAmount) {
+				if (yaoyiMonitorAmount.compareTo(yaoyiLimitAmount) > 0) {
+					return R.failed(note.getRealName() + ":超过平台限额");
+				}
+			}
 
 
-			note.setInvoiceType(input.getInvoiceCategory());
-			note.setUpdateTime(LocalDateTime.now());
+			note.setUpdateTime(now);
+			note.setSubTime(now);
 			note.setSubType(input.getSubType());
 			note.setSubType(input.getSubType());
 			note.setInvoiceType(input.getInvoiceCategory());
 			note.setInvoiceType(input.getInvoiceCategory());
 			note.setCategoryName(input.toCategoryName());
 			note.setCategoryName(input.toCategoryName());
 			if (null == note.getId()) {
 			if (null == note.getId()) {
 				note.setCreateTime(LocalDateTime.now());
 				note.setCreateTime(LocalDateTime.now());
 			}
 			}
-
 		}
 		}
 		WmScorePackage updateEntity = new WmScorePackage();
 		WmScorePackage updateEntity = new WmScorePackage();
 		updateEntity.setInvoiceCategory(input.getInvoiceCategory());
 		updateEntity.setInvoiceCategory(input.getInvoiceCategory());

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

@@ -217,6 +217,8 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 		SettleAmountMonitorInput deptMonitorInput = SettleAmountMonitorInput.fromUserId(userIds, ids, note.getSubType());
 		SettleAmountMonitorInput deptMonitorInput = SettleAmountMonitorInput.fromUserId(userIds, ids, note.getSubType());
 		List<SettleAmountMonitorOutput> deptAmountMonitor = sysDeptSubService.getDeptAmountMonitor(deptMonitorInput);
 		List<SettleAmountMonitorOutput> deptAmountMonitor = sysDeptSubService.getDeptAmountMonitor(deptMonitorInput);
 
 
+		SettleAmountMonitorInput yaoyiMonitorInput = SettleAmountMonitorInput.fromIdCard(idCard, ids, note.getSubType());
+		List<SettleAmountMonitorOutput> yaoyiAmountMonitor = sysDeptSubService.getYaoyiAmountMonitor(yaoyiMonitorInput);
 
 
 		SettleAmountMonitorOutput monitorOutput = monitorOutputList.stream().filter(item -> item.getIdCardNumber()
 		SettleAmountMonitorOutput monitorOutput = monitorOutputList.stream().filter(item -> item.getIdCardNumber()
 				.equals(user.getIdCardNumber())).findFirst().orElse(null);
 				.equals(user.getIdCardNumber())).findFirst().orElse(null);
@@ -224,17 +226,25 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 		SettleAmountMonitorOutput deptMonitorOutput = deptAmountMonitor.stream().filter(item -> item.getUserId()
 		SettleAmountMonitorOutput deptMonitorOutput = deptAmountMonitor.stream().filter(item -> item.getUserId()
 				.equals(note.getUserId())).findFirst().orElse(null);
 				.equals(note.getUserId())).findFirst().orElse(null);
 
 
+		SettleAmountMonitorOutput yaoyiMonitorOutput = yaoyiAmountMonitor.stream().filter(item -> item.getIdCardNumber()
+				.equals(user.getIdCardNumber())).findFirst().orElse(null);
+
 		MonitoringIndicator monitoringIndicator = monitoringIndicatorService.getBySubType(note.getSubType());
 		MonitoringIndicator monitoringIndicator = monitoringIndicatorService.getBySubType(note.getSubType());
 		BigDecimal deptLimit = sysDeptSub.getLimitAmount();
 		BigDecimal deptLimit = sysDeptSub.getLimitAmount();
+		BigDecimal yaoyiLimit = monitoringIndicator.getYaoyiLimitAmount();
 		BigDecimal monitoringLimit = monitoringIndicator.getLimitAmount();
 		BigDecimal monitoringLimit = monitoringIndicator.getLimitAmount();
 		BigDecimal monitorAmount = note.getSettleAmount();
 		BigDecimal monitorAmount = note.getSettleAmount();
 		BigDecimal deptMonitorAmount = note.getSettleAmount();
 		BigDecimal deptMonitorAmount = note.getSettleAmount();
+		BigDecimal yaoyiMonitorAmount = note.getSettleAmount();
 		if (null != monitorOutput) {
 		if (null != monitorOutput) {
 			monitorAmount = monitorAmount.add(monitorOutput.getTotalAmount());
 			monitorAmount = monitorAmount.add(monitorOutput.getTotalAmount());
 		}
 		}
 		if (null != deptMonitorOutput) {
 		if (null != deptMonitorOutput) {
 			deptMonitorAmount = deptMonitorAmount.add(deptMonitorOutput.getTotalAmount());
 			deptMonitorAmount = deptMonitorAmount.add(deptMonitorOutput.getTotalAmount());
 		}
 		}
+		if (null != yaoyiMonitorOutput) {
+			yaoyiMonitorAmount = yaoyiMonitorAmount.add(yaoyiMonitorOutput.getTotalAmount());
+		}
 		if (null != deptLimit) {
 		if (null != deptLimit) {
 			if (deptMonitorAmount.compareTo(deptLimit) > 0) {
 			if (deptMonitorAmount.compareTo(deptLimit) > 0) {
 				return R.failed(note.getRealName() + ":超过当月限额");
 				return R.failed(note.getRealName() + ":超过当月限额");
@@ -245,6 +255,11 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 				return R.failed(note.getRealName() + ":超过结算渠道限额");
 				return R.failed(note.getRealName() + ":超过结算渠道限额");
 			}
 			}
 		}
 		}
+		if (null != yaoyiLimit) {
+			if (yaoyiMonitorAmount.compareTo(yaoyiLimit) > 0) {
+				return R.failed(note.getRealName() + ":超过平台限额");
+			}
+		}
 
 
 		LocalDateTime localDateTime = LocalDateTime.now();
 		LocalDateTime localDateTime = LocalDateTime.now();
 		if (null == note.getId()) {
 		if (null == note.getId()) {
@@ -329,6 +344,8 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 		SettleAmountMonitorInput deptMonitorInput = SettleAmountMonitorInput.fromUserId(userIds, ids, note.getSubType());
 		SettleAmountMonitorInput deptMonitorInput = SettleAmountMonitorInput.fromUserId(userIds, ids, note.getSubType());
 		List<SettleAmountMonitorOutput> deptAmountMonitor = sysDeptSubService.getDeptAmountMonitor(deptMonitorInput);
 		List<SettleAmountMonitorOutput> deptAmountMonitor = sysDeptSubService.getDeptAmountMonitor(deptMonitorInput);
 
 
+		SettleAmountMonitorInput yaoyiMonitorInput = SettleAmountMonitorInput.fromIdCard(idCard, ids, note.getSubType());
+		List<SettleAmountMonitorOutput> yaoyiAmountMonitor = sysDeptSubService.getYaoyiAmountMonitor(yaoyiMonitorInput);
 
 
 		SettleAmountMonitorOutput monitorOutput = monitorOutputList.stream().filter(item -> item.getIdCardNumber()
 		SettleAmountMonitorOutput monitorOutput = monitorOutputList.stream().filter(item -> item.getIdCardNumber()
 				.equals(user.getIdCardNumber())).findFirst().orElse(null);
 				.equals(user.getIdCardNumber())).findFirst().orElse(null);
@@ -336,17 +353,25 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 		SettleAmountMonitorOutput deptMonitorOutput = deptAmountMonitor.stream().filter(item -> item.getUserId()
 		SettleAmountMonitorOutput deptMonitorOutput = deptAmountMonitor.stream().filter(item -> item.getUserId()
 				.equals(note.getUserId())).findFirst().orElse(null);
 				.equals(note.getUserId())).findFirst().orElse(null);
 
 
+		SettleAmountMonitorOutput yaoyiMonitorOutput = yaoyiAmountMonitor.stream().filter(item -> item.getIdCardNumber()
+				.equals(user.getIdCardNumber())).findFirst().orElse(null);
+
 		MonitoringIndicator monitoringIndicator = monitoringIndicatorService.getBySubType(note.getSubType());
 		MonitoringIndicator monitoringIndicator = monitoringIndicatorService.getBySubType(note.getSubType());
 		BigDecimal deptLimit = sysDeptSub.getLimitAmount();
 		BigDecimal deptLimit = sysDeptSub.getLimitAmount();
+		BigDecimal yaoyiLimit = monitoringIndicator.getYaoyiLimitAmount();
 		BigDecimal monitoringLimit = monitoringIndicator.getLimitAmount();
 		BigDecimal monitoringLimit = monitoringIndicator.getLimitAmount();
 		BigDecimal monitorAmount = note.getSettleAmount();
 		BigDecimal monitorAmount = note.getSettleAmount();
 		BigDecimal deptMonitorAmount = note.getSettleAmount();
 		BigDecimal deptMonitorAmount = note.getSettleAmount();
+		BigDecimal yaoyiMonitorAmount = note.getSettleAmount();
 		if (null != monitorOutput) {
 		if (null != monitorOutput) {
 			monitorAmount = monitorAmount.add(monitorOutput.getTotalAmount());
 			monitorAmount = monitorAmount.add(monitorOutput.getTotalAmount());
 		}
 		}
 		if (null != deptMonitorOutput) {
 		if (null != deptMonitorOutput) {
 			deptMonitorAmount = deptMonitorAmount.add(deptMonitorOutput.getTotalAmount());
 			deptMonitorAmount = deptMonitorAmount.add(deptMonitorOutput.getTotalAmount());
 		}
 		}
+		if (null != yaoyiMonitorOutput) {
+			yaoyiMonitorAmount = yaoyiMonitorAmount.add(yaoyiMonitorOutput.getTotalAmount());
+		}
 		if (null != deptLimit) {
 		if (null != deptLimit) {
 			if (deptMonitorAmount.compareTo(deptLimit) > 0) {
 			if (deptMonitorAmount.compareTo(deptLimit) > 0) {
 				return R.failed(note.getRealName() + ":超过当月限额");
 				return R.failed(note.getRealName() + ":超过当月限额");
@@ -357,6 +382,11 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 				return R.failed(note.getRealName() + ":超过结算渠道限额");
 				return R.failed(note.getRealName() + ":超过结算渠道限额");
 			}
 			}
 		}
 		}
+		if (null != yaoyiLimit) {
+			if (yaoyiMonitorAmount.compareTo(yaoyiLimit) > 0) {
+				return R.failed(note.getRealName() + ":超过平台限额");
+			}
+		}
 
 
 		WmScorePackageSettleNote updateEntity;
 		WmScorePackageSettleNote updateEntity;
 		LocalDateTime localDateTime = LocalDateTime.now();
 		LocalDateTime localDateTime = LocalDateTime.now();

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

@@ -2229,23 +2229,37 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
 				.valueOf(user.getUserId())), null, SubjectTypeEnum.TYPE_SHUIBANGYUN.getCode());
 				.valueOf(user.getUserId())), null, SubjectTypeEnum.TYPE_SHUIBANGYUN.getCode());
 		List<SettleAmountMonitorOutput> deptAmountMonitor = sysDeptSubService.getDeptAmountMonitor(deptMonitorInput);
 		List<SettleAmountMonitorOutput> deptAmountMonitor = sysDeptSubService.getDeptAmountMonitor(deptMonitorInput);
 
 
+		SettleAmountMonitorInput yaoyiMonitorInput = SettleAmountMonitorInput.fromIdCard(Collections.singletonList(user
+				.getIdCardNumber()), null, SubjectTypeEnum.TYPE_SHUIBANGYUN.getCode());
+		List<SettleAmountMonitorOutput> yaoyiAmountMonitor = sysDeptSubService.getYaoyiAmountMonitor(yaoyiMonitorInput);
+
 		SettleAmountMonitorOutput monitorOutput = monitorOutputList.stream().filter(item -> item.getIdCardNumber()
 		SettleAmountMonitorOutput monitorOutput = monitorOutputList.stream().filter(item -> item.getIdCardNumber()
 				.equals(user.getIdCardNumber())).findFirst().orElse(null);
 				.equals(user.getIdCardNumber())).findFirst().orElse(null);
 
 
 		SettleAmountMonitorOutput deptMonitorOutput = deptAmountMonitor.stream().filter(item -> item.getUserId()
 		SettleAmountMonitorOutput deptMonitorOutput = deptAmountMonitor.stream().filter(item -> item.getUserId()
 				.equals(String.valueOf(user.getUserId()))).findFirst().orElse(null);
 				.equals(String.valueOf(user.getUserId()))).findFirst().orElse(null);
 
 
-		MonitoringIndicator monitoringIndicator = monitoringIndicatorService.getBySubType(SubjectTypeEnum.TYPE_SHUIBANGYUN
-				.getCode());
+		SettleAmountMonitorOutput yaoyiMonitorOutput = yaoyiAmountMonitor.stream().filter(item -> item.getIdCardNumber()
+				.equals(user.getIdCardNumber())).findFirst().orElse(null);
+
+
+		MonitoringIndicator monitoringIndicator =
+				monitoringIndicatorService.getBySubType(SubjectTypeEnum.TYPE_SHUIBANGYUN.getCode());
 		BigDecimal monitoringLimit = monitoringIndicator.getLimitAmount();
 		BigDecimal monitoringLimit = monitoringIndicator.getLimitAmount();
+		BigDecimal yaoyiMonitoringLimit = monitoringIndicator.getYaoyiLimitAmount();
 		BigDecimal monitorAmount = settleAmount;
 		BigDecimal monitorAmount = settleAmount;
 		BigDecimal deptMonitorAmount = settleAmount;
 		BigDecimal deptMonitorAmount = settleAmount;
+		BigDecimal yaoyiMonitorAmount = settleAmount;
+
 		if (null != monitorOutput) {
 		if (null != monitorOutput) {
 			monitorAmount = monitorAmount.add(monitorOutput.getTotalAmount());
 			monitorAmount = monitorAmount.add(monitorOutput.getTotalAmount());
 		}
 		}
 		if (null != deptMonitorOutput) {
 		if (null != deptMonitorOutput) {
 			deptMonitorAmount = deptMonitorAmount.add(deptMonitorOutput.getTotalAmount());
 			deptMonitorAmount = deptMonitorAmount.add(deptMonitorOutput.getTotalAmount());
 		}
 		}
+		if (null != yaoyiMonitorOutput) {
+			yaoyiMonitorAmount = yaoyiMonitorAmount.add(yaoyiMonitorOutput.getTotalAmount());
+		}
 		if (null != limitAmount) {
 		if (null != limitAmount) {
 			if (deptMonitorAmount.compareTo(limitAmount) > 0) {
 			if (deptMonitorAmount.compareTo(limitAmount) > 0) {
 				info = "超过当月限额";
 				info = "超过当月限额";
@@ -2256,6 +2270,11 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
 				info = "超过结算渠道限额";
 				info = "超过结算渠道限额";
 			}
 			}
 		}
 		}
+		if (null != yaoyiMonitoringLimit) {
+			if (yaoyiMonitorAmount.compareTo(yaoyiMonitoringLimit) > 0) {
+				info = "超过平台限额";
+			}
+		}
 		return info;
 		return info;
 	}
 	}
 
 

+ 20 - 0
hnqz-upms/hnqz-upms-biz/src/main/resources/mapper/SysDeptSubMapper.xml

@@ -56,4 +56,24 @@
 		</if>
 		</if>
 		GROUP BY t.user_id
 		GROUP BY t.user_id
 	</select>
 	</select>
+	<select id="getYaoyiAmountMonitor" resultType="com.qunzhixinxi.hnqz.admin.entity.output.SettleAmountMonitorOutput">
+		SELECT
+		t.id_card_number,
+		sum(t.settle_amount) AS totalAmount
+		FROM wm_score_package_settle_note t
+		WHERE t.create_time &gt; #{query.startTime,jdbcType=TIMESTAMP}
+		AND t.create_time &lt; #{query.endTime,jdbcType=TIMESTAMP}
+		AND t.id_card_number IN
+		<foreach item="item" index="index" collection="query.idCard" open="(" separator="," close=")">
+			#{item}
+		</foreach>
+		<if test="query.ids != null and query.ids.size()>0">
+			AND t.id NOT IN
+			<foreach item="item" index="index" collection="query.ids" open="(" separator="," close=")">
+				#{item}
+			</foreach>
+		</if>
+		GROUP BY t.id_card_number
+	</select>
+
 </mapper>
 </mapper>