bug修复,项目管理接口逻辑完善

This commit is contained in:
mi9688
2024-10-31 17:51:50 +08:00
parent 502a785d3b
commit 318cee69c1
8 changed files with 99 additions and 97 deletions

View File

@ -168,5 +168,9 @@ public class Project extends BaseEntity
* 确认密码
*/
private String confirmPassword;
/**
* 手机号
*/
private String phoneNumber;
}

View File

@ -14,6 +14,7 @@ import com.fastbee.common.core.domain.entity.SysUser;
import com.fastbee.common.exception.ServiceException;
import com.fastbee.common.holder.ProjectHolder;
import com.fastbee.common.utils.DateUtils;
import com.fastbee.framework.web.domain.server.Sys;
import com.fastbee.iot.model.RegisterUserInput;
import com.fastbee.iot.model.RegisterUserOutput;
import com.fastbee.iot.service.IToolService;
@ -77,17 +78,30 @@ public class ProjectServiceImpl implements IProjectService
*/
@Override
public Project selectProjectByProjectId(Long projectId)
{
{ //查询项目信息
List<Project> projectList = new LambdaQueryChainWrapper<>(projectMapper)
.select(Project::getProjectName, Project::getSysShowName, Project::getCentralCoordinates, Project::getScope,
Project::getAdministrativeAreaCode, Project::getLevel, Project::getDeptId, Project::getDeptName,
Project::getVideoIntroduction, Project::getImage, Project::getLogo, Project::getRemark)
.eq(Project::getId, projectId)
.list();
//查询项目管理员信息
List<SysUser> list = new LambdaQueryChainWrapper<>(sysUserMapper)
.select(SysUser::getUserId, SysUser::getUserName, SysUser::getPhonenumber)
.eq(SysUser::getDeptId, projectList.get(0).getDeptId())
.list();
if(projectList.isEmpty()){
throw new ServiceException("项目不存在!");
}
return projectList.get(0);
if(list.isEmpty()){
throw new ServiceException("项目机构管理员不存在!");
}
Project project = projectList.get(0);
project.setUserName(list.get(0).getUserName());
project.setPhoneNumber(list.get(0).getPhonenumber());
return project;
}
/**
@ -113,13 +127,6 @@ public class ProjectServiceImpl implements IProjectService
@Transactional(rollbackFor = Exception.class)
public int insertProject(Project project)
{
//判断选择的机构下是否已经绑定项目
// List<Project> projectList = new LambdaQueryChainWrapper<>(projectMapper)
// .select(Project::getId, Project::getProjectName)
// .eq(Project::getDeptId, project.getDeptId()).list();
// if(!projectList.isEmpty()){
// throw new ServiceException("该机构下已经存在项目");
// }
//TODO 参数校验
//获取当前时间
Date nowDate = DateUtils.getNowDate();
@ -135,7 +142,10 @@ public class ProjectServiceImpl implements IProjectService
newSysDept.setCreateTime(nowDate);
//设置默认机构名称
newSysDept.setDeptName(project.getProjectName());
newSysDept.setLeader("admin");
//设置默认机构类型
newSysDept.setDeptType(3);
//设置机构领导
newSysDept.setLeader("hanzhen");
//设置机构型行政区域信息
newSysDept.setAdministrativeAreaCode(Objects.nonNull(project.getAdministrativeAreaCode())?project.getAdministrativeAreaCode():null);
@ -150,11 +160,13 @@ public class ProjectServiceImpl implements IProjectService
throw new ServiceException("创建默认机构失败!");
}
// 新增机构关联系统账号
// 添加管理员角色,给所有权限
SysDept sysDept = deptService.selectDeptById(100L);
List<SysMenu> sysMenuList = sysMenuService.selectMenuList(new SysMenu(), sysDept.getDeptUserId());
Long[] menuIdList = sysMenuList.stream().map(SysMenu::getMenuId).toArray(Long[]::new);
Long[] menuIdList = sysMenuList.stream().map(SysMenu::getMenuId)
.filter(menuId-> menuId!=3469L&&menuId!=3L&&menuId!=2L)
.
toArray(Long[]::new);
SysRole sysRole = new SysRole();
sysRole.setRoleName("管理员");
sysRole.setRoleKey("manager");
@ -168,7 +180,7 @@ public class ProjectServiceImpl implements IProjectService
RegisterUserInput registerUserInput = new RegisterUserInput();
registerUserInput.setUsername(project.getUserName());
registerUserInput.setPassword(project.getPassword());
registerUserInput.setPhonenumber("15666617898");
registerUserInput.setPhonenumber(String.valueOf(UUID.randomUUID()).substring(5,9));
registerUserInput.setDeptId(newSysDept.getDeptId());
registerUserInput.setRoleIds(new Long[]{sysRole.getRoleId()});
RegisterUserOutput registerUserOutput = toolService.registerNoCaptcha(registerUserInput);
@ -180,21 +192,8 @@ public class ProjectServiceImpl implements IProjectService
// 更新机构管理员角色绑定信息
deptService.updateDeptUserId(newSysDept.getDeptId(), registerUserOutput.getSysUserId());
// //创建该机构的登录账号数据
// SysUser newSysUser = new SysUser();
// newSysUser.setUserName(project.getUserName());
// newSysUser.setPassword(project.getPassword());
// newSysUser.setNickName(project.getProjectName()+"管理员");
// newSysUser.setDeptId(newSysDept.getDeptId());
// newSysUser.setCreateTime(nowDate);
// newSysUser.setCreateBy(project.getCreateBy());
//
// if(sysUserMapper.insertUser(newSysUser)<1){
// throw new ServiceException("创建默认机构管理员账号失败!");
// }
project.setDeptId(newSysDept.getDeptId());
project.setDeptName(project.getProjectName());
project.setCreateTime(DateUtils.getNowDate());
return projectMapper.insertProject(project);
}
@ -335,28 +334,44 @@ public class ProjectServiceImpl implements IProjectService
.select(SysUser::getUserId, SysUser::getDeptId)
.eq(SysUser::getUserId, userId)
.one();
//查询机构
SysDept sysDept = new LambdaQueryChainWrapper<>(sysDeptMapper)
.select(SysDept::getProvinceCode, SysDept::getCityCode, SysDept::getCountyCode,
SysDept::getTownCode, SysDept::getVillageCode,SysDept::getAdministrativeLevel,SysDept::getProjectId)
.eq(SysDept::getDeptId, sysUser.getDeptId())
.one();
if(Objects.isNull(sysDept)) {
return null;
}
//查询该管理员所管理的项目id以及子项目id列表
Project project = new LambdaQueryChainWrapper<>(projectMapper)
.select(Project::getId, Project::getProjectName,Project::getLevel,Project::getDeptId
,Project::getCityCode,Project::getCountyCode)
.eq(Project::getDeptId, sysUser.getDeptId())
,Project::getCityCode,Project::getCountyCode)
.eq(Project::getId, sysDept.getProjectId())
.one();
if(Objects.isNull(project)){
return null;
}
//查询项目对应行政区划的地图轮廓数据
List<SysDistrict> sysDistrictList = new LambdaQueryChainWrapper<>(sysDistrictMapper)
.select(SysDistrict::getMapOutline, SysDistrict::getMapOutlineUrl,SysDistrict::getLng,SysDistrict::getLat)
.eq(SysDistrict::getAdcode, JSONUtil.parseArray(project.getCountyCode()).get(0))
LambdaQueryChainWrapper<SysDistrict> sysDistrictLambdaQueryChainWrapper = new LambdaQueryChainWrapper<>(sysDistrictMapper)
.select(SysDistrict::getMapOutline, SysDistrict::getMapOutlineUrl, SysDistrict::getLng, SysDistrict::getLat);
if(sysDept.getAdministrativeLevel() == 3){
sysDistrictLambdaQueryChainWrapper.eq(SysDistrict::getAdcode, JSONUtil.parseArray(sysDept.getCountyCode()).get(0));
}
if(sysDept.getAdministrativeLevel() == 4){
sysDistrictLambdaQueryChainWrapper.eq(SysDistrict::getAdcode, JSONUtil.parseArray(sysDept.getTownCode()).get(0));
}
if(sysDept.getAdministrativeLevel() == 5){
sysDistrictLambdaQueryChainWrapper.eq(SysDistrict::getAdcode, JSONUtil.parseArray(sysDept.getVillageCode()).get(0));
}
List<SysDistrict> sysDistrictList = sysDistrictLambdaQueryChainWrapper
.list();
List<Long> projects = getAllProjects(project.getId());
//把列表进行Base64编码
String projectsBase64 = Base64.encode(projects.toString());
HashMap<String , Object> map = new HashMap<>();
map.put("projectIds",projectsBase64);
ArrayList<Long> projectIds = new ArrayList<>();
projectIds.add(project.getId());
map.put("projectIds",projectIds.toString());
map.put("projectId",project.getId());
map.put("projectName", project.getProjectName());
@ -378,7 +393,6 @@ public class ProjectServiceImpl implements IProjectService
map.put("longitude",sysDistrictList.get(0).getLng());
map.put("latitude",sysDistrictList.get(0).getLat());
}
return map;
}
@ -440,11 +454,6 @@ public class ProjectServiceImpl implements IProjectService
throw new ServiceException("超出行政级别查询范围(1~5级)!");
}
//查询项目的行政区划信息
// Project project = new LambdaQueryChainWrapper<>(projectMapper)
// .select(Project::getProvinceCode, Project::getCityCode, Project::getCountyCode,
// Project::getTownCode, Project::getVillageCode)
// .eq(Project::getId, projectId)
// .one();
SysDept sysDept = new LambdaQueryChainWrapper<>(sysDeptMapper)
.select(SysDept::getDeptId,SysDept::getProvinceCode, SysDept::getCityCode, SysDept::getCountyCode,
SysDept::getTownCode, SysDept::getVillageCode)
@ -464,15 +473,13 @@ public class ProjectServiceImpl implements IProjectService
LambdaQueryChainWrapper<SysDistrict> sysDistrictLambdaQueryChainWrapper = new LambdaQueryChainWrapper<>(sysDistrictMapper)
.select(SysDistrict::getId, SysDistrict::getParentId, SysDistrict::getName, SysDistrict::getAdcode,
SysDistrict::getLevel, SysDistrict::getFullName, SysDistrict::getName
, SysDistrict::getLng, SysDistrict::getLat);
, SysDistrict::getLng, SysDistrict::getLat,SysDistrict::getMapOutline,SysDistrict::getMapOutlineUrl);
//限制行政区划级别
projectDistrictList = sysDistrictLambdaQueryChainWrapper
.in(!administrativeCodeList.isEmpty(),SysDistrict::getAdcode,administrativeCodeList)
.list();
// System.err.println("项目所属县下面的所有镇、村行政区划列表");
// System.err.println(projectDistrictList);
//构建树状结构
return buildTree(projectDistrictList);
}
@ -519,10 +526,6 @@ public class ProjectServiceImpl implements IProjectService
distinctTownCodeList = townCodeList.stream().distinct().collect(Collectors.toList());
JSONArray villageCodeList = JSONUtil.parseArray(sysDept.getVillageCode());
// System.err.println("镇行政区划代码");
// System.err.println(distinctTownCodeList);
// System.err.println("村行政区划代码");
// System.err.println(villageCodeList);
//合并省、市、县、镇、村行政区划代码集合
List<Object> administrativeCodeList = new ArrayList<>();
int[] startLevels = {1, 2, 3, 4, 5};
@ -542,9 +545,9 @@ public class ProjectServiceImpl implements IProjectService
}
private void isProvinceCodeBlank(SysDept sysDept) {
// if(sysDept.getDeptId().toString().equals("100")){
// return ;
// }
if(sysDept.getDeptId().toString().equals("100")){
return ;
}
if (StringUtils.isBlank(sysDept.getProvinceCode())){
throw new ServiceException("项目省级行政区划信息缺失!");
}