ProjectApplicationApproveService.java 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507
  1. package platform.modules.company.service;
  2. import java.text.SimpleDateFormat;
  3. import java.util.*;
  4. import com.alibaba.fastjson.JSONObject;
  5. import org.apache.commons.lang3.StringUtils;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.stereotype.Service;
  8. import org.springframework.transaction.annotation.Transactional;
  9. import com.aliyuncs.exceptions.ClientException;
  10. import com.github.pagehelper.PageHelper;
  11. import com.github.pagehelper.PageInfo;
  12. import org.springframework.util.CollectionUtils;
  13. import platform.common.Constant;
  14. import platform.common.base.service.BaseService;
  15. import platform.common.base.service.DictionaryItemService;
  16. import platform.common.exception.BaseException;
  17. import platform.common.util.AlibabaSMSUtil;
  18. import platform.common.util.DateUtil;
  19. import platform.common.util.ShiroUtils;
  20. import platform.modules.build.dao.CompanyDao;
  21. import platform.modules.build.entity.Company;
  22. import platform.modules.build.entity.CompanyContact;
  23. import platform.modules.build.service.CompanyService;
  24. import platform.modules.company.dao.ProjectApplicationDao;
  25. import platform.modules.company.dto.ProjectApplicationSearchCondition;
  26. import platform.modules.company.dto.ProjectApprovalDto;
  27. import platform.modules.company.dto.StockLandApprovalDto;
  28. import platform.modules.company.entity.ProjectApplication;
  29. import platform.modules.company.entity.StockLand;
  30. import platform.modules.government.dao.ProjectDao;
  31. import platform.modules.government.dto.ApplicationDto;
  32. import platform.modules.government.dto.ParamApplication;
  33. import platform.modules.government.entity.*;
  34. import platform.modules.government.service.ProjectDeclarationService;
  35. import platform.modules.government.service.ProjectTypeService;
  36. import platform.modules.government.service.UserService;
  37. import platform.modules.sys.dao.ApprovalDao;
  38. import platform.modules.sys.entity.Approval;
  39. import platform.modules.sys.entity.Group;
  40. import platform.modules.sys.entity.Message;
  41. import platform.modules.sys.entity.UserGroup;
  42. import platform.modules.sys.service.*;
  43. import tk.mybatis.mapper.entity.Example;
  44. @Service
  45. @Transactional
  46. public class ProjectApplicationApproveService extends BaseService<ProjectApplication> {
  47. @Autowired
  48. private ProjectApplicationDao projectApplicationDao;
  49. @Autowired
  50. private ProjectApplicationService projectApplicationService;
  51. @Autowired
  52. private ApprovalService approvalService;
  53. @Autowired
  54. private GroupService groupService;
  55. @Autowired
  56. private UserGroupService userGroupService;
  57. @Autowired
  58. private ProjectDeclarationService projectDeclarationService;
  59. @Autowired
  60. private CompanyService companyService;
  61. @Autowired
  62. private MessageService messageService;
  63. @Autowired
  64. private UserService userService;
  65. @Autowired
  66. private WaitToDoService waitToDoService;
  67. @Autowired
  68. private ProjectDao projectDao;
  69. @Autowired
  70. private ProjectTypeService projectTypeService;
  71. @Autowired
  72. private ApprovalDao approvalDao;
  73. @Autowired
  74. private DictionaryItemService dictionaryItemService;
  75. @Autowired
  76. private CompanyDao companyDao;
  77. //根据用户组获取可查询到的项目
  78. public List<String> getProjectIdsByGroup() {
  79. List<ProjectApplication> projectLists = new ArrayList<>();
  80. Integer user_id = ShiroUtils.getUserId();
  81. Integer department_id = ShiroUtils.getUserEntity().getDepartment_id();
  82. Example example = new Example(Project.class);
  83. Example.Criteria criteria = example.createCriteria();
  84. criteria.andEqualTo("del_flag", "0");
  85. criteria.andEqualTo("department_id", department_id);
  86. List<Project> projectList = projectDao.selectByExample(example);
  87. List<String> project_ids = new ArrayList<>();
  88. if (!CollectionUtils.isEmpty(projectList)) {
  89. for (Project project : projectList) {
  90. project_ids.add(project.getId().toString());
  91. }
  92. }
  93. Group group = null;
  94. List<UserGroup> userGroups = null;
  95. List<String> apply_status_list = new ArrayList<>();
  96. List<String> company_ids = new ArrayList<>();
  97. if (ShiroUtils.getUserType() == Constant.UserType.STREET) {
  98. Example example2 = new Example(Company.class);
  99. Example.Criteria criteria2 = example2.createCriteria();
  100. criteria2.andEqualTo("del_flag", "0");
  101. criteria2.andEqualTo("street_id", ShiroUtils.getStreetId());
  102. List<Company> companies = companyDao.selectByExample(example2);
  103. if (!CollectionUtils.isEmpty(companies)) {
  104. for (Company company : companies) {
  105. company_ids.add(company.getId().toString());
  106. }
  107. } else {
  108. company_ids.add("");
  109. }
  110. group = groupService.findByName(Constant.XMSBJDSLZ, null);
  111. if (null == group) {
  112. apply_status_list.add("");
  113. }
  114. userGroups = userGroupService.findByGroupId(group.getId());
  115. if (null == userGroups) {
  116. apply_status_list.add("");
  117. }
  118. for (UserGroup userGroup : userGroups) {
  119. if (Objects.equals(userGroup.getUser_id(), user_id)) {
  120. apply_status_list.add(Constant.ProjectProvincesStatus.LOCAL_AUDIT);
  121. break;
  122. }
  123. }
  124. }
  125. if (apply_status_list.size() <= 0) {
  126. apply_status_list.add("");
  127. }
  128. projectLists.addAll(projectApplicationDao.findByProjectIdAndApproveStatus(project_ids, apply_status_list, company_ids));
  129. List<String> result = new ArrayList<>();
  130. for (ProjectApplication project : projectLists) {
  131. result.add(project.getId().toString());
  132. }
  133. return result;
  134. }
  135. //获取项目申报id 已审批
  136. public List<String> getProjectIdsy() {
  137. int currentUserId = ShiroUtils.getUserId();
  138. List<Approval> approvalList = approvalDao.selectAllApproval(Constant.DictionaryType.PROJECT_APPLICATION);
  139. Set<String> projectApplicationIds = new HashSet<String>();
  140. //if (Objects.equals(ShiroUtils.getUserType(), Constant.UserType.GOVERNMENT)) {
  141. if (!CollectionUtils.isEmpty(approvalList)) {
  142. for (Approval approval : approvalList) {
  143. String checkerIds = approval.getChecker() + "";
  144. if (checkerIds != null && checkerIds != "") {
  145. if (Objects.equals(checkerIds, String.valueOf(currentUserId))) {
  146. projectApplicationIds.add(approval.getApply_id().toString());
  147. }
  148. }
  149. }
  150. }
  151. //}
  152. List<String> result = new ArrayList<>(projectApplicationIds);
  153. return result;
  154. }
  155. //获取项目申报id 查看所有
  156. public List<String> getProjectIdsc() {
  157. List<String> company_ids = new ArrayList<>();
  158. if (ShiroUtils.getUserType().equals(Constant.UserType.STREET)) {
  159. Example example1 = new Example(Company.class);
  160. Example.Criteria criteria1 = example1.createCriteria();
  161. criteria1.andEqualTo("street_id", ShiroUtils.getStreetId());
  162. List<Company> companyList = companyDao.selectByExample(example1);
  163. for (Company company : companyList) {
  164. company_ids.add(company.getId() + "");
  165. }
  166. }
  167. List<String> result = new ArrayList<>();
  168. Example example = new Example(ProjectApplication.class);
  169. Example.Criteria criteria = example.createCriteria();
  170. List<String> approve_status = new ArrayList<>();
  171. criteria.orEqualTo("del_flag", "0");//不显示删除的
  172. approve_status.add(Constant.ProjectApplicationStatus.NOTIFY);//待通知
  173. approve_status.add(Constant.ProjectApplicationStatus.LOCAL_AUDIT);//属地初审
  174. approve_status.add(Constant.ProjectApplicationStatus.CENTRE_AUDIT);//材料审核
  175. approve_status.add(Constant.ProjectApplicationStatus.DEPARTMENT_AUDIT);//处室(中心)审批
  176. approve_status.add(Constant.ProjectApplicationStatus.FINANCE_AUDIT);//财政审批
  177. approve_status.add(Constant.ProjectApplicationStatus.UPLOAD_REPORT);//待上传报告
  178. approve_status.add(Constant.ProjectApplicationStatus.APPROVED);//通过
  179. approve_status.add(Constant.ProjectApplicationStatus.REJECT_TO_COMPANY);//退回至企业
  180. approve_status.add(Constant.ProjectApplicationStatus.REJECT_TO_DEPARTMENT);//退回至处室
  181. approve_status.add(Constant.ProjectApplicationStatus.NOTAPPROVED);//不通过
  182. approve_status.add(Constant.ProjectApplicationStatus.UPLOAD_CS);//待财政上传
  183. approve_status.add(Constant.ProjectApplicationStatus.UPLOAD_CZ);//待处室上传
  184. approve_status.add(Constant.ProjectApplicationStatus.COMMIT_FILE);//待中心窗口上传
  185. criteria.andIn("approve_status", approve_status);//待中心窗口上传
  186. if (ShiroUtils.getUserType().equals(Constant.UserType.STREET)) {
  187. criteria.andIn("company_id", company_ids);
  188. }
  189. List<ProjectApplication> projectList = projectApplicationDao.selectByExample(example);
  190. for (ProjectApplication project : projectList) {
  191. result.add(project.getId().toString());
  192. }
  193. return result;
  194. }
  195. public PageInfo<ApplicationDto> findPage(Integer pageNum, Integer pageSize, ParamApplication paramApplication, String type) {
  196. paramApplication.setApproval_type(Constant.DictionaryType.PROJECT_APPLICATION);
  197. if (Objects.equals("1", type)) {
  198. //paramApplication.setProjectIds(getProjectIdsd()); //原逻辑
  199. paramApplication.setProjectIds(getProjectIdsByGroup());//新逻辑
  200. } else if (Objects.equals("0", type)) {
  201. paramApplication.setProjectIds(getProjectIdsy());
  202. } else if (Objects.equals("2", type)) {
  203. if (ShiroUtils.getUserType().equals(Constant.UserType.STREET)) {
  204. paramApplication.setStreet_id(ShiroUtils.getStreetId() + "");
  205. }
  206. paramApplication.setProjectIds(getProjectIdsc());
  207. }
  208. String year = paramApplication.getProject_year();
  209. if (year != null && !year.equals("")) {
  210. paramApplication.setProject_year_date(year + "-01-01 00:00:00");
  211. }
  212. PageHelper.startPage(pageNum, pageSize);
  213. List<ApplicationDto> applicationDtoList = projectApplicationDao.findPage(paramApplication);
  214. for (ApplicationDto app : applicationDtoList) {
  215. if (null != app.getProject_type()) {
  216. ProjectType projectType = projectTypeService.findById(Integer.parseInt(app.getProject_type()));
  217. //String type_name = dictionaryItemService.findNameByTypeAndValue(Constant.DictionaryType.PROJECT_APPLICATION_TYPE, app.getProject_type());
  218. app.setProject_type(projectType.getType_name());
  219. }
  220. if (null != app.getApprove_status()) {
  221. String status_name = dictionaryItemService.findNameByTypeAndValue(Constant.DictionaryType.PROJECT_APPROVE_STATUS, app.getApprove_status());
  222. app.setStatedesc(status_name);
  223. }
  224. }
  225. return new PageInfo<ApplicationDto>(applicationDtoList);
  226. }
  227. public PageInfo<ProjectApplication> findPage_backup(Integer pageNum, Integer pageSize, String keyword,
  228. ProjectApplicationSearchCondition searchCondition) {
  229. if (ShiroUtils.getUserType().equals(Constant.UserType.STREET)) {
  230. Integer street_id = ShiroUtils.getStreetId();
  231. searchCondition.setStreet_id(street_id);
  232. if (searchCondition.getIsPendingAudit().equals(Constant.PendingAuditStatus.PENDING_AUDIT)) {
  233. //待属地审核
  234. searchCondition.setApprove_status(Constant.ProjectApplicationStatus.LOCAL_AUDIT);
  235. searchCondition.setPendingAuditStatus(Constant.ProjectApplicationStatus.LOCAL_AUDIT);
  236. } else if (searchCondition.getIsPendingAudit().equals(Constant.PendingAuditStatus.NOT_PENDING_AUDIT)) {
  237. //属地审核过的
  238. searchCondition.setPendingAuditStatus(Constant.ProjectApplicationStatus.LOCAL_AUDIT);
  239. /*String streetName = ShiroUtils.getUserEntity().getStreet_name();
  240. if (null != streetName) {
  241. searchCondition.setAuditDept(streetName);
  242. }*/
  243. //街道人员只能看到自己审核过的数据
  244. searchCondition.setChecker_id(ShiroUtils.getUserId());
  245. } else if (searchCondition.getIsPendingAudit().equals(Constant.PendingAuditStatus.PENDING_ALL)) {
  246. //属地所有待审核已审核
  247. }
  248. }
  249. PageHelper.startPage(pageNum, pageSize);
  250. List<ProjectApplication> list = projectApplicationDao.findApproveList(searchCondition);
  251. for (ProjectApplication projectApply : list) {
  252. projectApply = projectApplicationService.getFullApplicationInfo(projectApply);
  253. }
  254. return new PageInfo<ProjectApplication>(list);
  255. }
  256. public void approve(ProjectApprovalDto approval) {
  257. if (null != approval.getApply_id()) {
  258. approval.setApproval_department(ShiroUtils.getUserEntity().getStreet_name());
  259. ProjectApplication apply = projectApplicationService.findById(approval.getApply_id());
  260. if (null != apply) {
  261. //短信所需参数
  262. Map<String, String> params = new HashMap<>();
  263. User companyAdmin = userService.findCompanyAdmin(apply.getCompany_id(), approval.getApply_id(), Constant.DictionaryType.PROJECT_APPLICATION);
  264. params.put("project_no", apply.getApply_no());
  265. params.put("apply_name", Constant.ProjectType.PROJECT_APPLICATION);
  266. if (approval.getStatus().equals(Constant.ApproveButtonStatus.APPROVED)) {
  267. //通过
  268. apply.setApprove_status(Constant.ProjectApplicationStatus.CENTRE_AUDIT);
  269. //找出下一审核人
  270. String nextChecker = get_XMSBCLSLZ_Checkers();
  271. if (StringUtils.isBlank(nextChecker)) {
  272. throw new BaseException("项目申报材料受理组没有配置人员,请联系管理员配置!");
  273. }
  274. insertApproval(apply, Constant.OperType.APPROVED, nextChecker, approval);
  275. } else if (approval.getStatus().equals(Constant.ApproveButtonStatus.NOTAPPROVED)) {
  276. //不通过
  277. apply.setApprove_status(Constant.ProjectApplicationStatus.NOTAPPROVED);
  278. apply.setApply_status(Constant.ProjectApplyStatus.NOTAPPROVED);
  279. String nextChecker = String.valueOf(apply.getCreate_by());
  280. insertApproval(apply, Constant.OperType.REJECT, nextChecker, approval);
  281. //通知企业,短信。
  282. try {
  283. String tempCode = Constant.SMS_TemplateCode.RPOJECT_MATTERS_UNPASS;
  284. AlibabaSMSUtil.sendSMS(
  285. companyAdmin.getPhone(), tempCode, Constant.SINGNAMW, JSONObject.toJSONString(params));
  286. // projectDeclarationService.sendProjectSMSToCompany(ShiroUtils.getUserEntity().getStreet_name(), apply, Constant.OperType.NOTAPPROVED);
  287. } catch (ClientException | InterruptedException e) {
  288. // throw new BaseException("短信接口异常!发送短信失败!");
  289. }
  290. } else if (approval.getStatus().equals(Constant.ApproveButtonStatus.REJECT)) {
  291. //退回修改
  292. apply.setApprove_status(Constant.ProjectApplicationStatus.REJECT_TO_COMPANY);
  293. apply.setApply_status(Constant.ProjectApplyStatus.REJECT);
  294. String nextChecker = String.valueOf(apply.getCreate_by());
  295. insertApproval(apply, Constant.OperType.REJECT, nextChecker, approval);
  296. //通知企业,短信。
  297. try {
  298. String tempCode = Constant.SMS_TemplateCode.RPOJECT_MATTERS_REJECT;
  299. AlibabaSMSUtil.sendSMS(
  300. companyAdmin.getPhone(), tempCode, Constant.SINGNAMW, JSONObject.toJSONString(params));
  301. // projectDeclarationService.sendProjectSMSToCompany(ShiroUtils.getUserEntity().getStreet_name(), apply, Constant.OperType.REJECT);
  302. } catch (ClientException | InterruptedException e) {
  303. // throw new BaseException("短信接口异常!发送短信失败!");
  304. }
  305. }
  306. saveMessage(apply, approval.getStatus());
  307. projectApplicationService.updateSelective(apply);
  308. }
  309. }
  310. }
  311. public void saveMessage(ProjectApplication apply, String status) {
  312. ProjectDeclaration projectDeclaration = projectDeclarationService.findById(apply.getDeclaration_id());
  313. String projectName = projectDeclaration.getProject_name();
  314. String message = "";
  315. Company company = companyService.findById(apply.getCompany_id());
  316. Message messages = new Message();
  317. messages.setApply_id(apply.getId());
  318. messages.setBusiness_type(Constant.Message_Business_type.PROJECT_APPLY);
  319. if (Constant.ApproveButtonStatus.APPROVED.equals(status)) {
  320. messages.setTitle("提醒中心审核");
  321. Group group = groupService.findByNameOnly(Constant.XMSBCLSLZ);
  322. if (null == group) {
  323. throw new BaseException("操作失败,项目申报财政审核组没有该项目责任单位的审核人员,请联系管理员配置");
  324. }
  325. List<UserGroup> userGroups = userGroupService.findByGroupId(group.getId());
  326. StringBuffer sb = new StringBuffer("");
  327. for (UserGroup userGroup : userGroups) {
  328. User user = userService.findById(userGroup.getUser_id());
  329. message = user.getUser_name() + ",您好。“" + company.getCompany_name() + "企业”的“" + projectName + "项目”申请需要您审核。谢谢。";
  330. messages.setContent(message);
  331. int[] streetArrInt = new int[1];
  332. streetArrInt[0] = userGroup.getUser_id();
  333. messageService.saveMessageAndPush(messages, streetArrInt, Constant.UserType.GOVERNMENT);
  334. waitToDoService.completeAllTODO(apply.getId(), Constant.DictionaryType.PROJECT_APPLICATION);
  335. waitToDoService.newTODO("项目申报审核", "/projectDeclaration/approve/" + apply.getId(), Constant.WaitToDo_OperType.AUDIT, apply.getId(),
  336. Constant.DictionaryType.PROJECT_APPLICATION, apply.getApply_no(), userGroup.getUser_id().toString(), Constant.WaitToDo_IsSerial.IS_SERIAL, false);
  337. }
  338. } else if (Constant.ApproveButtonStatus.NOTAPPROVED.equals(status)) {
  339. messages.setTitle("提醒企业");
  340. message = company.getCompany_name() + ",您好。您提交的" + projectName + "项目申报,审核不通过,请知悉。";
  341. messages.setContent(message);
  342. int[] streetArrInt = new int[1];
  343. streetArrInt[0] = apply.getCompany_id();
  344. messageService.saveMessageAndPush(messages, streetArrInt, Constant.UserType.COMPANY);
  345. /* List<User> users = userService.findUsersByCompanyId(apply.getCompany_id());
  346. for (User user : users) {
  347. waitToDoService.newTODO("项目申报审核不通过", "/projectApplication/check/" + apply.getId(), Constant.WaitToDo_OperType.CONFIRM_AND_NOTIFY, apply.getId(),
  348. Constant.DictionaryType.PROJECT_APPLICATION, apply.getApply_no(), user.getId().toString(), Constant.WaitToDo_IsSerial.IS_SERIAL, false);
  349. }*/
  350. }
  351. if (Constant.ApproveButtonStatus.REJECT.equals(status)) {
  352. messages.setTitle("提醒企业");
  353. message = company.getCompany_name() + ",您好。您提交的" + projectName + "项目申报,请修改后重新提交,谢谢。";
  354. messages.setContent(message);
  355. int[] streetArrInt = new int[1];
  356. streetArrInt[0] = apply.getCompany_id();
  357. messageService.saveMessageAndPush(messages, streetArrInt, Constant.UserType.COMPANY);
  358. List<User> users = userService.findUsersByCompanyId(apply.getCompany_id());
  359. waitToDoService.completeAllTODO(apply.getId(), Constant.DictionaryType.PROJECT_APPLICATION);
  360. for (User user : users) {
  361. waitToDoService.newTODO("项目申报编辑", "/projectApprove/approve/" + apply.getId(), Constant.WaitToDo_OperType.EDIT, apply.getId(),
  362. Constant.DictionaryType.PROJECT_APPLICATION, apply.getApply_no(), user.getId().toString(), Constant.WaitToDo_IsSerial.IS_SERIAL, false);
  363. }
  364. }
  365. }
  366. private String get_XMSBCLSLZ_Checkers() {
  367. //根据工作组名称查出工作组
  368. Group group = groupService.findByNameAndUserType(Constant.XMSBCLSLZ, null, Constant.UserType.GOVERNMENT, null);
  369. //如果不为空
  370. if (null != group) {
  371. //根据工作组id查出UserGroup
  372. List<UserGroup> list = userGroupService.findByGroupId(group.getId());
  373. if (null == list || list.size() == 0) {
  374. throw new BaseException("项目申报材料受理组暂无审核人员,请联系政府管理员配置!");
  375. }
  376. //构建一个StringBuffer 存放下一审核人id
  377. StringBuffer sb = new StringBuffer("");
  378. for (UserGroup userGroup : list) {
  379. Integer userId = userGroup.getUser_id();
  380. sb.append(userId + ",");
  381. }
  382. return sb.toString();
  383. }
  384. return null;
  385. }
  386. //插审核工作流表
  387. public void insertApproval(ProjectApplication apply, String oper_type, String nextChecker, ProjectApprovalDto approval) {
  388. Approval latestApproval = approvalService.getLatestApproval(apply.getId(), Constant.DictionaryType.PROJECT_APPLICATION);
  389. //设置审核完成时间
  390. latestApproval.setDeal_time(DateUtil.getTimeString(new Date()));
  391. approvalService.updateSelective(latestApproval);
  392. //添加新审核流
  393. Approval approvalInfo = new Approval();
  394. approvalInfo.setApply_id(apply.getId());
  395. approvalInfo.setBefore_approvalstatus(latestApproval.getAfter_approvalstatus());
  396. approvalInfo.setAfter_approvalstatus(apply.getApprove_status());
  397. approvalInfo.setApproval_round(latestApproval.getApproval_round());
  398. approvalInfo.setChecker(ShiroUtils.getUserId());
  399. approvalInfo.setNextchecker(nextChecker);
  400. approvalInfo.setType(Constant.DictionaryType.PROJECT_APPLICATION);
  401. approvalInfo.setOper_type(oper_type);
  402. approvalInfo.setDepartment(approval.getApproval_department());
  403. approvalInfo.setApproval_comment(approval.getApproval_comment());
  404. approvalService.insertAndGetId(approvalInfo);
  405. }
  406. //是否当前审核人
  407. public Boolean isCurrChecker(Integer apply_id, ProjectApprovalDto approval) {
  408. Boolean isNextChecker = false;
  409. Approval latestApproval = approvalService.getLatestApproval(apply_id, Constant.DictionaryType.PROJECT_APPLICATION);
  410. User currUser = ShiroUtils.getUserEntity();
  411. Integer currUserId = currUser.getId();
  412. if (null != latestApproval.getNextchecker()) {
  413. String[] userIds = latestApproval.getNextchecker().split(",");
  414. if (userIds.length > 0) {
  415. for (String userId : userIds) {
  416. if (userId.equals(String.valueOf(currUserId))) {
  417. isNextChecker = true;
  418. }
  419. }
  420. //跳过是否下级审核人限制
  421. isNextChecker = true;
  422. if (isNextChecker) {
  423. //当前节点是否已经审核过(两个用户同时审核)
  424. if (
  425. null != approval.getBefore_approveStatus()
  426. && null != latestApproval.getBefore_approvalstatus()
  427. && approval.getBefore_approveStatus().equals(latestApproval.getBefore_approvalstatus())
  428. ) {
  429. //已经审核过
  430. isNextChecker = false;
  431. }
  432. }
  433. }
  434. //不检验了
  435. return true;
  436. } else {
  437. //存在老数据没有下一级审核人
  438. isNextChecker = true;
  439. }
  440. return isNextChecker;
  441. }
  442. }