ProjectServiceImpl.java 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713
  1. package com.hssx.cloudmodel.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.github.pagehelper.PageHelper;
  4. import com.github.pagehelper.PageInfo;
  5. import com.hssx.cloudmodel.constant.Constant;
  6. import com.hssx.cloudmodel.entity.*;
  7. import com.hssx.cloudmodel.entity.vo.MouldVO;
  8. import com.hssx.cloudmodel.entity.vo.ProjectVO;
  9. import com.hssx.cloudmodel.entity.vo.UserVO;
  10. import com.hssx.cloudmodel.mapper.*;
  11. import com.hssx.cloudmodel.service.ProjectService;
  12. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  13. import com.hssx.cloudmodel.util.HttpRespMsg;
  14. import com.hssx.cloudmodel.util.ListUtil;
  15. import com.hssx.cloudmodel.util.PageUtil;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.stereotype.Service;
  18. import javax.annotation.Resource;
  19. import javax.jws.soap.SOAPBinding;
  20. import java.text.SimpleDateFormat;
  21. import java.util.*;
  22. import java.util.stream.Collector;
  23. import java.util.stream.Collectors;
  24. /**
  25. * <p>
  26. * 服务实现类
  27. * </p>
  28. *
  29. * @author 吴涛涛
  30. * @since 2019-07-27
  31. */
  32. @Service
  33. public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> implements ProjectService {
  34. @Resource
  35. ProjectMapper projectMapper;
  36. @Resource
  37. ProjectUserMapper projectUserMapper;
  38. @Resource
  39. UserMapper userMapper;
  40. @Resource
  41. CompanyMapper companyMapper;
  42. @Resource
  43. CustomCompanyMapper customCompanyMapper;
  44. @Resource
  45. MouldMapper mouldMapper;
  46. @Resource
  47. ProjectApproveMapper projectApproveMapper;
  48. @Resource
  49. PowerMapper powerMapper;
  50. @Override
  51. public HttpRespMsg addAndUpdateProject(Project project, Integer flag, User user, String userIds,
  52. String customerCompanyIds, String customerCompanyNames, String modelIds,
  53. Integer customerApproverId, Integer ownerApproverId) {
  54. HttpRespMsg msg = new HttpRespMsg();
  55. if (user != null) {
  56. QueryWrapper<Project> qw = new QueryWrapper<>();
  57. qw.orderByDesc("id").last("limit 1");
  58. Project lastProject = projectMapper.selectOne(qw);
  59. if (flag == 0) {
  60. synchronized (this) {
  61. int count = 1;
  62. if (lastProject != null) {
  63. //YMXM201903220001
  64. String numStr = lastProject.getProjectNo().substring(13);
  65. int num = Integer.valueOf(numStr).intValue();
  66. count += num;
  67. }
  68. long time = System.currentTimeMillis();
  69. Company company = companyMapper.selectById(user.getCompanyId());
  70. SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
  71. String seq = sdf.format(time) + String.format("%04d", count);
  72. project.setCreatorId(user.getId());
  73. project.setCreator(user.getUsername());
  74. project.setOwnerCompany(user.getCompanyId());
  75. project.setOwnerCompanyName(company.getCompanyName());
  76. project.setProjectNo(Constant.PROJECT_PREFIX + seq);
  77. projectMapper.insert(project);
  78. //添加生产方关联公司
  79. if (customerCompanyIds != null && !"".equals(customerCompanyIds) && customerCompanyNames != null && !"".equals(customerCompanyNames)) {
  80. List<Integer> ides = ListUtil.convertIntegerIdsArrayToList(customerCompanyIds);
  81. String[] split = customerCompanyNames.split(",");
  82. int index = 0;
  83. for (String cusCompany : split) {
  84. CustomCompany customCompany = new CustomCompany();
  85. customCompany.setCompanyId(ides.get(index));
  86. customCompany.setCompanyName(cusCompany);
  87. customCompany.setProjectId(project.getId());
  88. customCompanyMapper.insert(customCompany);
  89. index++;
  90. }
  91. }
  92. //添加模具
  93. if (modelIds != null && !"".equals(modelIds)) {
  94. List<Integer> modelList = ListUtil.convertIntegerIdsArrayToList(modelIds);
  95. int index = 1;
  96. if (modelList.size() > 0) {
  97. for (Integer id : modelList) {
  98. Mould mould = new Mould();
  99. mould.setId(id);
  100. mould.setProjectId(project.getId());
  101. mould.setBelongProjectGrade(index / modelList.size() + "");
  102. mouldMapper.updateById(mould);
  103. }
  104. }
  105. }
  106. }
  107. } else if (flag == 1) {
  108. projectMapper.updateById(project);
  109. //删除参与人与项目项目经理相同id的人
  110. projectUserMapper.delete(new QueryWrapper<ProjectUser>().eq("user_id", project.getManagerId()).eq("project_id", project.getId()));
  111. //删除之前添加的生产方公司
  112. customCompanyMapper.delete(new QueryWrapper<CustomCompany>().eq("project_id", project.getId()));
  113. //重新添加生产方公司
  114. if (customerCompanyIds != null && !"".equals(customerCompanyIds) && customerCompanyNames != null && !"".equals(customerCompanyNames)) {
  115. List<Integer> ides = ListUtil.convertIntegerIdsArrayToList(customerCompanyIds);
  116. String[] split = customerCompanyNames.split(",");
  117. int index = 0;
  118. for (String cusCompany : split) {
  119. CustomCompany customCompany = new CustomCompany();
  120. customCompany.setCompanyId(ides.get(index));
  121. customCompany.setCompanyName(cusCompany);
  122. customCompany.setProjectId(project.getId());
  123. customCompanyMapper.insert(customCompany);
  124. index++;
  125. }
  126. }
  127. //删除之前的项目审批人
  128. projectApproveMapper.delete(new QueryWrapper<ProjectApprove>().eq("project_id", project.getId()));
  129. //删除权限表里的审批权限数据
  130. powerMapper.delete(new QueryWrapper<Power>().eq("project_id", project.getId()).eq("power_type", Constant.APPROVAL_AUTHORITY));
  131. //删除之前项目参与人的下载权限
  132. projectMapper.selectById(project.getId());
  133. List<Integer> approverIds = projectApproveMapper.selectList(new QueryWrapper<ProjectApprove>().eq("project_id", project.getId()))
  134. .stream()
  135. .map(ProjectApprove::getApproverId)
  136. .collect(Collectors.toList());
  137. approverIds.add(-1);
  138. powerMapper.delete(new QueryWrapper<Power>().in("user_id", approverIds));
  139. //删除之前分配的人员
  140. QueryWrapper<ProjectUser> qwPro = new QueryWrapper<>();
  141. qwPro.eq("project_id", project.getId());
  142. projectUserMapper.delete(qwPro);
  143. //再次重新分配
  144. this.handOutProject(project, userIds);
  145. //重新添加审批人
  146. //1.添加生产方审批人
  147. if (null != customerApproverId) {
  148. User customerExaminer = userMapper.selectById(customerApproverId);
  149. Company company = companyMapper.selectById(customerExaminer.getCompanyId());
  150. ProjectApprove projectApprove = new ProjectApprove();
  151. projectApprove.setApproverId(customerExaminer.getId());
  152. projectApprove.setApproverName(customerExaminer.getUsername());
  153. projectApprove.setCompanyId(customerExaminer.getCompanyId());
  154. projectApprove.setCompanyName(company.getCompanyName());
  155. projectApprove.setProjectId(project.getId());
  156. projectApprove.setSubordinateType(customerExaminer.getSubordinateType());
  157. projectApproveMapper.insert(projectApprove);
  158. Power power = new Power();
  159. power.setUserId(customerExaminer.getId());
  160. power.setProjectId(project.getId());
  161. power.setPowerType(Constant.APPROVAL_AUTHORITY);
  162. powerMapper.insert(power);
  163. //审批人默认有下载权限
  164. power.setUserId(customerExaminer.getId());
  165. power.setProjectId(project.getId());
  166. power.setPowerType(Constant.DOWNLOAD_AUTHORITY);
  167. powerMapper.insert(power);
  168. //将审批人加入到参与人中
  169. ProjectUser projectUser = new ProjectUser();
  170. projectUser.setUserId(customerExaminer.getId());
  171. projectUser.setSubordinateType(customerExaminer.getSubordinateType());
  172. projectUser.setProjectId(project.getId());
  173. projectUser.setSubordinate(customerExaminer.getCompanyId());
  174. projectUser.setRoleType(1);//审批人
  175. projectUserMapper.insert(projectUser);
  176. }
  177. if (null != ownerApproverId) {
  178. //2.添加资产方审批人
  179. User ownerExaminer = userMapper.selectById(ownerApproverId);
  180. Company company = companyMapper.selectById(ownerExaminer.getCompanyId());
  181. ProjectApprove ownerProjectApprove = new ProjectApprove();
  182. ownerProjectApprove.setApproverId(ownerExaminer.getId());
  183. ownerProjectApprove.setApproverName(ownerExaminer.getUsername());
  184. ownerProjectApprove.setCompanyId(ownerExaminer.getCompanyId());
  185. ownerProjectApprove.setCompanyName(company.getCompanyName());
  186. ownerProjectApprove.setProjectId(project.getId());
  187. ownerProjectApprove.setSubordinateType(ownerExaminer.getSubordinateType());
  188. projectApproveMapper.insert(ownerProjectApprove);
  189. Power power = new Power();
  190. power.setUserId(ownerExaminer.getId());
  191. power.setProjectId(project.getId());
  192. power.setPowerType(Constant.APPROVAL_AUTHORITY);
  193. powerMapper.insert(power);
  194. //审批人默认有下载权限
  195. power.setUserId(ownerExaminer.getId());
  196. power.setProjectId(project.getId());
  197. power.setPowerType(Constant.DOWNLOAD_AUTHORITY);
  198. powerMapper.insert(power);
  199. //将审批人加入到参与人中
  200. ProjectUser projectUser = new ProjectUser();
  201. projectUser.setUserId(ownerExaminer.getId());
  202. projectUser.setSubordinateType(ownerExaminer.getSubordinateType());
  203. projectUser.setProjectId(project.getId());
  204. projectUser.setSubordinate(ownerExaminer.getCompanyId());
  205. projectUser.setRoleType(1);//审批人
  206. projectUserMapper.insert(projectUser);
  207. }
  208. //删除之前分配与项目关联的模具,即将之前的关联项目id修改成未关联
  209. mouldMapper.updateMouldByProjectId(project);
  210. //再次模具的分配
  211. if (modelIds != null && !"".equals(modelIds)) {
  212. List<Integer> modelList = ListUtil.convertIntegerIdsArrayToList(modelIds);
  213. int index = 1;
  214. if (modelList.size() > 0) {
  215. for (Integer id : modelList) {
  216. Mould mould = new Mould();
  217. mould.setId(id);
  218. mould.setProjectId(project.getId());
  219. mould.setBelongProjectGrade(index / modelList.size() + "");
  220. mouldMapper.updateById(mould);
  221. }
  222. }
  223. }
  224. }
  225. } else {
  226. msg.setError("当前角色涉及权限问题,请重新登录");
  227. }
  228. return msg;
  229. }
  230. @Override
  231. public HttpRespMsg handOutProject(Project project, String userIds) {
  232. HttpRespMsg msg = new HttpRespMsg();
  233. Project pro = projectMapper.selectById(project.getId());
  234. List<Integer> ids = new ArrayList<>();
  235. if (userIds != null && userIds != "") {
  236. List<String> list = ListUtil.convertLongIdsArrayToList(userIds);
  237. if (list().size() > 0) {
  238. for (String id : list) {
  239. User user = userMapper.selectById(id);
  240. ProjectUser projectUser = new ProjectUser();
  241. projectUser.setUserId(Integer.parseInt(id));
  242. projectUser.setProjectId(project.getId());
  243. projectUser.setSubordinate(user.getSubordinateType());
  244. projectUserMapper.insert(projectUser);
  245. }
  246. }
  247. } else {
  248. msg.setError("用户id不能为null和空");
  249. }
  250. return msg;
  251. }
  252. @Override
  253. public HttpRespMsg getList(String keyName, PageUtil page, User user) {
  254. HttpRespMsg msg = new HttpRespMsg();
  255. if (user != null) {
  256. PageHelper.startPage(page.getPageNum(), page.getPageSize());
  257. List<Integer> uIds = new ArrayList<>();
  258. List<ProjectVO> projects = new ArrayList<>();
  259. List<Integer> projectIds = new ArrayList<>();
  260. if (Constant.SYS_PARENT_ID == user.getParentId()) {
  261. projects = projectMapper.getProjectListByUid(keyName, user);
  262. } else if (Constant.SYS_ID == user.getParentId()) {
  263. if (user.getSubordinateType() == 0) {
  264. QueryWrapper<Project> qwr = new QueryWrapper<>();
  265. //资产方管理员,看到自己创建的项目
  266. qwr.select("id").eq("creator_id", user.getId());
  267. projectIds = projectMapper.selectList(qwr).stream().map(Project::getId).collect(Collectors.toList());
  268. projectIds.add(-1);
  269. projects = projectMapper.getProjectListByUidInProjectIds(keyName, projectIds);
  270. } else if (user.getSubordinateType() == 1) {
  271. projectIds = customCompanyMapper.selectList(new QueryWrapper<CustomCompany>().eq("company_id", user.getCompanyId())).stream().map(CustomCompany::getProjectId).collect(Collectors.toList());
  272. projectIds.add(-1);
  273. projects = projectMapper.getProjectListByUidInProjectIds(keyName, projectIds);
  274. }
  275. } else {
  276. QueryWrapper<Project> qwPro = new QueryWrapper<>();
  277. qwPro.eq("manager_id", user.getId());
  278. projectIds = projectMapper.selectList(qwPro).stream().map(Project::getId).collect(Collectors.toList());
  279. projectIds.add(-1);
  280. //项目经理或者普通用户
  281. projectIds.addAll(projectUserMapper.selectList(new QueryWrapper<ProjectUser>()
  282. .eq("user_id", user.getId()))
  283. .stream()
  284. .map(ProjectUser::getProjectId)
  285. .collect(Collectors.toList()));
  286. //作为审批人
  287. projectIds.addAll(projectApproveMapper.selectList(new QueryWrapper<ProjectApprove>()
  288. .eq("approver_id", user.getId()))
  289. .stream()
  290. .map(ProjectApprove::getProjectId)
  291. .collect(Collectors.toList()));
  292. projects = projectMapper.getProjectListByUidInProjectIds(keyName, projectIds);
  293. }
  294. PageInfo<ProjectVO> pageInfos = new PageInfo<>(projects);
  295. msg.data = pageInfos;
  296. } else {
  297. msg.setError("当前用户不存,或涉及到权限问题,请重新登录");
  298. }
  299. // QueryWrapper<Project> qw = new QueryWrapper<>();
  300. // qw.select("project_name", "creator", "charger", "indate");
  301. // if (keyName != null) {
  302. // qw.like("project_name", keyName);
  303. // }
  304. return msg;
  305. }
  306. @Override
  307. public HttpRespMsg getUserByCompanyIdOrSubordinateType(User user) {
  308. HttpRespMsg msg = new HttpRespMsg();
  309. List<User> users = new ArrayList<>();
  310. QueryWrapper<User> qw = new QueryWrapper<>();
  311. if (user.getCompanyId() != null) {
  312. qw.eq("company_id", user.getCompanyId());
  313. } else if (user.getSubordinateType() != null) {
  314. qw.eq("subordinate_type", user.getSubordinateType());
  315. }
  316. users = userMapper.selectList(qw);
  317. msg.data = users;
  318. return msg;
  319. }
  320. @Override
  321. public HttpRespMsg getProjectDetail(Project project, String token) {
  322. Map<String, Object> map = new HashMap<>();
  323. HttpRespMsg msg = new HttpRespMsg();
  324. User user = userMapper.selectOne(new QueryWrapper<User>().eq("head_imgurl", token));
  325. List<ProjectVO> projects = new ArrayList<>();
  326. String keyName = null;
  327. if (user != null) {
  328. List<Integer> uIds = new ArrayList<>();
  329. List<Integer> projectIds = new ArrayList<>();
  330. if (Constant.SYS_PARENT_ID == user.getParentId()) {
  331. projects = projectMapper.getProjectListByUid(keyName, user);
  332. } else if (Constant.SYS_ID == user.getParentId()) {
  333. if (user.getSubordinateType() == 0) {
  334. QueryWrapper<Project> qwr = new QueryWrapper<>();
  335. //资产方管理员,看到自己创建的项目
  336. qwr.select("id").eq("creator_id", user.getId());
  337. projectIds = projectMapper.selectList(qwr).stream().map(Project::getId).collect(Collectors.toList());
  338. projectIds.add(-1);
  339. projects = projectMapper.getProjectListByUidInProjectIds(keyName, projectIds);
  340. } else if (user.getSubordinateType() == 1) {
  341. projectIds = customCompanyMapper.selectList(new QueryWrapper<CustomCompany>().eq("company_id", user.getCompanyId())).stream().map(CustomCompany::getProjectId).collect(Collectors.toList());
  342. projectIds.add(-1);
  343. projects = projectMapper.getProjectListByUidInProjectIds(keyName, projectIds);
  344. }
  345. } else {
  346. QueryWrapper<Project> qwPro = new QueryWrapper<>();
  347. qwPro.eq("manager_id", user.getId());
  348. projectIds = projectMapper.selectList(qwPro).stream().map(Project::getId).collect(Collectors.toList());
  349. projectIds.add(-1);
  350. //项目经理或者普通用户
  351. projectIds.addAll(projectUserMapper.selectList(new QueryWrapper<ProjectUser>()
  352. .eq("user_id", user.getId()))
  353. .stream()
  354. .map(ProjectUser::getProjectId)
  355. .collect(Collectors.toList()));
  356. //作为审批人
  357. projectIds.addAll(projectApproveMapper.selectList(new QueryWrapper<ProjectApprove>()
  358. .eq("approver_id", user.getId()))
  359. .stream()
  360. .map(ProjectApprove::getProjectId)
  361. .collect(Collectors.toList()));
  362. projects = projectMapper.getProjectListByUidInProjectIds(keyName, projectIds);
  363. }
  364. } else {
  365. msg.setError("当前用户不存,或涉及到权限问题,请重新登录");
  366. }
  367. List<Integer> pIds = projects.stream().map(Project::getId).collect(Collectors.toList());
  368. if(!pIds.contains(project.getId())){
  369. msg.setError("您没有查看该项目的权限");
  370. return msg;
  371. }
  372. ProjectVO vo = projectMapper.getProjectById(project.getId());
  373. if (Constant.SYS_PARENT_ID == user.getParentId()) {
  374. //当前人超级管理员 ,对项目只可以浏览
  375. map.put("update", 0);
  376. map.put("download", 0);
  377. map.put("view", 1);
  378. map.put("approve", 0);
  379. } else if (Constant.SYS_ID == user.getParentId()) {
  380. //当前为系统管理员
  381. if (Constant.ASSETS_COMPANY == user.getSubordinateType()) {
  382. map.put("update", 1);
  383. map.put("download", 1);
  384. map.put("view", 1);
  385. map.put("approve", 0);
  386. } else if (Constant.PRODUCER_COMPANY == user.getSubordinateType()) {
  387. map.put("update", 0);
  388. map.put("download", 1);
  389. map.put("view", 1);
  390. map.put("approve", 0);
  391. }
  392. } else if (vo.getManagerId() == user.getId()) {
  393. //当前人是该项目的项目经理
  394. Integer approve = 0;
  395. if (projectApproveMapper.selectCount(new QueryWrapper<ProjectApprove>().eq("approver_id", user.getId())) > 0) {
  396. //查看当前项目经理是否为审批人
  397. approve = 1;
  398. }
  399. map.put("update", 1);
  400. map.put("download", 1);
  401. map.put("view", 1);
  402. map.put("approve", approve);
  403. } /*else if (projectApproveMapper.selectCount(new QueryWrapper<ProjectApprove>().eq("approver_id", user.getId())) > 0) {
  404. //是否为审批人
  405. //该项目的参与人
  406. Integer update = 0;
  407. Integer download = 0;
  408. Integer view = 0;
  409. Integer approve = 1;
  410. List<Power> powers = powerMapper.selectList(new QueryWrapper<Power>().eq("project_id", project.getId()).eq("user_id", user.getId()));
  411. if (powers.size() > 0) {
  412. for (Power power : powers) {
  413. if (power.getPowerType() == 0) {
  414. update = 1;
  415. } else if (power.getPowerType() == 1) {
  416. download = 1;
  417. } else if (power.getPowerType() == 2) {
  418. view = 1;
  419. } else {
  420. approve = 1;
  421. }
  422. }
  423. }
  424. map.put("update", update);
  425. map.put("download", download);
  426. map.put("view", view);
  427. map.put("approve", approve);
  428. }*/ else {
  429. //该项目的参与人
  430. Integer update = 0;
  431. Integer download = 0;
  432. Integer view = 0;
  433. Integer approve = 0;
  434. List<Power> powers = powerMapper.selectList(new QueryWrapper<Power>().eq("project_id", project.getId()).eq("user_id", user.getId()));
  435. if (powers.size() > 0) {
  436. for (Power power : powers) {
  437. if (power.getPowerType() == 0) {
  438. update = 1;
  439. } else if (power.getPowerType() == 1) {
  440. download = 1;
  441. } else if (power.getPowerType() == 2) {
  442. view = 1;
  443. } else {
  444. approve = 1;
  445. }
  446. }
  447. }
  448. map.put("update", update);
  449. map.put("download", download);
  450. map.put("view", view);
  451. map.put("approve", approve);
  452. }
  453. List<User> users = projectMapper.getProjectUserById(project.getId());
  454. vo.setParticipateUsers(users);
  455. //处理users按照客户呼和供应商分组
  456. System.out.println("users===>" + users);
  457. // for (User user : users) {
  458. // if (user.getSubordinateType() == 0) {
  459. // //资产方
  460. // vo.getOwnerUsers().add(user);
  461. // } else if (user.getSubordinateType() == 1) {
  462. // //生产方
  463. // vo.getCustomUsers().add(user);
  464. // }
  465. // }
  466. map.put("vo", vo);
  467. msg.data = map;
  468. return msg;
  469. }
  470. @Override
  471. public HttpRespMsg getUserListByCompanyIds(String companyIds, Integer adminId, Integer projectId) {
  472. HttpRespMsg msg = new HttpRespMsg();
  473. QueryWrapper<User> qw = new QueryWrapper<User>();
  474. if (!"".equals(companyIds) && companyIds != null) {
  475. List<Integer> ids = ListUtil.convertIntegerIdsArrayToList(companyIds);
  476. //该项目的项目经理不能充当参与人
  477. Integer managerId = -1;
  478. if (projectId != null) {
  479. Project project = projectMapper.selectById(projectId);
  480. if (adminId == project.getManagerId()) {
  481. //是本项目的项目项目经理需要返回本人
  482. qw.eq("id", adminId);
  483. }
  484. }
  485. //所选公司下的人
  486. qw.in("company_id", ids);
  487. //不包含资产方的系统管理员
  488. qw.ne("parent_id", Constant.SYS_ID);
  489. msg.data = userMapper.selectList(qw);
  490. }
  491. return msg;
  492. }
  493. @Override
  494. public HttpRespMsg getModelListByCompanyId(User user) {
  495. HttpRespMsg msg = new HttpRespMsg();
  496. QueryWrapper<Mould> qw = new QueryWrapper<>();
  497. Integer companyId = -1;
  498. if (Constant.SYS_ID == user.getParentId()) {
  499. //此时是admin
  500. User admin = userMapper.selectOne(new QueryWrapper<User>().eq("id", user.getId()));
  501. companyId = admin.getCompanyId();
  502. // qw.eq("company_id", admin.getCompanyId());
  503. } else if (Constant.SYS_PARENT_ID == user.getParentId()) {
  504. //系统管理员
  505. // qw.eq("company_type",Constant.ASSETS_COMPANY);
  506. } else {
  507. //此时是项目经理
  508. User admin = userMapper.selectOne(new QueryWrapper<User>().eq("id", user.getParentId()));
  509. companyId = admin.getCompanyId();
  510. // qw.eq("company_id", admin.getCompanyId());
  511. }
  512. msg.data = mouldMapper.selectListByCompanyId(companyId);
  513. return msg;
  514. }
  515. @Override
  516. public HttpRespMsg getModelListByUser(UserVO userVO, PageUtil page) {
  517. HttpRespMsg msg = new HttpRespMsg();
  518. List<Integer> set = new ArrayList<>();
  519. set.add(-1);
  520. List<MouldVO> moulds = new ArrayList<>();
  521. if (userVO.getId() != null) {
  522. //资产方管理员,获取他公司下的所有模具
  523. PageHelper.startPage(page.getPageNum(), page.getPageSize());
  524. if (Constant.SYS_PARENT_ID == userVO.getParentId()) {
  525. //超级管理员,获取平台所有模具
  526. moulds = mouldMapper.selectListByCondition(userVO);
  527. } else if (Constant.SYS_ID == userVO.getParentId()) {
  528. if (Constant.ASSETS_COMPANY == userVO.getSubordinateType()) {
  529. //资产方管理员
  530. moulds = mouldMapper.selectListByCondition(userVO);
  531. } else if (Constant.PRODUCER_COMPANY == userVO.getSubordinateType()) {
  532. set = customCompanyMapper.selectList(new QueryWrapper<CustomCompany>().eq("company_id", userVO.getCompanyId())).stream().map(CustomCompany::getProjectId).collect(Collectors.toList());
  533. moulds = mouldMapper.selectListByConditionByProject(userVO, set);
  534. }
  535. } else {
  536. //普通用户或者项目经理
  537. //充当项目经理参与的项目
  538. if (userVO.getProjectId() != -1) {
  539. set.add(userVO.getProjectId());
  540. moulds = mouldMapper.selectListByConditionByProject(userVO, set);
  541. } else {
  542. QueryWrapper<Project> qw = new QueryWrapper<>();
  543. qw.eq("manager_id", userVO.getId());
  544. List<Project> projects = projectMapper.selectList(qw);
  545. if (projects.size() > 0) {
  546. for (Project project : projects) {
  547. set.add(project.getId());
  548. }
  549. }
  550. // //充当普通人员参与的项目
  551. List<ProjectUser> projectUsers = projectUserMapper.selectList(new QueryWrapper<ProjectUser>().eq("user_id", userVO.getId()));
  552. if (projectUsers.size() > 0) {
  553. for (ProjectUser projectUser : projectUsers) {
  554. set.add(projectUser.getProjectId());
  555. }
  556. }
  557. // //充当审批人员参与的项目
  558. List<ProjectApprove> projectss = projectApproveMapper.selectList(new QueryWrapper<ProjectApprove>().eq("approver_id", userVO.getId()));
  559. if (projectss.size() > 0) {
  560. for (ProjectApprove projectUser : projectss) {
  561. set.add(projectUser.getProjectId());
  562. }
  563. }
  564. moulds = mouldMapper.selectListByConditionByProject(userVO, set);
  565. }
  566. }
  567. PageInfo<MouldVO> pageInfo = new PageInfo<>(moulds);
  568. msg.data = pageInfo;
  569. } else {
  570. msg.setError("用户不存在,或者未登录!");
  571. }
  572. return msg;
  573. }
  574. @Override
  575. public HttpRespMsg getListByUser(String token) {
  576. HttpRespMsg msg = new HttpRespMsg();
  577. List<Integer> ides = new ArrayList<>();
  578. ides.add(-1);
  579. User user = userMapper.selectOne(new QueryWrapper<User>().eq("head_imgurl", token));
  580. List<Project> projects = new ArrayList<>();
  581. if (user != null) {
  582. QueryWrapper<Project> qw = new QueryWrapper<>();
  583. qw.select("id", "project_name");
  584. if (Constant.SYS_PARENT_ID == user.getParentId()) {
  585. //系统超级管理员,可获得所有项目
  586. projects = projectMapper.selectList(qw);
  587. } else if (Constant.SYS_ID == user.getParentId()) {
  588. //资产方管理员
  589. qw.eq("owner_company", user.getCompanyId());
  590. projects = projectMapper.selectList(qw);
  591. } else {
  592. QueryWrapper<Project> qwPro = new QueryWrapper<>();
  593. qwPro.eq("manager_id", user.getId());
  594. List<Project> projectList = projectMapper.selectList(qw);
  595. for (Project project : projectList) {
  596. ides.add(project.getId());
  597. }
  598. //项目经理或者普通用户
  599. List<ProjectUser> projectUsers = projectUserMapper.selectList(new QueryWrapper<ProjectUser>().eq("user_id", user.getId()));
  600. for (ProjectUser projectUser : projectUsers) {
  601. ides.add(projectUser.getProjectId());
  602. }
  603. //作为审批人
  604. List<ProjectApprove> projectApproves = projectApproveMapper.selectList(new QueryWrapper<ProjectApprove>().eq("approver_id", user.getId()));
  605. for (ProjectApprove projectApprove : projectApproves) {
  606. ides.add(projectApprove.getProjectId());
  607. }
  608. qw.in("id", ides);
  609. projects = projectMapper.selectList(qw);
  610. }
  611. msg.data = projects;
  612. } else {
  613. msg.setError("当前用户未登录,或者用户不存在");
  614. }
  615. return msg;
  616. }
  617. @Override
  618. public HttpRespMsg getProjectListByUserAndCompany(UserVO userVO) {
  619. HttpRespMsg msg = new HttpRespMsg();
  620. User user = userMapper.selectOne(new QueryWrapper<User>().eq("head_imgurl", userVO.getToken()));
  621. List<Project> list = new ArrayList<>();
  622. if (user == null) {
  623. msg.setError("当前用户未登录,或者用户不存在");
  624. return msg;
  625. } else {
  626. if (Constant.SYS_ID == user.getParentId()) {
  627. //admin创建人员,获取该公司下的所有项目
  628. list = projectMapper.selectList(new QueryWrapper<Project>().eq("owner_company", user.getCompanyId()));
  629. } else {
  630. //项目经理创建人员,获取当前项目经理的充当项目经理的任务
  631. list = projectMapper.selectList(new QueryWrapper<Project>().eq("manager_id", user.getId()));
  632. }
  633. msg.data = list;
  634. }
  635. return msg;
  636. }
  637. @Override
  638. public HttpRespMsg getModelListMapByUser(UserVO userVO) {
  639. HttpRespMsg msg = new HttpRespMsg();
  640. userVO.setProjectId(-1);
  641. userVO.setMouleMap(-1);
  642. List<Integer> set = new ArrayList<>();
  643. set.add(-1);
  644. List<MouldVO> moulds = new ArrayList<>();
  645. if (userVO.getId() != null) {
  646. //资产方管理员,获取他公司下的所有模具
  647. if (Constant.SYS_PARENT_ID == userVO.getParentId()) {
  648. //超级管理员,获取平台所有模具
  649. moulds = mouldMapper.selectListByCondition(userVO);
  650. } else if (Constant.SYS_ID == userVO.getParentId()) {
  651. if (Constant.ASSETS_COMPANY == userVO.getSubordinateType()) {
  652. //资产方管理员
  653. moulds = mouldMapper.selectListByCondition(userVO);
  654. } else if (Constant.PRODUCER_COMPANY == userVO.getSubordinateType()) {
  655. set = customCompanyMapper.selectList(new QueryWrapper<CustomCompany>().eq("company_id", userVO.getCompanyId())).stream().map(CustomCompany::getProjectId).collect(Collectors.toList());
  656. moulds = mouldMapper.selectListByConditionByProject(userVO, set);
  657. }
  658. } else {
  659. //普通用户或者项目经理
  660. //充当项目经理参与的项目
  661. if (userVO.getProjectId() != -1) {
  662. set.add(userVO.getProjectId());
  663. moulds = mouldMapper.selectListByConditionByProject(userVO, set);
  664. } else {
  665. QueryWrapper<Project> qw = new QueryWrapper<>();
  666. qw.eq("manager_id", userVO.getId());
  667. List<Project> projects = projectMapper.selectList(qw);
  668. if (projects.size() > 0) {
  669. for (Project project : projects) {
  670. set.add(project.getId());
  671. }
  672. }
  673. // //充当普通人员参与的项目
  674. List<ProjectUser> projectUsers = projectUserMapper.selectList(new QueryWrapper<ProjectUser>().eq("user_id", userVO.getId()));
  675. if (projectUsers.size() > 0) {
  676. for (ProjectUser projectUser : projectUsers) {
  677. set.add(projectUser.getProjectId());
  678. }
  679. }
  680. // //充当审批人员参与的项目
  681. List<ProjectApprove> projectss = projectApproveMapper.selectList(new QueryWrapper<ProjectApprove>().eq("approver_id", userVO.getId()));
  682. if (projectss.size() > 0) {
  683. for (ProjectApprove projectUser : projectss) {
  684. set.add(projectUser.getProjectId());
  685. }
  686. }
  687. moulds = mouldMapper.selectListByConditionByProject(userVO, set);
  688. }
  689. }
  690. msg.data = moulds;
  691. } else {
  692. msg.setError("用户不存在,或者未登录!");
  693. }
  694. return msg;
  695. }
  696. }