ProjectServiceImpl.java 41 KB

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