Browse Source

Merge remote-tracking branch 'origin/master'

lfy 1 week ago
parent
commit
0db5a85659

+ 59 - 1
delivery-module-core/delivery-module-core-biz/src/main/java/com/unis/module/coding/service/dwxx/DwxxServiceImpl.java

@@ -51,6 +51,7 @@ import com.unis.module.system.dal.mysql.permission.UserRoleMapper;
51
 import com.unis.module.system.dal.mysql.user.AdminUserMapper;
51
 import com.unis.module.system.dal.mysql.user.AdminUserMapper;
52
 import com.unis.module.system.enums.permission.RoleIdEnum;
52
 import com.unis.module.system.enums.permission.RoleIdEnum;
53
 import lombok.extern.slf4j.Slf4j;
53
 import lombok.extern.slf4j.Slf4j;
54
+import org.springframework.data.redis.core.RedisTemplate;
54
 import org.jetbrains.annotations.Nullable;
55
 import org.jetbrains.annotations.Nullable;
55
 import org.springframework.stereotype.Service;
56
 import org.springframework.stereotype.Service;
56
 import org.springframework.transaction.annotation.Transactional;
57
 import org.springframework.transaction.annotation.Transactional;
@@ -112,6 +113,10 @@ public class DwxxServiceImpl implements DwxxService {
112
     private UsersMapper usersMapper;
113
     private UsersMapper usersMapper;
113
     @Resource
114
     @Resource
114
     private DictDataMapper dictDataMapper;
115
     private DictDataMapper dictDataMapper;
116
+    @Resource
117
+    private RedisTemplate<String, Object> redisTemplate;
118
+
119
+    private static final String ALL_AREA_LEVEL_KEY = "all_area_levels";
115
 
120
 
116
     @Override
121
     @Override
117
     public Long createDwxx(DwxxSaveReqVO createReqVO) {
122
     public Long createDwxx(DwxxSaveReqVO createReqVO) {
@@ -192,7 +197,15 @@ public class DwxxServiceImpl implements DwxxService {
192
         if ("0".equals(areaLevel) || ObjectUtil.isEmpty(areaLevel)) {
197
         if ("0".equals(areaLevel) || ObjectUtil.isEmpty(areaLevel)) {
193
             if (pageReqVO.getAreaCode() != null) {
198
             if (pageReqVO.getAreaCode() != null) {
194
                 // 数据权限
199
                 // 数据权限
195
-                pageReqVO.setAreaCode(AreaUtils.getAreaCode(pageReqVO.getAreaLevel(), pageReqVO.getAreaCode(), pageReqVO.getParentCode()));
200
+                //pageReqVO.setAreaCode(AreaUtils.getAreaCode(pageReqVO.getAreaLevel(), pageReqVO.getAreaCode(), pageReqVO.getParentCode()));
201
+
202
+                // 获取区域集合
203
+                List<AreaLevelDO> allAreaLevels = (List<AreaLevelDO>) redisTemplate.opsForValue().get(ALL_AREA_LEVEL_KEY);
204
+                if (CollectionUtils.isEmpty(allAreaLevels)) {
205
+                    allAreaLevels = areaLevelMapper.selectList(null);
206
+                }
207
+                // 根据区域级别设置区域代码
208
+                setAreaCodeBasedOnLevel(pageReqVO, allAreaLevels);
196
             }
209
             }
197
             page = dwxxMapper.selectWrapperPage(new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()), pageReqVO);
210
             page = dwxxMapper.selectWrapperPage(new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()), pageReqVO);
198
 
211
 
@@ -849,4 +862,49 @@ public class DwxxServiceImpl implements DwxxService {
849
 
862
 
850
     }
863
     }
851
 
864
 
865
+    // 根据区域级别设置区域代码
866
+    private void setAreaCodeBasedOnLevel(DeliveryPageReqVO pageReqVO, List<AreaLevelDO> allAreaLevels) {
867
+        int areaLevel = pageReqVO.getAreaLevel();
868
+        switch (areaLevel) {
869
+            case 1:
870
+                AreaLevelDO sheng = findAreaLevel(allAreaLevels, pageReqVO.getAreaCode());
871
+                if (sheng != null) {
872
+                    pageReqVO.setAreaCode(String.format("%s%s", sheng.getAreaName(), "%"));
873
+                }
874
+                break;
875
+            case 2:
876
+                AreaLevelDO shi = findAreaLevel(allAreaLevels, pageReqVO.getAreaCode());
877
+                AreaLevelDO sheng2 = findAreaLevel(allAreaLevels, pageReqVO.getParentCode());
878
+                if (shi != null && sheng2 != null) {
879
+                    if (Arrays.asList(CityConstants.CITY).contains(sheng2.getAreaName())) {
880
+                        pageReqVO.setAreaCode(String.format("%s%s%s", sheng2.getAreaName(), "%", shi.getAreaName()));
881
+                    } else {
882
+                        pageReqVO.setAreaCode(String.format("%s%s%s%s", sheng2.getAreaName(), ",", shi.getAreaName(), "%"));
883
+                    }
884
+                }
885
+                break;
886
+            case 3:
887
+                AreaLevelDO xian = findAreaLevel(allAreaLevels, pageReqVO.getAreaCode());
888
+                AreaLevelDO shi3 = findAreaLevel(allAreaLevels, pageReqVO.getParentCode());
889
+                if (shi3 != null) {
890
+                    AreaLevelDO sheng3 = findAreaLevel(allAreaLevels, shi3.getParentCode());
891
+                    if (xian != null && sheng3 != null) {
892
+                        pageReqVO.setAreaCode(String.format("%s%s%s%s%s%s", sheng3.getAreaName(), ",", shi3.getAreaName(), ",", xian.getAreaName(), "%"));
893
+                    }
894
+                }
895
+                break;
896
+        }
897
+    }
898
+
899
+    // 根据区域代码查找 AreaLevelDO 对象
900
+    private AreaLevelDO findAreaLevel(List<AreaLevelDO> allAreaLevels, String areaCode) {
901
+        if (areaCode == null) {
902
+            return allAreaLevels.stream().findFirst().orElse(null);
903
+        }
904
+        return allAreaLevels.stream()
905
+                .filter(a -> a.getAreaCode().equals(areaCode))
906
+                .findFirst()
907
+                .orElse(null);
908
+    }
909
+
852
 }
910
 }

+ 1 - 1
delivery-module-core/delivery-module-core-biz/src/main/resources/mapper/dwxx/DwxxMapper.xml

@@ -78,7 +78,7 @@
78
                 </otherwise>
78
                 </otherwise>
79
             </choose>
79
             </choose>
80
             <if test="pageReqVO.areaCode!=null and pageReqVO.areaCode!=''">
80
             <if test="pageReqVO.areaCode!=null and pageReqVO.areaCode!=''">
81
-                and ck.xzqhdm like #{pageReqVO.areaCode}
81
+                and ck.sheng like #{pageReqVO.areaCode}
82
             </if>
82
             </if>
83
             <if test="pageReqVO.kqStart!=null and pageReqVO.kqEnd!=null ">
83
             <if test="pageReqVO.kqStart!=null and pageReqVO.kqEnd!=null ">
84
                 and IFNULL(t1.sjcrNum, 0)between #{pageReqVO.kqStart} and #{pageReqVO.kqEnd}
84
                 and IFNULL(t1.sjcrNum, 0)between #{pageReqVO.kqStart} and #{pageReqVO.kqEnd}