Explorar el Código

BUGFIX
1、解决个人档案中的获取合同信息时如果存在多个价格变更会报错的问题

liangwenxuan hace 6 días
padre
commit
e13917bc08

+ 4 - 1
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/ElderlyContractResVO.java

@@ -2,8 +2,8 @@ package cn.iocoder.yudao.module.system.controller.admin.biz.vo;
 
 import cn.iocoder.yudao.module.system.dal.dataobject.biz.ElderlyChangeRecordDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.biz.ElderlyContractDO;
-import cn.iocoder.yudao.module.system.dal.dataobject.biz.ElderlyContractDetailDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.biz.ExpenseItemDO;
+import cn.iocoder.yudao.module.system.dal.dataobject.biz.PriceChangeRecordDO;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -60,4 +60,7 @@ public class ElderlyContractResVO implements Serializable {
     @Schema(description = "变更列表")
     private List<ElderlyChangeRecordDO> changeRecords;
 
+    @Schema(description = "价格变更明细列表(changeId 关联变更记录 id)")
+    private List<PriceChangeRecordDO> priceChangeRecords;
+
 }

+ 11 - 13
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/biz/ElderlyContractServiceImpl.java

@@ -382,22 +382,20 @@ public class ElderlyContractServiceImpl implements ElderlyContractService {
         List<ElderlyChangeRecordDO> elderlyChangeRecords = elderlyChangeRecordMapper.selectList(new LambdaQueryWrapperX<ElderlyChangeRecordDO>()
                 .eq(ElderlyChangeRecordDO::getElderlyId, elderId)
                 .eq(ElderlyChangeRecordDO::getCurrentFlag, 0));
-        for (ElderlyChangeRecordDO elderlyChangeRecord : elderlyChangeRecords) {
-            if(elderlyChangeRecord.getOriginalAmount() == null){
-                PriceChangeRecordDO priceChangeRecordDO = priceChangeRecordMapper.selectOne(PriceChangeRecordDO::getChangeId, elderlyChangeRecord.getId());
-                elderlyChangeRecord.setOriginalAmount(priceChangeRecordDO.getOriginalAmount());
-                elderlyChangeRecord.setAmount(priceChangeRecordDO.getAmount());
-                elderlyChangeRecord.setActualAmount(priceChangeRecordDO.getAmount());
-                // 因为是价格变更所以名称都使用原来的
-                elderlyChangeRecord.setOverheadChargeId(priceChangeRecordDO.getOriginalId());
-                elderlyChangeRecord.setOriginalName(priceChangeRecordDO.getOriginalName());
-                elderlyChangeRecord.setExpectOverheadChargeId(priceChangeRecordDO.getOriginalId());
-                elderlyChangeRecord.setExpectName(priceChangeRecordDO.getOriginalName());
+        resVO.setChangeRecords(elderlyChangeRecords);
+        if (CollectionUtil.isNotEmpty(elderlyChangeRecords)) {
+            List<Long> changeIds = elderlyChangeRecords.stream()
+                    .map(ElderlyChangeRecordDO::getId)
+                    .filter(Objects::nonNull)
+                    .collect(Collectors.toList());
+            if (CollectionUtil.isNotEmpty(changeIds)) {
+                List<PriceChangeRecordDO> priceChangeRecords = priceChangeRecordMapper.selectList(new LambdaQueryWrapperX<PriceChangeRecordDO>()
+                        .in(PriceChangeRecordDO::getChangeId, changeIds)
+                        .orderByDesc(PriceChangeRecordDO::getId));
+                resVO.setPriceChangeRecords(priceChangeRecords);
             }
         }
 
-        resVO.setChangeRecords(elderlyChangeRecords);
-
         return resVO;
     }