|
@@ -67,7 +67,7 @@ public class SwBillingRecordServiceImpl extends ServiceImpl<SwBillingRecordDao,
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public R windowPayment(PaymentRequestDTO paymentRequestDTO) throws Exception {
|
|
|
List<String> ids = paymentRequestDTO.getIds();
|
|
|
- BigDecimal paidin = paymentRequestDTO.getPaidin();
|
|
|
+ BigDecimal paidIn = paymentRequestDTO.getPaidin();
|
|
|
String datasource = paymentRequestDTO.getDatasource();
|
|
|
//1. 根据户号查询 待缴费 状态 无缴费记录的 的待缴费账单
|
|
|
LambdaQueryWrapper<SwBillManagementUnpaidDo> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
@@ -81,9 +81,7 @@ public class SwBillingRecordServiceImpl extends ServiceImpl<SwBillingRecordDao,
|
|
|
checkBillingData(list,ids);
|
|
|
|
|
|
//生成缴费记录
|
|
|
- SwBillingRecordDo swBillingRecordDo = addNewBillRecord(paidin,datasource,list);
|
|
|
- swBillingRecordService.save(swBillingRecordDo);
|
|
|
-
|
|
|
+ addNewBillRecord(paidIn,datasource,list);
|
|
|
|
|
|
//5.删除 待收账单数据
|
|
|
swBillManagementUnpaidDao.deleteByIds(ids);
|
|
@@ -100,18 +98,20 @@ public class SwBillingRecordServiceImpl extends ServiceImpl<SwBillingRecordDao,
|
|
|
* @param datasource
|
|
|
* @param list
|
|
|
*/
|
|
|
- private SwBillingRecordDo addNewBillRecord(BigDecimal paidin, String datasource, List<SwBillManagementUnpaidDo> list) {
|
|
|
+ private void addNewBillRecord(BigDecimal paidin, String datasource, List<SwBillManagementUnpaidDo> list) {
|
|
|
SwBillingRecordDo add = new SwBillingRecordDo();
|
|
|
|
|
|
- add.setId(SecurityUtil.getUUID());
|
|
|
- add.setBillingnumber(CreateBillingNumber());
|
|
|
- add.setChargedate(new Date());
|
|
|
- add.setUsername(list.get(0).getUsername());
|
|
|
- add.setUsernumber(list.get(0).getUsernumber());
|
|
|
- add.setUsertype(list.get(0).getUsertype());
|
|
|
- add.setAddress(list.get(0).getAddress());
|
|
|
- add.setPayfeesstatus(PAIDSTATUS); // 已缴费
|
|
|
- add.setYear(Calendar.getInstance().get(Calendar.YEAR));
|
|
|
+ add.setId(SecurityUtil.getUUID())
|
|
|
+ .setChargedate(new Date())
|
|
|
+ .setPayfeesstatus(PAIDSTATUS)
|
|
|
+ .setYear(Calendar.getInstance().get(Calendar.YEAR))
|
|
|
+ .setUsername(list.get(0).getUsername())
|
|
|
+ .setUsernumber(list.get(0).getUsernumber())
|
|
|
+ .setUsertype(list.get(0).getUsertype())
|
|
|
+ .setAddress(list.get(0).getAddress());
|
|
|
+
|
|
|
+ //生成缴费编号 年月日 + 3位数 随机数
|
|
|
+ CreateBillingNumber(add);
|
|
|
|
|
|
//当前用户
|
|
|
SysUserVo currentUser = ZhswCommonUtils.getCurrentUser();
|
|
@@ -139,7 +139,9 @@ public class SwBillingRecordServiceImpl extends ServiceImpl<SwBillingRecordDao,
|
|
|
BeanUtils.copyProperties(unpaidDo,paidDo);
|
|
|
// 新生成的 已缴费账单
|
|
|
paidDo.setStatus(PAIDINSTATUS);
|
|
|
- paidDo.setPaymentrecordid(add.getId()); //缴费记录ID
|
|
|
+ //缴费记录ID
|
|
|
+ paidDo.setPaymentrecordid(add.getId());
|
|
|
+
|
|
|
paidDo.setCreateuserid(currentUser.getId())
|
|
|
.setCreateusername(currentUser.getName())
|
|
|
.setCreatedate(new Date())
|
|
@@ -151,14 +153,12 @@ public class SwBillingRecordServiceImpl extends ServiceImpl<SwBillingRecordDao,
|
|
|
}
|
|
|
//生成已经缴费账单
|
|
|
swBillManagementPaidService.saveBatch(paidDos);
|
|
|
-
|
|
|
//总减免
|
|
|
add.setAllfeewaiver(allfeewaiver);
|
|
|
//原应缴
|
|
|
add.setOughttohavepaid(oughttohavepaid);
|
|
|
//滞纳金
|
|
|
add.setLatefees(latefees);
|
|
|
-
|
|
|
//根据户号获取 用户记录
|
|
|
SwUserManagementDo swUserManagement = swUserManagementService.getBaseMapper().
|
|
|
selectOne(new LambdaQueryWrapper<SwUserManagementDo>().eq(SwUserManagementDo::getUsernumber, add.getUsernumber()));
|
|
@@ -169,40 +169,31 @@ public class SwBillingRecordServiceImpl extends ServiceImpl<SwBillingRecordDao,
|
|
|
add.setAccountbalance(accountbalance);
|
|
|
//原余额(元) = 用户表 用户余额
|
|
|
add.setOriginalbalance(accountbalance);
|
|
|
-
|
|
|
//实缴
|
|
|
add.setPaidin(paidin);
|
|
|
-
|
|
|
- //1、当 【余额】 >=【原应缴(元)】-【总减免(元)】 -【滞纳金(元)】 时,【余额】字段=【原应缴(元)】-【总减免(元)】 -【滞纳金(元)】
|
|
|
- //2、当 【余额】 <【原应缴(元)】-【总减免(元)】 -【滞纳金(元)】 时,【余额】字段=【账户余额(元)】
|
|
|
+ //1、当 【余额】 >=【原应缴(元)】-【总减免(元)】 -【滞纳金(元)】 时,【余额抵扣】字段=【原应缴(元)】-【总减免(元)】 -【滞纳金(元)】
|
|
|
+ //2、当 【余额】 <【原应缴(元)】-【总减免(元)】 -【滞纳金(元)】 时,【余额抵扣】字段=【账户余额(元)】
|
|
|
if(oughttohavepaid.subtract(allfeewaiver).subtract(latefees).compareTo(accountbalance)<0){
|
|
|
- add.setBalancededuction(oughttohavepaid.subtract(allfeewaiver).subtract(latefees));// 余额抵扣
|
|
|
+ add.setBalancededuction(oughttohavepaid.subtract(allfeewaiver).subtract(latefees));
|
|
|
}else {
|
|
|
- add.setBalancededuction(accountbalance);// 余额抵扣
|
|
|
+ add.setBalancededuction(accountbalance);
|
|
|
}
|
|
|
-
|
|
|
// 【实际应缴(元)】=【原应缴(元)】-【总减免(元)】 +【滞纳金(元)】-【余额抵扣(元)】
|
|
|
add.setActualdue(oughttohavepaid.subtract(allfeewaiver).add(latefees).subtract(add.getBalancededuction()));
|
|
|
-
|
|
|
//【实缴后余额(元)】=【账户余额】+【本次实缴(元-整)】- 原应缴 + 总减免 - 滞纳金
|
|
|
add.setAfterpaymentbalance(paidin.add(accountbalance).subtract(oughttohavepaid).add(allfeewaiver).subtract(latefees));
|
|
|
//数据来源
|
|
|
add.setDatasource(datasource);
|
|
|
-
|
|
|
//更新用户表 余额字段
|
|
|
- swUserManagementService.balanceAdd(swUserManagement.getId(),paidin.subtract(add.getActualdue()));
|
|
|
-
|
|
|
-
|
|
|
- // add.setTotalpaidin() //总已缴
|
|
|
- return add;
|
|
|
-
|
|
|
+ swUserManagementService.balanceAdd(swUserManagement.getId(), add.getAfterpaymentbalance().subtract(accountbalance));
|
|
|
+ swBillingRecordService.save(add);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 生成缴费编号 年月日 + 3位数 随机数
|
|
|
* @return
|
|
|
*/
|
|
|
- private String CreateBillingNumber() {
|
|
|
+ private void CreateBillingNumber(SwBillingRecordDo add) {
|
|
|
// 获取当前时间并格式化为 "yyyyMMddHHmmss"
|
|
|
LocalDateTime now = LocalDateTime.now();
|
|
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
|
|
@@ -212,7 +203,8 @@ public class SwBillingRecordServiceImpl extends ServiceImpl<SwBillingRecordDao,
|
|
|
Random random = new Random();
|
|
|
int randomNumber = random.nextInt(1000); // 生成0到999之间的随机数
|
|
|
String randomStr = String.format("%03d", randomNumber); // 格式化为三位数,不足三位补零
|
|
|
- return formattedDateTime + randomStr;
|
|
|
+ add.setBillingnumber(formattedDateTime + randomStr);
|
|
|
+
|
|
|
|
|
|
}
|
|
|
|