CheckManageController.java 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805
  1. package com.zd.security.controller;
  2. import cn.hutool.core.collection.CollectionUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  5. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  6. import com.zd.common.core.annotation.Log;
  7. import com.zd.common.core.annotation.PreAuthorize;
  8. import com.zd.common.core.log.BusinessType;
  9. import com.zd.common.core.utils.BeanUtils;
  10. import com.zd.common.core.web.controller.AbstractController;
  11. import com.zd.model.domain.ResultData;
  12. import com.zd.model.domain.per.PerFun;
  13. import com.zd.model.domain.per.PerPrefix;
  14. import com.zd.security.api.bo.CheckManageBo;
  15. import com.zd.security.api.bo.QueryCheckManageListParam;
  16. import com.zd.security.api.bo.QueryManageListParam;
  17. import com.zd.security.api.vo.CheckHazardInfoVo;
  18. import com.zd.security.api.vo.CheckManageListVo;
  19. import com.zd.security.api.vo.CheckManageVo;
  20. import com.zd.security.entity.*;
  21. import com.zd.security.scope.DataPermission;
  22. import com.zd.security.scope.DataPermissionAspect;
  23. import com.zd.security.service.*;
  24. import com.zd.security.service.impl.WordService;
  25. import com.zd.system.api.feign.RemoteUserService;
  26. import io.swagger.annotations.Api;
  27. import io.swagger.annotations.ApiImplicitParam;
  28. import io.swagger.annotations.ApiOperation;
  29. import org.apache.commons.lang3.StringUtils;
  30. import org.jetbrains.annotations.Nullable;
  31. import org.springframework.beans.factory.annotation.Autowired;
  32. import org.springframework.web.bind.annotation.*;
  33. import javax.servlet.http.HttpServletResponse;
  34. import java.time.LocalDate;
  35. import java.time.LocalDateTime;
  36. import java.time.LocalTime;
  37. import java.util.*;
  38. import java.util.concurrent.locks.Lock;
  39. import java.util.concurrent.locks.ReentrantLock;
  40. import java.util.function.Consumer;
  41. import java.util.stream.Collectors;
  42. /**
  43. * <p>
  44. * 检查管理表 前端控制器
  45. * </p>
  46. *
  47. * @author hzw
  48. * @since 2023-04-21
  49. */
  50. @Api(tags = "检查管理")
  51. @RestController
  52. @RequestMapping("/checkManage")
  53. public class CheckManageController extends AbstractController {
  54. private Lock lock = new ReentrantLock();
  55. @Autowired
  56. private CheckManageService checkManageService;
  57. @Autowired
  58. private CheckHazardService checkHazardService;
  59. @Autowired
  60. private WordService wordService;
  61. @Autowired
  62. private CheckPlanService checkPlanService;
  63. @Autowired
  64. private CheckMemberService checkMemberService;
  65. @Autowired
  66. private CheckStaffUserService checkStaffUserService;
  67. @Autowired
  68. private RemoteUserService remoteUserService;
  69. /**
  70. * 添加计划管理
  71. *
  72. * @Param [checkManageBo]
  73. * @Return com.zd.model.domain.ResultData
  74. **/
  75. @Log(title = "添加计划管理", businessType = BusinessType.INSERT)
  76. @ApiOperation("添加计划管理")
  77. @PostMapping(value = "/add")
  78. public ResultData add(@RequestBody CheckManageBo checkManageBo) {
  79. //参数检查
  80. paramCheck.notNull(checkManageBo).strNotEmpty(checkManageBo.getTitle()).notNull(checkManageBo.getCheckType())
  81. .notNull(checkManageBo.getCycleStartTime()).notNull(checkManageBo.getCycleEndTime());
  82. checkManageBo.setLoginUserName(getCurrentUserName());
  83. checkManageBo.setLoginUserId(getCurrentUserId());
  84. if (checkManageService.addcheckManage(checkManageBo)) {
  85. return ResultData.success("操作成功");
  86. }
  87. return ResultData.fail("操作失败");
  88. }
  89. /**
  90. * 修改检查管理
  91. *
  92. * @Param [checkManageBo]
  93. * @Return com.zd.model.domain.ResultData
  94. **/
  95. @Log(title = "修改检查管理", businessType = BusinessType.UPDATE)
  96. @PreAuthorize(hasAnyPermi = {PerPrefix.SECURITY_CHECK_MANAGE + PerFun.EDIT,
  97. PerPrefix.SECURITY_CHECK_MANAGE_1 + PerFun.EDIT,
  98. PerPrefix.SECURITY_CHECK_MANAGE_2 + PerFun.EDIT,
  99. PerPrefix.SECURITY_CHECK_MANAGE_3 + PerFun.EDIT,
  100. PerPrefix.SECURITY_CHECK_MANAGE_4 + PerFun.EDIT})
  101. @ApiOperation("修改检查管理")
  102. @PutMapping(value = "/update")
  103. public ResultData update(@RequestBody CheckManageBo checkManageBo) {
  104. //参数检查
  105. paramCheck.notNull(checkManageBo).strNotEmpty(checkManageBo.getTitle()).notNull(checkManageBo.getCheckType());
  106. checkManageBo.setLoginUserName(getCurrentUserName());
  107. checkManageBo.setLoginUserId(getCurrentUserId());
  108. if(checkManageService.updateCheckManage(checkManageBo)){
  109. return ResultData.success("操作成功");
  110. }
  111. return ResultData.fail("操作失败");
  112. }
  113. /**
  114. * 小程序修改检查管理
  115. *
  116. * @Param [checkManageBo]
  117. * @Return com.zd.model.domain.ResultData
  118. **/
  119. @Log(title = "小程序修改检查管理", businessType = BusinessType.UPDATE)
  120. @ApiOperation("小程序修改检查管理")
  121. @PutMapping(value = "/appUpdate")
  122. public ResultData appUpdate(@RequestBody CheckManageBo checkManageBo) {
  123. //参数检查
  124. paramCheck.notNull(checkManageBo).strNotEmpty(checkManageBo.getTitle()).notNull(checkManageBo.getCheckType());
  125. checkManageBo.setLoginUserName(getCurrentUserName());
  126. checkManageBo.setLoginUserId(getCurrentUserId());
  127. if(checkManageService.updateCheckManage(checkManageBo)){
  128. return ResultData.success("操作成功");
  129. }
  130. return ResultData.fail("操作失败");
  131. }
  132. /**
  133. * 通过id查询巡查管理
  134. *
  135. * @Param [id 巡查管理id]
  136. * @Return com.zd.model.domain.ResultData
  137. **/
  138. @ApiOperation("通过id查询巡查管理")
  139. @PreAuthorize(hasAnyPermi = {PerPrefix.SECURITY_CHECK_MANAGE + PerFun.QUERY,PerPrefix.SECURITY_CHECK_MANAGE_1 + PerFun.QUERY
  140. ,PerPrefix.SECURITY_CHECK_MANAGE_2 + PerFun.QUERY,PerPrefix.SECURITY_CHECK_MANAGE_3 + PerFun.QUERY})
  141. @GetMapping(value = "/findCheckManage")
  142. @ApiImplicitParam(name = "id", value = "巡查管理id", required = true, dataTypeClass = Long.class)
  143. public ResultData find(@RequestParam("id") Long id) {
  144. CheckManageVo checkManageVo = checkManageService.findCheckManage(id);
  145. return ResultData.success(checkManageVo);
  146. }
  147. /**
  148. * 小程序通过id查询巡查管理
  149. *
  150. * @Param [id 巡查管理id]
  151. * @Return com.zd.model.domain.ResultData
  152. **/
  153. @ApiOperation("小程序通过id查询巡查管理")
  154. @GetMapping(value = "/appFindCheckManage")
  155. @ApiImplicitParam(name = "id", value = "巡查管理id", required = true, dataTypeClass = Long.class)
  156. public ResultData appFindCheckManage(@RequestParam("id") Long id) {
  157. CheckManageVo checkManageVo = checkManageService.findCheckManage(id);
  158. return ResultData.success(checkManageVo);
  159. }
  160. /**
  161. * 获取巡查计划管理列表(分页)
  162. *
  163. * @Param [checkManageBo]
  164. * @Return com.zd.model.domain.ResultData
  165. **/
  166. @ApiOperation("获取巡查计划管理列表(分页)")
  167. //@DataPermission(permissionStr = PerPrefix.SECURITY_CHECK_MANAGE)
  168. @DataPermission
  169. @PreAuthorize(hasAnyPermi = {PerPrefix.SECURITY_CHECK_MANAGE + PerFun.LIST,PerPrefix.SECURITY_CHECK_MANAGE_1 + PerFun.LIST})
  170. @PostMapping(value = "/list")
  171. public ResultData list(@RequestBody QueryCheckManageListParam queryCheckManageListParam) {
  172. lock.lock();
  173. try {
  174. List<CheckMember> checkMembers = checkMemberService.list(new LambdaQueryWrapper<CheckMember>().eq(CheckMember::getUserId, getCurrentUserId()));
  175. String checkPlanIds = Optional.ofNullable(checkMembers).orElseGet(Collections::emptyList).stream().map(CheckMember::getCheckPlanId).map(i -> String.valueOf(i)).collect(Collectors.joining(","));
  176. QueryWrapper <CheckStaffUser> wrapperCheckUser = new QueryWrapper<>();
  177. wrapperCheckUser.lambda().eq(CheckStaffUser::getStaffType,1)
  178. .eq(CheckStaffUser::getUserId,getCurrentUserId());
  179. List<CheckStaffUser> checkStaffUserList = checkStaffUserService.list(wrapperCheckUser);
  180. String subIds = Optional.ofNullable(checkStaffUserList).orElseGet(Collections::emptyList).stream().map(CheckStaffUser::getSubId).map(i -> String.valueOf(i)).collect(Collectors.joining(","));
  181. Page<CheckManage> page = getCheckManagePage(queryCheckManageListParam, checkPlanIds, subIds);
  182. ResultData<Page<CheckManageListVo>> checkManageListVoPage = getResultData(page);
  183. if (checkManageListVoPage != null) return checkManageListVoPage;
  184. return ResultData.success(page);
  185. }finally {
  186. lock.unlock();
  187. }
  188. }
  189. /**
  190. * 小程序获取巡查计划管理列表(分页)
  191. *
  192. * @Param [checkManageBo]
  193. * @Return com.zd.model.domain.ResultData
  194. **/
  195. @ApiOperation("小程序获取巡查计划管理列表(分页)")
  196. //@DataPermission(permissionStr = PerPrefix.SECURITY_CHECK_MANAGE)
  197. @DataPermission
  198. @PostMapping(value = "/appList")
  199. public ResultData appList(@RequestBody QueryCheckManageListParam queryCheckManageListParam) {
  200. lock.lock();
  201. try {
  202. queryCheckManageListParam.setMyRelated(1);
  203. List<CheckMember> checkMembers = checkMemberService.list(new LambdaQueryWrapper<CheckMember>().eq(CheckMember::getUserId, getCurrentUserId()));
  204. String checkPlanIds = Optional.ofNullable(checkMembers).orElseGet(Collections::emptyList).stream().map(CheckMember::getCheckPlanId).map(i -> String.valueOf(i)).collect(Collectors.joining(","));
  205. QueryWrapper <CheckStaffUser> wrapperCheckUser = new QueryWrapper<>();
  206. wrapperCheckUser.lambda().eq(CheckStaffUser::getStaffType,1)
  207. .eq(CheckStaffUser::getUserId,getCurrentUserId());
  208. List<CheckStaffUser> checkStaffUserList = checkStaffUserService.list(wrapperCheckUser);
  209. String subIds = Optional.ofNullable(checkStaffUserList).orElseGet(Collections::emptyList).stream().map(CheckStaffUser::getSubId).map(i -> String.valueOf(i)).collect(Collectors.joining(","));
  210. Page<CheckManage> page = getCheckManagePage(queryCheckManageListParam, checkPlanIds, subIds);
  211. ResultData<Page<CheckManageListVo>> checkManageListVoPage = getResultData(page);
  212. if (checkManageListVoPage != null) return checkManageListVoPage;
  213. return ResultData.success(page);
  214. }finally {
  215. lock.unlock();
  216. }
  217. }
  218. private Page<CheckManage> getCheckManagePage(QueryCheckManageListParam queryCheckManageListParam, String checkPlanIds, String subIds) {
  219. LambdaQueryWrapper<CheckManage> queryWrapper = new LambdaQueryWrapper<>();
  220. if (!Objects.isNull(queryCheckManageListParam.getManageStatus()) && queryCheckManageListParam.getManageStatus() != -1) {
  221. queryWrapper.eq(CheckManage::getManageStatus, queryCheckManageListParam.getManageStatus());
  222. }
  223. if(!Objects.isNull(queryCheckManageListParam.getCheckType()) && queryCheckManageListParam.getCheckType() != 0){
  224. queryWrapper.eq(CheckManage::getCheckType, queryCheckManageListParam.getCheckType());
  225. }
  226. if (!Objects.isNull(queryCheckManageListParam.getDeptId()) && queryCheckManageListParam.getDeptId() != 0) {
  227. queryWrapper.eq(CheckManage::getDeptId, queryCheckManageListParam.getDeptId());
  228. }
  229. if (!Objects.isNull(queryCheckManageListParam.getStartTime()) && !Objects.isNull(queryCheckManageListParam.getEndTime())) {
  230. queryWrapper.between(CheckManage::getCheckTime, queryCheckManageListParam.getStartTime().atStartOfDay(), queryCheckManageListParam.getEndTime().atTime(LocalTime.MAX));
  231. }
  232. if (StringUtils.isNotBlank(queryCheckManageListParam.getSearchValue())) {
  233. queryWrapper.and(wrapper -> {
  234. wrapper.like(CheckManage::getTitle, queryCheckManageListParam.getSearchValue())
  235. .or().like(CheckManage::getSubjectName, queryCheckManageListParam.getSearchValue())
  236. .or().like(CheckManage::getRoomNumber, queryCheckManageListParam.getSearchValue())
  237. .or().like(CheckManage::getCheckUser, queryCheckManageListParam.getSearchValue());
  238. });
  239. }
  240. if (Objects.nonNull(queryCheckManageListParam.getCheckTimeSort()) && queryCheckManageListParam.getCheckTimeSort() == 1){
  241. queryWrapper.orderByAsc(CheckManage::getCheckTime);
  242. }
  243. if (Objects.nonNull(queryCheckManageListParam.getCheckTimeSort()) && queryCheckManageListParam.getCheckTimeSort() == 2){
  244. queryWrapper.orderByDesc(CheckManage::getCheckTime);
  245. }
  246. StringBuilder sb = new StringBuilder();
  247. if (Objects.nonNull(queryCheckManageListParam.getMyRelated()) && queryCheckManageListParam.getMyRelated() == 1) {
  248. //与我有关
  249. if (Objects.nonNull(queryCheckManageListParam.getCheckType()) && queryCheckManageListParam.getCheckType() == 0) {
  250. sb.append("(( check_type = 1 and ( create_by =").append(getCurrentUserId());
  251. if (StringUtils.isNotBlank(checkPlanIds)) {
  252. sb.append(" OR check_plan_id in (").append(checkPlanIds).append(")");
  253. }
  254. sb.append(")) ");
  255. sb.append(" OR ( check_type = 2 and ( create_by = ").append(getCurrentUserId());
  256. if (StringUtils.isNotBlank(subIds)) {
  257. sb.append(" OR sub_id in (").append(subIds).append(") ");
  258. }
  259. sb.append(" ))) ");
  260. } else {
  261. sb.append(" ( create_by = ").append(getCurrentUserId());
  262. if (Objects.nonNull(queryCheckManageListParam.getCheckType()) && queryCheckManageListParam.getCheckType() == 1) {
  263. if (StringUtils.isNotBlank(checkPlanIds)) {
  264. sb.append(" OR check_plan_id in (").append(checkPlanIds).append(") ");
  265. }
  266. }
  267. if (Objects.nonNull(queryCheckManageListParam.getCheckType()) && queryCheckManageListParam.getCheckType() == 2) {
  268. if (StringUtils.isNotBlank(subIds)) {
  269. sb.append(" OR sub_id in (").append(subIds).append(") ");
  270. }
  271. }
  272. sb.append(" ) ");
  273. }
  274. }
  275. if(Objects.nonNull(queryCheckManageListParam.getMyRelated()) && queryCheckManageListParam.getMyRelated() != 1){
  276. //全部
  277. sb.append(" ( create_by = ").append(getCurrentUserId());
  278. if(Objects.nonNull(queryCheckManageListParam.getCheckType()) && queryCheckManageListParam.getCheckType() == 1){
  279. if(StringUtils.isNotBlank(checkPlanIds)){
  280. sb.append(" OR check_plan_id in (").append(checkPlanIds).append(") ");
  281. }
  282. }
  283. if(Objects.nonNull(queryCheckManageListParam.getCheckType()) && queryCheckManageListParam.getCheckType() == 2){
  284. if(StringUtils.isNotBlank(subIds)){
  285. sb.append(" OR sub_id in (").append(subIds).append(") ");
  286. }
  287. }
  288. List<Long> users = DataPermissionAspect.threadLocal.get();
  289. DataPermissionAspect.threadLocal.remove();
  290. if(CollectionUtil.isNotEmpty(users)){
  291. String userStr = users.stream().map(a->a.toString()).collect(Collectors.joining(","));
  292. sb.append(" or create_by in(" + userStr + ")");
  293. }
  294. sb.append(" ) ");
  295. }
  296. queryWrapper.apply(sb.toString());
  297. queryWrapper.orderByDesc(CheckManage::getId);
  298. return checkManageService.getlist(queryCheckManageListParam,queryWrapper);
  299. }
  300. @Nullable
  301. private ResultData<Page<CheckManageListVo>> getResultData(Page<CheckManage> page) {
  302. ResultData<Page<CheckManageListVo>> checkManageListVoPage = getPageResultData(page);
  303. if (checkManageListVoPage != null){
  304. //获取当前用户巡查计划列表
  305. List<CheckPlan> checkPlans = checkPlanService.list(new LambdaQueryWrapper<CheckPlan>().and(i -> i.eq(CheckPlan::getCheckStatus, 1).or().eq(CheckPlan::getCheckStatus, 2)));
  306. List<Long> checkPlanIdList = checkPlans.stream().map(CheckPlan::getId).collect(Collectors.toList());
  307. if(checkPlanIdList.size()==0){
  308. checkPlanIdList.add(-99L);
  309. }
  310. List<CheckMember> checkMemberList = checkMemberService.list(new LambdaQueryWrapper<CheckMember>().in(CheckMember::getCheckPlanId, checkPlanIdList).eq(CheckMember::getUserId, getCurrentUserId()));
  311. //获取自查身份
  312. QueryWrapper <CheckStaffUser> wrapper = new QueryWrapper<>();
  313. wrapper.lambda().eq(CheckStaffUser::getStaffType,1)
  314. .eq(CheckStaffUser::getUserId,getCurrentUserId());
  315. List<CheckStaffUser> checkStaffUsers = checkStaffUserService.list(wrapper);
  316. Consumer<List<CheckManageListVo>> consumer = a->Optional.ofNullable(a)
  317. .orElseGet(Collections::emptyList)
  318. .stream()
  319. .forEach(b->{
  320. List<Integer> rectifyStatus = new ArrayList <>();
  321. rectifyStatus.add(2);
  322. rectifyStatus.add(3);
  323. List<CheckHazard> checkHazardList = checkHazardService.list(new LambdaQueryWrapper <CheckHazard>()
  324. .in(CheckHazard::getRectifyStatus,rectifyStatus).eq(CheckHazard::getCheckManageId,b.getId()));
  325. if(b.getManageStatus().intValue()==2){
  326. if(checkHazardList==null || checkHazardList.isEmpty()){
  327. b.setIsEndProcess(1);
  328. }else{
  329. b.setIsEndProcess(0);
  330. }
  331. }else{
  332. b.setIsEndProcess(0);
  333. }
  334. if (b.getCheckType() == 1) {
  335. //院校巡查
  336. if (checkMemberList!=null && !checkMemberList.isEmpty()) {
  337. List<Long> planIds = checkMemberList.stream().map(CheckMember::getCheckPlanId).collect(Collectors.toList());
  338. if (planIds.contains(b.getCheckPlanId())){
  339. b.setIsSelfData(1);
  340. }else {
  341. b.setIsSelfData(0);
  342. }
  343. }else {
  344. b.setIsSelfData(0);
  345. }
  346. }else {
  347. //实验室自查
  348. if(checkStaffUsers!=null && !checkStaffUsers.isEmpty()){
  349. List<Long> checkSubIds = checkStaffUsers.stream().map(CheckStaffUser::getSubId).collect(Collectors.toList());
  350. if (checkSubIds.contains(b.getSubId())){
  351. b.setIsSelfData(1);
  352. }else {
  353. b.setIsSelfData(0);
  354. }
  355. }else {
  356. b.setIsSelfData(0);
  357. }
  358. //开展检查
  359. if(b.getCheckPlanId()!=null && getCurrentUserId().longValue() == b.getCreateBy().longValue()){
  360. b.setIsSelfData(1);
  361. }
  362. }
  363. });
  364. consumer.accept(checkManageListVoPage.getData().getRecords());
  365. return checkManageListVoPage;
  366. }
  367. return null;
  368. }
  369. @Nullable
  370. private ResultData<Page<CheckManageListVo>> getPageResultData(Page<CheckManage> page) {
  371. List<CheckManage> records = page.getRecords();
  372. if (page.getTotal() > 0){
  373. List<CheckManageListVo> checkManageListVos = BeanUtils.copyList2List(records, CheckManageListVo.class);
  374. checkManageListVos.forEach(checkManageListVo -> {
  375. if (Objects.nonNull(checkManageListVo.getCycleStartTime())) {
  376. LocalDateTime localDateTime = checkManageListVo.getCycleStartTime().atStartOfDay();
  377. if (LocalDateTime.now().isAfter(localDateTime)) {
  378. checkManageListVo.setIsCheck(1);
  379. }
  380. }
  381. });
  382. Page<CheckManageListVo> checkManageListVoPage = new Page<>();
  383. BeanUtils.copyProperties(page,checkManageListVoPage);
  384. checkManageListVoPage.setRecords(checkManageListVos);
  385. return ResultData.success(checkManageListVoPage);
  386. }
  387. return null;
  388. }
  389. /**
  390. * 根据检查计划id查询巡查管理列表(分页)
  391. *
  392. * @Param [checkManageBo]
  393. * @Return com.zd.model.domain.ResultData
  394. **/
  395. @ApiOperation("根据检查计划id查询巡查管理列表(分页)")
  396. //@DataPermission(permissionStr = PerPrefix.SECURITY_CHECK_MANAGE)
  397. @PreAuthorize(hasAnyPermi = {
  398. PerPrefix.SECURITY_CHECK_MANAGE + PerFun.LIST,
  399. PerPrefix.SECURITY_CHECK_MANAGE_1 + PerFun.LIST,
  400. PerPrefix.SECURITY_CHECK_MANAGE_2 + PerFun.LIST,
  401. PerPrefix.SECURITY_CHECK_MANAGE_3 + PerFun.LIST})
  402. @PostMapping(value = "/findByCheckPlanId")
  403. public ResultData findByCheckPlanId(@RequestBody QueryManageListParam queryManageListParam) {
  404. paramCheck.notNull(queryManageListParam.getCheckPlanId());
  405. LambdaQueryWrapper<CheckManage> queryWrapper = new LambdaQueryWrapper<>();
  406. queryWrapper.eq(CheckManage::getCheckPlanId, queryManageListParam.getCheckPlanId());
  407. if (Objects.nonNull(queryManageListParam.getDeptId())) {
  408. queryWrapper.eq(CheckManage::getDeptId, queryManageListParam.getDeptId());
  409. }
  410. if (StringUtils.isNotBlank(queryManageListParam.getSearchValue())) {
  411. queryWrapper.and(wrapper -> {
  412. wrapper.like(CheckManage::getTitle, queryManageListParam.getSearchValue())
  413. .or().like(CheckManage::getSubjectName, queryManageListParam.getSearchValue())
  414. .or().like(CheckManage::getRoomNumber, queryManageListParam.getSearchValue())
  415. .or().like(CheckManage::getCheckUser, queryManageListParam.getSearchValue());
  416. });
  417. }
  418. if (!Objects.isNull(queryManageListParam.getStartTime()) && !Objects.isNull(queryManageListParam.getEndTime())) {
  419. queryWrapper.between(CheckManage::getCheckTime, queryManageListParam.getStartTime().atStartOfDay(), queryManageListParam.getEndTime().atTime(LocalTime.MAX));
  420. }
  421. if (Objects.nonNull(queryManageListParam.getManageStatus()) && queryManageListParam.getManageStatus() != -1) {
  422. queryWrapper.eq(CheckManage::getManageStatus, queryManageListParam.getManageStatus());
  423. }
  424. if (Objects.nonNull(queryManageListParam.getCheckTimeSort()) && queryManageListParam.getCheckTimeSort() == 1){
  425. queryWrapper.orderByAsc(CheckManage::getId);
  426. }
  427. if (Objects.nonNull(queryManageListParam.getCheckTimeSort()) && queryManageListParam.getCheckTimeSort() == 2){
  428. queryWrapper.orderByDesc(CheckManage::getId);
  429. }
  430. Page<CheckManage> page = checkManageService.page(new Page<>(queryManageListParam.getPageNum(), queryManageListParam.getPageSize()), queryWrapper);
  431. ResultData<Page<CheckManageListVo>> checkManageListVoPage = getPageResultData(page);
  432. if (checkManageListVoPage != null){
  433. //获取当前用户巡查计划列表
  434. List<CheckPlan> checkPlans = checkPlanService.list(new LambdaQueryWrapper<CheckPlan>().and(i -> i.eq(CheckPlan::getCheckStatus, 1).or().eq(CheckPlan::getCheckStatus, 2)));
  435. List<Long> checkPlanIdList = checkPlans.stream().map(CheckPlan::getId).collect(Collectors.toList());
  436. List<CheckMember> checkMemberList = checkMemberService.list(new LambdaQueryWrapper<CheckMember>().in(CheckMember::getCheckPlanId, checkPlanIdList).eq(CheckMember::getUserId, getCurrentUserId()));
  437. //获取自查身份
  438. QueryWrapper <CheckStaffUser> wrapperCheckUser = new QueryWrapper<>();
  439. wrapperCheckUser.lambda().eq(CheckStaffUser::getStaffType,1)
  440. .eq(CheckStaffUser::getUserId,getCurrentUserId());
  441. List<CheckStaffUser> checkStaffUserList = checkStaffUserService.list(wrapperCheckUser);
  442. Consumer<List<CheckManageListVo>> consumer = a->Optional.ofNullable(a)
  443. .orElseGet(Collections::emptyList)
  444. .stream()
  445. .forEach(b->{
  446. List<Integer> rectifyStatus = new ArrayList <>();
  447. rectifyStatus.add(2);
  448. rectifyStatus.add(3);
  449. List<CheckHazard> checkHazardList = checkHazardService.list(new LambdaQueryWrapper <CheckHazard>()
  450. .in(CheckHazard::getRectifyStatus,rectifyStatus).eq(CheckHazard::getCheckManageId,b.getId()));
  451. if(b.getManageStatus().intValue()==2){
  452. if(checkHazardList==null || checkHazardList.isEmpty()){
  453. b.setIsEndProcess(1);
  454. }else{
  455. b.setIsEndProcess(0);
  456. }
  457. }else{
  458. b.setIsEndProcess(0);
  459. }
  460. if (b.getCheckType() == 1) {
  461. //院校巡查
  462. if (checkMemberList!=null && !checkMemberList.isEmpty()) {
  463. List<Long> checkPlanIds = checkMemberList.stream().map(CheckMember::getCheckPlanId).collect(Collectors.toList());
  464. if (checkPlanIds.contains(b.getCheckPlanId())){
  465. b.setIsSelfData(1);
  466. }else {
  467. b.setIsSelfData(0);
  468. }
  469. }else {
  470. b.setIsSelfData(0);
  471. }
  472. }else {
  473. //实验室自查
  474. if(checkStaffUserList!=null && !checkStaffUserList.isEmpty()){
  475. List<Long> subIds = checkStaffUserList.stream().map(CheckStaffUser::getSubId).collect(Collectors.toList());
  476. if (subIds.contains(b.getSubId())){
  477. b.setIsSelfData(1);
  478. }else {
  479. b.setIsSelfData(0);
  480. }
  481. }else {
  482. b.setIsSelfData(0);
  483. }
  484. }
  485. });
  486. consumer.accept(checkManageListVoPage.getData().getRecords());
  487. return checkManageListVoPage;
  488. }
  489. return ResultData.success(page);
  490. }
  491. /**
  492. * 小程序根据检查计划id查询巡查管理列表(分页)
  493. *
  494. * @Param [checkManageBo]
  495. * @Return com.zd.model.domain.ResultData
  496. **/
  497. @ApiOperation("小程序根据检查计划id查询巡查管理列表(分页)")
  498. //@DataPermission(permissionStr = PerPrefix.SECURITY_CHECK_MANAGE)
  499. @PostMapping(value = "/appFindByCheckPlanId")
  500. public ResultData appFindByCheckPlanId(@RequestBody QueryManageListParam queryManageListParam) {
  501. paramCheck.notNull(queryManageListParam.getCheckPlanId());
  502. LambdaQueryWrapper<CheckManage> queryWrapper = new LambdaQueryWrapper<>();
  503. queryWrapper.eq(CheckManage::getCheckPlanId, queryManageListParam.getCheckPlanId());
  504. if (Objects.nonNull(queryManageListParam.getDeptId())) {
  505. queryWrapper.eq(CheckManage::getDeptId, queryManageListParam.getDeptId());
  506. }
  507. if (StringUtils.isNotBlank(queryManageListParam.getSearchValue())) {
  508. queryWrapper.and(wrapper -> {
  509. wrapper.like(CheckManage::getTitle, queryManageListParam.getSearchValue())
  510. .or().like(CheckManage::getSubjectName, queryManageListParam.getSearchValue())
  511. .or().like(CheckManage::getRoomNumber, queryManageListParam.getSearchValue())
  512. .or().like(CheckManage::getCheckUser, queryManageListParam.getSearchValue());
  513. });
  514. }
  515. if (!Objects.isNull(queryManageListParam.getStartTime()) && !Objects.isNull(queryManageListParam.getEndTime())) {
  516. queryWrapper.between(CheckManage::getCheckTime, queryManageListParam.getStartTime().atStartOfDay(), queryManageListParam.getEndTime().atTime(LocalTime.MAX));
  517. }
  518. if (Objects.nonNull(queryManageListParam.getManageStatus()) && queryManageListParam.getManageStatus() != -1) {
  519. queryWrapper.eq(CheckManage::getManageStatus, queryManageListParam.getManageStatus());
  520. }
  521. if (Objects.nonNull(queryManageListParam.getCheckTimeSort()) && queryManageListParam.getCheckTimeSort() == 1){
  522. queryWrapper.orderByAsc(CheckManage::getId);
  523. }
  524. if (Objects.nonNull(queryManageListParam.getCheckTimeSort()) && queryManageListParam.getCheckTimeSort() == 2){
  525. queryWrapper.orderByDesc(CheckManage::getId);
  526. }
  527. Page<CheckManage> page = checkManageService.page(new Page<>(queryManageListParam.getPageNum(), queryManageListParam.getPageSize()), queryWrapper);
  528. ResultData<Page<CheckManageListVo>> checkManageListVoPage = getPageResultData(page);
  529. if (checkManageListVoPage != null){
  530. //获取当前用户巡查计划列表
  531. List<CheckPlan> checkPlans = checkPlanService.list(new LambdaQueryWrapper<CheckPlan>().and(i -> i.eq(CheckPlan::getCheckStatus, 1).or().eq(CheckPlan::getCheckStatus, 2)));
  532. List<Long> checkPlanIdList = checkPlans.stream().map(CheckPlan::getId).collect(Collectors.toList());
  533. List<CheckMember> checkMemberList = checkMemberService.list(new LambdaQueryWrapper<CheckMember>().in(CheckMember::getCheckPlanId, checkPlanIdList).eq(CheckMember::getUserId, getCurrentUserId()));
  534. //获取自查身份
  535. QueryWrapper <CheckStaffUser> wrapperCheckUser = new QueryWrapper<>();
  536. wrapperCheckUser.lambda().eq(CheckStaffUser::getStaffType,1)
  537. .eq(CheckStaffUser::getUserId,getCurrentUserId());
  538. List<CheckStaffUser> checkStaffUserList = checkStaffUserService.list(wrapperCheckUser);
  539. Consumer<List<CheckManageListVo>> consumer = a->Optional.ofNullable(a)
  540. .orElseGet(Collections::emptyList)
  541. .stream()
  542. .forEach(b->{
  543. List<Integer> rectifyStatus = new ArrayList <>();
  544. rectifyStatus.add(2);
  545. rectifyStatus.add(3);
  546. List<CheckHazard> checkHazardList = checkHazardService.list(new LambdaQueryWrapper <CheckHazard>()
  547. .in(CheckHazard::getRectifyStatus,rectifyStatus).eq(CheckHazard::getCheckManageId,b.getId()));
  548. if(b.getManageStatus().intValue()==2){
  549. if(checkHazardList==null || checkHazardList.isEmpty()){
  550. b.setIsEndProcess(1);
  551. }else{
  552. b.setIsEndProcess(0);
  553. }
  554. }else{
  555. b.setIsEndProcess(0);
  556. }
  557. if (b.getCheckType() == 1) {
  558. //院校巡查
  559. if (checkMemberList!=null && !checkMemberList.isEmpty()) {
  560. List<Long> checkPlanIds = checkMemberList.stream().map(CheckMember::getCheckPlanId).collect(Collectors.toList());
  561. if (checkPlanIds.contains(b.getCheckPlanId())){
  562. b.setIsSelfData(1);
  563. }else {
  564. b.setIsSelfData(0);
  565. }
  566. }else {
  567. b.setIsSelfData(0);
  568. }
  569. }else {
  570. //实验室自查
  571. if(checkStaffUserList!=null && !checkStaffUserList.isEmpty()){
  572. List<Long> subIds = checkStaffUserList.stream().map(CheckStaffUser::getSubId).collect(Collectors.toList());
  573. if (subIds.contains(b.getSubId())){
  574. b.setIsSelfData(1);
  575. }else {
  576. b.setIsSelfData(0);
  577. }
  578. }else {
  579. b.setIsSelfData(0);
  580. }
  581. }
  582. });
  583. consumer.accept(checkManageListVoPage.getData().getRecords());
  584. return checkManageListVoPage;
  585. }
  586. return ResultData.success(page);
  587. }
  588. /**
  589. * 查询各管理状态数据数量
  590. * @Return com.zd.model.domain.ResultData
  591. **/
  592. @GetMapping(value = "/getManageStatusCount")
  593. @ApiOperation("查询检查计划各检查状态数据数量")
  594. public ResultData getManageStatusCount() {
  595. Map<String,Long> map = new HashMap<>();
  596. long noCheckNum = checkManageService.count(new LambdaQueryWrapper<CheckManage>().eq(CheckManage::getManageStatus, 0));
  597. long checkingNum = checkManageService.count(new LambdaQueryWrapper<CheckManage>().eq(CheckManage::getManageStatus,1));
  598. long applyNum = checkHazardService.count(new LambdaQueryWrapper<CheckHazard>().eq(CheckHazard::getRectifyStatus, 3));
  599. map.put("noCheck",noCheckNum);
  600. map.put("checking",checkingNum);
  601. map.put("applyNum",applyNum);
  602. return ResultData.success(map);
  603. }
  604. /**
  605. * 根据实验室id查询该实验室有关计划
  606. * @Return com.zd.model.domain.ResultData
  607. **/
  608. @GetMapping(value = "/getCheckPlanBySubId")
  609. @ApiOperation("根据实验室id查询该实验室有关计划")
  610. public ResultData getCheckPlanBySubId(@RequestParam("subId") Long subId) {
  611. List<CheckManage> list = checkManageService.list(new LambdaQueryWrapper<CheckManage>().eq(CheckManage::getSubId, subId)
  612. .le(CheckManage::getCycleStartTime, LocalDate.now())
  613. .and(checkManage -> checkManage.eq(CheckManage::getManageStatus, 0).or().eq(CheckManage::getManageStatus, 1))
  614. .orderByDesc(CheckManage::getId));
  615. List<CheckManageListVo> checkManageListVos = BeanUtils.copyList2List(list, CheckManageListVo.class);
  616. if (checkManageListVos != null && !checkManageListVos.isEmpty()){
  617. permissionData(checkManageListVos);
  618. }
  619. return ResultData.success(checkManageListVos);
  620. }
  621. private void permissionData(List<CheckManageListVo> checkManageListVos) {
  622. //权限
  623. boolean adminGentle = Boolean.FALSE;
  624. boolean applyGentle = Boolean.FALSE;
  625. boolean myApplyGentle = Boolean.FALSE;
  626. //获取管理员身份
  627. ResultData<Boolean> postInfo = remoteUserService.selectPostInfo(getCurrentUserId());
  628. if(Boolean.valueOf(postInfo.getData())){
  629. adminGentle = Boolean.TRUE;
  630. }else{
  631. adminGentle = Boolean.FALSE;
  632. }
  633. //获取巡查组身份
  634. List<CheckPlan> checkPlans = checkPlanService.list(new LambdaQueryWrapper<CheckPlan>().and(i -> i.eq(CheckPlan::getCheckStatus, 1).or().eq(CheckPlan::getCheckStatus, 2)));
  635. List<Long> checkPlanIdList = checkPlans.stream().map(CheckPlan::getId).collect(Collectors.toList());
  636. LambdaQueryWrapper<CheckMember> queryWrapper = new LambdaQueryWrapper<>();
  637. if(CollectionUtil.isNotEmpty(checkPlanIdList)){
  638. queryWrapper.in(CheckMember::getCheckPlanId, checkPlanIdList);
  639. }
  640. queryWrapper.eq(CheckMember::getUserId,getCurrentUserId());
  641. List<CheckMember> memberList = checkMemberService.list(queryWrapper);
  642. if(CollectionUtil.isNotEmpty(memberList)){
  643. applyGentle = Boolean.TRUE;
  644. }else{
  645. applyGentle = Boolean.FALSE;
  646. }
  647. //获取自查身份
  648. QueryWrapper <CheckStaffUser> wrapperCheckUser = new QueryWrapper<>();
  649. wrapperCheckUser.lambda().eq(CheckStaffUser::getStaffType,1)
  650. .eq(CheckStaffUser::getUserId,getCurrentUserId());
  651. List<CheckStaffUser> checkStaffUserList = checkStaffUserService.list(wrapperCheckUser);
  652. if(checkStaffUserList!=null && !checkStaffUserList.isEmpty()){
  653. myApplyGentle = Boolean.TRUE;
  654. }else{
  655. myApplyGentle = Boolean.FALSE;
  656. }
  657. if (!adminGentle) {
  658. if(applyGentle && myApplyGentle){
  659. checkManageListVos.forEach(i->{
  660. if(i.getCheckType() == 1){
  661. List<Long> collect = memberList.stream().map(CheckMember::getCheckPlanId).collect(Collectors.toList());
  662. if (collect.contains(i.getCheckPlanId())) {
  663. i.setIsSelfData(1);
  664. }else {
  665. i.setIsSelfData(0);
  666. }
  667. }else {
  668. List<Long> subIds = checkStaffUserList.stream().map(CheckStaffUser::getSubId).collect(Collectors.toList());
  669. if (subIds.contains(i.getSubId())) {
  670. i.setIsSelfData(1);
  671. }else {
  672. i.setIsSelfData(0);
  673. }
  674. }
  675. });
  676. } else if (!applyGentle && myApplyGentle) {
  677. //无巡查有自查 检查类型(1校院巡查 2实验室自查)
  678. checkManageListVos = checkManageListVos.stream().filter(i -> i.getCheckType() == 2).collect(Collectors.toList());
  679. checkManageListVos.forEach(i->{
  680. List<Long> subIds = checkStaffUserList.stream().map(CheckStaffUser::getSubId).collect(Collectors.toList());
  681. if (subIds.contains(i.getSubId())) {
  682. i.setIsSelfData(1);
  683. }else {
  684. i.setIsSelfData(0);
  685. }
  686. });
  687. } else if (applyGentle && !myApplyGentle) {
  688. //有巡查无自查
  689. checkManageListVos = checkManageListVos.stream().filter(i -> i.getCheckType() == 1).collect(Collectors.toList());
  690. checkManageListVos.forEach(i->{
  691. List<Long> collect = Optional.ofNullable(memberList).orElseGet(Collections::emptyList).stream().map(CheckMember::getCheckPlanId).collect(Collectors.toList());
  692. if (collect.contains(i.getCheckPlanId())) {
  693. i.setIsSelfData(1);
  694. }else {
  695. i.setIsSelfData(0);
  696. }
  697. });
  698. } else if (!applyGentle && !myApplyGentle) {
  699. //均无
  700. checkManageListVos = new ArrayList<>();
  701. }
  702. }else {
  703. checkManageListVos.forEach(i->{
  704. i.setIsSelfData(1);
  705. });
  706. }
  707. }
  708. /**
  709. * 实验室id,危险源ids 查询开展检查检查项
  710. */
  711. @GetMapping("/getHazardInfo")
  712. @ApiOperation(value = "实验室id,危险源ids 查询开展检查检查项")
  713. public ResultData getHazardInfo(@RequestParam("subId") Long subId,@RequestParam("hazardIds") String hazardIds) {
  714. List<CheckHazardInfoVo> checkHazardDtoList = checkManageService.getHazardInfo(subId,hazardIds);
  715. return ResultData.success(checkHazardDtoList);
  716. }
  717. /**
  718. * 根据关联ids查询开展检查检查项
  719. */
  720. @GetMapping("/getHazardInfoByJoinIds")
  721. @ApiOperation(value = "根据关联ids查询开展检查检查项")
  722. public ResultData getHazardInfoByJoinIds(@RequestParam("joinHazardIds") String joinHazardIds) {
  723. List<CheckHazardInfoVo> checkHazardDtoList = checkManageService.getHazardInfoByJoinIds(joinHazardIds);
  724. return ResultData.success(checkHazardDtoList);
  725. }
  726. /**
  727. * 生成整改通知书
  728. * @Param [id, response]
  729. * @Return void
  730. **/
  731. @ApiOperation(value = "生成整改通知书")
  732. @GetMapping("/getRectifyAdviceNoteView/{checkMangeId}")
  733. public ResultData getRectifyAdviceNoteView(@PathVariable("checkMangeId") Long checkMangeId) {
  734. return ResultData.success(checkManageService.getRectifyAdviceNoteView(checkMangeId));
  735. }
  736. /**
  737. * 生成整改通知书
  738. * @Param [id, response]
  739. * @Return void
  740. **/
  741. @ApiOperation(value = "生成整改通知书")
  742. @RequestMapping("/getRectifyAdviceNote/{checkMangeId}")
  743. public void getRectifyAdviceNote(@PathVariable("checkMangeId") Long checkMangeId, HttpServletResponse response) {
  744. wordService.getRectifyAdviceNote(checkMangeId, response);
  745. }
  746. /**
  747. * 生成整改告知书
  748. * @Param [id, response]
  749. * @Return void
  750. **/
  751. @ApiOperation(value = "生成整改告知书")
  752. @RequestMapping("/getRectifyNotificationView/{checkMangeId}")
  753. public ResultData getRectifyNotificationView(@PathVariable("checkMangeId") Long checkMangeId) {
  754. return ResultData.success(checkManageService.getRectifyNotificationView(checkMangeId));
  755. }
  756. /**
  757. * 生成整改告知书
  758. * @Param [id, response]
  759. * @Return void
  760. **/
  761. @ApiOperation(value = "生成整改告知书")
  762. @RequestMapping("/getRectifyNotification/{checkMangeId}")
  763. public void getRectifyNotification(@PathVariable("checkMangeId") Long checkMangeId, HttpServletResponse response) {
  764. wordService.getRectifyNotification(checkMangeId, response);
  765. }
  766. }