ProjectServiceImpl.java 38 KB

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