|
|
@@ -6,14 +6,18 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
|
|
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
|
|
import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
|
|
|
import cn.iocoder.yudao.module.system.controller.admin.yk.vo.*;
|
|
|
+import cn.iocoder.yudao.module.system.dal.dataobject.home.HomeElderlyFamilyDO;
|
|
|
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.HomeElderlyFamilyMapper;
|
|
|
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.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
@@ -55,41 +59,78 @@ public class YkElderlyInfoServiceImpl implements YkElderlyInfoService {
|
|
|
@Resource
|
|
|
private YkElderlyPaymentRecordMapper ykElderlyPaymentRecordMapper;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private HomeElderlyFamilyMapper homeElderlyFamilyMapper;
|
|
|
+
|
|
|
|
|
|
@Override
|
|
|
public Long createElderlyInfo(YkElderlyInfoSaveReqVO createReqVO) {
|
|
|
- // 检查是否已存在相同身份证号的长者
|
|
|
HomeElderlyInfoDO existingElderlyInfo = homeElderlyInfoMapper.selectOne(new LambdaQueryWrapperX<HomeElderlyInfoDO>()
|
|
|
.eq(HomeElderlyInfoDO::getIdCard, createReqVO.getIdCard()));
|
|
|
-
|
|
|
if (existingElderlyInfo != null) {
|
|
|
- // 如果长者已存在,更新字段但保留送工费
|
|
|
- BigDecimal originalDeliveryFee = existingElderlyInfo.getDeliveryFee();
|
|
|
-
|
|
|
- // 将新信息复制到现有对象中
|
|
|
- HomeElderlyInfoDO updateObj = BeanUtils.toBean(createReqVO, HomeElderlyInfoDO.class);
|
|
|
- updateObj.setId(existingElderlyInfo.getId());
|
|
|
- // 保留原有的送工费
|
|
|
- updateObj.setDeliveryFee(originalDeliveryFee);
|
|
|
- // 保留原有的创建信息
|
|
|
- updateObj.setCreator(existingElderlyInfo.getCreator());
|
|
|
- updateObj.setCreateTime(existingElderlyInfo.getCreateTime());
|
|
|
- // 更新修改信息
|
|
|
- updateObj.setUpdater(SecurityFrameworkUtils.getLoginUserNickname());
|
|
|
- updateObj.setUpdateTime(LocalDateTime.now());
|
|
|
- updateObj.setTenantId(createReqVO.getTenantId() == null ? TenantContextHolder.getTenantId() : createReqVO.getTenantId());
|
|
|
-
|
|
|
- homeElderlyInfoMapper.updateById(updateObj);
|
|
|
+ updateElderlyInfoFromReq(existingElderlyInfo, createReqVO);
|
|
|
return existingElderlyInfo.getId();
|
|
|
- } else {
|
|
|
- // 如果长者不存在,新增
|
|
|
- HomeElderlyInfoDO elderlyInfo = BeanUtils.toBean(createReqVO, HomeElderlyInfoDO.class);
|
|
|
+ }
|
|
|
+
|
|
|
+ HomeElderlyInfoDO elderlyInfo = buildElderlyInfo(createReqVO);
|
|
|
+ homeElderlyInfoMapper.insert(elderlyInfo);
|
|
|
+ upsertEmergencyContact(elderlyInfo.getId(), elderlyInfo.getTenantId(), createReqVO);
|
|
|
+ return elderlyInfo.getId();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void updateElderlyInfoFromReq(HomeElderlyInfoDO existingElderlyInfo, YkElderlyInfoSaveReqVO reqVO) {
|
|
|
+ BigDecimal originalDeliveryFee = existingElderlyInfo.getDeliveryFee();
|
|
|
+ HomeElderlyInfoDO updateObj = buildElderlyInfo(reqVO);
|
|
|
+ updateObj.setId(existingElderlyInfo.getId());
|
|
|
+ updateObj.setDeliveryFee(originalDeliveryFee);
|
|
|
+ updateObj.setCreator(existingElderlyInfo.getCreator());
|
|
|
+ updateObj.setCreateTime(existingElderlyInfo.getCreateTime());
|
|
|
+ updateObj.setUpdater(SecurityFrameworkUtils.getLoginUserNickname());
|
|
|
+ updateObj.setUpdateTime(LocalDateTime.now());
|
|
|
+ updateObj.setTenantId(resolveTenantId(reqVO.getTenantId()));
|
|
|
+ homeElderlyInfoMapper.updateById(updateObj);
|
|
|
+ upsertEmergencyContact(updateObj.getId(), updateObj.getTenantId(), reqVO);
|
|
|
+ }
|
|
|
+
|
|
|
+ private HomeElderlyInfoDO buildElderlyInfo(YkElderlyInfoSaveReqVO reqVO) {
|
|
|
+ HomeElderlyInfoDO elderlyInfo = BeanUtils.toBean(reqVO, HomeElderlyInfoDO.class);
|
|
|
+ elderlyInfo.setIsSubsidize("生效中".equals(reqVO.getSupportStatus()) ? 1 : 0);
|
|
|
+ elderlyInfo.setHouseholdArea(reqVO.getHouseholdDistrict() + "/" + reqVO.getHouseholdStreet());
|
|
|
+ elderlyInfo.setCurrentLiveArea(reqVO.getResidenceDistrict() + "/" + reqVO.getResidenceStreet());
|
|
|
+ elderlyInfo.setCurrentLiveAddress(reqVO.getCurrentAddress());
|
|
|
+ elderlyInfo.setPhone(reqVO.getPersonalPhone());
|
|
|
+ elderlyInfo.setTenantId(resolveTenantId(reqVO.getTenantId()));
|
|
|
+ if (elderlyInfo.getId() == null) {
|
|
|
elderlyInfo.setCreator(SecurityFrameworkUtils.getLoginUserNickname());
|
|
|
elderlyInfo.setCreateTime(LocalDateTime.now());
|
|
|
- elderlyInfo.setTenantId(createReqVO.getTenantId() == null ? TenantContextHolder.getTenantId() : createReqVO.getTenantId());
|
|
|
- homeElderlyInfoMapper.insert(elderlyInfo);
|
|
|
- return elderlyInfo.getId();
|
|
|
}
|
|
|
+ return elderlyInfo;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void upsertEmergencyContact(Long elderlyId, Long tenantId, YkElderlyInfoSaveReqVO reqVO) {
|
|
|
+ if (StringUtils.isBlank(reqVO.getEmergencyContact()) || StringUtils.isBlank(reqVO.getEmergencyContactPhone())) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ HomeElderlyFamilyDO homeElderlyFamilyDO = homeElderlyFamilyMapper.selectOne(new LambdaQueryWrapperX<HomeElderlyFamilyDO>()
|
|
|
+ .eq(HomeElderlyFamilyDO::getHomeElderId, elderlyId)
|
|
|
+ .eq(HomeElderlyFamilyDO::getIsEmergency, 1));
|
|
|
+ if (homeElderlyFamilyDO == null) {
|
|
|
+ homeElderlyFamilyDO = new HomeElderlyFamilyDO();
|
|
|
+ homeElderlyFamilyDO.setHomeElderId(elderlyId);
|
|
|
+ homeElderlyFamilyDO.setIsEmergency(1);
|
|
|
+ homeElderlyFamilyDO.setTenantId(tenantId);
|
|
|
+ homeElderlyFamilyDO.setContactName(reqVO.getEmergencyContact());
|
|
|
+ homeElderlyFamilyDO.setPhone(reqVO.getEmergencyContactPhone());
|
|
|
+ homeElderlyFamilyMapper.insert(homeElderlyFamilyDO);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ homeElderlyFamilyDO.setContactName(reqVO.getEmergencyContact());
|
|
|
+ homeElderlyFamilyDO.setPhone(reqVO.getEmergencyContactPhone());
|
|
|
+ homeElderlyFamilyMapper.updateById(homeElderlyFamilyDO);
|
|
|
+ }
|
|
|
+
|
|
|
+ private Long resolveTenantId(Long tenantId) {
|
|
|
+ return tenantId == null ? TenantContextHolder.getTenantId() : tenantId;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -242,67 +283,6 @@ public class YkElderlyInfoServiceImpl implements YkElderlyInfoService {
|
|
|
|
|
|
}
|
|
|
|
|
|
-// @Override
|
|
|
-// public String importExpenseRecord(List<YkElderlyExpenseRecordImportVO> dataList) {
|
|
|
-// int successCount = 0;
|
|
|
-// int failCount = 0;
|
|
|
-// StringBuilder errorMsg = new StringBuilder();
|
|
|
-//
|
|
|
-// for (int i = 0; i < dataList.size(); i++) {
|
|
|
-// YkElderlyExpenseRecordImportVO importVO = dataList.get(i);
|
|
|
-// try {
|
|
|
-// //查询长者
|
|
|
-// YkElderlyInfoDO ykElderlyInfoDO = homeElderlyInfoMapper.selectOne(new LambdaQueryWrapperX<YkElderlyInfoDO>()
|
|
|
-// .eq(YkElderlyInfoDO::getElderName, importVO.getServiceObj())
|
|
|
-// .eq(YkElderlyInfoDO::getIdCard, importVO.getIdCard()));
|
|
|
-//
|
|
|
-// if (ykElderlyInfoDO == null) {
|
|
|
-// failCount++;
|
|
|
-// errorMsg.append("第").append(i + 1).append("行,服务对象不存在,请检查!\n");
|
|
|
-// continue;
|
|
|
-// }
|
|
|
-//
|
|
|
-// // 创建费用变动记录
|
|
|
-// YkElderlyExpenseRecordDO recordDO = new YkElderlyExpenseRecordDO();
|
|
|
-// recordDO.setType(2); // 消费类型
|
|
|
-// recordDO.setExpenseType(1); // 余额类型
|
|
|
-// recordDO.setYkElderId(ykElderlyInfoDO.getId());
|
|
|
-// recordDO.setAmount(importVO.getSelfPaidAmount());
|
|
|
-// recordDO.setBalance(importVO.getConsumptionAfter());
|
|
|
-// recordDO.setRemarks("费用导入");
|
|
|
-// recordDO.setCreatedTime(new Date());
|
|
|
-// recordDO.setTenantId(TenantContextHolder.getTenantId());
|
|
|
-// recordDO.setMealPeriod(importVO.getMealPeriod());
|
|
|
-// recordDO.setMealTime(importVO.getMealTime());
|
|
|
-// recordDO.setCitySubsidy(importVO.getCitySubsidy());
|
|
|
-// recordDO.setDistrictSubsidy(importVO.getDistrictSubsidy());
|
|
|
-// recordDO.setDistrictCharitySubsidy(importVO.getDistrictCharitySubsidy());
|
|
|
-// recordDO.setStreetSubsidy(importVO.getStreetSubsidy());
|
|
|
-// recordDO.setStreetCharitySubsidy(importVO.getStreetCharitySubsidy());
|
|
|
-// recordDO.setTotalSubsidyWithoutOperation(importVO.getTotalSubsidyWithoutOperation());
|
|
|
-// recordDO.setOperationSubsidyForElderly(importVO.getOperationSubsidyForElderly());
|
|
|
-// recordDO.setSelfPaidAmount(importVO.getSelfPaidAmount());
|
|
|
-// recordDO.setConsumptionBefore(importVO.getConsumptionBefore());
|
|
|
-// recordDO.setConsumptionAfter(importVO.getConsumptionAfter());
|
|
|
-// recordDO.setTotalConsumptionAmount(importVO.getTotalConsumptionAmount());
|
|
|
-// recordDO.setImportTime(LocalDateTime.now());
|
|
|
-//
|
|
|
-// ykElderlyExpenseRecordMapper.insert(recordDO);
|
|
|
-// successCount++;
|
|
|
-//
|
|
|
-// //更新颐康长者表的余额
|
|
|
-// ykElderlyInfoDO.setBalance(recordDO.getBalance());
|
|
|
-// homeElderlyInfoMapper.updateById(ykElderlyInfoDO);
|
|
|
-//
|
|
|
-// } catch (Exception e) {
|
|
|
-// failCount++;
|
|
|
-// errorMsg.append("第").append(i + 1).append("行数据导入失败:").append(e.getMessage()).append("\n");
|
|
|
-// }
|
|
|
-// }
|
|
|
-//
|
|
|
-// return String.format("导入完成,成功:%d条,失败:%d条\n%s", successCount, failCount, errorMsg);
|
|
|
-// }
|
|
|
-
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public String importExpenseRecord(List<YkElderlyExpenseRecordImportVO> importVOList) {
|