Browse Source

1.校区信息变更要同步更新区域表,挂在区域的根目录下面
2.如果校区下面挂了下级区域数据就不允许删除

bing 1 month ago
parent
commit
5208b5d9bf

+ 38 - 2
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/service/impl/PtCampusServiceImpl.java

@@ -1,5 +1,10 @@
1
 package org.dromara.backstage.basics.service.impl;
1
 package org.dromara.backstage.basics.service.impl;
2
 
2
 
3
+import cn.hutool.core.collection.CollectionUtil;
4
+import org.dromara.backstage.basics.domain.PtArea;
5
+import org.dromara.backstage.basics.domain.bo.PtAreaBo;
6
+import org.dromara.backstage.basics.domain.vo.PtAreaVo;
7
+import org.dromara.common.core.exception.ServiceException;
3
 import org.dromara.common.core.utils.MapstructUtils;
8
 import org.dromara.common.core.utils.MapstructUtils;
4
 import org.dromara.common.core.utils.StringUtils;
9
 import org.dromara.common.core.utils.StringUtils;
5
 import org.dromara.common.mybatis.core.page.TableDataInfo;
10
 import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -31,6 +36,8 @@ public class PtCampusServiceImpl implements IPtCampusService {
31
 
36
 
32
     private final PtCampusMapper baseMapper;
37
     private final PtCampusMapper baseMapper;
33
 
38
 
39
+    private final PtAreaServiceImpl areaService;
40
+
34
     /**
41
     /**
35
      * 查询校区信息
42
      * 查询校区信息
36
      *
43
      *
@@ -89,6 +96,22 @@ public class PtCampusServiceImpl implements IPtCampusService {
89
         boolean flag = baseMapper.insert(add) > 0;
96
         boolean flag = baseMapper.insert(add) > 0;
90
         if (flag) {
97
         if (flag) {
91
             bo.setCampusId(add.getCampusId());
98
             bo.setCampusId(add.getCampusId());
99
+            //校区作为学校的下一级数据,在创建校区时同步要在区域表中增加一条区域数据,区域Id就是校区Id,parent_id对应校区所属的school_id,区域类型固定为校区(见区域类型字典表)
100
+            // 一个租户就是一个学校,一个学校就是一个单位,区域的最大的父节点为学校,只会有一个,默认取一个即可
101
+            PtAreaBo ptArea = new PtAreaBo();
102
+            ptArea.setParentId(0L); // 根节点
103
+            ptArea.setAreaType("01"); //学校
104
+            List<PtAreaVo> ptAreaVos = areaService.queryList(ptArea);
105
+            if(ptAreaVos.size()>0){
106
+                PtAreaBo ptAreaBo = new PtAreaBo();
107
+                ptAreaBo.setAreaId(add.getCampusId());
108
+                ptAreaBo.setAreaName(add.getCampusName());
109
+                ptAreaBo.setAreaCode(ptAreaVos.get(0).getAreaCode()+"-"+add.getCampusCode());
110
+                ptAreaBo.setAncestors(0+","+add.getCampusId());
111
+                ptAreaBo.setAreaType("02");
112
+                areaService.insertByBo(ptAreaBo);
113
+            }
114
+
92
         }
115
         }
93
         return flag;
116
         return flag;
94
     }
117
     }
@@ -110,7 +133,14 @@ public class PtCampusServiceImpl implements IPtCampusService {
110
      * 保存前的数据校验
133
      * 保存前的数据校验
111
      */
134
      */
112
     private void validEntityBeforeSave(PtCampus entity){
135
     private void validEntityBeforeSave(PtCampus entity){
113
-        //TODO 做一些数据校验,如唯一约束
136
+        LambdaQueryWrapper<PtCampus> queryWrapper = Wrappers.lambdaQuery();
137
+        queryWrapper.eq(PtCampus::getSchoolId, entity.getSchoolId());
138
+        queryWrapper.eq(PtCampus::getCampusName, entity.getCampusName());
139
+        queryWrapper.ne(entity.getCampusId() !=null, PtCampus::getCampusId, entity.getCampusId());
140
+        if(baseMapper.exists(queryWrapper)){
141
+            throw new ServiceException("校区名称已存在");
142
+        }
143
+
114
     }
144
     }
115
 
145
 
116
     /**
146
     /**
@@ -123,7 +153,13 @@ public class PtCampusServiceImpl implements IPtCampusService {
123
     @Override
153
     @Override
124
     public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
154
     public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
125
         if(isValid){
155
         if(isValid){
126
-            //TODO 做一些业务上的校验,判断是否需要校验
156
+            //查询校区下是否有区域数据,有区域数据,不允许删除
157
+            for (Long id : ids) {
158
+                PtAreaVo ptAreaVo = areaService.queryById(id);
159
+                if(ptAreaVo!=null){
160
+                    throw new ServiceException("该校区有区域数据,请先删除区域数据后再操作");
161
+                }
162
+            }
127
         }
163
         }
128
         return baseMapper.deleteByIds(ids) > 0;
164
         return baseMapper.deleteByIds(ids) > 0;
129
     }
165
     }