|
@@ -4,6 +4,9 @@ import cn.hutool.core.collection.CollectionUtil;
|
|
|
import org.dromara.backstage.basics.domain.PtArea;
|
|
import org.dromara.backstage.basics.domain.PtArea;
|
|
|
import org.dromara.backstage.basics.domain.bo.PtAreaBo;
|
|
import org.dromara.backstage.basics.domain.bo.PtAreaBo;
|
|
|
import org.dromara.backstage.basics.domain.vo.PtAreaVo;
|
|
import org.dromara.backstage.basics.domain.vo.PtAreaVo;
|
|
|
|
|
+import org.dromara.backstage.basics.domain.vo.PtSchoolVo;
|
|
|
|
|
+import org.dromara.backstage.basics.service.IPtSchoolService;
|
|
|
|
|
+import org.dromara.common.core.enums.BuildAreaTypeEnum;
|
|
|
import org.dromara.common.core.exception.ServiceException;
|
|
import org.dromara.common.core.exception.ServiceException;
|
|
|
import org.dromara.common.core.utils.MapstructUtils;
|
|
import org.dromara.common.core.utils.MapstructUtils;
|
|
|
import org.dromara.common.core.utils.StringUtils;
|
|
import org.dromara.common.core.utils.StringUtils;
|
|
@@ -21,9 +24,7 @@ import org.dromara.backstage.basics.mapper.PtCampusMapper;
|
|
|
import org.dromara.backstage.basics.service.IPtCampusService;
|
|
import org.dromara.backstage.basics.service.IPtCampusService;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
-import java.util.List;
|
|
|
|
|
-import java.util.Map;
|
|
|
|
|
-import java.util.Collection;
|
|
|
|
|
|
|
+import java.util.*;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 校区信息Service业务层处理
|
|
* 校区信息Service业务层处理
|
|
@@ -39,6 +40,8 @@ public class PtCampusServiceImpl implements IPtCampusService {
|
|
|
|
|
|
|
|
private final PtAreaServiceImpl areaService;
|
|
private final PtAreaServiceImpl areaService;
|
|
|
|
|
|
|
|
|
|
+ private final IPtSchoolService ptSchoolService;
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 查询校区信息
|
|
* 查询校区信息
|
|
|
*
|
|
*
|
|
@@ -60,6 +63,7 @@ public class PtCampusServiceImpl implements IPtCampusService {
|
|
|
@Override
|
|
@Override
|
|
|
public TableDataInfo<PtCampusVo> queryPageList(PtCampusBo bo, PageQuery pageQuery) {
|
|
public TableDataInfo<PtCampusVo> queryPageList(PtCampusBo bo, PageQuery pageQuery) {
|
|
|
LambdaQueryWrapper<PtCampus> lqw = buildQueryWrapper(bo);
|
|
LambdaQueryWrapper<PtCampus> lqw = buildQueryWrapper(bo);
|
|
|
|
|
+ lqw.orderByDesc(PtCampus::getCreateTime);
|
|
|
Page<PtCampusVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
|
Page<PtCampusVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
|
|
return TableDataInfo.build(result);
|
|
return TableDataInfo.build(result);
|
|
|
}
|
|
}
|
|
@@ -102,15 +106,37 @@ public class PtCampusServiceImpl implements IPtCampusService {
|
|
|
// 一个租户就是一个学校,一个学校就是一个单位,区域的最大的父节点为学校,只会有一个,默认取一个即可
|
|
// 一个租户就是一个学校,一个学校就是一个单位,区域的最大的父节点为学校,只会有一个,默认取一个即可
|
|
|
PtAreaBo ptArea = new PtAreaBo();
|
|
PtAreaBo ptArea = new PtAreaBo();
|
|
|
ptArea.setParentId(0L); // 根节点
|
|
ptArea.setParentId(0L); // 根节点
|
|
|
- ptArea.setAreaType("01"); //学校
|
|
|
|
|
|
|
+ ptArea.setAreaType(BuildAreaTypeEnum.XX.code()); //学校
|
|
|
|
|
+ ptArea.setAreaId(add.getSchoolId());
|
|
|
List<PtAreaVo> ptAreaVos = areaService.queryList(ptArea);
|
|
List<PtAreaVo> ptAreaVos = areaService.queryList(ptArea);
|
|
|
if(ptAreaVos.size()>0){
|
|
if(ptAreaVos.size()>0){
|
|
|
PtAreaBo ptAreaBo = new PtAreaBo();
|
|
PtAreaBo ptAreaBo = new PtAreaBo();
|
|
|
ptAreaBo.setAreaId(add.getCampusId());
|
|
ptAreaBo.setAreaId(add.getCampusId());
|
|
|
ptAreaBo.setAreaName(add.getCampusName());
|
|
ptAreaBo.setAreaName(add.getCampusName());
|
|
|
ptAreaBo.setAreaCode(ptAreaVos.get(0).getAreaCode()+"-"+add.getCampusCode());
|
|
ptAreaBo.setAreaCode(ptAreaVos.get(0).getAreaCode()+"-"+add.getCampusCode());
|
|
|
- ptAreaBo.setAncestors(0+","+add.getCampusId());
|
|
|
|
|
- ptAreaBo.setAreaType("02");
|
|
|
|
|
|
|
+ ptAreaBo.setAncestors(0+","+ptAreaVos.get(0).getAreaId()+","+add.getCampusId());
|
|
|
|
|
+ ptAreaBo.setAreaType(BuildAreaTypeEnum.XQ.code());
|
|
|
|
|
+ ptAreaBo.setParentId(add.getSchoolId());
|
|
|
|
|
+ areaService.insertByBo(ptAreaBo);
|
|
|
|
|
+ }else{
|
|
|
|
|
+ // 新建学校再新建校区
|
|
|
|
|
+ PtSchoolVo ptSchoolVo = ptSchoolService.queryById(add.getSchoolId());
|
|
|
|
|
+ if(ptSchoolVo !=null){
|
|
|
|
|
+ ptArea.setAreaCode(ptSchoolVo.getSchoolCode());
|
|
|
|
|
+ ptArea.setAreaName(ptSchoolVo.getSchoolName());
|
|
|
|
|
+ ptArea.setAreaId(ptSchoolVo.getSchoolId());
|
|
|
|
|
+ ptArea.setAreaType(BuildAreaTypeEnum.XX.code());
|
|
|
|
|
+ }else{
|
|
|
|
|
+ throw new ServiceException("学校不存在");
|
|
|
|
|
+ }
|
|
|
|
|
+ areaService.insertByBo(ptArea);
|
|
|
|
|
+ PtAreaBo ptAreaBo = new PtAreaBo();
|
|
|
|
|
+ ptAreaBo.setAreaId(add.getCampusId());
|
|
|
|
|
+ ptAreaBo.setAreaName(add.getCampusName());
|
|
|
|
|
+ ptAreaBo.setAreaCode(ptArea.getAreaCode()+"-"+add.getCampusCode());
|
|
|
|
|
+ ptAreaBo.setAncestors(0+","+ptArea.getAreaId()+","+add.getCampusId());
|
|
|
|
|
+ ptAreaBo.setAreaType(BuildAreaTypeEnum.XQ.code());
|
|
|
|
|
+ ptAreaBo.setParentId(add.getSchoolId());
|
|
|
areaService.insertByBo(ptAreaBo);
|
|
areaService.insertByBo(ptAreaBo);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -125,10 +151,25 @@ public class PtCampusServiceImpl implements IPtCampusService {
|
|
|
* @return 是否修改成功
|
|
* @return 是否修改成功
|
|
|
*/
|
|
*/
|
|
|
@Override
|
|
@Override
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public Boolean updateByBo(PtCampusBo bo) {
|
|
public Boolean updateByBo(PtCampusBo bo) {
|
|
|
PtCampus update = MapstructUtils.convert(bo, PtCampus.class);
|
|
PtCampus update = MapstructUtils.convert(bo, PtCampus.class);
|
|
|
validEntityBeforeSave(update);
|
|
validEntityBeforeSave(update);
|
|
|
- return baseMapper.updateById(update) > 0;
|
|
|
|
|
|
|
+ boolean flag = baseMapper.updateById(update) > 0;
|
|
|
|
|
+ if(flag){
|
|
|
|
|
+ // 同步修改区域表为校区的信息
|
|
|
|
|
+ PtAreaBo ptAreaBo = new PtAreaBo();
|
|
|
|
|
+ ptAreaBo.setAreaId(update.getCampusId());
|
|
|
|
|
+ ptAreaBo.setAreaName(update.getCampusName());
|
|
|
|
|
+ PtSchoolVo ptSchoolVo = ptSchoolService.queryById(bo.getSchoolId());
|
|
|
|
|
+ if(ptSchoolVo ==null){
|
|
|
|
|
+ throw new ServiceException("学校不存在");
|
|
|
|
|
+ }
|
|
|
|
|
+ ptAreaBo.setAreaCode(update.getCampusCode());
|
|
|
|
|
+ Optional.ofNullable(ptSchoolVo.getSchoolCode()).ifPresent(e -> ptAreaBo.setAreaCode(e+"-"+update.getCampusCode()));
|
|
|
|
|
+ areaService.updateByBo(ptAreaBo);
|
|
|
|
|
+ }
|
|
|
|
|
+ return flag;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -153,14 +194,18 @@ public class PtCampusServiceImpl implements IPtCampusService {
|
|
|
* @return 是否删除成功
|
|
* @return 是否删除成功
|
|
|
*/
|
|
*/
|
|
|
@Override
|
|
@Override
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
|
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
|
|
if(isValid){
|
|
if(isValid){
|
|
|
//查询校区下是否有区域数据,有区域数据,不允许删除
|
|
//查询校区下是否有区域数据,有区域数据,不允许删除
|
|
|
for (Long id : ids) {
|
|
for (Long id : ids) {
|
|
|
- PtAreaVo ptAreaVo = areaService.queryById(id);
|
|
|
|
|
- if(ptAreaVo!=null){
|
|
|
|
|
|
|
+ PtAreaBo bo = new PtAreaBo();
|
|
|
|
|
+ bo.setParentId(id);
|
|
|
|
|
+ List<PtAreaVo> list = areaService.queryList(bo);
|
|
|
|
|
+ if(list !=null && list.size()>0){
|
|
|
throw new ServiceException("该校区有区域数据,请先删除区域数据后再操作");
|
|
throw new ServiceException("该校区有区域数据,请先删除区域数据后再操作");
|
|
|
}
|
|
}
|
|
|
|
|
+ areaService.deleteWithValidByIds(Collections.singleton(id), false);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
return baseMapper.deleteByIds(ids) > 0;
|
|
return baseMapper.deleteByIds(ids) > 0;
|