|
@@ -71,71 +71,75 @@ public class SwBillManagementUnpaidServiceImpl extends ServiceImpl<SwBillManagem
|
|
|
* 2、将 对应用户表中 对应的【最近抄表读数】进行更新
|
|
|
* 3、将 对应的这笔账单的 相关计费信息更新
|
|
|
*
|
|
|
- * @param meterReadId
|
|
|
- * @param billId
|
|
|
- * @param thisMeterReading
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
+ @Transactional
|
|
|
public R meterReadingCorrection(MeterReadingCorrectionDTO dto) {
|
|
|
|
|
|
- String meterReadId = dto.getMeterReadId();
|
|
|
- String billId = dto.getBillId();
|
|
|
- BigDecimal thisMeterReading = dto.getThisMeterReading();
|
|
|
-
|
|
|
- //当前用户
|
|
|
- SysUserVo currentUser = ZHSWCommonUtils.getCurrentUser();
|
|
|
+ try {
|
|
|
|
|
|
- //1. 更新抄表数据
|
|
|
- SwWaterUsageEntryDo swWaterUsageEntryDo = swWaterUsageEntryService.getBaseMapper().selectById(meterReadId);
|
|
|
-
|
|
|
- BigDecimal oldreading = swWaterUsageEntryDo.getThisreading();
|
|
|
- SwWaterUsageEntryDo waterUsageUpdateDo= new SwWaterUsageEntryDo();
|
|
|
- waterUsageUpdateDo.setId(swWaterUsageEntryDo.getId());
|
|
|
- waterUsageUpdateDo.setThisreading(thisMeterReading);
|
|
|
- waterUsageUpdateDo.setModifyuserid(currentUser.getId());
|
|
|
- waterUsageUpdateDo.setModifyusername(currentUser.getName());
|
|
|
- waterUsageUpdateDo.setModifydate(new Date());
|
|
|
- swWaterUsageEntryService.updateById(waterUsageUpdateDo);
|
|
|
-
|
|
|
- //2. 根据抄表户号查询用户修改最近读表数
|
|
|
- SwUserManagementDo swUserManagement = swUserManagementService.getBaseMapper()
|
|
|
- .selectOne(new LambdaQueryWrapper<SwUserManagementDo>()
|
|
|
- .eq(SwUserManagementDo::getUsernumber, swWaterUsageEntryDo.getUsernumber()));
|
|
|
- SwUserManagementDo updateDo= new SwUserManagementDo();
|
|
|
- updateDo.setLastmeterreading(thisMeterReading);
|
|
|
- updateDo.setModifyuserid(currentUser.getId());
|
|
|
- updateDo.setModifyusername(currentUser.getName());
|
|
|
- updateDo.setModifydate(new Date());
|
|
|
- updateDo.setId(swUserManagement.getId());
|
|
|
- swUserManagementService.updateById(updateDo);
|
|
|
-
|
|
|
- //更新账户表
|
|
|
- SwBillManagementUnpaidDo unpaidDo = swBillManagementUnpaidService.getBaseMapper().selectById(billId);
|
|
|
- //【当期用水量】=【更新后本次抄表数】-【上次抄表数】
|
|
|
- BigDecimal currentUsing = thisMeterReading.subtract(unpaidDo.getLastmeterreading() == null ? BigDecimal.ZERO : unpaidDo.getLastmeterreading());
|
|
|
- swBillManagementUnpaidService.update(new LambdaUpdateWrapper<SwBillManagementUnpaidDo>()
|
|
|
- .eq(SwBillManagementUnpaidDo::getId,billId)
|
|
|
- .set(SwBillManagementUnpaidDo::getThismeterreading,thisMeterReading)
|
|
|
- .set(SwBillManagementUnpaidDo::getCurrentwateruse,currentUsing)
|
|
|
- .set(SwBillManagementUnpaidDo::getOughttohavepaid,unpaidDo.getUnitprice().multiply(currentUsing))
|
|
|
- .set(SwBillManagementUnpaidDo::getMeterreadingcorrectionstatus,HAVEREVISEDSTATUS)
|
|
|
- .set(BaseDo::getModifyuserid,currentUser.getId())
|
|
|
- .set(BaseDo::getModifyusername,currentUser.getName())
|
|
|
- .set(BaseDo::getModifydate,new Date()));
|
|
|
-
|
|
|
- //生成新的抄表修正记录
|
|
|
- SwMeterReadingCorrectionDo swMeterReadingCorrectionDo = new SwMeterReadingCorrectionDo();
|
|
|
- swMeterReadingCorrectionDo.setId(SecurityUtil.getUUID())
|
|
|
- .setUsername(swWaterUsageEntryDo.getUsername())
|
|
|
- .setUsernumber(swWaterUsageEntryDo.getUsernumber())
|
|
|
- .setLastreading(oldreading)
|
|
|
- .setThisreading(thisMeterReading)
|
|
|
- .setBillid(billId)
|
|
|
- .setMeterreading(swWaterUsageEntryDo.getId())
|
|
|
- .setModifyuserid(currentUser.getId()).setModifyusername(currentUser.getName()).setModifydate(new Date());
|
|
|
- swMeterReadingCorrectionService.getBaseMapper().insert(swMeterReadingCorrectionDo);
|
|
|
+ String meterReadId = dto.getMeterReadId();
|
|
|
+ String billId = dto.getBillId();
|
|
|
+ BigDecimal thisMeterReading = dto.getThisMeterReading();
|
|
|
+
|
|
|
+ //当前用户
|
|
|
+ SysUserVo currentUser = ZHSWCommonUtils.getCurrentUser();
|
|
|
+
|
|
|
+ //1. 更新抄表数据
|
|
|
+ SwWaterUsageEntryDo swWaterUsageEntryDo = swWaterUsageEntryService.getBaseMapper().selectById(meterReadId);
|
|
|
+
|
|
|
+ BigDecimal oldreading = swWaterUsageEntryDo.getThisreading();
|
|
|
+ SwWaterUsageEntryDo waterUsageUpdateDo= new SwWaterUsageEntryDo();
|
|
|
+ waterUsageUpdateDo.setId(swWaterUsageEntryDo.getId());
|
|
|
+ waterUsageUpdateDo.setThisreading(thisMeterReading);
|
|
|
+ waterUsageUpdateDo.setModifyuserid(currentUser.getId());
|
|
|
+ waterUsageUpdateDo.setModifyusername(currentUser.getName());
|
|
|
+ waterUsageUpdateDo.setModifydate(new Date());
|
|
|
+ swWaterUsageEntryService.updateById(waterUsageUpdateDo);
|
|
|
+
|
|
|
+ //2. 根据抄表户号查询用户修改最近读表数
|
|
|
+ SwUserManagementDo swUserManagement = swUserManagementService.getBaseMapper()
|
|
|
+ .selectOne(new LambdaQueryWrapper<SwUserManagementDo>()
|
|
|
+ .eq(SwUserManagementDo::getUsernumber, swWaterUsageEntryDo.getUsernumber()));
|
|
|
+ SwUserManagementDo updateDo= new SwUserManagementDo();
|
|
|
+ updateDo.setLastmeterreading(thisMeterReading);
|
|
|
+ updateDo.setModifyuserid(currentUser.getId());
|
|
|
+ updateDo.setModifyusername(currentUser.getName());
|
|
|
+ updateDo.setModifydate(new Date());
|
|
|
+ updateDo.setId(swUserManagement.getId());
|
|
|
+ swUserManagementService.updateById(updateDo);
|
|
|
+
|
|
|
+ //更新账户表
|
|
|
+ SwBillManagementUnpaidDo unpaidDo = swBillManagementUnpaidService.getBaseMapper().selectById(billId);
|
|
|
+ //【当期用水量】=【更新后本次抄表数】-【上次抄表数】
|
|
|
+ BigDecimal currentUsing = thisMeterReading.subtract(unpaidDo.getLastmeterreading() == null ? BigDecimal.ZERO : unpaidDo.getLastmeterreading());
|
|
|
+ swBillManagementUnpaidService.update(new LambdaUpdateWrapper<SwBillManagementUnpaidDo>()
|
|
|
+ .eq(SwBillManagementUnpaidDo::getId,billId)
|
|
|
+ .set(SwBillManagementUnpaidDo::getThismeterreading,thisMeterReading)
|
|
|
+ .set(SwBillManagementUnpaidDo::getCurrentwateruse,currentUsing)
|
|
|
+ .set(SwBillManagementUnpaidDo::getOughttohavepaid,unpaidDo.getUnitprice().multiply(currentUsing))
|
|
|
+ .set(SwBillManagementUnpaidDo::getMeterreadingcorrectionstatus,HAVEREVISEDSTATUS)
|
|
|
+ .set(BaseDo::getModifyuserid,currentUser.getId())
|
|
|
+ .set(BaseDo::getModifyusername,currentUser.getName())
|
|
|
+ .set(BaseDo::getModifydate,new Date()));
|
|
|
+
|
|
|
+ //生成新的抄表修正记录
|
|
|
+ SwMeterReadingCorrectionDo swMeterReadingCorrectionDo = new SwMeterReadingCorrectionDo();
|
|
|
+ swMeterReadingCorrectionDo.setId(SecurityUtil.getUUID())
|
|
|
+ .setUsername(swWaterUsageEntryDo.getUsername())
|
|
|
+ .setUsernumber(swWaterUsageEntryDo.getUsernumber())
|
|
|
+ .setLastreading(oldreading)
|
|
|
+ .setThisreading(thisMeterReading)
|
|
|
+ .setBillid(billId)
|
|
|
+ .setMeterreading(swWaterUsageEntryDo.getId())
|
|
|
+ .setModifyuserid(currentUser.getId()).setModifyusername(currentUser.getName()).setModifydate(new Date());
|
|
|
+ swMeterReadingCorrectionService.getBaseMapper().insert(swMeterReadingCorrectionDo);
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("抄表修正失败 {}",e.getMessage());
|
|
|
+ return R.error("抄表修正失败");
|
|
|
+ }
|
|
|
|
|
|
return R.ok();
|
|
|
}
|
|
@@ -146,26 +150,27 @@ public class SwBillManagementUnpaidServiceImpl extends ServiceImpl<SwBillManagem
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
+ @Transactional
|
|
|
public R transferAccount(Map<String, Object> map) throws Exception {
|
|
|
try {
|
|
|
|
|
|
- //获取账单数据 已根据户号 分组 创建时间正序
|
|
|
- Map<String, List<SwBillManagementUnpaidDo>> billGroups = getGroupedBills(map);
|
|
|
+ //获取账单数据 已根据户号 分组 创建时间正序
|
|
|
+ Map<String, List<SwBillManagementUnpaidDo>> billGroups = getGroupedBills(map);
|
|
|
|
|
|
- // 获取用户信息映射(按户号分组)
|
|
|
- Map<String, List<SwUserManagementDo>> userGroups = getUserGroups(billGroups.keySet());
|
|
|
+ // 获取用户信息映射(按户号分组)
|
|
|
+ Map<String, List<SwUserManagementDo>> userGroups = getUserGroups(billGroups.keySet());
|
|
|
|
|
|
- TransferAccountDo transferAccountDo = new TransferAccountDo();
|
|
|
+ TransferAccountDo transferAccountDo = new TransferAccountDo();
|
|
|
|
|
|
- // 处理每个户号的账单数据
|
|
|
- billGroups.keySet().forEach(key -> processUserBills(billGroups.get(key), userGroups.get(key).get(0), transferAccountDo));
|
|
|
+ // 处理每个户号的账单数据
|
|
|
+ billGroups.keySet().forEach(key -> processUserBills(billGroups.get(key), userGroups.get(key).get(0), transferAccountDo));
|
|
|
|
|
|
- // 保存处理结果
|
|
|
+ // 保存处理结果
|
|
|
+ saveProcessedData(transferAccountDo);
|
|
|
|
|
|
- swBillManagementUnpaidService.saveProcessedData(transferAccountDo);
|
|
|
}catch (Exception e){
|
|
|
log.error("转正式账单数据保存失败 {}",e.getMessage());
|
|
|
- throw new Exception(e.getMessage());
|
|
|
+ return R.error("转正式账单数据保存失败");
|
|
|
}
|
|
|
|
|
|
return R.ok();
|
|
@@ -224,7 +229,7 @@ public class SwBillManagementUnpaidServiceImpl extends ServiceImpl<SwBillManagem
|
|
|
|
|
|
|
|
|
|
|
|
- /**
|
|
|
+ /**
|
|
|
* //计算用户余额是否充足 直接生成缴费记录
|
|
|
*
|
|
|
* @param swBillManagementUnpaidDos
|
|
@@ -344,8 +349,7 @@ public class SwBillManagementUnpaidServiceImpl extends ServiceImpl<SwBillManagem
|
|
|
* 保存数据
|
|
|
* @param transferAccountDo
|
|
|
*/
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
- @Override
|
|
|
+
|
|
|
public void saveProcessedData(TransferAccountDo transferAccountDo) {
|
|
|
|
|
|
//转正式账单生成
|