|
|
@@ -9,7 +9,11 @@ import cn.iocoder.yudao.module.system.controller.admin.yk.vo.*;
|
|
|
import cn.iocoder.yudao.module.system.convert.excel.LocalDateTimeConvert;
|
|
|
import cn.iocoder.yudao.module.system.dal.dataobject.biz.ElderlyInfoDO;
|
|
|
import cn.iocoder.yudao.module.system.dal.dataobject.restaurant.DishesOrderItemDO;
|
|
|
+import cn.iocoder.yudao.module.system.dal.dataobject.home.HomeElderlyInfoDO;
|
|
|
import cn.iocoder.yudao.module.system.dal.dataobject.yk.*;
|
|
|
+import cn.iocoder.yudao.module.system.dal.dataobject.home.HomeElderlyAccountDO;
|
|
|
+import cn.iocoder.yudao.module.system.dal.mysql.home.HomeElderlyAccountMapper;
|
|
|
+import cn.iocoder.yudao.module.system.dal.mysql.home.HomeElderlyInfoMapper;
|
|
|
import cn.iocoder.yudao.module.system.dal.mysql.yk.*;
|
|
|
import cn.iocoder.yudao.module.system.service.yk.YkElderlyInfoService;
|
|
|
import com.alibaba.excel.annotation.ExcelProperty;
|
|
|
@@ -44,7 +48,10 @@ import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.ELDERLY_IN
|
|
|
public class YkElderlyInfoServiceImpl implements YkElderlyInfoService {
|
|
|
|
|
|
@Resource
|
|
|
- private YkElderlyInfoMapper ykElderlyInfoMapper;
|
|
|
+ private HomeElderlyInfoMapper homeElderlyInfoMapper;
|
|
|
+ @Resource
|
|
|
+ private HomeElderlyAccountMapper homeElderlyAccountMapper;
|
|
|
+
|
|
|
@Resource
|
|
|
private YkElderlyDeliveryMapper ykElderlyDeliveryMapper;
|
|
|
@Resource
|
|
|
@@ -58,37 +65,35 @@ public class YkElderlyInfoServiceImpl implements YkElderlyInfoService {
|
|
|
@Override
|
|
|
public Long createElderlyInfo(YkElderlyInfoSaveReqVO createReqVO) {
|
|
|
// 检查是否已存在相同身份证号的长者
|
|
|
- YkElderlyInfoDO existingElderlyInfo = ykElderlyInfoMapper.selectOne(new LambdaQueryWrapperX<YkElderlyInfoDO>()
|
|
|
- .eq(YkElderlyInfoDO::getIdCard, createReqVO.getIdCard()));
|
|
|
+ HomeElderlyInfoDO existingElderlyInfo = homeElderlyInfoMapper.selectOne(new LambdaQueryWrapperX<HomeElderlyInfoDO>()
|
|
|
+ .eq(HomeElderlyInfoDO::getIdCard, createReqVO.getIdCard()));
|
|
|
|
|
|
if (existingElderlyInfo != null) {
|
|
|
- // 如果长者已存在,更新字段但保留余额和送工费
|
|
|
- BigDecimal originalBalance = existingElderlyInfo.getBalance();
|
|
|
+ // 如果长者已存在,更新字段但保留送工费
|
|
|
BigDecimal originalDeliveryFee = existingElderlyInfo.getDeliveryFee();
|
|
|
|
|
|
// 将新信息复制到现有对象中
|
|
|
- YkElderlyInfoDO updateObj = BeanUtils.toBean(createReqVO, YkElderlyInfoDO.class);
|
|
|
+ HomeElderlyInfoDO updateObj = BeanUtils.toBean(createReqVO, HomeElderlyInfoDO.class);
|
|
|
updateObj.setId(existingElderlyInfo.getId());
|
|
|
- // 保留原有的余额和送工费
|
|
|
- updateObj.setBalance(originalBalance);
|
|
|
+ // 保留原有的送工费
|
|
|
updateObj.setDeliveryFee(originalDeliveryFee);
|
|
|
// 保留原有的创建信息
|
|
|
- updateObj.setCreatedBy(existingElderlyInfo.getCreatedBy());
|
|
|
- updateObj.setCreatedTime(existingElderlyInfo.getCreatedTime());
|
|
|
+ updateObj.setCreator(existingElderlyInfo.getCreator());
|
|
|
+ updateObj.setCreateTime(existingElderlyInfo.getCreateTime());
|
|
|
// 更新修改信息
|
|
|
- updateObj.setUpdatedBy(SecurityFrameworkUtils.getLoginUserNickname());
|
|
|
- updateObj.setUpdatedTime(new Date());
|
|
|
+ updateObj.setUpdater(SecurityFrameworkUtils.getLoginUserNickname());
|
|
|
+ updateObj.setUpdateTime(LocalDateTime.now());
|
|
|
updateObj.setTenantId(createReqVO.getTenantId() == null ? TenantContextHolder.getTenantId() : createReqVO.getTenantId());
|
|
|
|
|
|
- ykElderlyInfoMapper.updateById(updateObj);
|
|
|
+ homeElderlyInfoMapper.updateById(updateObj);
|
|
|
return existingElderlyInfo.getId();
|
|
|
} else {
|
|
|
// 如果长者不存在,新增
|
|
|
- YkElderlyInfoDO elderlyInfo = BeanUtils.toBean(createReqVO, YkElderlyInfoDO.class);
|
|
|
- elderlyInfo.setCreatedBy(SecurityFrameworkUtils.getLoginUserNickname());
|
|
|
- elderlyInfo.setCreatedTime(new Date());
|
|
|
+ HomeElderlyInfoDO elderlyInfo = BeanUtils.toBean(createReqVO, HomeElderlyInfoDO.class);
|
|
|
+ elderlyInfo.setCreator(SecurityFrameworkUtils.getLoginUserNickname());
|
|
|
+ elderlyInfo.setCreateTime(LocalDateTime.now());
|
|
|
elderlyInfo.setTenantId(createReqVO.getTenantId() == null ? TenantContextHolder.getTenantId() : createReqVO.getTenantId());
|
|
|
- ykElderlyInfoMapper.insert(elderlyInfo);
|
|
|
+ homeElderlyInfoMapper.insert(elderlyInfo);
|
|
|
return elderlyInfo.getId();
|
|
|
}
|
|
|
}
|
|
|
@@ -98,8 +103,8 @@ public class YkElderlyInfoServiceImpl implements YkElderlyInfoService {
|
|
|
// 校验存在
|
|
|
validateElderlyInfoExists(updateReqVO.getId());
|
|
|
// 更新
|
|
|
- YkElderlyInfoDO updateObj = BeanUtils.toBean(updateReqVO, YkElderlyInfoDO.class);
|
|
|
- ykElderlyInfoMapper.updateById(updateObj);
|
|
|
+ HomeElderlyInfoDO updateObj = BeanUtils.toBean(updateReqVO, HomeElderlyInfoDO.class);
|
|
|
+ homeElderlyInfoMapper.updateById(updateObj);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -107,54 +112,60 @@ public class YkElderlyInfoServiceImpl implements YkElderlyInfoService {
|
|
|
// 校验存在
|
|
|
validateElderlyInfoExists(id);
|
|
|
// 删除
|
|
|
- ykElderlyInfoMapper.deleteById(id);
|
|
|
+ homeElderlyInfoMapper.deleteById(id);
|
|
|
}
|
|
|
|
|
|
private void validateElderlyInfoExists(Long id) {
|
|
|
- if (ykElderlyInfoMapper.selectById(id) == null) {
|
|
|
+ if (homeElderlyInfoMapper.selectById(id) == null) {
|
|
|
throw exception(ELDERLY_INFO_NOT_EXISTS);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public YkElderlyInfoDO getElderlyInfo(Long id) {
|
|
|
- return ykElderlyInfoMapper.selectById(id);
|
|
|
+ public HomeElderlyInfoDO getElderlyInfo(Long id) {
|
|
|
+ HomeElderlyInfoDO elderlyInfo = homeElderlyInfoMapper.selectById(id);
|
|
|
+ fillBalanceFromAccount(elderlyInfo);
|
|
|
+ return elderlyInfo;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public PageResult<YkElderlyInfoDO> getElderlyInfoPage(YkElderlyInfoPageReqVO pageReqVO) {
|
|
|
- return ykElderlyInfoMapper.selectPage(pageReqVO);
|
|
|
+ public PageResult<HomeElderlyInfoDO> getElderlyInfoPage(YkElderlyInfoPageReqVO pageReqVO) {
|
|
|
+ PageResult<HomeElderlyInfoDO> pageResult = homeElderlyInfoMapper.selectPage(pageReqVO);
|
|
|
+ fillBalanceFromAccount(pageResult.getList());
|
|
|
+ return pageResult;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public List<YkElderlyInfoDO> getElderlyInfoList(YkElderlyInfoExportReqVO exportReqVO) {
|
|
|
- return ykElderlyInfoMapper.selectList(exportReqVO);
|
|
|
+ public List<HomeElderlyInfoDO> getElderlyInfoList(YkElderlyInfoExportReqVO exportReqVO) {
|
|
|
+ List<HomeElderlyInfoDO> list = homeElderlyInfoMapper.selectList(exportReqVO);
|
|
|
+ fillBalanceFromAccount(list);
|
|
|
+ return list;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public PageResult<YkElderlyMealRespVO> getElderlyMealPage(YkElderlyMealPageReqVO pageReqVO) {
|
|
|
Page<YkElderlyMealRespVO> page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
|
|
|
- List<YkElderlyMealRespVO> ykElderlyMealRespVOPageResult = ykElderlyInfoMapper.selectElderlyMealPage(page, pageReqVO);
|
|
|
+ List<YkElderlyMealRespVO> ykElderlyMealRespVOPageResult = homeElderlyInfoMapper.selectElderlyMealPage(page, pageReqVO);
|
|
|
return new PageResult<>(ykElderlyMealRespVOPageResult, page.getTotal());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void batchConfirm(YkMealBatchConfirmReqVO reqVO) {
|
|
|
Long tenantId = reqVO.getTenantId();
|
|
|
- List<YkElderlyInfoDO> ykElderlyInfoList = ykElderlyInfoMapper.selectList(new LambdaQueryWrapperX<YkElderlyInfoDO>()
|
|
|
- .eqIfPresent(YkElderlyInfoDO::getTenantId, tenantId));
|
|
|
- List<YkElderlyInfoDO> filteredList = ykElderlyInfoList.stream()
|
|
|
+ List<HomeElderlyInfoDO> homeElderlyInfoList = homeElderlyInfoMapper.selectList(new LambdaQueryWrapperX<HomeElderlyInfoDO>()
|
|
|
+ .eqIfPresent(HomeElderlyInfoDO::getTenantId, tenantId));
|
|
|
+ List<HomeElderlyInfoDO> filteredList = homeElderlyInfoList.stream()
|
|
|
.filter(elderlyInfo -> !reqVO.getIds().contains(elderlyInfo.getId()))
|
|
|
.collect(Collectors.toList());
|
|
|
//生成送餐记录
|
|
|
- for (YkElderlyInfoDO ykElderlyInfoDO : filteredList) {
|
|
|
+ for (HomeElderlyInfoDO homeElderlyInfoDO : filteredList) {
|
|
|
YkDeliveryStaffInfoDO ykDeliveryStaffInfoDO = deliveryPersonInfoMapper.selectOne(new LambdaQueryWrapperX<YkDeliveryStaffInfoDO>()
|
|
|
- .likeIfPresent(YkDeliveryStaffInfoDO::getElderlyIds, String.valueOf(ykElderlyInfoDO.getId())));
|
|
|
+ .likeIfPresent(YkDeliveryStaffInfoDO::getElderlyIds, String.valueOf(homeElderlyInfoDO.getId())));
|
|
|
YkElderlyDeliveryDO ykElderlyDeliveryDO = new YkElderlyDeliveryDO();
|
|
|
- ykElderlyDeliveryDO.setYkElderId(ykElderlyInfoDO.getId());
|
|
|
- ykElderlyDeliveryDO.setYkElderName(ykElderlyInfoDO.getElderName());
|
|
|
- ykElderlyDeliveryDO.setPhone(ykElderlyInfoDO.getPersonalPhone());
|
|
|
- ykElderlyDeliveryDO.setDeliveryAddress(ykElderlyInfoDO.getCurrentAddress());
|
|
|
+ ykElderlyDeliveryDO.setYkElderId(homeElderlyInfoDO.getId());
|
|
|
+ ykElderlyDeliveryDO.setYkElderName(homeElderlyInfoDO.getElderName());
|
|
|
+ ykElderlyDeliveryDO.setPhone(homeElderlyInfoDO.getPhone());
|
|
|
+ ykElderlyDeliveryDO.setDeliveryAddress(homeElderlyInfoDO.getCurrentLiveAddress());
|
|
|
ykElderlyDeliveryDO.setDeliveryDate(reqVO.getDate());
|
|
|
ykElderlyDeliveryDO.setMealStandard(reqVO.getMealStandard());
|
|
|
ykElderlyDeliveryDO.setMealType(reqVO.getMealType());
|
|
|
@@ -171,7 +182,8 @@ public class YkElderlyInfoServiceImpl implements YkElderlyInfoService {
|
|
|
recordDO.setExpenseType(1);
|
|
|
recordDO.setYkElderId(ykElderlyInfoDO.getId());
|
|
|
recordDO.setAmount(ykElderlyDeliveryDO.getMealStandard());
|
|
|
- recordDO.setBalance(ykElderlyInfoDO.getBalance().subtract(recordDO.getAmount()));
|
|
|
+ BigDecimal accountAmount = getElderlyAccountAmount(ykElderlyInfoDO.getId());
|
|
|
+ recordDO.setBalance(accountAmount.subtract(recordDO.getAmount()));
|
|
|
recordDO.setRemarks("长者送餐");
|
|
|
recordDO.setCreatedTime(new Date());
|
|
|
recordDO.setTenantId(tenantId);
|
|
|
@@ -205,11 +217,11 @@ public class YkElderlyInfoServiceImpl implements YkElderlyInfoService {
|
|
|
delivery.setDeliveryFee(reqVO.getAmount());
|
|
|
ykElderlyDeliveryMapper.updateById(delivery);
|
|
|
|
|
|
- YkElderlyInfoDO ykElderlyInfoDO = ykElderlyInfoMapper.selectById(delivery.getYkElderId());
|
|
|
+ HomeElderlyInfoDO ykElderlyInfoDO = homeElderlyInfoMapper.selectById(delivery.getYkElderId());
|
|
|
BigDecimal deliveryFee = ykElderlyInfoDO.getDeliveryFee();
|
|
|
BigDecimal afterAmount = deliveryFee.add(reqVO.getAmount());
|
|
|
ykElderlyInfoDO.setDeliveryFee(afterAmount);
|
|
|
- ykElderlyInfoMapper.updateById(ykElderlyInfoDO);
|
|
|
+ homeElderlyInfoMapper.updateById(ykElderlyInfoDO);
|
|
|
|
|
|
//生成费用变动记录
|
|
|
YkElderlyExpenseRecordDO recordDO = new YkElderlyExpenseRecordDO();
|
|
|
@@ -238,7 +250,7 @@ public class YkElderlyInfoServiceImpl implements YkElderlyInfoService {
|
|
|
// YkElderlyExpenseRecordImportVO importVO = dataList.get(i);
|
|
|
// try {
|
|
|
// //查询长者
|
|
|
-// YkElderlyInfoDO ykElderlyInfoDO = ykElderlyInfoMapper.selectOne(new LambdaQueryWrapperX<YkElderlyInfoDO>()
|
|
|
+// YkElderlyInfoDO ykElderlyInfoDO = homeElderlyInfoMapper.selectOne(new LambdaQueryWrapperX<YkElderlyInfoDO>()
|
|
|
// .eq(YkElderlyInfoDO::getElderName, importVO.getServiceObj())
|
|
|
// .eq(YkElderlyInfoDO::getIdCard, importVO.getIdCard()));
|
|
|
//
|
|
|
@@ -278,7 +290,7 @@ public class YkElderlyInfoServiceImpl implements YkElderlyInfoService {
|
|
|
//
|
|
|
// //更新颐康长者表的余额
|
|
|
// ykElderlyInfoDO.setBalance(recordDO.getBalance());
|
|
|
-// ykElderlyInfoMapper.updateById(ykElderlyInfoDO);
|
|
|
+// homeElderlyInfoMapper.updateById(ykElderlyInfoDO);
|
|
|
//
|
|
|
// } catch (Exception e) {
|
|
|
// failCount++;
|
|
|
@@ -304,9 +316,9 @@ public class YkElderlyInfoServiceImpl implements YkElderlyInfoService {
|
|
|
YkElderlyExpenseRecordImportVO importVO = importVOList.get(i);
|
|
|
try {
|
|
|
//查询长者
|
|
|
- YkElderlyInfoDO ykElderlyInfoDO = ykElderlyInfoMapper.selectOne(new LambdaQueryWrapperX<YkElderlyInfoDO>()
|
|
|
- .eq(YkElderlyInfoDO::getElderName, importVO.getServiceObj())
|
|
|
- .eq(YkElderlyInfoDO::getIdCard, importVO.getIdCard()));
|
|
|
+ HomeElderlyInfoDO ykElderlyInfoDO = homeElderlyInfoMapper.selectOne(new LambdaQueryWrapperX<HomeElderlyInfoDO>()
|
|
|
+ .eq(HomeElderlyInfoDO::getElderName, importVO.getServiceObj())
|
|
|
+ .eq(HomeElderlyInfoDO::getIdCard, importVO.getIdCard()));
|
|
|
|
|
|
if (ykElderlyInfoDO == null) {
|
|
|
failCount++;
|
|
|
@@ -367,9 +379,8 @@ public class YkElderlyInfoServiceImpl implements YkElderlyInfoService {
|
|
|
ykElderlyExpenseRecordMapper.insert(recordDO);
|
|
|
successCount++;
|
|
|
|
|
|
- //更新颐康长者表的余额
|
|
|
- ykElderlyInfoDO.setBalance(recordDO.getBalance());
|
|
|
- ykElderlyInfoMapper.updateById(ykElderlyInfoDO);
|
|
|
+ //更新长者账户余额
|
|
|
+ updateElderlyAccountAmount(ykElderlyInfoDO.getId(), recordDO.getBalance());
|
|
|
|
|
|
// 自动确认:查询该日期内是否有收款记录未确认,金额匹配则相互确认
|
|
|
String confirmMsg = autoConfirmExpenseRecord(recordDO);
|
|
|
@@ -404,9 +415,9 @@ public class YkElderlyInfoServiceImpl implements YkElderlyInfoService {
|
|
|
YkElderlyExpenseRecordWeChatImportVO importVO = importVOList.get(i);
|
|
|
try {
|
|
|
//查询长者
|
|
|
- YkElderlyInfoDO ykElderlyInfoDO = ykElderlyInfoMapper.selectOne(new LambdaQueryWrapperX<YkElderlyInfoDO>()
|
|
|
- .eq(YkElderlyInfoDO::getElderName, importVO.getServiceObj())
|
|
|
- .eq(YkElderlyInfoDO::getIdCard, importVO.getIdCard()));
|
|
|
+ HomeElderlyInfoDO ykElderlyInfoDO = homeElderlyInfoMapper.selectOne(new LambdaQueryWrapperX<HomeElderlyInfoDO>()
|
|
|
+ .eq(HomeElderlyInfoDO::getElderName, importVO.getServiceObj())
|
|
|
+ .eq(HomeElderlyInfoDO::getIdCard, importVO.getIdCard()));
|
|
|
|
|
|
if (ykElderlyInfoDO == null) {
|
|
|
failCount++;
|
|
|
@@ -451,10 +462,9 @@ public class YkElderlyInfoServiceImpl implements YkElderlyInfoService {
|
|
|
ykElderlyExpenseRecordMapper.insert(recordDO);
|
|
|
successCount++;
|
|
|
|
|
|
- //更新颐康长者表的余额
|
|
|
- ykElderlyInfoDO.setBalance(recordDO.getBalance());
|
|
|
- ykElderlyInfoMapper.updateById(ykElderlyInfoDO);
|
|
|
-
|
|
|
+ //更新长者账户余额
|
|
|
+ updateElderlyAccountAmount(ykElderlyInfoDO.getId(), recordDO.getBalance());
|
|
|
+
|
|
|
// 自动确认:查询该日期内是否有收款记录未确认,金额匹配则相互确认
|
|
|
String confirmMsg = autoConfirmExpenseRecord(recordDO);
|
|
|
if (confirmMsg != null) {
|
|
|
@@ -591,13 +601,13 @@ public class YkElderlyInfoServiceImpl implements YkElderlyInfoService {
|
|
|
YkElderlyExpenseRecordDO ykElderlyExpenseRecordDO = ykElderlyExpenseRecordMapper.selectById(reqVO.getId());
|
|
|
|
|
|
// 查询长者信息
|
|
|
- YkElderlyInfoDO elderlyInfo = ykElderlyInfoMapper.selectById(ykElderlyExpenseRecordDO.getYkElderId());
|
|
|
+ HomeElderlyInfoDO elderlyInfo = homeElderlyInfoMapper.selectById(ykElderlyExpenseRecordDO.getYkElderId());
|
|
|
if (elderlyInfo == null) {
|
|
|
throw exception(ELDERLY_INFO_NOT_EXISTS);
|
|
|
}
|
|
|
|
|
|
// 获取变更前余额
|
|
|
- BigDecimal balanceBefore = elderlyInfo.getBalance();
|
|
|
+ BigDecimal balanceBefore = getElderlyAccountAmount(elderlyInfo.getId());
|
|
|
// 设置变更后余额为指定值(不累加)
|
|
|
BigDecimal balanceAfter = reqVO.getAmount();
|
|
|
|
|
|
@@ -622,9 +632,8 @@ public class YkElderlyInfoServiceImpl implements YkElderlyInfoService {
|
|
|
|
|
|
ykElderlyExpenseRecordMapper.insert(recordDO);
|
|
|
|
|
|
- // 更新长者余额为指定值(不累加)
|
|
|
- elderlyInfo.setBalance(balanceAfter);
|
|
|
- ykElderlyInfoMapper.updateById(elderlyInfo);
|
|
|
+ // 更新长者账户余额为指定值(不累加)
|
|
|
+ updateElderlyAccountAmount(elderlyInfo.getId(), balanceAfter);
|
|
|
|
|
|
}
|
|
|
|
|
|
@@ -633,7 +642,7 @@ public class YkElderlyInfoServiceImpl implements YkElderlyInfoService {
|
|
|
YkElderlyExpenseRecordDO ykElderlyExpenseRecordDO = ykElderlyExpenseRecordMapper.selectById(reqVO.getId());
|
|
|
|
|
|
// 查询长者信息
|
|
|
- YkElderlyInfoDO elderlyInfo = ykElderlyInfoMapper.selectById(ykElderlyExpenseRecordDO.getYkElderId());
|
|
|
+ HomeElderlyInfoDO elderlyInfo = homeElderlyInfoMapper.selectById(ykElderlyExpenseRecordDO.getYkElderId());
|
|
|
if (elderlyInfo == null) {
|
|
|
throw exception(ELDERLY_INFO_NOT_EXISTS);
|
|
|
}
|
|
|
@@ -664,7 +673,8 @@ public class YkElderlyInfoServiceImpl implements YkElderlyInfoService {
|
|
|
|
|
|
|
|
|
elderlyInfo.setDeliveryFee(feeAfter);
|
|
|
- ykElderlyInfoMapper.updateById(elderlyInfo);
|
|
|
+ homeElderlyInfoMapper.updateById(elderlyInfo);
|
|
|
+ updateElderlyAccountAmount(elderlyInfo.getId(), updateBalance);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -692,7 +702,7 @@ public class YkElderlyInfoServiceImpl implements YkElderlyInfoService {
|
|
|
YkElderlyDeliveryDO ykElderlyDeliveryDO = ykElderlyDeliveryMapper.selectById(reqVO.getMealId());
|
|
|
|
|
|
// 查询长者信息
|
|
|
- YkElderlyInfoDO elderlyInfo = ykElderlyInfoMapper.selectById(reqVO.getElderlyId());
|
|
|
+ HomeElderlyInfoDO elderlyInfo = homeElderlyInfoMapper.selectById(reqVO.getElderlyId());
|
|
|
if (elderlyInfo == null) {
|
|
|
throw exception(ELDERLY_INFO_NOT_EXISTS);
|
|
|
}
|
|
|
@@ -702,14 +712,15 @@ public class YkElderlyInfoServiceImpl implements YkElderlyInfoService {
|
|
|
// 设置变更后餐标为指定值
|
|
|
BigDecimal feeAfter = reqVO.getMealStandard();
|
|
|
BigDecimal updateFee = feeAfter.subtract(feeBefore);
|
|
|
- BigDecimal updateBalance = elderlyInfo.getBalance().subtract(updateFee);
|
|
|
+ BigDecimal balanceBefore = getElderlyAccountAmount(elderlyInfo.getId());
|
|
|
+ BigDecimal updateBalance = balanceBefore.subtract(updateFee);
|
|
|
// 创建费用变动记录
|
|
|
YkElderlyExpenseRecordDO recordDO = new YkElderlyExpenseRecordDO();
|
|
|
recordDO.setType(feeAfter.compareTo(feeBefore) > 0 ? 1 : 3); // 1:增加 3:减少
|
|
|
recordDO.setExpenseType(2); // 工费类型
|
|
|
recordDO.setYkElderId(elderlyInfo.getId());
|
|
|
recordDO.setAmount(feeAfter);
|
|
|
- recordDO.setConsumptionBefore(elderlyInfo.getBalance()); // 变更前送工费
|
|
|
+ recordDO.setConsumptionBefore(balanceBefore); // 变更前余额
|
|
|
recordDO.setConsumptionAfter(updateBalance); // 变更后送工费
|
|
|
recordDO.setRemarks(reqVO.getRemark());
|
|
|
recordDO.setBalance(updateBalance);
|
|
|
@@ -723,15 +734,56 @@ public class YkElderlyInfoServiceImpl implements YkElderlyInfoService {
|
|
|
|
|
|
|
|
|
elderlyInfo.setDeliveryFee(feeAfter);
|
|
|
- ykElderlyInfoMapper.updateById(elderlyInfo);
|
|
|
+ homeElderlyInfoMapper.updateById(elderlyInfo);
|
|
|
}
|
|
|
private BigDecimal safeAmount(BigDecimal amount) {
|
|
|
return amount == null ? BigDecimal.ZERO : amount;
|
|
|
}
|
|
|
|
|
|
+ private void fillBalanceFromAccount(HomeElderlyInfoDO elderlyInfo) {
|
|
|
+ if (elderlyInfo == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ elderlyInfo.setBalance(getElderlyAccountAmount(elderlyInfo.getId()));
|
|
|
+ }
|
|
|
+
|
|
|
+ private void fillBalanceFromAccount(List<HomeElderlyInfoDO> elderlyInfoList) {
|
|
|
+ if (elderlyInfoList == null || elderlyInfoList.isEmpty()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ elderlyInfoList.forEach(this::fillBalanceFromAccount);
|
|
|
+ }
|
|
|
+
|
|
|
+ private BigDecimal getElderlyAccountAmount(Long elderlyId) {
|
|
|
+ HomeElderlyAccountDO accountDO = homeElderlyAccountMapper.selectOne(
|
|
|
+ new LambdaQueryWrapperX<HomeElderlyAccountDO>()
|
|
|
+ .eq(HomeElderlyAccountDO::getHomeElderId, elderlyId)
|
|
|
+ .last("limit 1")
|
|
|
+ );
|
|
|
+ return accountDO == null || accountDO.getAmount() == null ? BigDecimal.ZERO : accountDO.getAmount();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void updateElderlyAccountAmount(Long elderlyId, BigDecimal amount) {
|
|
|
+ HomeElderlyAccountDO accountDO = homeElderlyAccountMapper.selectOne(
|
|
|
+ new LambdaQueryWrapperX<HomeElderlyAccountDO>()
|
|
|
+ .eq(HomeElderlyAccountDO::getHomeElderId, elderlyId)
|
|
|
+ .last("limit 1")
|
|
|
+ );
|
|
|
+ if (accountDO == null) {
|
|
|
+ accountDO = new HomeElderlyAccountDO();
|
|
|
+ accountDO.setHomeElderId(elderlyId);
|
|
|
+ accountDO.setAmount(safeAmount(amount));
|
|
|
+ accountDO.setTenantId(TenantContextHolder.getTenantId());
|
|
|
+ homeElderlyAccountMapper.insert(accountDO);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ accountDO.setAmount(safeAmount(amount));
|
|
|
+ homeElderlyAccountMapper.updateById(accountDO);
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public void batchDeleteElderlyInfo(List<Long> ids) {
|
|
|
- ykElderlyInfoMapper.deleteBatchIds(ids);
|
|
|
+ homeElderlyInfoMapper.deleteBatchIds(ids);
|
|
|
}
|
|
|
|
|
|
@Override
|