package com.hssx.cloudmodel.service.impl; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.hssx.cloudmodel.constant.Constant; import com.hssx.cloudmodel.entity.*; import com.hssx.cloudmodel.entity.vo.MouldVO; import com.hssx.cloudmodel.entity.vo.ProjectVO; import com.hssx.cloudmodel.entity.vo.UserVO; import com.hssx.cloudmodel.mapper.*; import com.hssx.cloudmodel.service.ProjectService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.hssx.cloudmodel.util.HttpRespMsg; import com.hssx.cloudmodel.util.ListUtil; import com.hssx.cloudmodel.util.PageUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import javax.jws.soap.SOAPBinding; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collector; import java.util.stream.Collectors; /** *

* 服务实现类 *

* * @author 吴涛涛 * @since 2019-07-27 */ @Service public class ProjectServiceImpl extends ServiceImpl implements ProjectService { @Resource ProjectMapper projectMapper; @Resource ProjectUserMapper projectUserMapper; @Resource UserMapper userMapper; @Resource CompanyMapper companyMapper; @Resource CustomCompanyMapper customCompanyMapper; @Resource MouldMapper mouldMapper; @Resource ProjectApproveMapper projectApproveMapper; @Resource PowerMapper powerMapper; @Resource UserCompanyMapper userCompanyMapper; @Override public HttpRespMsg addAndUpdateProject(Project project, Integer flag, User user, String userIds, String customerCompanyIds, String customerCompanyNames, String modelIds, Integer customerApproverId, Integer ownerApproverId) { HttpRespMsg msg = new HttpRespMsg(); if (user != null) { QueryWrapper qw = new QueryWrapper<>(); qw.orderByDesc("id").last("limit 1"); Project lastProject = projectMapper.selectOne(qw); if (flag == 0) { synchronized (this) { int count = 1; if (lastProject != null) { //YMXM201903220001 String numStr = lastProject.getProjectNo().substring(13); int num = Integer.valueOf(numStr).intValue(); count += num; } long time = System.currentTimeMillis(); Company company = companyMapper.selectById(user.getCompanyId()); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); String seq = sdf.format(time) + String.format("%04d", count); project.setCreatorId(user.getId()); project.setCreator(user.getUsername()); project.setOwnerCompany(user.getCompanyId()); project.setOwnerCompanyName(company.getCompanyName()); project.setProjectNo(Constant.PROJECT_PREFIX + seq); projectMapper.insert(project); //给项目经理添加一条上传权限 if (null != project.getManagerId()) { Integer cot = powerMapper.selectCount(new QueryWrapper().eq("user_id", project.getManagerId()).eq("project_id", project.getId()).eq("power_type", 0)); if (cot == 0) { Power power = new Power(); power.setUserId(project.getManagerId()); power.setProjectId(project.getId()); power.setPowerType(Constant.UPDATE_AUTHORITY); powerMapper.insert(power); } } //添加生产方关联公司 if (customerCompanyIds != null && !"".equals(customerCompanyIds) && customerCompanyNames != null && !"".equals(customerCompanyNames)) { List ides = ListUtil.convertIntegerIdsArrayToList(customerCompanyIds); String[] split = customerCompanyNames.split(","); int index = 0; for (String cusCompany : split) { CustomCompany customCompany = new CustomCompany(); customCompany.setCompanyId(ides.get(index)); customCompany.setCompanyName(cusCompany); customCompany.setProjectId(project.getId()); customCompanyMapper.insert(customCompany); index++; } } //添加模具 if (modelIds != null && !"".equals(modelIds)) { List modelList = ListUtil.convertIntegerIdsArrayToList(modelIds); int num = 1; if (modelList.size() > 0) { for (Integer id : modelList) { Mould mould = new Mould(); mould.setId(id); mould.setProjectId(project.getId()); mould.setBelongProjectGrade(num+""); num++; mouldMapper.updateById(mould); } } } } } else if (flag == 1) { Project pro = projectMapper.selectById(project.getId()); projectMapper.updateById(project); //删除参与人与项目项目经理相同id的人 projectUserMapper.delete(new QueryWrapper().eq("user_id", project.getManagerId()).eq("project_id", project.getId())); //删除之前添加的生产方公司 customCompanyMapper.delete(new QueryWrapper().eq("project_id", project.getId())); //删除之前的项目经理上传权限 powerMapper.delete(new QueryWrapper().eq("user_id", pro.getManagerId()).eq("project_id", pro.getId()).eq("power_type", 0)); //重新添加项目经理上传权限 if (null != project.getManagerId()) { Integer cot = powerMapper.selectCount(new QueryWrapper().eq("user_id", project.getManagerId()).eq("project_id", project.getId()).eq("power_type", 0)); if (cot == 0) { Power power = new Power(); power.setUserId(project.getManagerId()); power.setProjectId(project.getId()); power.setPowerType(Constant.UPDATE_AUTHORITY); powerMapper.insert(power); } } //重新添加生产方公司 if (customerCompanyIds != null && !"".equals(customerCompanyIds) && customerCompanyNames != null && !"".equals(customerCompanyNames)) { List ides = ListUtil.convertIntegerIdsArrayToList(customerCompanyIds); String[] split = customerCompanyNames.split(","); int index = 0; for (String cusCompany : split) { CustomCompany customCompany = new CustomCompany(); customCompany.setCompanyId(ides.get(index)); customCompany.setCompanyName(cusCompany); customCompany.setProjectId(project.getId()); customCompanyMapper.insert(customCompany); index++; } } //删除之前的项目审批人 projectApproveMapper.delete(new QueryWrapper().eq("project_id", project.getId())); //删除权限表里的审批权限数据 powerMapper.delete(new QueryWrapper().eq("project_id", project.getId()).eq("power_type", Constant.APPROVAL_AUTHORITY)); //删除之前项目参与人的下载权限 projectMapper.selectById(project.getId()); List approverIds = projectApproveMapper.selectList(new QueryWrapper().eq("project_id", project.getId())) .stream() .map(ProjectApprove::getApproverId) .collect(Collectors.toList()); approverIds.add(-1); powerMapper.delete(new QueryWrapper().in("user_id", approverIds)); //删除之前分配的人员 QueryWrapper qwPro = new QueryWrapper<>(); qwPro.eq("project_id", project.getId()); projectUserMapper.delete(qwPro); //再次重新分配 this.handOutProject(project, userIds); //重新添加审批人 //1.添加生产方审批人 if (null != customerApproverId && !"".equals(customerApproverId)) { User customerExaminer = userMapper.selectById(customerApproverId); Company company = companyMapper.selectById(customerExaminer.getCompanyId()); ProjectApprove projectApprove = new ProjectApprove(); projectApprove.setApproverId(customerExaminer.getId()); projectApprove.setApproverName(customerExaminer.getUsername()); projectApprove.setCompanyId(customerExaminer.getCompanyId()); projectApprove.setCompanyName(company.getCompanyName()); projectApprove.setProjectId(project.getId()); projectApprove.setSubordinateType(customerExaminer.getSubordinateType()); projectApproveMapper.insert(projectApprove); Power power = new Power(); power.setUserId(customerExaminer.getId()); power.setProjectId(project.getId()); power.setPowerType(Constant.APPROVAL_AUTHORITY); powerMapper.insert(power); //审批人默认有下载权限 power.setUserId(customerExaminer.getId()); power.setProjectId(project.getId()); power.setPowerType(Constant.DOWNLOAD_AUTHORITY); powerMapper.insert(power); //将审批人加入到参与人中 ProjectUser projectUser = new ProjectUser(); projectUser.setUserId(customerExaminer.getId()); projectUser.setSubordinateType(customerExaminer.getSubordinateType()); projectUser.setProjectId(project.getId()); projectUser.setSubordinate(customerExaminer.getCompanyId()); projectUser.setRoleType(1);//审批人 projectUserMapper.insert(projectUser); } if (null != ownerApproverId && !"".equals(ownerApproverId)) { //2.添加资产方审批人 User ownerExaminer = userMapper.selectById(ownerApproverId); Company company = companyMapper.selectById(ownerExaminer.getCompanyId()); ProjectApprove ownerProjectApprove = new ProjectApprove(); ownerProjectApprove.setApproverId(ownerExaminer.getId()); ownerProjectApprove.setApproverName(ownerExaminer.getUsername()); ownerProjectApprove.setCompanyId(ownerExaminer.getCompanyId()); ownerProjectApprove.setCompanyName(company.getCompanyName()); ownerProjectApprove.setProjectId(project.getId()); ownerProjectApprove.setSubordinateType(ownerExaminer.getSubordinateType()); projectApproveMapper.insert(ownerProjectApprove); Power power = new Power(); power.setUserId(ownerExaminer.getId()); power.setProjectId(project.getId()); power.setPowerType(Constant.APPROVAL_AUTHORITY); powerMapper.insert(power); //审批人默认有下载权限 power.setUserId(ownerExaminer.getId()); power.setProjectId(project.getId()); power.setPowerType(Constant.DOWNLOAD_AUTHORITY); powerMapper.insert(power); //将审批人加入到参与人中 ProjectUser projectUser = new ProjectUser(); projectUser.setUserId(ownerExaminer.getId()); projectUser.setSubordinateType(ownerExaminer.getSubordinateType()); projectUser.setProjectId(project.getId()); projectUser.setSubordinate(ownerExaminer.getCompanyId()); projectUser.setRoleType(1);//审批人 projectUserMapper.insert(projectUser); } //删除之前分配与项目关联的模具,即将之前的关联项目id修改成未关联 mouldMapper.updateMouldByProjectId(project); //再次模具的分配 if (modelIds != null && !"".equals(modelIds)) { List modelList = ListUtil.convertIntegerIdsArrayToList(modelIds); int sum = 1; if (modelList.size() > 0) { for (Integer id : modelList) { Mould mould = new Mould(); mould.setId(id); mould.setProjectId(project.getId()); mould.setBelongProjectGrade(sum + ""); mouldMapper.updateById(mould); sum++; } } } } } else { msg.setError("用户不存在或者未登录"); } return msg; } @Override public HttpRespMsg handOutProject(Project project, String userIds) { HttpRespMsg msg = new HttpRespMsg(); Project pro = projectMapper.selectById(project.getId()); List ids = new ArrayList<>(); if (userIds != null && userIds != "") { List list = ListUtil.convertLongIdsArrayToList(userIds); if (list().size() > 0) { for (String id : list) { User user = userMapper.selectById(id); ProjectUser projectUser = new ProjectUser(); projectUser.setUserId(Integer.parseInt(id)); projectUser.setProjectId(project.getId()); projectUser.setSubordinate(user.getSubordinateType()); projectUserMapper.insert(projectUser); } } } else { msg.setError("添加项目参与人失败,人员id不存在"); } return msg; } @Override public HttpRespMsg getList(String keyName, PageUtil page, User user) { HttpRespMsg msg = new HttpRespMsg(); if (user != null) { PageHelper.startPage(page.getPageNum(), page.getPageSize()); List uIds = new ArrayList<>(); List projects = new ArrayList<>(); List projectIds = new ArrayList<>(); if (Constant.SYS_PARENT_ID.equals(user.getParentId())) { projects = projectMapper.getProjectListByUid(keyName, user); } else if (Constant.SYS_ID.equals(user.getParentId())) { if (user.getSubordinateType() == 0) { QueryWrapper qwr = new QueryWrapper<>(); //资产方管理员,看到自己创建的项目 qwr.select("id").eq("creator_id", user.getId()); projectIds = projectMapper.selectList(qwr).stream().map(Project::getId).collect(Collectors.toList()); projectIds.add(-1); projects = projectMapper.getProjectListByUidInProjectIds(keyName, projectIds); } else if (user.getSubordinateType() == 1) { projectIds = customCompanyMapper.selectList(new QueryWrapper().eq("company_id", user.getCompanyId())).stream().map(CustomCompany::getProjectId).collect(Collectors.toList()); projectIds.add(-1); projects = projectMapper.getProjectListByUidInProjectIds(keyName, projectIds); } } else { QueryWrapper qwPro = new QueryWrapper<>(); qwPro.eq("manager_id", user.getId()); projectIds = projectMapper.selectList(qwPro).stream().map(Project::getId).collect(Collectors.toList()); projectIds.add(-1); //项目经理或者普通用户 projectIds.addAll(projectUserMapper.selectList(new QueryWrapper() .eq("user_id", user.getId())) .stream() .map(ProjectUser::getProjectId) .collect(Collectors.toList())); //作为审批人 projectIds.addAll(projectApproveMapper.selectList(new QueryWrapper() .eq("approver_id", user.getId())) .stream() .map(ProjectApprove::getProjectId) .collect(Collectors.toList())); projects = projectMapper.getProjectListByUidInProjectIds(keyName, projectIds); } PageInfo pageInfos = new PageInfo<>(projects); msg.data = pageInfos; } else { msg.setError("用户不存在或者未登录"); } // QueryWrapper qw = new QueryWrapper<>(); // qw.select("project_name", "creator", "charger", "indate"); // if (keyName != null) { // qw.like("project_name", keyName); // } return msg; } @Override public HttpRespMsg getUserByCompanyIdOrSubordinateType(User user) { HttpRespMsg msg = new HttpRespMsg(); List users = new ArrayList<>(); QueryWrapper qw = new QueryWrapper<>(); if (user.getCompanyId() != null) { qw.eq("company_id", user.getCompanyId()); } else if (user.getSubordinateType() != null) { qw.eq("subordinate_type", user.getSubordinateType()); } users = userMapper.selectList(qw); msg.data = users; return msg; } @Override public HttpRespMsg getProjectDetail(Project project, String token) { Map map = new HashMap<>(); HttpRespMsg msg = new HttpRespMsg(); User user = userMapper.selectOne(new QueryWrapper().eq("head_imgurl", token)); List projects = new ArrayList<>(); String keyName = null; if (user != null) { List uIds = new ArrayList<>(); List projectIds = new ArrayList<>(); if (Constant.SYS_PARENT_ID.equals(user.getParentId())) { projects = projectMapper.getProjectListByUid(keyName, user); } else if (Constant.SYS_ID.equals(user.getParentId())) { if (user.getSubordinateType() == 0) { QueryWrapper qwr = new QueryWrapper<>(); //资产方管理员,看到自己创建的项目 qwr.select("id").eq("creator_id", user.getId()); projectIds = projectMapper.selectList(qwr).stream().map(Project::getId).collect(Collectors.toList()); projectIds.add(-1); projects = projectMapper.getProjectListByUidInProjectIds(keyName, projectIds); } else if (user.getSubordinateType() == 1) { projectIds = customCompanyMapper.selectList(new QueryWrapper().eq("company_id", user.getCompanyId())).stream().map(CustomCompany::getProjectId).collect(Collectors.toList()); projectIds.add(-1); projects = projectMapper.getProjectListByUidInProjectIds(keyName, projectIds); } } else { QueryWrapper qwPro = new QueryWrapper<>(); qwPro.eq("manager_id", user.getId()); projectIds = projectMapper.selectList(qwPro).stream().map(Project::getId).collect(Collectors.toList()); projectIds.add(-1); //项目经理或者普通用户 projectIds.addAll(projectUserMapper.selectList(new QueryWrapper() .eq("user_id", user.getId())) .stream() .map(ProjectUser::getProjectId) .collect(Collectors.toList())); //作为审批人 projectIds.addAll(projectApproveMapper.selectList(new QueryWrapper() .eq("approver_id", user.getId())) .stream() .map(ProjectApprove::getProjectId) .collect(Collectors.toList())); projects = projectMapper.getProjectListByUidInProjectIds(keyName, projectIds); } } else { msg.setError("用户不存在或者未登录"); } List pIds = projects.stream().map(Project::getId).collect(Collectors.toList()); if (!pIds.contains(project.getId())) { msg.setError("您没有该权限!"); return msg; } ProjectVO vo = projectMapper.getProjectById(project.getId()); if (Constant.SYS_PARENT_ID.equals(user.getParentId())) { //当前人超级管理员 ,对项目只可以浏览 map.put("update", 0); map.put("download", 0); map.put("view", 1); map.put("approve", 0); } else if (Constant.SYS_ID.equals(user.getParentId())) { //当前为系统管理员 if (Constant.ASSETS_COMPANY.equals(user.getSubordinateType())) { map.put("update", 1); map.put("download", 1); map.put("view", 1); map.put("approve", 0); } else if (Constant.PRODUCER_COMPANY.equals(user.getSubordinateType())) { map.put("update", 0); map.put("download", 1); map.put("view", 1); map.put("approve", 0); } } else if (vo.getManagerId().equals(user.getId())) { //当前人是该项目的项目经理 Integer approve = 0; if (projectApproveMapper.selectCount(new QueryWrapper().eq("approver_id", user.getId())) > 0) { //查看当前项目经理是否为审批人 approve = 1; } map.put("update", 1); map.put("download", 1); map.put("view", 1); map.put("approve", approve); } /*else if (projectApproveMapper.selectCount(new QueryWrapper().eq("approver_id", user.getId())) > 0) { //是否为审批人 //该项目的参与人 Integer update = 0; Integer download = 0; Integer view = 0; Integer approve = 1; List powers = powerMapper.selectList(new QueryWrapper().eq("project_id", project.getId()).eq("user_id", user.getId())); if (powers.size() > 0) { for (Power power : powers) { if (power.getPowerType() == 0) { update = 1; } else if (power.getPowerType() == 1) { download = 1; } else if (power.getPowerType() == 2) { view = 1; } else { approve = 1; } } } map.put("update", update); map.put("download", download); map.put("view", view); map.put("approve", approve); }*/ else { //该项目的参与人 Integer update = 0; Integer download = 0; Integer view = 0; Integer approve = 0; List powers = powerMapper.selectList(new QueryWrapper().eq("project_id", project.getId()).eq("user_id", user.getId())); if (powers.size() > 0) { for (Power power : powers) { if (power.getPowerType() == 0) { update = 1; } else if (power.getPowerType() == 1) { download = 1; } else if (power.getPowerType() == 2) { view = 1; } else { approve = 1; } } } map.put("update", update); map.put("download", download); map.put("view", view); map.put("approve", approve); } List users = projectMapper.getProjectUserById(project.getId()); vo.setParticipateUsers(users); //处理users按照客户呼和供应商分组 map.put("vo", vo); msg.data = map; return msg; } @Override public HttpRespMsg getUserListByCompanyIds(String companyIds, Integer id, Integer projectId) { HttpRespMsg msg = new HttpRespMsg(); User user = userMapper.selectById(id); QueryWrapper qw = new QueryWrapper(); List ids = new ArrayList<>(); ids.add(-1); if (!"".equals(companyIds) && companyIds != null) { ids = ListUtil.convertIntegerIdsArrayToList(companyIds); } List uids = new ArrayList<>(); uids.add(-1); if (Constant.SYS_ID.equals(user.getParentId())) { //资产方管理员 uids = userCompanyMapper.selectList(new QueryWrapper().eq("cooperation_company_id", user.getCompanyId()).in("belong_company_id", ids)).stream().map(UserCompany::getUserId).collect(Collectors.toList()); List userIds = userMapper.selectList(new QueryWrapper().eq("company_id", user.getCompanyId()).ne("parent_id", 1)).stream().map(User::getId).collect(Collectors.toList()); uids.addAll(userIds); uids.add(-1); } else { //项目经理 if (null != projectId) { Project pro = projectMapper.selectById(projectId); user = userMapper.selectById(pro.getCreatorId()); uids = userCompanyMapper.selectList(new QueryWrapper().eq("cooperation_company_id", user.getCompanyId()).in("belong_company_id", ids)).stream().map(UserCompany::getUserId).collect(Collectors.toList()); List userIds = userMapper.selectList(new QueryWrapper().eq("company_id", user.getCompanyId()).ne("parent_id", 1)).stream().map(User::getId).collect(Collectors.toList()); uids.addAll(userIds); uids.add(-1); id = user.getId();//不能是管理员本人 } } List userVOS = userMapper.selsctUsersByUids(uids, id); msg.data = userVOS; return msg; } @Override public HttpRespMsg getModelListByCompanyId(User user) { HttpRespMsg msg = new HttpRespMsg(); QueryWrapper qw = new QueryWrapper<>(); Integer companyId = -1; if (Constant.SYS_ID.equals(user.getParentId())) { //此时是admin User admin = userMapper.selectOne(new QueryWrapper().eq("id", user.getId())); companyId = admin.getCompanyId(); // qw.eq("company_id", admin.getCompanyId()); } else if (Constant.SYS_PARENT_ID.equals(user.getParentId())) { //系统管理员 // qw.eq("company_type",Constant.ASSETS_COMPANY); } else { //此时是项目经理 User admin = userMapper.selectOne(new QueryWrapper().eq("id", user.getParentId())); companyId = admin.getCompanyId(); // qw.eq("company_id", admin.getCompanyId()); } // List moulds = mouldMapper.selectList(new QueryWrapper().eq("company_id", companyId).isNull("project_id")); msg.data = mouldMapper.selectListByCompanyId(companyId, null); return msg; } @Override public HttpRespMsg getModelListByUser(UserVO userVO, PageUtil page) { HttpRespMsg msg = new HttpRespMsg(); List set = new ArrayList<>(); set.add(-1); List moulds = new ArrayList<>(); if (userVO.getId() != null) { //资产方管理员,获取他公司下的所有模具 PageHelper.startPage(page.getPageNum(), page.getPageSize()); if (Constant.SYS_PARENT_ID.equals(userVO.getParentId())) { //超级管理员,获取平台所有模具 moulds = mouldMapper.selectListByCondition(userVO); } else if (Constant.SYS_ID.equals(userVO.getParentId())) { if (Constant.ASSETS_COMPANY.equals(userVO.getSubordinateType())) { //资产方管理员 moulds = mouldMapper.selectListByCondition(userVO); } else if (Constant.PRODUCER_COMPANY.equals(userVO.getSubordinateType())) { set = customCompanyMapper.selectList(new QueryWrapper().eq("company_id", userVO.getCompanyId())).stream().map(CustomCompany::getProjectId).collect(Collectors.toList()); set.add(-1); moulds = mouldMapper.selectListByConditionByProject(userVO, set); } } else { //普通用户或者项目经理 //充当项目经理参与的项目 if (userVO.getProjectId() != -1) { set.add(userVO.getProjectId()); set.add(-1); moulds = mouldMapper.selectListByConditionByProject(userVO, set); } else { QueryWrapper qw = new QueryWrapper<>(); qw.eq("manager_id", userVO.getId()); List projects = projectMapper.selectList(qw); if (projects.size() > 0) { for (Project project : projects) { set.add(project.getId()); } } // //充当普通人员参与的项目 List projectUsers = projectUserMapper.selectList(new QueryWrapper().eq("user_id", userVO.getId())); if (projectUsers.size() > 0) { for (ProjectUser projectUser : projectUsers) { set.add(projectUser.getProjectId()); } } // //充当审批人员参与的项目 List projectss = projectApproveMapper.selectList(new QueryWrapper().eq("approver_id", userVO.getId())); if (projectss.size() > 0) { for (ProjectApprove projectUser : projectss) { set.add(projectUser.getProjectId()); } } set.add(-1); moulds = mouldMapper.selectListByConditionByProject(userVO, set); } } PageInfo pageInfo = new PageInfo<>(moulds); msg.data = pageInfo; } else { msg.setError("用户不存在或者未登录"); } return msg; } @Override public HttpRespMsg getListByUser(String token) { HttpRespMsg msg = new HttpRespMsg(); List ides = new ArrayList<>(); ides.add(-1); User user = userMapper.selectOne(new QueryWrapper().eq("head_imgurl", token)); List projects = new ArrayList<>(); if (user != null) { QueryWrapper qw = new QueryWrapper<>(); qw.select("id", "project_name"); if (Constant.SYS_PARENT_ID.equals(user.getParentId())) { //系统超级管理员,可获得所有项目 projects = projectMapper.selectList(qw); } else if (Constant.SYS_ID.equals(user.getParentId())) { //资产方管理员 qw.eq("owner_company", user.getCompanyId()); projects = projectMapper.selectList(qw); } else { QueryWrapper qwPro = new QueryWrapper<>(); qwPro.eq("manager_id", user.getId()); List projectList = projectMapper.selectList(qw); for (Project project : projectList) { ides.add(project.getId()); } //项目经理或者普通用户 List projectUsers = projectUserMapper.selectList(new QueryWrapper().eq("user_id", user.getId())); for (ProjectUser projectUser : projectUsers) { ides.add(projectUser.getProjectId()); } //作为审批人 List projectApproves = projectApproveMapper.selectList(new QueryWrapper().eq("approver_id", user.getId())); for (ProjectApprove projectApprove : projectApproves) { ides.add(projectApprove.getProjectId()); } qw.in("id", ides); projects = projectMapper.selectList(qw); } msg.data = projects; } else { msg.setError("用户不存在或者未登录"); } return msg; } @Override public HttpRespMsg getProjectListByUserAndCompany(UserVO userVO) { HttpRespMsg msg = new HttpRespMsg(); User user = userMapper.selectOne(new QueryWrapper().eq("head_imgurl", userVO.getToken())); List list = new ArrayList<>(); if (user == null) { msg.setError("用户不存在或者未登录"); return msg; } else { if (Constant.SYS_ID.equals(user.getParentId())) { //admin创建人员,获取该公司下的所有项目 list = projectMapper.selectList(new QueryWrapper().eq("owner_company", user.getCompanyId())); } else { //项目经理创建人员,获取当前项目经理的充当项目经理的任务 list = projectMapper.selectList(new QueryWrapper().eq("manager_id", user.getId())); } msg.data = list; } return msg; } @Override public HttpRespMsg getModelListMapByUser(UserVO userVO) { HttpRespMsg msg = new HttpRespMsg(); userVO.setProjectId(-1); userVO.setMouleMap(-1); List set = new ArrayList<>(); set.add(-1); List moulds = new ArrayList<>(); if (userVO.getId() != null) { //资产方管理员,获取他公司下的所有模具 if (Constant.SYS_PARENT_ID.equals(userVO.getParentId())) { //超级管理员,获取平台所有模具 moulds = mouldMapper.selectListByCondition(userVO); } else if (Constant.SYS_ID.equals(userVO.getParentId())) { if (Constant.ASSETS_COMPANY.equals(userVO.getSubordinateType())) { //资产方管理员 moulds = mouldMapper.selectListByCondition(userVO); } else if (Constant.PRODUCER_COMPANY.equals(userVO.getSubordinateType())) { set = customCompanyMapper.selectList(new QueryWrapper().eq("company_id", userVO.getCompanyId())).stream().map(CustomCompany::getProjectId).collect(Collectors.toList()); set.add(-1); moulds = mouldMapper.selectListByConditionByProject(userVO, set); } } else { //普通用户或者项目经理 //充当项目经理参与的项目 if (userVO.getProjectId() != -1) { set.add(userVO.getProjectId()); set.add(-1); moulds = mouldMapper.selectListByConditionByProject(userVO, set); } else { QueryWrapper qw = new QueryWrapper<>(); qw.eq("manager_id", userVO.getId()); List projects = projectMapper.selectList(qw); if (projects.size() > 0) { for (Project project : projects) { set.add(project.getId()); } } // //充当普通人员参与的项目 List projectUsers = projectUserMapper.selectList(new QueryWrapper().eq("user_id", userVO.getId())); if (projectUsers.size() > 0) { for (ProjectUser projectUser : projectUsers) { set.add(projectUser.getProjectId()); } } // //充当审批人员参与的项目 List projectss = projectApproveMapper.selectList(new QueryWrapper().eq("approver_id", userVO.getId())); if (projectss.size() > 0) { for (ProjectApprove projectUser : projectss) { set.add(projectUser.getProjectId()); } } set.add(-1); moulds = mouldMapper.selectListByConditionByProject(userVO, set); } } msg.data = moulds; } else { msg.setError("用户不存在或者未登录"); } return msg; } @Override public HttpRespMsg getModelListByCompanyIdAndProjectId(UserVO userVO) { HttpRespMsg msg = new HttpRespMsg(); User user = userMapper.selectOne(new QueryWrapper().eq("head_imgurl", userVO.getToken())); QueryWrapper qw = new QueryWrapper<>(); Integer companyId = -1; if (Constant.SYS_ID == user.getParentId()) { //此时是admin User admin = userMapper.selectOne(new QueryWrapper().eq("id", user.getId())); companyId = admin.getCompanyId(); // qw.eq("company_id", admin.getCompanyId()); } else if (Constant.SYS_PARENT_ID == user.getParentId()) { //系统管理员 // qw.eq("company_type",Constant.ASSETS_COMPANY); } else { //此时是项目经理 User admin = userMapper.selectOne(new QueryWrapper().eq("id", user.getParentId())); companyId = admin.getCompanyId(); // qw.eq("company_id", admin.getCompanyId()); } // List moulds = mouldMapper.selectList(new QueryWrapper().eq("company_id", companyId).isNull("project_id")); msg.data = mouldMapper.selectListByCompanyId(companyId, userVO.getProjectId()); return msg; } @Override public HttpRespMsg setProjectDelete(Project project, String token) { HttpRespMsg msg = new HttpRespMsg(); User user = userMapper.selectOne(new QueryWrapper().eq("head_imgurl", token)); if ((user.getParentId() == 1 && user.getSubordinateType() == 0)) { //资产方管理员才有权限操作 projectMapper.updateById(project); } else { msg.setError("您无权操作,请联系资产方管理员操作。"); } return msg; } }