ApplicationProcedureTemporaryController.java 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644
  1. package com.template.controller;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
  5. import com.template.api.ApplicationProcedureTemporaryControllerAPI;
  6. import com.template.common.utils.TimeExchange;
  7. import com.template.component.WeiXiaoComponent;
  8. import com.template.model.dto.AppletApprovalProcessDto;
  9. import com.template.model.dto.ApplicationProcedureTemporaryDto;
  10. import com.template.model.dto.ApprovalProcessDto;
  11. import com.template.model.pojo.*;
  12. import com.template.model.result.CommonResult;
  13. import com.template.model.result.PageUtils;
  14. import com.template.model.vo.ApplicationProcedureTemporaryVo;
  15. import com.template.services.*;
  16. import io.swagger.annotations.ApiOperation;
  17. import lombok.extern.slf4j.Slf4j;
  18. import org.springframework.beans.BeanUtils;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.util.StringUtils;
  21. import org.springframework.web.bind.annotation.GetMapping;
  22. import org.springframework.web.bind.annotation.RestController;
  23. import java.text.ParseException;
  24. import java.time.LocalDateTime;
  25. import java.time.format.DateTimeFormatter;
  26. import java.util.ArrayList;
  27. import java.util.Arrays;
  28. import java.util.Calendar;
  29. import java.util.List;
  30. import java.util.stream.Collectors;
  31. /**
  32. * <p>
  33. * 前端控制器
  34. * </p>
  35. *
  36. * @author ceshi
  37. * @since 2024-03-05
  38. */
  39. @RestController
  40. @Slf4j
  41. //加密
  42. //@DESRespondSecret
  43. public class ApplicationProcedureTemporaryController implements ApplicationProcedureTemporaryControllerAPI {
  44. @Autowired
  45. ApplicationProcedureTemporaryService applicationProcedureTemporaryService;
  46. @Autowired
  47. ApplicationProcedureSettingService applicationProcedureSettingService;
  48. @Autowired
  49. PermissionSettingService permissionSettingService;
  50. @Autowired
  51. AdminMenuService adminMenuService;
  52. @Autowired
  53. AdminService adminService;
  54. @Autowired
  55. UsersService usersService;
  56. @Autowired
  57. OrganizationService organizationService;
  58. @Autowired
  59. WeiXiaoComponent weiXiaoComponent;
  60. @Override
  61. public CommonResult save(ApplicationProcedureTemporaryDto applicationProcedureDto) {
  62. log.info("入参"+applicationProcedureDto.toString());
  63. if (ObjectUtils.isEmpty(applicationProcedureDto)) {
  64. return CommonResult.fail();
  65. }
  66. //一周可定天数可优化为前台配置
  67. int countConfig=2;
  68. Integer usersId = applicationProcedureDto.getUsersId();
  69. // 一个人只能有一个待审批的
  70. List<ApplicationProcedureTemporary> list = applicationProcedureTemporaryService.list(new QueryWrapper<ApplicationProcedureTemporary>()
  71. .eq("users_id", usersId)
  72. .ne("status", "0"));
  73. String startDto=applicationProcedureDto.getStartTime();
  74. String endDto=applicationProcedureDto.getEndTime();
  75. //周日-周1为上周
  76. int dtoCount=checkWeek(startDto,endDto);
  77. if(startDto.compareTo(endDto)>=0){
  78. log.info("开始时间不能大于结束时间");
  79. return CommonResult.fail("开始时间不能大于结束时间");
  80. }
  81. if(dtoCount==-1||dtoCount>countConfig){
  82. log.info("申请日期不能跨周,一周不能超过"+countConfig+"天,请重新申请");
  83. return CommonResult.fail("申请日期不能跨周,一周不能超过"+countConfig+"天,请重新申请");
  84. }
  85. //筛选同一周数据
  86. if (!list.isEmpty()){
  87. String[] arr =TimeExchange.getCurrentWeekTimeFrame(startDto);
  88. //开始时间为本周
  89. list=list.stream().filter(a -> a.getStartTime().substring(0,10).compareTo(arr[0])>=0&&a.getStartTime().substring(0,10).compareTo(arr[1])<=0)
  90. .collect(Collectors.toList());
  91. }
  92. if (!list.isEmpty()) {
  93. int aa =0;
  94. for (ApplicationProcedureTemporary apt : list) {
  95. if (apt.getEndTime().substring(0,10).equals(endDto.substring(0,10))
  96. || apt.getStartTime().substring(0,10).equals(startDto.substring(0,10))) {
  97. log.info("相同日期已有待审批申请,请勿重复申请");
  98. return CommonResult.fail("相同日期已有待审批申请,请勿重复申请");
  99. }
  100. aa=checkWeek(apt.getStartTime(),apt.getEndTime())+aa;
  101. //已申请+本次大于配置数量则不能申请
  102. if(countConfig<aa+dtoCount){
  103. log.info("总申请天数超过本周限额");
  104. return CommonResult.fail("总申请天数超过本周限额");
  105. }
  106. try {
  107. boolean a = TimeExchange.CompareDate(apt.getEndTime(), startDto, "yyyy-MM-dd");
  108. a= apt.getEndTime().substring(0, 10).equals(startDto.substring(0,10)) || a;
  109. boolean b = TimeExchange.CompareDate(endDto, apt.getStartTime(), "yyyy-MM-dd");
  110. b= apt.getStartTime().substring(0, 10).equals(endDto.substring(0,10)) || b;
  111. if (!(a || b)) {
  112. log.info("日期范围内已有待审批申请");
  113. return CommonResult.fail("日期范围内已有待审批申请");
  114. }
  115. } catch (ParseException e) {
  116. throw new RuntimeException(e);
  117. }
  118. }
  119. }
  120. List<Admin> admins=adminService.list(new QueryWrapper<>());
  121. Users users=usersService.getById(usersId);
  122. String orgId=users.getOrganId();
  123. if(ObjectUtils.isEmpty(organizationService.getById(orgId))){
  124. log.info("身份异常,申请提交失败");
  125. return CommonResult.fail("身份异常,申请提交失败");
  126. }
  127. ArrayList<String> strings = new ArrayList<>();
  128. strings=this.getCardNumbers(strings,admins,orgId);
  129. if(strings.isEmpty()){
  130. log.info("您暂无审批人,请联系管理员添加");
  131. return CommonResult.fail("您暂无审批人,请联系管理员添加");
  132. }
  133. ApplicationProcedureTemporary applicationProcedure = new ApplicationProcedureTemporary();
  134. BeanUtils.copyProperties(applicationProcedureDto, applicationProcedure);
  135. // 待审核
  136. applicationProcedure.setStatus("1");
  137. DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
  138. // 提交时间
  139. applicationProcedure.setSubmissionTime(LocalDateTime.now().format(dateTimeFormatter1));
  140. boolean save = applicationProcedureTemporaryService.save(applicationProcedure);
  141. if (save) {
  142. String content ="姓名:"+users.getUserName()+";开始时间:"+applicationProcedure.getStartTime()+"。结束时间:"+applicationProcedure.getEndTime()
  143. +"。原因:"+applicationProcedure.getReasonApplication()+"。";
  144. weiXiaoComponent.sendNotice(strings,"有一条新增审核", "审批通知",content,null);
  145. return CommonResult.ok();
  146. }
  147. return CommonResult.fail();
  148. }
  149. @Override
  150. public CommonResult list(int adminMenuId, String submissionStartTime, String submissionEndTime, String examineAndApproveStartTime, String examineAndApproveEndTime, String type, String department,String OrgIds, String key, int page, int size) {
  151. PermissionSetting permissionSetting = permissionSettingService.getById(adminMenuId);
  152. if (ObjectUtils.isEmpty(permissionSetting)) {
  153. return CommonResult.fail("非法进入");
  154. }
  155. // 判断该用户是否拥有权限
  156. String processManagement = permissionSetting.getProcessManagement();
  157. if (!"0".equals(processManagement) && !processManagement.contains("5")) {
  158. return CommonResult.fail("此账号暂无该权限");
  159. }
  160. if (ObjectUtils.isEmpty(page) || page <= 0) {
  161. page = 1;
  162. }
  163. if (ObjectUtils.isEmpty(size) || size <= 0) {
  164. size = 10;
  165. }
  166. PageUtils<ApplicationProcedureTemporaryVo> pageList = new PageUtils(new ArrayList(),0,size,page);
  167. if(!StringUtils.hasText(OrgIds)){
  168. return CommonResult.ok(pageList);
  169. }
  170. String[] arr=OrgIds.replaceAll(" ","").split(",");
  171. List<String> orgList = new ArrayList<>(Arrays.asList(arr));
  172. List<ApplicationProcedureSetting> list = applicationProcedureSettingService.list(new LambdaQueryWrapper<>());
  173. ApplicationProcedureSetting applicationProcedureSetting = list.get(0);
  174. String approverType = applicationProcedureSetting.getApproverType();
  175. Integer adminMenuId1 = permissionSetting.getAdminMenuId();
  176. AdminMenu byId = adminMenuService.getById(adminMenuId1);
  177. Integer parentId = byId.getParentId();
  178. //审批一次,角色等级不为0
  179. if ("1".equals(approverType)) {
  180. pageList = applicationProcedureTemporaryService.pageList(submissionStartTime, submissionEndTime, examineAndApproveStartTime, examineAndApproveEndTime, type, department, key, page, size,orgList);
  181. return CommonResult.ok(pageList);
  182. }
  183. if (parentId == 0) {
  184. // 全部则是没有待审批的全部
  185. if (ObjectUtils.isEmpty(type)) {
  186. type = "0,2,3";
  187. }
  188. pageList = applicationProcedureTemporaryService.parentPageList(submissionStartTime, submissionEndTime, examineAndApproveStartTime, examineAndApproveEndTime, type, department, key, page, size,orgList);
  189. return CommonResult.ok(pageList);
  190. }
  191. pageList = applicationProcedureTemporaryService.pageList(submissionStartTime, submissionEndTime, examineAndApproveStartTime, examineAndApproveEndTime, type, department, key, page, size,orgList);
  192. return CommonResult.ok(pageList);
  193. }
  194. @Override
  195. public CommonResult update(ApprovalProcessDto approvalProcessDto) {
  196. int adminMenuId = approvalProcessDto.getAdminMenuId();
  197. PermissionSetting permissionSetting = permissionSettingService.getById(adminMenuId);
  198. if (ObjectUtils.isEmpty(permissionSetting)) {
  199. return CommonResult.fail("非法进入");
  200. }
  201. // 判断该用户是否拥有权限
  202. // 判断该用户是否拥有权限
  203. String processManagement = permissionSetting.getProcessManagement();
  204. if (!"0".equals(processManagement) && !processManagement.contains("3") && !processManagement.contains("4")) {
  205. return CommonResult.fail("此账号暂无该权限");
  206. }
  207. int id = approvalProcessDto.getId();
  208. String status = approvalProcessDto.getStatus();
  209. String adminId = approvalProcessDto.getAdminId();
  210. String remark = approvalProcessDto.getRemark();
  211. ApplicationProcedureTemporary applicationProcedure = applicationProcedureTemporaryService.getById(id);
  212. if (ObjectUtils.isEmpty(applicationProcedure)) {
  213. return CommonResult.fail("参数异常");
  214. }
  215. String applicationProcedureStatus = applicationProcedure.getStatus();
  216. if ("0".equals(applicationProcedureStatus) || "3".equals(applicationProcedureStatus)) {
  217. return CommonResult.fail("已审批,无需再次审批");
  218. }
  219. // 判断是什么审核模式
  220. List<ApplicationProcedureSetting> list = applicationProcedureSettingService.list(new LambdaQueryWrapper<>());
  221. ApplicationProcedureSetting applicationProcedureSetting = list.get(0);
  222. String approverType = applicationProcedureSetting.getApproverType();
  223. // 审核人
  224. Integer adminMenuId1 = permissionSetting.getAdminMenuId();
  225. AdminMenu byId = adminMenuService.getById(adminMenuId1);
  226. // 角色等级
  227. Integer parentId = byId.getParentId();
  228. DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
  229. Users users=usersService.getById(applicationProcedure.getUsersId());
  230. // 当只需要审核一次
  231. if ("1".equals(approverType)) {
  232. // 只有最高级才能审批
  233. // 当为最高审批人
  234. if (parentId == 0) {
  235. String content ="您的申请未能通过审核,开始时间:"+applicationProcedure.getStartTime()+"。结束时间:"+applicationProcedure.getEndTime()
  236. +"。拒绝原因:"+approvalProcessDto.getRemark()+"。";
  237. String digest ="您的申请未能通过审核";
  238. if ("1".equals(status)) {
  239. status = "3";
  240. content ="您的申请审核已通过,开始时间:"+applicationProcedure.getStartTime()+"。结束时间:"+applicationProcedure.getEndTime()
  241. +"。请进入小程序点击预定。";
  242. digest ="您的申请审核已通过";
  243. }
  244. applicationProcedure.setStatus(status);
  245. applicationProcedure.setApproverId(adminId);
  246. // 审批时间
  247. applicationProcedure.setExamineAndApproveTime(LocalDateTime.now().format(dateTimeFormatter1));
  248. // 审批备注
  249. applicationProcedure.setExamineAndApproveRemark(remark);
  250. applicationProcedureTemporaryService.updateById(applicationProcedure);
  251. ArrayList<String> strings = new ArrayList<>();
  252. strings.add(users.getCardNumber());
  253. weiXiaoComponent.sendNotice(strings,digest, "审批通知",content,null);
  254. return CommonResult.ok();
  255. }
  256. return CommonResult.fail("权限不足");
  257. }
  258. // 当为最高审批人
  259. if (parentId == 0) {
  260. // 先判断是否已经被审批了
  261. if (!"2".equals(applicationProcedureStatus)) {
  262. // 当不是处理中时则无法审批
  263. return CommonResult.fail("当前无法审批");
  264. }
  265. String content ="您的申请未能通过审核,开始时间:"+applicationProcedure.getStartTime()+"。结束时间:"+applicationProcedure.getEndTime()
  266. +"。拒绝原因:"+approvalProcessDto.getRemark()+"。";
  267. String digest ="您的申请未能通过审核";
  268. if ("1".equals(status)) {
  269. status = "3";
  270. content ="您的申请审核已通过,开始时间:"+applicationProcedure.getStartTime()+"。结束时间:"+applicationProcedure.getEndTime()
  271. +"。请进入小程序点击预定。";
  272. digest ="您的申请审核已通过";
  273. }
  274. applicationProcedure.setStatus(status);
  275. applicationProcedure.setApproverId(adminId);
  276. // 审批时间
  277. applicationProcedure.setExamineAndApproveTime(LocalDateTime.now().format(dateTimeFormatter1));
  278. // 审批备注
  279. applicationProcedure.setExamineAndApproveRemark(remark);
  280. applicationProcedureTemporaryService.updateById(applicationProcedure);
  281. ArrayList<String> strings = new ArrayList<>();
  282. strings.add(users.getCardNumber());
  283. weiXiaoComponent.sendNotice(strings,digest, "审批通知",content,null);
  284. return CommonResult.ok();
  285. }
  286. String content1 ="您的申请未能通过初次审核,开始时间:"+applicationProcedure.getStartTime()+"。结束时间:"+applicationProcedure.getEndTime()
  287. +"。拒绝原因:"+approvalProcessDto.getRemark()+"。";
  288. String digest ="未能通过初次审核";
  289. if ("1".equals(status)) {
  290. status = "2";
  291. content1 ="您的申请初次审核已通过,开始时间:"+applicationProcedure.getStartTime()+"。结束时间:"+applicationProcedure.getEndTime()
  292. +"。目前尚待最终审批流程,请您耐心等候。";
  293. digest ="初次审核已通过";
  294. }
  295. applicationProcedure.setStatus(status);
  296. applicationProcedure.setSecondaryApproverId(adminId);
  297. // 审批时间
  298. applicationProcedure.setSecondaryExamineAndApproveTime(LocalDateTime.now().format(dateTimeFormatter1));
  299. // 审批备注
  300. applicationProcedure.setSecondaryExamineAndApproveRemark(remark);
  301. ArrayList<String> strings = new ArrayList<>();
  302. List<Admin> admins=adminService.list(new QueryWrapper<Admin>().eq("admin_menu_id",parentId));
  303. for(Admin admin:admins){
  304. if (StringUtils.hasText(admin.getCheckOrg())&&admin.getCheckOrg().indexOf(users.getOrganId()) > 0) {
  305. Users adminUser=usersService.getById(admin.getUsersId());
  306. strings.add(adminUser.getCardNumber());
  307. }
  308. }
  309. if(strings.isEmpty()){
  310. return CommonResult.fail("该流程没有上级审核人员,请联系管理员添加该部门上级审核角色");
  311. }
  312. boolean update = applicationProcedureTemporaryService.updateById(applicationProcedure);
  313. String content ="姓名:"+users.getUserName()+";开始时间:"+applicationProcedure.getStartTime()+"。结束时间:"+applicationProcedure.getEndTime()
  314. +"。原因:"+applicationProcedure.getReasonApplication()+"。次级审核备注:"+remark;
  315. //发给下级审批人员
  316. if(!"0".equals(status)){
  317. weiXiaoComponent.sendNotice(strings,"有一条新增审核", "审批通知",content,null);
  318. }
  319. //发给申请人
  320. strings.add(users.getCardNumber());
  321. weiXiaoComponent.sendNotice(strings,digest, "审批通知",content1,null);
  322. return CommonResult.ok();
  323. }
  324. @Override
  325. public CommonResult appletUpdate(AppletApprovalProcessDto appletApprovalProcessDto) {
  326. int id = appletApprovalProcessDto.getId();
  327. String status = appletApprovalProcessDto.getStatus();
  328. String adminMenuId = appletApprovalProcessDto.getAdminMenuId();
  329. String remark = appletApprovalProcessDto.getRemark();
  330. String adminId = appletApprovalProcessDto.getAdminId();
  331. // 判断对应的管理端是否有权限
  332. if (ObjectUtils.isEmpty(adminMenuId) && ObjectUtils.isEmpty(adminId)) {
  333. return CommonResult.fail("无审批权限");
  334. }
  335. PermissionSetting permissionSetting = permissionSettingService.getMenuPermissionSetting(adminMenuId);
  336. if (ObjectUtils.isEmpty(permissionSetting)) {
  337. return CommonResult.fail("无审批权限");
  338. }
  339. String processManagement = permissionSetting.getProcessManagement();
  340. if (!"0".equals(processManagement) && !processManagement.contains("3") && !processManagement.contains("4")) {
  341. return CommonResult.fail("此账号暂无该权限");
  342. }
  343. ApplicationProcedureTemporary applicationProcedure = applicationProcedureTemporaryService.getById(id);
  344. if (ObjectUtils.isEmpty(applicationProcedure)) {
  345. return CommonResult.fail("参数异常");
  346. }
  347. String applicationProcedureStatus = applicationProcedure.getStatus();
  348. if ("0".equals(applicationProcedureStatus) || "3".equals(applicationProcedureStatus)) {
  349. return CommonResult.fail("已审批,无需再次审批");
  350. }
  351. // 判断是什么审核模式
  352. List<ApplicationProcedureSetting> list = applicationProcedureSettingService.list(new LambdaQueryWrapper<>());
  353. ApplicationProcedureSetting applicationProcedureSetting = list.get(0);
  354. String approverType = applicationProcedureSetting.getApproverType();
  355. AdminMenu byId = adminMenuService.getById(adminMenuId);
  356. // 角色等级
  357. Integer parentId = byId.getParentId();
  358. DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
  359. Users users=usersService.getById(applicationProcedure.getUsersId());
  360. // 当只需要审核一次
  361. if ("1".equals(approverType)) {
  362. // 只有最高级才能审批
  363. // 当为最高审批人
  364. if (parentId == 0) {
  365. String content ="您的申请未能通过审核,开始时间:"+applicationProcedure.getStartTime()+"。结束时间:"+applicationProcedure.getEndTime()
  366. +"。拒绝原因:"+appletApprovalProcessDto.getRemark()+"。";
  367. String digest ="您的申请未能通过审核";
  368. if ("1".equals(status)) {
  369. status = "3";
  370. content ="您的申请审核已通过,开始时间:"+applicationProcedure.getStartTime()+"。结束时间:"+applicationProcedure.getEndTime()
  371. +"。请进入小程序点击预定。";
  372. digest ="您的申请审核已通过";
  373. }
  374. applicationProcedure.setStatus(status);
  375. applicationProcedure.setApproverId(adminId);
  376. // 审批时间
  377. applicationProcedure.setExamineAndApproveTime(LocalDateTime.now().format(dateTimeFormatter1));
  378. // 审批备注
  379. applicationProcedure.setExamineAndApproveRemark(remark);
  380. applicationProcedureTemporaryService.updateById(applicationProcedure);
  381. ArrayList<String> strings = new ArrayList<>();
  382. strings.add(users.getCardNumber());
  383. weiXiaoComponent.sendNotice(strings,digest, "审批通知",content,null);
  384. return CommonResult.ok();
  385. }
  386. return CommonResult.fail("权限不足");
  387. }
  388. // 当为最高审批人
  389. if (parentId == 0) {
  390. // 先判断是否已经被审批了
  391. if (!"2".equals(applicationProcedureStatus)) {
  392. // 当不是处理中时则无法审批
  393. return CommonResult.fail("当前无法审批");
  394. }
  395. String content ="申请未能通过审核,开始时间:"+applicationProcedure.getStartTime()+"。结束时间:"+applicationProcedure.getEndTime()
  396. +"。拒绝原因:"+appletApprovalProcessDto.getRemark()+"。";
  397. String digest ="您的申请未能通过审核";
  398. if ("1".equals(status)) {
  399. status = "3";
  400. content ="您的申请审核已通过,开始时间:"+applicationProcedure.getStartTime()+"。结束时间:"+applicationProcedure.getEndTime()
  401. +"。请进入小程序点击预定。";
  402. digest ="您的申请审核已通过";
  403. }
  404. applicationProcedure.setStatus(status);
  405. applicationProcedure.setApproverId(adminId);
  406. // 审批时间
  407. applicationProcedure.setExamineAndApproveTime(LocalDateTime.now().format(dateTimeFormatter1));
  408. // 审批备注
  409. applicationProcedure.setExamineAndApproveRemark(remark);
  410. applicationProcedureTemporaryService.updateById(applicationProcedure);
  411. ArrayList<String> strings = new ArrayList<>();
  412. strings.add(users.getCardNumber());
  413. weiXiaoComponent.sendNotice(strings,digest, "审批通知",content,null);
  414. return CommonResult.ok();
  415. }
  416. String content1 ="申请未能通过审核,开始时间:"+applicationProcedure.getStartTime()+"。结束时间:"+applicationProcedure.getEndTime()
  417. +"。拒绝原因:"+appletApprovalProcessDto.getRemark()+"。";
  418. String digest ="您的申请未能通过审核";
  419. if ("1".equals(status)) {
  420. status = "2";
  421. content1 ="已顺利通过初审环节,开始时间:"+applicationProcedure.getStartTime()+"。结束时间:"+applicationProcedure.getEndTime()
  422. +"。目前尚待最终审批流程,请您耐心等候。";
  423. digest ="已顺利通过初审环节";
  424. }
  425. applicationProcedure.setStatus(status);
  426. applicationProcedure.setSecondaryApproverId(adminId);
  427. // 审批时间
  428. applicationProcedure.setSecondaryExamineAndApproveTime(LocalDateTime.now().format(dateTimeFormatter1));
  429. // 审批备注
  430. applicationProcedure.setSecondaryExamineAndApproveRemark(remark);
  431. ArrayList<String> strings = new ArrayList<>();
  432. List<Admin> admins=adminService.list(new QueryWrapper<Admin>().eq("admin_menu_id",parentId));
  433. for(Admin admin:admins){
  434. if (StringUtils.hasText(admin.getCheckOrg())&&admin.getCheckOrg().indexOf(users.getOrganId()) > 0) {
  435. Users adminUser=usersService.getById(admin.getUsersId());
  436. strings.add(adminUser.getCardNumber());
  437. }
  438. }
  439. if(strings.isEmpty()){
  440. return CommonResult.fail("该流程没有上级审核人员,请联系管理员添加该部门上级审核角色");
  441. }
  442. applicationProcedureTemporaryService.updateById(applicationProcedure);
  443. String content ="姓名:"+users.getUserName()+";开始时间:"+applicationProcedure.getStartTime()+"。结束时间:"+applicationProcedure.getEndTime()
  444. +"。原因:"+applicationProcedure.getReasonApplication()+"。次级审核备注:"+remark;
  445. //发给下级审批人员
  446. if(!"0".equals(status)){
  447. weiXiaoComponent.sendNotice(strings,"有一条新增审核", "审批通知",content,null);
  448. }
  449. //发给申请人
  450. strings.add(users.getCardNumber());
  451. weiXiaoComponent.sendNotice(strings,digest, "审批通知",content1,null);
  452. return CommonResult.ok();
  453. }
  454. @Override
  455. public CommonResult appletList(int adminMenuId, String startTime, String endTime, String status,String OrgIds, int page, int size) {
  456. if (ObjectUtils.isEmpty(page) || page <= 0) {
  457. page = 1;
  458. }
  459. if (ObjectUtils.isEmpty(size) || size <= 0) {
  460. size = 10;
  461. }
  462. PageUtils<ApplicationProcedureTemporaryVo> pageList = new PageUtils(new ArrayList(),0,size,page);
  463. if(!StringUtils.hasText(OrgIds)){
  464. return CommonResult.ok(pageList);
  465. }
  466. String[] arr=OrgIds.replaceAll(" ","").split(",");
  467. List<String> orgList = new ArrayList<>(Arrays.asList(arr));
  468. List<ApplicationProcedureSetting> list = applicationProcedureSettingService.list(new LambdaQueryWrapper<>());
  469. ApplicationProcedureSetting applicationProcedureSetting = list.get(0);
  470. String approverType = applicationProcedureSetting.getApproverType();
  471. AdminMenu byId = adminMenuService.getById(adminMenuId);
  472. Integer parentId = byId.getParentId();
  473. //审批一次,角色等级不为0
  474. if ("1".equals(approverType)) {
  475. if (parentId != 0) {
  476. return CommonResult.fail("暂无查看权限");
  477. } else {
  478. pageList = applicationProcedureTemporaryService.pageAppletList(startTime, endTime, status, page, size,orgList);
  479. return CommonResult.ok(pageList);
  480. }
  481. }
  482. if (parentId == 0) {
  483. // 全部则是没有待审批的全部
  484. if (ObjectUtils.isEmpty(status)) {
  485. status = "0,2,3";
  486. }
  487. pageList = applicationProcedureTemporaryService.parentAppletPageList(startTime, endTime, status, page, size,orgList);
  488. return CommonResult.ok(pageList);
  489. }
  490. pageList = applicationProcedureTemporaryService.pageAppletList(startTime, endTime, status, page, size,orgList);
  491. return CommonResult.ok(pageList);
  492. }
  493. //region 获取是否跨周 且不超过两天
  494. public static int checkWeek(String strDate1,String strDate2) {
  495. Calendar calendar = Calendar.getInstance();
  496. calendar.setTime(TimeExchange.StringToDate(strDate1,"yyyy-MM-dd"));
  497. int week = calendar.get(Calendar.WEEK_OF_YEAR);
  498. int month = calendar.get(Calendar.MONTH);
  499. if(week==1&&month==11){
  500. week=53;
  501. }
  502. int day = calendar.get(Calendar.DAY_OF_WEEK)-1;
  503. if (day==0){
  504. day=7;
  505. week=week-1;
  506. }
  507. Calendar calendar1 = Calendar.getInstance();
  508. calendar1.setTime(TimeExchange.StringToDate(strDate2,"yyyy-MM-dd"));
  509. int week1 = calendar1.get(Calendar.WEEK_OF_YEAR);
  510. int month1 = calendar1.get(Calendar.MONTH);
  511. if(week1==1&&month1==11){
  512. week1=53;
  513. }
  514. int day1 = calendar1.get(Calendar.DAY_OF_WEEK)-1;
  515. if (day1==0){
  516. day1=7;
  517. week1=week1-1;
  518. }
  519. if(week==week1||week-week1==52){
  520. return day1-day;
  521. }else if (week+1==week1&&day1==1){
  522. return day1+7-day;
  523. }else{
  524. return -1;
  525. }
  526. }
  527. // @GetMapping("/test")
  528. // @ApiOperation(value = "小程序-临时人员流程管理展示", notes = "小程序-临时人员流程管理展示", httpMethod = "GET")
  529. // CommonResult test(){
  530. // ArrayList<String> strings = new ArrayList<>();
  531. // strings.add("20240702");
  532. // weiXiaoComponent.sendNotice(strings,"公寓办理入住成功", "办理入住成功","content",null);
  533. // return null;
  534. // };
  535. //获取下一级审批人员微校卡号集合
  536. private ArrayList<String> getCardNumbers(ArrayList<String> strings,List<Admin> admins,String orgId){
  537. List<ApplicationProcedureSetting> list = applicationProcedureSettingService.list(new LambdaQueryWrapper<>());
  538. ApplicationProcedureSetting applicationProcedureSetting = list.get(0);
  539. String approverType = applicationProcedureSetting.getApproverType();
  540. for(Admin admin:admins){
  541. if (StringUtils.hasText(admin.getCheckOrg())&&admin.getCheckOrg().indexOf(orgId) >= 0) {
  542. if ("1".equals(approverType)) {
  543. Users users=usersService.getById(admin.getUsersId());
  544. strings.add(users.getCardNumber());
  545. }else{
  546. AdminMenu byId = adminMenuService.getById(admin.getAdminMenuId());
  547. if(byId.getParentId()!=0){
  548. Users users=usersService.getById(admin.getUsersId());
  549. strings.add(users.getCardNumber());
  550. }
  551. }
  552. }
  553. }
  554. return strings;
  555. }
  556. }