Browse Source

计量支付项相关

Signed-off-by: liuyc <56808083@qq.com>
liuyc 1 year ago
parent
commit
3667b46207

+ 83 - 10
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/MidPayItemController.java

@@ -153,21 +153,51 @@ public class MidPayItemController extends BladeController {
     @PostMapping("/system/list")
     @ApiOperationSupport(order = 5)
     @ApiOperation(value = "系统中期支付项列表", notes = "传入项目id、选择的recordId(系统级id)")
-    public R<List<MeterMidPayItemSystem>> systemList(@RequestParam String projectId, String recordId) {
+    public R<List<MeterMidPayItemSystemVO>> systemList(@RequestParam String projectId, String recordId) {
+        Map<String, String> meterPayTypeMap = jdbcTemplate.query("SELECT dict_key,dict_value FROM blade_dict WHERE is_deleted = 0 AND code = 'meter_pay_type'", new BeanPropertyRowMapper<>(Dict.class)).stream().collect(Collectors.toMap(Dict::getDictKey, Dict::getDictValue));
+        Map<String, String> meterPayAppTypeMap = jdbcTemplate.query("SELECT dict_key,dict_value FROM blade_dict WHERE is_deleted = 0 AND code = 'meter_pay_applicable_type'", new BeanPropertyRowMapper<>(Dict.class)).stream().collect(Collectors.toMap(Dict::getDictKey, Dict::getDictValue));
+
         /*后管添加汇总项*/
         if (ObjectUtil.isNotEmpty(recordId) && ObjectUtil.isNotEmpty(projectId)) {
-            List<MeterMidPayItemSystem> meterMidPayItemSystems = payItemSystemService.getBaseMapper().selectList(Wrappers.<MeterMidPayItemSystem>lambdaQuery()
-                    .ne(MeterMidPayItemSystem::getId, recordId)
-                    .orderByAsc(MeterMidPayItemSystem::getCreateTime)).stream().sorted(
+            List<MeterMidPayItemRelation> relationList = jdbcTemplate.query("SELECT * FROM s_meter_mid_pay_item_relation WHERE mid_pay_id = " + recordId, new BeanPropertyRowMapper<>(MeterMidPayItemRelation.class));
+            Map<Long, MeterMidPayItemRelation> collect = relationList.stream().collect(Collectors.toMap(MeterMidPayItemRelation::getMidPayIdRelation, Function.identity()));
+
+            List<MeterMidPayItemSystemVO> meterMidPayItemSystems = payItemSystemService.getBaseMapper().selectList(Wrappers.<MeterMidPayItemSystem>lambdaQuery()
+                    .orderByAsc(MeterMidPayItemSystem::getCreateTime)).stream().map(system -> {
+                MeterMidPayItemSystemVO vo = new MeterMidPayItemSystemVO();
+                BeanUtil.copyProperties(system, vo);
+
+                /*剔除本身*/
+                if (ObjectUtil.isNotEmpty(recordId) && recordId.equals(vo.getId().toString())) {
+                    return null;
+                }
+
+                /*剔除已引用过的*/
+                if (collect.size() > 0) {
+                    MeterMidPayItemRelation orDefault = collect.getOrDefault(vo.getId(), null);
+                    if (orDefault != null) {
+                        return null;
+                    }
+                }
+
+                if (ObjectUtil.isNotEmpty(system.getPayApplicableType())) {
+                    vo.setPayApplicableTypeName(meterPayAppTypeMap.getOrDefault(system.getPayApplicableType().toString(), null));
+                }
+                if (ObjectUtil.isNotEmpty(system.getPayType())) {
+                    vo.setPayTypeName(meterPayTypeMap.getOrDefault(system.getPayType().toString(), null));
+                }
+                return vo;
+            }).sorted(
                     Comparator.nullsLast(
-                            Comparator.<MeterMidPayItemSystem, Integer>comparing(
+                            Comparator.<MeterMidPayItemSystemVO, Integer>comparing(
                                     systemVO -> {
                                         Integer sortValue = systemVO.getSort();
                                         return sortValue != null ? sortValue : Integer.MAX_VALUE;
                                     }))
                             .thenComparing(
-                                    Comparator.nullsLast(Comparator.comparing(MeterMidPayItemSystem::getCreateTime)))
-            ).collect(Collectors.toList());
+                                    Comparator.nullsLast(Comparator.comparing(MeterMidPayItemSystemVO::getCreateTime))))
+                    .filter(Objects::nonNull)
+                    .collect(Collectors.toList());
 
             return R.data(meterMidPayItemSystems);
         }
@@ -175,11 +205,54 @@ public class MidPayItemController extends BladeController {
         /*计量客户端项目引用系统*/
         List<MeterMidPayItemProject> meterMidPayItemProjects = payItemProjectService.getBaseMapper().selectList(Wrappers.<MeterMidPayItemProject>lambdaQuery().eq(MeterMidPayItemProject::getProjectId, projectId));
         List<Long> collect = meterMidPayItemProjects.stream().map(MeterMidPayItemProject::getDataSourceId).collect(Collectors.toList());
-        List<MeterMidPayItemSystem> meterMidPayItemSystems;
+        List<MeterMidPayItemSystemVO> meterMidPayItemSystems;
         if (collect.size() > 0) {
-            meterMidPayItemSystems = payItemSystemService.getBaseMapper().selectList(Wrappers.<MeterMidPayItemSystem>lambdaQuery().notIn(MeterMidPayItemSystem::getId, collect).orderByAsc(MeterMidPayItemSystem::getCreateTime));
+            meterMidPayItemSystems = payItemSystemService.getBaseMapper().selectList(Wrappers.<MeterMidPayItemSystem>lambdaQuery()
+                    .notIn(MeterMidPayItemSystem::getId, collect)
+                    .orderByAsc(MeterMidPayItemSystem::getCreateTime))
+                    .stream().map(system -> {
+                        MeterMidPayItemSystemVO vo = new MeterMidPayItemSystemVO();
+                        BeanUtil.copyProperties(system, vo);
+                        if (ObjectUtil.isNotEmpty(system.getPayApplicableType())) {
+                            vo.setPayApplicableTypeName(meterPayAppTypeMap.getOrDefault(system.getPayApplicableType().toString(), null));
+                        }
+                        if (ObjectUtil.isNotEmpty(system.getPayType())) {
+                            vo.setPayTypeName(meterPayTypeMap.getOrDefault(system.getPayType().toString(), null));
+                        }
+                        return vo;
+                    }).sorted(
+                            Comparator.nullsLast(
+                                    Comparator.<MeterMidPayItemSystemVO, Integer>comparing(
+                                            systemVO -> {
+                                                Integer sortValue = systemVO.getSort();
+                                                return sortValue != null ? sortValue : Integer.MAX_VALUE;
+                                            }))
+                                    .thenComparing(
+                                            Comparator.nullsLast(Comparator.comparing(MeterMidPayItemSystemVO::getCreateTime)))
+                    ).collect(Collectors.toList());
         } else {
-            meterMidPayItemSystems = payItemSystemService.getBaseMapper().selectList(Wrappers.<MeterMidPayItemSystem>lambdaQuery().orderByAsc(MeterMidPayItemSystem::getCreateTime));
+            meterMidPayItemSystems = payItemSystemService.getBaseMapper().selectList(Wrappers.<MeterMidPayItemSystem>lambdaQuery()
+                    .orderByAsc(MeterMidPayItemSystem::getCreateTime))
+                    .stream().map(system -> {
+                        MeterMidPayItemSystemVO vo = new MeterMidPayItemSystemVO();
+                        BeanUtil.copyProperties(system, vo);
+                        if (ObjectUtil.isNotEmpty(system.getPayApplicableType())) {
+                            vo.setPayApplicableTypeName(meterPayAppTypeMap.getOrDefault(system.getPayApplicableType().toString(), null));
+                        }
+                        if (ObjectUtil.isNotEmpty(system.getPayType())) {
+                            vo.setPayTypeName(meterPayTypeMap.getOrDefault(system.getPayType().toString(), null));
+                        }
+                        return vo;
+                    }).sorted(
+                            Comparator.nullsLast(
+                                    Comparator.<MeterMidPayItemSystemVO, Integer>comparing(
+                                            systemVO -> {
+                                                Integer sortValue = systemVO.getSort();
+                                                return sortValue != null ? sortValue : Integer.MAX_VALUE;
+                                            }))
+                                    .thenComparing(
+                                            Comparator.nullsLast(Comparator.comparing(MeterMidPayItemSystemVO::getCreateTime)))
+                    ).collect(Collectors.toList());
         }
         return R.data(meterMidPayItemSystems);
     }