|
@@ -40,6 +40,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import jodd.util.StringUtil;
|
|
import jodd.util.StringUtil;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.security.core.parameters.P;
|
|
import org.springframework.security.core.parameters.P;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
@@ -127,6 +128,9 @@ public class BpmElderlyChangeApiImpl implements BpmElderlyChangeApi {
|
|
|
@Resource
|
|
@Resource
|
|
|
private ExpenseOrderItemMapper expenseOrderItemMapper;
|
|
private ExpenseOrderItemMapper expenseOrderItemMapper;
|
|
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private NurseLevelMapper nurseLevelMapper;
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public Long addElderlyBedChangeRecord(ElderlyChangeRecordReqVO bedChangeRecordReqVO) {
|
|
public Long addElderlyBedChangeRecord(ElderlyChangeRecordReqVO bedChangeRecordReqVO) {
|
|
@@ -251,6 +255,13 @@ public class BpmElderlyChangeApiImpl implements BpmElderlyChangeApi {
|
|
|
return checkResult;
|
|
return checkResult;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ @TenantIgnore
|
|
|
|
|
+ public List<ElderlyCurrentChargeItemRespVO> listCurrentChargeItemList(Long tenantId, Integer orgType, Integer identification,
|
|
|
|
|
+ List<Long> overheadChargeIds) {
|
|
|
|
|
+ return changeRecordMapper.selectCurrentChargeItemList(tenantId, orgType, identification, overheadChargeIds);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@TenantIgnore
|
|
@TenantIgnore
|
|
@@ -258,6 +269,19 @@ public class BpmElderlyChangeApiImpl implements BpmElderlyChangeApi {
|
|
|
ElderlyChangeRecordDO bedChangeRecordDO = changeRecordMapper.selectById(businessId);
|
|
ElderlyChangeRecordDO bedChangeRecordDO = changeRecordMapper.selectById(businessId);
|
|
|
// 1. 获取当前费用的价格 TODO 不应该在这里查询,前端是能获取到的,应该在插入变更记录的时候就要录入
|
|
// 1. 获取当前费用的价格 TODO 不应该在这里查询,前端是能获取到的,应该在插入变更记录的时候就要录入
|
|
|
Long elderlyId = bedChangeRecordDO.getElderlyId();
|
|
Long elderlyId = bedChangeRecordDO.getElderlyId();
|
|
|
|
|
+ // 护理变更
|
|
|
|
|
+ if(identification == 2){
|
|
|
|
|
+ List<NurseLevelDO> nurseLevelDOS = nurseLevelMapper.selectList(new LambdaQueryWrapperX<NurseLevelDO>()
|
|
|
|
|
+ .eq(NurseLevelDO::getNurseLevelName, bedChangeRecordDO.getExpectName()));
|
|
|
|
|
+ if(CollectionUtils.isNotEmpty(nurseLevelDOS)){
|
|
|
|
|
+ NurseLevelDO nurseLevelDO = nurseLevelDOS.get(0);
|
|
|
|
|
+ ElderlyInfoDO elderlyInfoDO = new ElderlyInfoDO();
|
|
|
|
|
+ elderlyInfoDO.setId(elderlyId);
|
|
|
|
|
+ elderlyInfoDO.setNurseLevelId(nurseLevelDO.getId());
|
|
|
|
|
+ elderlyInfoDO.setNurseLevelName(nurseLevelDO.getNurseLevelName());
|
|
|
|
|
+ elderlyInfoMapper.updateById(elderlyInfoDO);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
checkChangeStartDate(elderlyId,bedChangeRecordDO.getChangeDate());
|
|
checkChangeStartDate(elderlyId,bedChangeRecordDO.getChangeDate());
|
|
|
BedChangeCategoryVO chargeCategory = expenseMapper.getChargeCategory(elderlyId, identification);
|
|
BedChangeCategoryVO chargeCategory = expenseMapper.getChargeCategory(elderlyId, identification);
|
|
|
|
|
|
|
@@ -270,11 +294,12 @@ public class BpmElderlyChangeApiImpl implements BpmElderlyChangeApi {
|
|
|
// 增加原始金额的更新,因为原始金额是后续增加的字段,需要补充
|
|
// 增加原始金额的更新,因为原始金额是后续增加的字段,需要补充
|
|
|
bedChangeRecordDO.setOriginalAmount(currentExpense);
|
|
bedChangeRecordDO.setOriginalAmount(currentExpense);
|
|
|
changeRecordMapper.updateById(bedChangeRecordDO);
|
|
changeRecordMapper.updateById(bedChangeRecordDO);
|
|
|
|
|
+ // 滞后月
|
|
|
|
|
+ String hysteresisMonth = bedChangeRecordDO.getHysteresisMonth();
|
|
|
// 2. 对比变更后的价格
|
|
// 2. 对比变更后的价格
|
|
|
BigDecimal changeExpense = bedChangeRecordDO.getActualAmount();
|
|
BigDecimal changeExpense = bedChangeRecordDO.getActualAmount();
|
|
|
|
|
|
|
|
- // 3. 生成两条日常费用
|
|
|
|
|
-// LocalDate now = LocalDate.now();
|
|
|
|
|
|
|
+ // 3. 生成日常费用
|
|
|
BigDecimal daysInCurrentMonth = BigDecimal.valueOf(bedChangeRecordDO.getChangeDate().lengthOfMonth());
|
|
BigDecimal daysInCurrentMonth = BigDecimal.valueOf(bedChangeRecordDO.getChangeDate().lengthOfMonth());
|
|
|
LocalDate firstDayOfMonth = bedChangeRecordDO.getChangeDate().withDayOfMonth(1);
|
|
LocalDate firstDayOfMonth = bedChangeRecordDO.getChangeDate().withDayOfMonth(1);
|
|
|
// 原价格使用天数
|
|
// 原价格使用天数
|
|
@@ -282,14 +307,7 @@ public class BpmElderlyChangeApiImpl implements BpmElderlyChangeApi {
|
|
|
LocalDate endDay = bizUtil.getEndDateWithExpireDate(elderlyId,null,firstDayOfMonth.with(TemporalAdjusters.lastDayOfMonth()));
|
|
LocalDate endDay = bizUtil.getEndDateWithExpireDate(elderlyId,null,firstDayOfMonth.with(TemporalAdjusters.lastDayOfMonth()));
|
|
|
// 新价格使用天数
|
|
// 新价格使用天数
|
|
|
BigDecimal changeDays = new BigDecimal(Math.abs(ChronoUnit.DAYS.between(endDay,bedChangeRecordDO.getChangeDate()))+1);
|
|
BigDecimal changeDays = new BigDecimal(Math.abs(ChronoUnit.DAYS.between(endDay,bedChangeRecordDO.getChangeDate()))+1);
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
// BED_CHANGE_DAILY_PAY_REMARK
|
|
// BED_CHANGE_DAILY_PAY_REMARK
|
|
|
-
|
|
|
|
|
// String currentRemark = String.format(BED_CHANGE_DAILY_REFUND_REMARK, bedChangeRecordDO.getChangeDate(),
|
|
// String currentRemark = String.format(BED_CHANGE_DAILY_REFUND_REMARK, bedChangeRecordDO.getChangeDate(),
|
|
|
// chargeCategory.getItemName(), currentExpense.setScale(2),
|
|
// chargeCategory.getItemName(), currentExpense.setScale(2),
|
|
|
// bedChangeRecordDO.getExpectName(), changeExpense.setScale(2), firstDayOfMonth,
|
|
// bedChangeRecordDO.getExpectName(), changeExpense.setScale(2), firstDayOfMonth,
|
|
@@ -340,15 +358,49 @@ public class BpmElderlyChangeApiImpl implements BpmElderlyChangeApi {
|
|
|
// 最终价格 = 新 - 原
|
|
// 最终价格 = 新 - 原
|
|
|
finalAmount = changeFinalAmount.subtract(currentFinalAmount);
|
|
finalAmount = changeFinalAmount.subtract(currentFinalAmount);
|
|
|
}
|
|
}
|
|
|
- log.info("创建人:{}", SecurityFrameworkUtils.getLoginUserNickname());
|
|
|
|
|
if(finalAmount.compareTo(BigDecimal.ZERO) != 0){
|
|
if(finalAmount.compareTo(BigDecimal.ZERO) != 0){
|
|
|
|
|
+ DateTimeFormatter billingMonthFormatter = DateTimeFormatter.ofPattern("yyyy-MM");
|
|
|
|
|
+ String changeBillingMonth = bedChangeRecordDO.getChangeDate().format(billingMonthFormatter);
|
|
|
|
|
+ YearMonth changeYearMonth = YearMonth.parse(changeBillingMonth, billingMonthFormatter);
|
|
|
|
|
+ // 滞后年月
|
|
|
|
|
+ YearMonth hysteresisYearMonth = null;
|
|
|
|
|
+ if (StringUtils.isNotBlank(hysteresisMonth)) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ hysteresisYearMonth = YearMonth.parse(hysteresisMonth, billingMonthFormatter);
|
|
|
|
|
+ } catch (Exception ignored) {
|
|
|
|
|
+ hysteresisYearMonth = null;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
Date currentDate = new Date();
|
|
Date currentDate = new Date();
|
|
|
BigDecimal dailyExpensesDOAmount = finalAmount;
|
|
BigDecimal dailyExpensesDOAmount = finalAmount;
|
|
|
// 查询已生成账单,对生效期内的已生成账单增加日常费用记录
|
|
// 查询已生成账单,对生效期内的已生成账单增加日常费用记录
|
|
|
List<ExpenseOrderDO> generateExpenseOrder = expenseOrderMapper.selectList(new LambdaQueryWrapperX<ExpenseOrderDO>()
|
|
List<ExpenseOrderDO> generateExpenseOrder = expenseOrderMapper.selectList(new LambdaQueryWrapperX<ExpenseOrderDO>()
|
|
|
.eq(ExpenseOrderDO::getElderId, elderlyId)
|
|
.eq(ExpenseOrderDO::getElderId, elderlyId)
|
|
|
- .ge(ExpenseOrderDO::getBillingMonth, bedChangeRecordDO.getChangeDate().format(DateTimeFormatter.ofPattern("yyyy-MM"))));
|
|
|
|
|
|
|
+ .ge(ExpenseOrderDO::getBillingMonth, changeBillingMonth)
|
|
|
|
|
+ .ne(ExpenseOrderDO::getType,4));
|
|
|
if (generateExpenseOrder.size() > 0) {
|
|
if (generateExpenseOrder.size() > 0) {
|
|
|
|
|
+ List<String> targetBillingMonths = new ArrayList<>(generateExpenseOrder.size());
|
|
|
|
|
+ Set<String> targetBillingMonthSet = new HashSet<>(generateExpenseOrder.size());
|
|
|
|
|
+ for (ExpenseOrderDO e : generateExpenseOrder) {
|
|
|
|
|
+ String targetBillingMonth = resolveAttributionBillMonth(e.getBillingMonth(), changeYearMonth, hysteresisYearMonth);
|
|
|
|
|
+ targetBillingMonths.add(targetBillingMonth);
|
|
|
|
|
+ targetBillingMonthSet.add(targetBillingMonth);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ Map<String, ExpenseOrderDO> targetOrderMap = new HashMap<>();
|
|
|
|
|
+ // 滞后年月,月账单映射处理
|
|
|
|
|
+ if (CollectionUtil.isNotEmpty(targetBillingMonthSet)) {
|
|
|
|
|
+ List<ExpenseOrderDO> targetOrders = expenseOrderMapper.selectList(new LambdaQueryWrapperX<ExpenseOrderDO>()
|
|
|
|
|
+ .eq(ExpenseOrderDO::getElderId, elderlyId)
|
|
|
|
|
+ .ne(ExpenseOrderDO::getType,4)
|
|
|
|
|
+ .in(ExpenseOrderDO::getBillingMonth, targetBillingMonthSet)
|
|
|
|
|
+ .orderByDesc(ExpenseOrderDO::getCreatedTime));
|
|
|
|
|
+ for (ExpenseOrderDO targetOrder : targetOrders) {
|
|
|
|
|
+ targetOrderMap.putIfAbsent(targetOrder.getBillingMonth(), targetOrder);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ YearMonth finalHysteresisYearMonth = hysteresisYearMonth;
|
|
|
List<DailyExpensesDO> currentDailyExpensesDOList= generateExpenseOrder.stream().map((e) -> {
|
|
List<DailyExpensesDO> currentDailyExpensesDOList= generateExpenseOrder.stream().map((e) -> {
|
|
|
DailyExpensesDO currentDailyExpensesDO = new DailyExpensesDO();
|
|
DailyExpensesDO currentDailyExpensesDO = new DailyExpensesDO();
|
|
|
currentDailyExpensesDO.setElderId(elderlyId);
|
|
currentDailyExpensesDO.setElderId(elderlyId);
|
|
@@ -357,7 +409,8 @@ public class BpmElderlyChangeApiImpl implements BpmElderlyChangeApi {
|
|
|
currentDailyExpensesDO.setItemName(chargeCategory.getItemName());
|
|
currentDailyExpensesDO.setItemName(chargeCategory.getItemName());
|
|
|
currentDailyExpensesDO.setType(2);
|
|
currentDailyExpensesDO.setType(2);
|
|
|
currentDailyExpensesDO.setPrice(changeExpense.setScale(2));
|
|
currentDailyExpensesDO.setPrice(changeExpense.setScale(2));
|
|
|
- if(bedChangeRecordDO.getChangeDate().format(DateTimeFormatter.ofPattern("yyyy-MM")).equals(e.getBillingMonth())){
|
|
|
|
|
|
|
+ currentDailyExpensesDO.setTenantId(e.getTenantId());
|
|
|
|
|
+ if(changeBillingMonth.equals(e.getBillingMonth())){
|
|
|
currentDailyExpensesDO.setAmount(dailyExpensesDOAmount);
|
|
currentDailyExpensesDO.setAmount(dailyExpensesDOAmount);
|
|
|
currentDailyExpensesDO.setStartDate(bedChangeRecordDO.getChangeDate());
|
|
currentDailyExpensesDO.setStartDate(bedChangeRecordDO.getChangeDate());
|
|
|
currentDailyExpensesDO.setEndDate(endDay);
|
|
currentDailyExpensesDO.setEndDate(endDay);
|
|
@@ -374,10 +427,13 @@ public class BpmElderlyChangeApiImpl implements BpmElderlyChangeApi {
|
|
|
currentDailyExpensesDO.setCreatedTime(currentDate);
|
|
currentDailyExpensesDO.setCreatedTime(currentDate);
|
|
|
currentDailyExpensesDO.setAccountingTime(currentDate);
|
|
currentDailyExpensesDO.setAccountingTime(currentDate);
|
|
|
currentDailyExpensesDO.setCount(1);
|
|
currentDailyExpensesDO.setCount(1);
|
|
|
- currentDailyExpensesDO.setAttributionBillTime(e.getBillingMonth());
|
|
|
|
|
- // 未缴费并且未锁定的账单
|
|
|
|
|
- if(!(e.getPayStatus().equals(BooleanEnum.TRUE.getValue())) && !e.getIsLock()){
|
|
|
|
|
|
|
+ String targetBillingMonth = resolveAttributionBillMonth(e.getBillingMonth(), changeYearMonth, finalHysteresisYearMonth);
|
|
|
|
|
+ currentDailyExpensesDO.setAttributionBillTime(targetBillingMonth);
|
|
|
|
|
+ ExpenseOrderDO targetExpenseOrder = targetOrderMap.get(targetBillingMonth);
|
|
|
|
|
+ if(targetExpenseOrder != null && !(targetExpenseOrder.getPayStatus().equals(BooleanEnum.TRUE.getValue())) && !targetExpenseOrder.getIsLock()){
|
|
|
currentDailyExpensesDO.setIsGenerateBill(BooleanEnum.TRUE.getValue());
|
|
currentDailyExpensesDO.setIsGenerateBill(BooleanEnum.TRUE.getValue());
|
|
|
|
|
+ } else {
|
|
|
|
|
+ currentDailyExpensesDO.setIsGenerateBill(BooleanEnum.FALSE.getValue());
|
|
|
}
|
|
}
|
|
|
return currentDailyExpensesDO;
|
|
return currentDailyExpensesDO;
|
|
|
}).collect(Collectors.toList());
|
|
}).collect(Collectors.toList());
|
|
@@ -386,12 +442,11 @@ public class BpmElderlyChangeApiImpl implements BpmElderlyChangeApi {
|
|
|
// 为未缴费的账单创建账单明细项并更新账单金额
|
|
// 为未缴费的账单创建账单明细项并更新账单金额
|
|
|
// 不需要做日常费用isGenerateBill字段更新,因为上面插入时已经完成了,减少了数据库的操作
|
|
// 不需要做日常费用isGenerateBill字段更新,因为上面插入时已经完成了,减少了数据库的操作
|
|
|
for (int i = 0; i < generateExpenseOrder.size(); i++) {
|
|
for (int i = 0; i < generateExpenseOrder.size(); i++) {
|
|
|
- ExpenseOrderDO e = generateExpenseOrder.get(i);
|
|
|
|
|
DailyExpensesDO currentDailyExpensesDO = currentDailyExpensesDOList.get(i);
|
|
DailyExpensesDO currentDailyExpensesDO = currentDailyExpensesDOList.get(i);
|
|
|
- // 未缴费并且未锁定的账单
|
|
|
|
|
- if(!e.getPayStatus().equals(BooleanEnum.TRUE.getValue()) && !e.getIsLock()){
|
|
|
|
|
|
|
+ ExpenseOrderDO targetExpenseOrder = targetOrderMap.get(targetBillingMonths.get(i));
|
|
|
|
|
+ if(targetExpenseOrder != null && !targetExpenseOrder.getPayStatus().equals(BooleanEnum.TRUE.getValue()) && !targetExpenseOrder.getIsLock()){
|
|
|
ExpenseOrderItemDO expenseOrderItemDO = new ExpenseOrderItemDO();
|
|
ExpenseOrderItemDO expenseOrderItemDO = new ExpenseOrderItemDO();
|
|
|
- expenseOrderItemDO.setExpenseOrderId(e.getId());
|
|
|
|
|
|
|
+ expenseOrderItemDO.setExpenseOrderId(targetExpenseOrder.getId());
|
|
|
expenseOrderItemDO.setSourceExpenseItemId(currentDailyExpensesDO.getId());
|
|
expenseOrderItemDO.setSourceExpenseItemId(currentDailyExpensesDO.getId());
|
|
|
expenseOrderItemDO.setExpenseSource(BusinessConstants.DAILY_EXPENSES);
|
|
expenseOrderItemDO.setExpenseSource(BusinessConstants.DAILY_EXPENSES);
|
|
|
expenseOrderItemDO.setItemCategoryName(currentDailyExpensesDO.getItemCategory());
|
|
expenseOrderItemDO.setItemCategoryName(currentDailyExpensesDO.getItemCategory());
|
|
@@ -407,25 +462,32 @@ public class BpmElderlyChangeApiImpl implements BpmElderlyChangeApi {
|
|
|
expenseOrderItemDO.setEndDate(currentDailyExpensesDO.getEndDate());
|
|
expenseOrderItemDO.setEndDate(currentDailyExpensesDO.getEndDate());
|
|
|
expenseOrderItemDO.setCreatedBy(SecurityFrameworkUtils.getLoginUserNickname());
|
|
expenseOrderItemDO.setCreatedBy(SecurityFrameworkUtils.getLoginUserNickname());
|
|
|
expenseOrderItemDO.setCreatedTime(currentDate);
|
|
expenseOrderItemDO.setCreatedTime(currentDate);
|
|
|
- expenseOrderItemDO.setTenantId(e.getTenantId());
|
|
|
|
|
|
|
+ expenseOrderItemDO.setTenantId(targetExpenseOrder.getTenantId());
|
|
|
expenseOrderItemDO.setPayStatus(0); // 未缴费状态
|
|
expenseOrderItemDO.setPayStatus(0); // 未缴费状态
|
|
|
expenseOrderItemMapper.insert(expenseOrderItemDO);
|
|
expenseOrderItemMapper.insert(expenseOrderItemDO);
|
|
|
|
|
|
|
|
// 更新账单金额
|
|
// 更新账单金额
|
|
|
- BigDecimal currentAmount = e.getActualAmount() != null ? e.getActualAmount() : BigDecimal.ZERO;
|
|
|
|
|
|
|
+ BigDecimal currentAmount = targetExpenseOrder.getActualAmount() != null ? targetExpenseOrder.getActualAmount() : BigDecimal.ZERO;
|
|
|
BigDecimal newAmount = currentAmount.add(expenseOrderItemDO.getTotalAmount());
|
|
BigDecimal newAmount = currentAmount.add(expenseOrderItemDO.getTotalAmount());
|
|
|
ExpenseOrderDO updateExpenseOrderDO = new ExpenseOrderDO();
|
|
ExpenseOrderDO updateExpenseOrderDO = new ExpenseOrderDO();
|
|
|
- updateExpenseOrderDO.setId(e.getId());
|
|
|
|
|
|
|
+ updateExpenseOrderDO.setId(targetExpenseOrder.getId());
|
|
|
updateExpenseOrderDO.setActualAmount(newAmount);
|
|
updateExpenseOrderDO.setActualAmount(newAmount);
|
|
|
expenseOrderMapper.updateById(updateExpenseOrderDO);
|
|
expenseOrderMapper.updateById(updateExpenseOrderDO);
|
|
|
|
|
+ targetExpenseOrder.setActualAmount(newAmount);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
// 生效的当月查询是否有账单,无账单则生成日常费用,有账单的情况上面已生成不用重复生成
|
|
// 生效的当月查询是否有账单,无账单则生成日常费用,有账单的情况上面已生成不用重复生成
|
|
|
ExpenseOrderDO expenseOrder = expenseOrderMapper.selectOne(new LambdaQueryWrapperX<ExpenseOrderDO>()
|
|
ExpenseOrderDO expenseOrder = expenseOrderMapper.selectOne(new LambdaQueryWrapperX<ExpenseOrderDO>()
|
|
|
.eq(ExpenseOrderDO::getElderId, elderlyId)
|
|
.eq(ExpenseOrderDO::getElderId, elderlyId)
|
|
|
- .eq(ExpenseOrderDO::getBillingMonth, bedChangeRecordDO.getChangeDate().format(DateTimeFormatter.ofPattern("yyyy-MM"))));
|
|
|
|
|
|
|
+ .eq(ExpenseOrderDO::getBillingMonth, changeBillingMonth)
|
|
|
|
|
+ .ne(ExpenseOrderDO::getType,4));
|
|
|
if(expenseOrder == null){
|
|
if(expenseOrder == null){
|
|
|
|
|
+ String targetBillingMonth = resolveAttributionBillMonth(changeBillingMonth, changeYearMonth, hysteresisYearMonth);
|
|
|
|
|
+ ExpenseOrderDO targetExpenseOrder = expenseOrderMapper.selectOne(new LambdaQueryWrapperX<ExpenseOrderDO>()
|
|
|
|
|
+ .eq(ExpenseOrderDO::getElderId, elderlyId)
|
|
|
|
|
+ .eq(ExpenseOrderDO::getBillingMonth, targetBillingMonth)
|
|
|
|
|
+ .ne(ExpenseOrderDO::getType,4));
|
|
|
DailyExpensesDO currentDailyExpensesDO = new DailyExpensesDO();
|
|
DailyExpensesDO currentDailyExpensesDO = new DailyExpensesDO();
|
|
|
currentDailyExpensesDO.setElderId(elderlyId);
|
|
currentDailyExpensesDO.setElderId(elderlyId);
|
|
|
currentDailyExpensesDO.setItemId(chargeCategory.getOverheadChargeId());
|
|
currentDailyExpensesDO.setItemId(chargeCategory.getOverheadChargeId());
|
|
@@ -441,23 +503,50 @@ public class BpmElderlyChangeApiImpl implements BpmElderlyChangeApi {
|
|
|
currentDailyExpensesDO.setEndDate(endDay);
|
|
currentDailyExpensesDO.setEndDate(endDay);
|
|
|
currentDailyExpensesDO.setAccountingTime(currentDate);
|
|
currentDailyExpensesDO.setAccountingTime(currentDate);
|
|
|
currentDailyExpensesDO.setCount(1);
|
|
currentDailyExpensesDO.setCount(1);
|
|
|
- currentDailyExpensesDO.setAttributionBillTime(bedChangeRecordDO.getChangeDate().format(DateTimeFormatter.ofPattern("yyyy-MM")));
|
|
|
|
|
|
|
+ currentDailyExpensesDO.setAttributionBillTime(targetBillingMonth);
|
|
|
|
|
+ if(targetExpenseOrder != null && !targetExpenseOrder.getPayStatus().equals(BooleanEnum.TRUE.getValue()) && !targetExpenseOrder.getIsLock()){
|
|
|
|
|
+ currentDailyExpensesDO.setIsGenerateBill(BooleanEnum.TRUE.getValue());
|
|
|
|
|
+ } else {
|
|
|
|
|
+ currentDailyExpensesDO.setIsGenerateBill(BooleanEnum.FALSE.getValue());
|
|
|
|
|
+ }
|
|
|
dailyExpensesMapper.insert(currentDailyExpensesDO);
|
|
dailyExpensesMapper.insert(currentDailyExpensesDO);
|
|
|
|
|
+ if(currentDailyExpensesDO.getIsGenerateBill().equals(BooleanEnum.TRUE.getValue())){
|
|
|
|
|
+ ExpenseOrderItemDO expenseOrderItemDO = new ExpenseOrderItemDO();
|
|
|
|
|
+ expenseOrderItemDO.setExpenseOrderId(targetExpenseOrder.getId());
|
|
|
|
|
+ expenseOrderItemDO.setSourceExpenseItemId(currentDailyExpensesDO.getId());
|
|
|
|
|
+ expenseOrderItemDO.setExpenseSource(BusinessConstants.DAILY_EXPENSES);
|
|
|
|
|
+ expenseOrderItemDO.setItemCategoryName(currentDailyExpensesDO.getItemCategory());
|
|
|
|
|
+ expenseOrderItemDO.setItemName(currentDailyExpensesDO.getItemName());
|
|
|
|
|
+ expenseOrderItemDO.setPrice(currentDailyExpensesDO.getPrice());
|
|
|
|
|
+ expenseOrderItemDO.setActualPrice(currentDailyExpensesDO.getPrice());
|
|
|
|
|
+ expenseOrderItemDO.setTotalAmount(currentDailyExpensesDO.getAmount());
|
|
|
|
|
+ expenseOrderItemDO.setRoundAmount(currentDailyExpensesDO.getAmount().setScale(0, RoundingMode.HALF_UP));
|
|
|
|
|
+ expenseOrderItemDO.setRoundTwoDecimalAmount(currentDailyExpensesDO.getAmount().setScale(2, RoundingMode.HALF_UP));
|
|
|
|
|
+ expenseOrderItemDO.setCount(currentDailyExpensesDO.getCount());
|
|
|
|
|
+ expenseOrderItemDO.setType(currentDailyExpensesDO.getType());
|
|
|
|
|
+ expenseOrderItemDO.setStartDate(currentDailyExpensesDO.getStartDate());
|
|
|
|
|
+ expenseOrderItemDO.setEndDate(currentDailyExpensesDO.getEndDate());
|
|
|
|
|
+ expenseOrderItemDO.setCreatedBy(SecurityFrameworkUtils.getLoginUserNickname());
|
|
|
|
|
+ expenseOrderItemDO.setCreatedTime(currentDate);
|
|
|
|
|
+ expenseOrderItemDO.setTenantId(targetExpenseOrder.getTenantId());
|
|
|
|
|
+ expenseOrderItemDO.setPayStatus(0);
|
|
|
|
|
+ expenseOrderItemMapper.insert(expenseOrderItemDO);
|
|
|
|
|
+
|
|
|
|
|
+ BigDecimal currentAmount = targetExpenseOrder.getActualAmount() != null ? targetExpenseOrder.getActualAmount() : BigDecimal.ZERO;
|
|
|
|
|
+ BigDecimal newAmount = currentAmount.add(expenseOrderItemDO.getTotalAmount());
|
|
|
|
|
+ expenseOrderMapper.updateById(new ExpenseOrderDO().setId(targetExpenseOrder.getId()).setActualAmount(newAmount));
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- if (0 == currentExpense.setScale(2).compareTo(changeExpense.setScale(2))) {
|
|
|
|
|
- return;
|
|
|
|
|
- }
|
|
|
|
|
// 获取最后一次变更的时间
|
|
// 获取最后一次变更的时间
|
|
|
// ElderlyChangeRecordDO currentLastRecordDO = changeRecordMapper.selectLastRecordByElderId(elderlyId,
|
|
// ElderlyChangeRecordDO currentLastRecordDO = changeRecordMapper.selectLastRecordByElderId(elderlyId,
|
|
|
// bpmType, changeType, bedChangeRecordDO.getChangeDate(), bedChangeRecordDO.getId());
|
|
// bpmType, changeType, bedChangeRecordDO.getChangeDate(), bedChangeRecordDO.getId());
|
|
|
// 4. 更新月度账单配置
|
|
// 4. 更新月度账单配置
|
|
|
List<ExpenseItemDO> expenseItemDOS = expenseItemMapper.selectList(new LambdaQueryWrapperX<ExpenseItemDO>()
|
|
List<ExpenseItemDO> expenseItemDOS = expenseItemMapper.selectList(new LambdaQueryWrapperX<ExpenseItemDO>()
|
|
|
.eq(ExpenseItemDO::getExpenseId, chargeCategory.getExpenseId()));
|
|
.eq(ExpenseItemDO::getExpenseId, chargeCategory.getExpenseId()));
|
|
|
- ExpenseDO expenseDO = new ExpenseDO();
|
|
|
|
|
- expenseMapper.insert(expenseDO.setElderId(elderlyId)
|
|
|
|
|
- .setCreatedTime(new Date())
|
|
|
|
|
|
|
+ ExpenseDO expenseDO = expenseMapper.selectById(chargeCategory.getExpenseId());
|
|
|
|
|
+ expenseDO.setId(null);
|
|
|
|
|
+ expenseMapper.insert(expenseDO.setCreatedTime(new Date())
|
|
|
.setCreatedBy(SecurityFrameworkUtils.getLoginUserNickname())
|
|
.setCreatedBy(SecurityFrameworkUtils.getLoginUserNickname())
|
|
|
.setTenantId(startTenantId));
|
|
.setTenantId(startTenantId));
|
|
|
BigDecimal totalAmout = BigDecimal.ZERO;
|
|
BigDecimal totalAmout = BigDecimal.ZERO;
|
|
@@ -484,17 +573,18 @@ public class BpmElderlyChangeApiImpl implements BpmElderlyChangeApi {
|
|
|
udpateExpenseItemDO.setId(item.getId());
|
|
udpateExpenseItemDO.setId(item.getId());
|
|
|
udpateExpenseItemDO.setChangeEndDate(changeEndDate);
|
|
udpateExpenseItemDO.setChangeEndDate(changeEndDate);
|
|
|
expenseItemMapper.updateById(udpateExpenseItemDO);
|
|
expenseItemMapper.updateById(udpateExpenseItemDO);
|
|
|
- item.setChangeStartDate(bedChangeRecordDO.getChangeDate());
|
|
|
|
|
} else {
|
|
} else {
|
|
|
ExpenseItemDO udpateExpenseItemDO = new ExpenseItemDO();
|
|
ExpenseItemDO udpateExpenseItemDO = new ExpenseItemDO();
|
|
|
udpateExpenseItemDO.setId(item.getId());
|
|
udpateExpenseItemDO.setId(item.getId());
|
|
|
udpateExpenseItemDO.setChangeFlag(1);
|
|
udpateExpenseItemDO.setChangeFlag(1);
|
|
|
if (item.getIsMonthlyExpense() == 1) {
|
|
if (item.getIsMonthlyExpense() == 1) {
|
|
|
- udpateExpenseItemDO.setChangeEndDate(item.getChangeStartDate().minusDays(1));
|
|
|
|
|
|
|
+ udpateExpenseItemDO.setChangeEndDate(changeEndDate);
|
|
|
}
|
|
}
|
|
|
expenseItemMapper.updateById(udpateExpenseItemDO);
|
|
expenseItemMapper.updateById(udpateExpenseItemDO);
|
|
|
}
|
|
}
|
|
|
item.setId(null);
|
|
item.setId(null);
|
|
|
|
|
+ item.setCreateTime(new Date());
|
|
|
|
|
+ item.setChangeStartDate(bedChangeRecordDO.getChangeDate());
|
|
|
totalAmout.add(item.getActualAmount());
|
|
totalAmout.add(item.getActualAmount());
|
|
|
});
|
|
});
|
|
|
if(totalAmout.compareTo(BigDecimal.ZERO) != 0) {
|
|
if(totalAmout.compareTo(BigDecimal.ZERO) != 0) {
|
|
@@ -506,6 +596,7 @@ public class BpmElderlyChangeApiImpl implements BpmElderlyChangeApi {
|
|
|
ExpenseOrderDO expenseOrderDO = expenseOrderMapper.selectOne(new LambdaQueryWrapperX<ExpenseOrderDO>()
|
|
ExpenseOrderDO expenseOrderDO = expenseOrderMapper.selectOne(new LambdaQueryWrapperX<ExpenseOrderDO>()
|
|
|
.eq(ExpenseOrderDO::getElderId, elderlyId)
|
|
.eq(ExpenseOrderDO::getElderId, elderlyId)
|
|
|
.eq(ExpenseOrderDO::getBillingMonth, bedChangeRecordDO.getChangeDate().format(DateTimeFormatter.ofPattern("yyyy-MM")))
|
|
.eq(ExpenseOrderDO::getBillingMonth, bedChangeRecordDO.getChangeDate().format(DateTimeFormatter.ofPattern("yyyy-MM")))
|
|
|
|
|
+ .eq(ExpenseOrderDO::getPayStatus,BooleanEnum.FALSE.getValue())
|
|
|
.eq(ExpenseOrderDO::getType, 2)
|
|
.eq(ExpenseOrderDO::getType, 2)
|
|
|
.eq(ExpenseOrderDO::getTenantId, startTenantId));
|
|
.eq(ExpenseOrderDO::getTenantId, startTenantId));
|
|
|
if (null == expenseOrderDO) {
|
|
if (null == expenseOrderDO) {
|
|
@@ -587,13 +678,13 @@ public class BpmElderlyChangeApiImpl implements BpmElderlyChangeApi {
|
|
|
}
|
|
}
|
|
|
List<ExpenseItemDO> expenseItemDOS = expenseItemMapper.selectList(new LambdaQueryWrapperX<ExpenseItemDO>()
|
|
List<ExpenseItemDO> expenseItemDOS = expenseItemMapper.selectList(new LambdaQueryWrapperX<ExpenseItemDO>()
|
|
|
.eq(ExpenseItemDO::getExpenseId, categoryList.get(0).getExpenseId()));
|
|
.eq(ExpenseItemDO::getExpenseId, categoryList.get(0).getExpenseId()));
|
|
|
- ExpenseDO expenseDO = new ExpenseDO();
|
|
|
|
|
|
|
+ ExpenseDO expenseDO = expenseMapper.selectById(categoryList.get(0).getExpenseId());
|
|
|
|
|
+ expenseDO.setId(null);
|
|
|
expenseMapper.insert(expenseDO.setElderId(elderlyId)
|
|
expenseMapper.insert(expenseDO.setElderId(elderlyId)
|
|
|
.setTenantId(TenantContextHolder.getTenantId())
|
|
.setTenantId(TenantContextHolder.getTenantId())
|
|
|
.setCreatedTime(new Date())
|
|
.setCreatedTime(new Date())
|
|
|
.setCreatedBy(SecurityFrameworkUtils.getLoginUserNickname()));
|
|
.setCreatedBy(SecurityFrameworkUtils.getLoginUserNickname()));
|
|
|
BigDecimal totalAmout = BigDecimal.ZERO;
|
|
BigDecimal totalAmout = BigDecimal.ZERO;
|
|
|
- Date date = new Date();
|
|
|
|
|
priceChangeRecordDOS.forEach(priceChange ->{
|
|
priceChangeRecordDOS.forEach(priceChange ->{
|
|
|
categoryList.forEach(category ->{
|
|
categoryList.forEach(category ->{
|
|
|
if (category.getOverheadChargeId().equals(priceChange.getOriginalId())){
|
|
if (category.getOverheadChargeId().equals(priceChange.getOriginalId())){
|
|
@@ -625,7 +716,7 @@ public class BpmElderlyChangeApiImpl implements BpmElderlyChangeApi {
|
|
|
|
|
|
|
|
BigDecimal finalAmount = null;
|
|
BigDecimal finalAmount = null;
|
|
|
|
|
|
|
|
- if (0 == currentExpense.setScale(2).compareTo(changeExpense.setScale(2))) {
|
|
|
|
|
|
|
+ if (0 == currentExpense.compareTo(changeExpense)) {
|
|
|
finalAmount = BigDecimal.ZERO;
|
|
finalAmount = BigDecimal.ZERO;
|
|
|
} else if(daysInCurrentMonth.equals(changeDays)){
|
|
} else if(daysInCurrentMonth.equals(changeDays)){
|
|
|
finalAmount = changeExpense.subtract(currentExpense);
|
|
finalAmount = changeExpense.subtract(currentExpense);
|
|
@@ -641,12 +732,13 @@ public class BpmElderlyChangeApiImpl implements BpmElderlyChangeApi {
|
|
|
// 最终价格 = 新 - 原
|
|
// 最终价格 = 新 - 原
|
|
|
finalAmount = changeFinalAmount.subtract(currentFinalAmount);
|
|
finalAmount = changeFinalAmount.subtract(currentFinalAmount);
|
|
|
}
|
|
}
|
|
|
- String currentRemark = String.format(PRICE_CHANGE_DAILY_PAY_REMARK, currentExpense.setScale(2),
|
|
|
|
|
- currentExpense.setScale(2), changeExpense.setScale(2), currentDays, changeDays);
|
|
|
|
|
|
|
+ String currentRemark = String.format(PRICE_CHANGE_DAILY_PAY_REMARK, currentExpense.setScale(2,RoundingMode.HALF_UP),
|
|
|
|
|
+ currentExpense.setScale(2,RoundingMode.HALF_UP), changeExpense.setScale(2,RoundingMode.HALF_UP), currentDays, changeDays);
|
|
|
Date currentDate = new Date();
|
|
Date currentDate = new Date();
|
|
|
// 查询已生成账单,对生效期内的已生成账单增加日常费用记录
|
|
// 查询已生成账单,对生效期内的已生成账单增加日常费用记录
|
|
|
List<ExpenseOrderDO> generateExpenseOrder = expenseOrderMapper.selectList(new LambdaQueryWrapperX<ExpenseOrderDO>()
|
|
List<ExpenseOrderDO> generateExpenseOrder = expenseOrderMapper.selectList(new LambdaQueryWrapperX<ExpenseOrderDO>()
|
|
|
.eq(ExpenseOrderDO::getElderId, elderlyId)
|
|
.eq(ExpenseOrderDO::getElderId, elderlyId)
|
|
|
|
|
+ .ne(ExpenseOrderDO::getType,4)
|
|
|
.ge(ExpenseOrderDO::getBillingMonth, changeRecordDO.getChangeDate().format(DateTimeFormatter.ofPattern("yyyy-MM"))));
|
|
.ge(ExpenseOrderDO::getBillingMonth, changeRecordDO.getChangeDate().format(DateTimeFormatter.ofPattern("yyyy-MM"))));
|
|
|
BigDecimal dailyExpensesDOAmount = finalAmount;
|
|
BigDecimal dailyExpensesDOAmount = finalAmount;
|
|
|
if (generateExpenseOrder.size() > 0) {
|
|
if (generateExpenseOrder.size() > 0) {
|
|
@@ -657,7 +749,8 @@ public class BpmElderlyChangeApiImpl implements BpmElderlyChangeApi {
|
|
|
currentDailyExpensesDO.setItemCategory(itemCategory);
|
|
currentDailyExpensesDO.setItemCategory(itemCategory);
|
|
|
currentDailyExpensesDO.setItemName(category.getItemName());
|
|
currentDailyExpensesDO.setItemName(category.getItemName());
|
|
|
currentDailyExpensesDO.setType(2);
|
|
currentDailyExpensesDO.setType(2);
|
|
|
- currentDailyExpensesDO.setPrice(changeExpense.setScale(2));
|
|
|
|
|
|
|
+ currentDailyExpensesDO.setTenantId(e.getTenantId());
|
|
|
|
|
+ currentDailyExpensesDO.setPrice(changeExpense.setScale(2,RoundingMode.HALF_UP));
|
|
|
if(changeRecordDO.getChangeDate().format(DateTimeFormatter.ofPattern("yyyy-MM")).equals(e.getBillingMonth())){
|
|
if(changeRecordDO.getChangeDate().format(DateTimeFormatter.ofPattern("yyyy-MM")).equals(e.getBillingMonth())){
|
|
|
currentDailyExpensesDO.setAmount(dailyExpensesDOAmount);
|
|
currentDailyExpensesDO.setAmount(dailyExpensesDOAmount);
|
|
|
currentDailyExpensesDO.setStartDate(changeRecordDO.getChangeDate());
|
|
currentDailyExpensesDO.setStartDate(changeRecordDO.getChangeDate());
|
|
@@ -668,8 +761,8 @@ public class BpmElderlyChangeApiImpl implements BpmElderlyChangeApi {
|
|
|
YearMonth yearMonth = YearMonth.parse(e.getBillingMonth());
|
|
YearMonth yearMonth = YearMonth.parse(e.getBillingMonth());
|
|
|
currentDailyExpensesDO.setStartDate(yearMonth.atDay(1));
|
|
currentDailyExpensesDO.setStartDate(yearMonth.atDay(1));
|
|
|
currentDailyExpensesDO.setEndDate(yearMonth.atEndOfMonth());
|
|
currentDailyExpensesDO.setEndDate(yearMonth.atEndOfMonth());
|
|
|
- currentDailyExpensesDO.setRemarks(String.format(PRICE_CHANGE_DAILY_PAY_REMARK, currentExpense.setScale(2), currentExpense.setScale(2),
|
|
|
|
|
- changeExpense.setScale(2), 0, yearMonth.lengthOfMonth()));
|
|
|
|
|
|
|
+ currentDailyExpensesDO.setRemarks(String.format(PRICE_CHANGE_DAILY_PAY_REMARK, currentExpense.setScale(2,RoundingMode.HALF_UP), currentExpense.setScale(2,RoundingMode.HALF_UP),
|
|
|
|
|
+ changeExpense.setScale(2,RoundingMode.HALF_UP), 0, yearMonth.lengthOfMonth()));
|
|
|
}
|
|
}
|
|
|
currentDailyExpensesDO.setCreatedBy(SecurityFrameworkUtils.getLoginUserNickname());
|
|
currentDailyExpensesDO.setCreatedBy(SecurityFrameworkUtils.getLoginUserNickname());
|
|
|
currentDailyExpensesDO.setCreatedTime(currentDate);
|
|
currentDailyExpensesDO.setCreatedTime(currentDate);
|
|
@@ -723,6 +816,7 @@ public class BpmElderlyChangeApiImpl implements BpmElderlyChangeApi {
|
|
|
// 生效的当月查询是否有账单,无账单则生成日常费用,有账单的情况上面已生成不用重复生成
|
|
// 生效的当月查询是否有账单,无账单则生成日常费用,有账单的情况上面已生成不用重复生成
|
|
|
ExpenseOrderDO expenseOrder = expenseOrderMapper.selectOne(new LambdaQueryWrapperX<ExpenseOrderDO>()
|
|
ExpenseOrderDO expenseOrder = expenseOrderMapper.selectOne(new LambdaQueryWrapperX<ExpenseOrderDO>()
|
|
|
.eq(ExpenseOrderDO::getElderId, elderlyId)
|
|
.eq(ExpenseOrderDO::getElderId, elderlyId)
|
|
|
|
|
+ .ne(ExpenseOrderDO::getType,4)
|
|
|
.eq(ExpenseOrderDO::getBillingMonth, changeRecordDO.getChangeDate().format(DateTimeFormatter.ofPattern("yyyy-MM"))));
|
|
.eq(ExpenseOrderDO::getBillingMonth, changeRecordDO.getChangeDate().format(DateTimeFormatter.ofPattern("yyyy-MM"))));
|
|
|
if(expenseOrder == null){
|
|
if(expenseOrder == null){
|
|
|
DailyExpensesDO currentDailyExpensesDO = new DailyExpensesDO();
|
|
DailyExpensesDO currentDailyExpensesDO = new DailyExpensesDO();
|
|
@@ -731,7 +825,7 @@ public class BpmElderlyChangeApiImpl implements BpmElderlyChangeApi {
|
|
|
currentDailyExpensesDO.setItemCategory(itemCategory);
|
|
currentDailyExpensesDO.setItemCategory(itemCategory);
|
|
|
currentDailyExpensesDO.setItemName(category.getItemName());
|
|
currentDailyExpensesDO.setItemName(category.getItemName());
|
|
|
currentDailyExpensesDO.setType(2);
|
|
currentDailyExpensesDO.setType(2);
|
|
|
- currentDailyExpensesDO.setPrice(changeExpense.setScale(2));
|
|
|
|
|
|
|
+ currentDailyExpensesDO.setPrice(changeExpense.setScale(2,RoundingMode.HALF_UP));
|
|
|
currentDailyExpensesDO.setAmount(dailyExpensesDOAmount);
|
|
currentDailyExpensesDO.setAmount(dailyExpensesDOAmount);
|
|
|
currentDailyExpensesDO.setRemarks(currentRemark);
|
|
currentDailyExpensesDO.setRemarks(currentRemark);
|
|
|
currentDailyExpensesDO.setCreatedBy(SecurityFrameworkUtils.getLoginUserNickname());
|
|
currentDailyExpensesDO.setCreatedBy(SecurityFrameworkUtils.getLoginUserNickname());
|
|
@@ -760,16 +854,16 @@ public class BpmElderlyChangeApiImpl implements BpmElderlyChangeApi {
|
|
|
item.setTotalAmount(priceChange.getAmount());
|
|
item.setTotalAmount(priceChange.getAmount());
|
|
|
udpateExpenseItemDO.setChangeFlag(1);
|
|
udpateExpenseItemDO.setChangeFlag(1);
|
|
|
udpateExpenseItemDO.setChangeEndDate(changeEndDate);
|
|
udpateExpenseItemDO.setChangeEndDate(changeEndDate);
|
|
|
- item.setChangeStartDate(changeRecordDO.getChangeDate());
|
|
|
|
|
expenseItemMapper.updateById(udpateExpenseItemDO);
|
|
expenseItemMapper.updateById(udpateExpenseItemDO);
|
|
|
}else {
|
|
}else {
|
|
|
if(item.getIsMonthlyExpense().equals(BooleanEnum.TRUE.getValue())){
|
|
if(item.getIsMonthlyExpense().equals(BooleanEnum.TRUE.getValue())){
|
|
|
- udpateExpenseItemDO.setChangeEndDate(item.getChangeStartDate().minusDays(1));
|
|
|
|
|
|
|
+ udpateExpenseItemDO.setChangeEndDate(changeEndDate);
|
|
|
expenseItemMapper.updateById(udpateExpenseItemDO);
|
|
expenseItemMapper.updateById(udpateExpenseItemDO);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
item.setId(null);
|
|
item.setId(null);
|
|
|
- item.setCreateTime(date);
|
|
|
|
|
|
|
+ item.setChangeStartDate(changeRecordDO.getChangeDate());
|
|
|
|
|
+ item.setCreateTime(new Date());
|
|
|
totalAmout.add(item.getActualAmount());
|
|
totalAmout.add(item.getActualAmount());
|
|
|
});
|
|
});
|
|
|
});
|
|
});
|
|
@@ -1019,4 +1113,13 @@ public class BpmElderlyChangeApiImpl implements BpmElderlyChangeApi {
|
|
|
}
|
|
}
|
|
|
throw exception(ErrorCodeConstants.CHANGE_START_DATE_GREATER_EXPIRE_DATE);
|
|
throw exception(ErrorCodeConstants.CHANGE_START_DATE_GREATER_EXPIRE_DATE);
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ private String resolveAttributionBillMonth(String sourceBillingMonth, YearMonth changeYearMonth, YearMonth hysteresisYearMonth) {
|
|
|
|
|
+ if (hysteresisYearMonth == null || changeYearMonth == null || StringUtils.isBlank(sourceBillingMonth)) {
|
|
|
|
|
+ return sourceBillingMonth;
|
|
|
|
|
+ }
|
|
|
|
|
+ YearMonth sourceYearMonth = YearMonth.parse(sourceBillingMonth);
|
|
|
|
|
+ long monthOffset = ChronoUnit.MONTHS.between(changeYearMonth, sourceYearMonth);
|
|
|
|
|
+ return hysteresisYearMonth.plusMonths(monthOffset).toString();
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|