CheckManageController.java 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804
  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. }
  295. queryWrapper.apply(sb.toString());
  296. queryWrapper.orderByDesc(CheckManage::getId);
  297. return checkManageService.getlist(queryCheckManageListParam,queryWrapper);
  298. }
  299. @Nullable
  300. private ResultData<Page<CheckManageListVo>> getResultData(Page<CheckManage> page) {
  301. ResultData<Page<CheckManageListVo>> checkManageListVoPage = getPageResultData(page);
  302. if (checkManageListVoPage != null){
  303. //获取当前用户巡查计划列表
  304. List<CheckPlan> checkPlans = checkPlanService.list(new LambdaQueryWrapper<CheckPlan>().and(i -> i.eq(CheckPlan::getCheckStatus, 1).or().eq(CheckPlan::getCheckStatus, 2)));
  305. List<Long> checkPlanIdList = checkPlans.stream().map(CheckPlan::getId).collect(Collectors.toList());
  306. if(checkPlanIdList.size()==0){
  307. checkPlanIdList.add(-99L);
  308. }
  309. List<CheckMember> checkMemberList = checkMemberService.list(new LambdaQueryWrapper<CheckMember>().in(CheckMember::getCheckPlanId, checkPlanIdList).eq(CheckMember::getUserId, getCurrentUserId()));
  310. //获取自查身份
  311. QueryWrapper <CheckStaffUser> wrapper = new QueryWrapper<>();
  312. wrapper.lambda().eq(CheckStaffUser::getStaffType,1)
  313. .eq(CheckStaffUser::getUserId,getCurrentUserId());
  314. List<CheckStaffUser> checkStaffUsers = checkStaffUserService.list(wrapper);
  315. Consumer<List<CheckManageListVo>> consumer = a->Optional.ofNullable(a)
  316. .orElseGet(Collections::emptyList)
  317. .stream()
  318. .forEach(b->{
  319. List<Integer> rectifyStatus = new ArrayList <>();
  320. rectifyStatus.add(2);
  321. rectifyStatus.add(3);
  322. List<CheckHazard> checkHazardList = checkHazardService.list(new LambdaQueryWrapper <CheckHazard>()
  323. .in(CheckHazard::getRectifyStatus,rectifyStatus).eq(CheckHazard::getCheckManageId,b.getId()));
  324. if(b.getManageStatus().intValue()==2){
  325. if(checkHazardList==null || checkHazardList.isEmpty()){
  326. b.setIsEndProcess(1);
  327. }else{
  328. b.setIsEndProcess(0);
  329. }
  330. }else{
  331. b.setIsEndProcess(0);
  332. }
  333. if (b.getCheckType() == 1) {
  334. //院校巡查
  335. if (checkMemberList!=null && !checkMemberList.isEmpty()) {
  336. List<Long> planIds = checkMemberList.stream().map(CheckMember::getCheckPlanId).collect(Collectors.toList());
  337. if (planIds.contains(b.getCheckPlanId())){
  338. b.setIsSelfData(1);
  339. }else {
  340. b.setIsSelfData(0);
  341. }
  342. }else {
  343. b.setIsSelfData(0);
  344. }
  345. }else {
  346. //实验室自查
  347. if(checkStaffUsers!=null && !checkStaffUsers.isEmpty()){
  348. List<Long> checkSubIds = checkStaffUsers.stream().map(CheckStaffUser::getSubId).collect(Collectors.toList());
  349. if (checkSubIds.contains(b.getSubId())){
  350. b.setIsSelfData(1);
  351. }else {
  352. b.setIsSelfData(0);
  353. }
  354. }else {
  355. b.setIsSelfData(0);
  356. }
  357. //开展检查
  358. if(b.getCheckPlanId()!=null && getCurrentUserId().longValue() == b.getCreateBy().longValue()){
  359. b.setIsSelfData(1);
  360. }
  361. }
  362. });
  363. consumer.accept(checkManageListVoPage.getData().getRecords());
  364. return checkManageListVoPage;
  365. }
  366. return null;
  367. }
  368. @Nullable
  369. private ResultData<Page<CheckManageListVo>> getPageResultData(Page<CheckManage> page) {
  370. List<CheckManage> records = page.getRecords();
  371. if (page.getTotal() > 0){
  372. List<CheckManageListVo> checkManageListVos = BeanUtils.copyList2List(records, CheckManageListVo.class);
  373. checkManageListVos.forEach(checkManageListVo -> {
  374. if (Objects.nonNull(checkManageListVo.getCycleStartTime())) {
  375. LocalDateTime localDateTime = checkManageListVo.getCycleStartTime().atStartOfDay();
  376. if (LocalDateTime.now().isAfter(localDateTime)) {
  377. checkManageListVo.setIsCheck(1);
  378. }
  379. }
  380. });
  381. Page<CheckManageListVo> checkManageListVoPage = new Page<>();
  382. BeanUtils.copyProperties(page,checkManageListVoPage);
  383. checkManageListVoPage.setRecords(checkManageListVos);
  384. return ResultData.success(checkManageListVoPage);
  385. }
  386. return null;
  387. }
  388. /**
  389. * 根据检查计划id查询巡查管理列表(分页)
  390. *
  391. * @Param [checkManageBo]
  392. * @Return com.zd.model.domain.ResultData
  393. **/
  394. @ApiOperation("根据检查计划id查询巡查管理列表(分页)")
  395. //@DataPermission(permissionStr = PerPrefix.SECURITY_CHECK_MANAGE)
  396. @PreAuthorize(hasAnyPermi = {
  397. PerPrefix.SECURITY_CHECK_MANAGE + PerFun.LIST,
  398. PerPrefix.SECURITY_CHECK_MANAGE_1 + PerFun.LIST,
  399. PerPrefix.SECURITY_CHECK_MANAGE_2 + PerFun.LIST,
  400. PerPrefix.SECURITY_CHECK_MANAGE_3 + PerFun.LIST})
  401. @PostMapping(value = "/findByCheckPlanId")
  402. public ResultData findByCheckPlanId(@RequestBody QueryManageListParam queryManageListParam) {
  403. paramCheck.notNull(queryManageListParam.getCheckPlanId());
  404. LambdaQueryWrapper<CheckManage> queryWrapper = new LambdaQueryWrapper<>();
  405. queryWrapper.eq(CheckManage::getCheckPlanId, queryManageListParam.getCheckPlanId());
  406. if (Objects.nonNull(queryManageListParam.getDeptId())) {
  407. queryWrapper.eq(CheckManage::getDeptId, queryManageListParam.getDeptId());
  408. }
  409. if (StringUtils.isNotBlank(queryManageListParam.getSearchValue())) {
  410. queryWrapper.and(wrapper -> {
  411. wrapper.like(CheckManage::getTitle, queryManageListParam.getSearchValue())
  412. .or().like(CheckManage::getSubjectName, queryManageListParam.getSearchValue())
  413. .or().like(CheckManage::getRoomNumber, queryManageListParam.getSearchValue())
  414. .or().like(CheckManage::getCheckUser, queryManageListParam.getSearchValue());
  415. });
  416. }
  417. if (!Objects.isNull(queryManageListParam.getStartTime()) && !Objects.isNull(queryManageListParam.getEndTime())) {
  418. queryWrapper.between(CheckManage::getCheckTime, queryManageListParam.getStartTime().atStartOfDay(), queryManageListParam.getEndTime().atTime(LocalTime.MAX));
  419. }
  420. if (Objects.nonNull(queryManageListParam.getManageStatus()) && queryManageListParam.getManageStatus() != -1) {
  421. queryWrapper.eq(CheckManage::getManageStatus, queryManageListParam.getManageStatus());
  422. }
  423. if (Objects.nonNull(queryManageListParam.getCheckTimeSort()) && queryManageListParam.getCheckTimeSort() == 1){
  424. queryWrapper.orderByAsc(CheckManage::getId);
  425. }
  426. if (Objects.nonNull(queryManageListParam.getCheckTimeSort()) && queryManageListParam.getCheckTimeSort() == 2){
  427. queryWrapper.orderByDesc(CheckManage::getId);
  428. }
  429. Page<CheckManage> page = checkManageService.page(new Page<>(queryManageListParam.getPageNum(), queryManageListParam.getPageSize()), queryWrapper);
  430. ResultData<Page<CheckManageListVo>> checkManageListVoPage = getPageResultData(page);
  431. if (checkManageListVoPage != null){
  432. //获取当前用户巡查计划列表
  433. List<CheckPlan> checkPlans = checkPlanService.list(new LambdaQueryWrapper<CheckPlan>().and(i -> i.eq(CheckPlan::getCheckStatus, 1).or().eq(CheckPlan::getCheckStatus, 2)));
  434. List<Long> checkPlanIdList = checkPlans.stream().map(CheckPlan::getId).collect(Collectors.toList());
  435. List<CheckMember> checkMemberList = checkMemberService.list(new LambdaQueryWrapper<CheckMember>().in(CheckMember::getCheckPlanId, checkPlanIdList).eq(CheckMember::getUserId, getCurrentUserId()));
  436. //获取自查身份
  437. QueryWrapper <CheckStaffUser> wrapperCheckUser = new QueryWrapper<>();
  438. wrapperCheckUser.lambda().eq(CheckStaffUser::getStaffType,1)
  439. .eq(CheckStaffUser::getUserId,getCurrentUserId());
  440. List<CheckStaffUser> checkStaffUserList = checkStaffUserService.list(wrapperCheckUser);
  441. Consumer<List<CheckManageListVo>> consumer = a->Optional.ofNullable(a)
  442. .orElseGet(Collections::emptyList)
  443. .stream()
  444. .forEach(b->{
  445. List<Integer> rectifyStatus = new ArrayList <>();
  446. rectifyStatus.add(2);
  447. rectifyStatus.add(3);
  448. List<CheckHazard> checkHazardList = checkHazardService.list(new LambdaQueryWrapper <CheckHazard>()
  449. .in(CheckHazard::getRectifyStatus,rectifyStatus).eq(CheckHazard::getCheckManageId,b.getId()));
  450. if(b.getManageStatus().intValue()==2){
  451. if(checkHazardList==null || checkHazardList.isEmpty()){
  452. b.setIsEndProcess(1);
  453. }else{
  454. b.setIsEndProcess(0);
  455. }
  456. }else{
  457. b.setIsEndProcess(0);
  458. }
  459. if (b.getCheckType() == 1) {
  460. //院校巡查
  461. if (checkMemberList!=null && !checkMemberList.isEmpty()) {
  462. List<Long> checkPlanIds = checkMemberList.stream().map(CheckMember::getCheckPlanId).collect(Collectors.toList());
  463. if (checkPlanIds.contains(b.getCheckPlanId())){
  464. b.setIsSelfData(1);
  465. }else {
  466. b.setIsSelfData(0);
  467. }
  468. }else {
  469. b.setIsSelfData(0);
  470. }
  471. }else {
  472. //实验室自查
  473. if(checkStaffUserList!=null && !checkStaffUserList.isEmpty()){
  474. List<Long> subIds = checkStaffUserList.stream().map(CheckStaffUser::getSubId).collect(Collectors.toList());
  475. if (subIds.contains(b.getSubId())){
  476. b.setIsSelfData(1);
  477. }else {
  478. b.setIsSelfData(0);
  479. }
  480. }else {
  481. b.setIsSelfData(0);
  482. }
  483. }
  484. });
  485. consumer.accept(checkManageListVoPage.getData().getRecords());
  486. return checkManageListVoPage;
  487. }
  488. return ResultData.success(page);
  489. }
  490. /**
  491. * 小程序根据检查计划id查询巡查管理列表(分页)
  492. *
  493. * @Param [checkManageBo]
  494. * @Return com.zd.model.domain.ResultData
  495. **/
  496. @ApiOperation("小程序根据检查计划id查询巡查管理列表(分页)")
  497. //@DataPermission(permissionStr = PerPrefix.SECURITY_CHECK_MANAGE)
  498. @PostMapping(value = "/appFindByCheckPlanId")
  499. public ResultData appFindByCheckPlanId(@RequestBody QueryManageListParam queryManageListParam) {
  500. paramCheck.notNull(queryManageListParam.getCheckPlanId());
  501. LambdaQueryWrapper<CheckManage> queryWrapper = new LambdaQueryWrapper<>();
  502. queryWrapper.eq(CheckManage::getCheckPlanId, queryManageListParam.getCheckPlanId());
  503. if (Objects.nonNull(queryManageListParam.getDeptId())) {
  504. queryWrapper.eq(CheckManage::getDeptId, queryManageListParam.getDeptId());
  505. }
  506. if (StringUtils.isNotBlank(queryManageListParam.getSearchValue())) {
  507. queryWrapper.and(wrapper -> {
  508. wrapper.like(CheckManage::getTitle, queryManageListParam.getSearchValue())
  509. .or().like(CheckManage::getSubjectName, queryManageListParam.getSearchValue())
  510. .or().like(CheckManage::getRoomNumber, queryManageListParam.getSearchValue())
  511. .or().like(CheckManage::getCheckUser, queryManageListParam.getSearchValue());
  512. });
  513. }
  514. if (!Objects.isNull(queryManageListParam.getStartTime()) && !Objects.isNull(queryManageListParam.getEndTime())) {
  515. queryWrapper.between(CheckManage::getCheckTime, queryManageListParam.getStartTime().atStartOfDay(), queryManageListParam.getEndTime().atTime(LocalTime.MAX));
  516. }
  517. if (Objects.nonNull(queryManageListParam.getManageStatus()) && queryManageListParam.getManageStatus() != -1) {
  518. queryWrapper.eq(CheckManage::getManageStatus, queryManageListParam.getManageStatus());
  519. }
  520. if (Objects.nonNull(queryManageListParam.getCheckTimeSort()) && queryManageListParam.getCheckTimeSort() == 1){
  521. queryWrapper.orderByAsc(CheckManage::getId);
  522. }
  523. if (Objects.nonNull(queryManageListParam.getCheckTimeSort()) && queryManageListParam.getCheckTimeSort() == 2){
  524. queryWrapper.orderByDesc(CheckManage::getId);
  525. }
  526. Page<CheckManage> page = checkManageService.page(new Page<>(queryManageListParam.getPageNum(), queryManageListParam.getPageSize()), queryWrapper);
  527. ResultData<Page<CheckManageListVo>> checkManageListVoPage = getPageResultData(page);
  528. if (checkManageListVoPage != null){
  529. //获取当前用户巡查计划列表
  530. List<CheckPlan> checkPlans = checkPlanService.list(new LambdaQueryWrapper<CheckPlan>().and(i -> i.eq(CheckPlan::getCheckStatus, 1).or().eq(CheckPlan::getCheckStatus, 2)));
  531. List<Long> checkPlanIdList = checkPlans.stream().map(CheckPlan::getId).collect(Collectors.toList());
  532. List<CheckMember> checkMemberList = checkMemberService.list(new LambdaQueryWrapper<CheckMember>().in(CheckMember::getCheckPlanId, checkPlanIdList).eq(CheckMember::getUserId, getCurrentUserId()));
  533. //获取自查身份
  534. QueryWrapper <CheckStaffUser> wrapperCheckUser = new QueryWrapper<>();
  535. wrapperCheckUser.lambda().eq(CheckStaffUser::getStaffType,1)
  536. .eq(CheckStaffUser::getUserId,getCurrentUserId());
  537. List<CheckStaffUser> checkStaffUserList = checkStaffUserService.list(wrapperCheckUser);
  538. Consumer<List<CheckManageListVo>> consumer = a->Optional.ofNullable(a)
  539. .orElseGet(Collections::emptyList)
  540. .stream()
  541. .forEach(b->{
  542. List<Integer> rectifyStatus = new ArrayList <>();
  543. rectifyStatus.add(2);
  544. rectifyStatus.add(3);
  545. List<CheckHazard> checkHazardList = checkHazardService.list(new LambdaQueryWrapper <CheckHazard>()
  546. .in(CheckHazard::getRectifyStatus,rectifyStatus).eq(CheckHazard::getCheckManageId,b.getId()));
  547. if(b.getManageStatus().intValue()==2){
  548. if(checkHazardList==null || checkHazardList.isEmpty()){
  549. b.setIsEndProcess(1);
  550. }else{
  551. b.setIsEndProcess(0);
  552. }
  553. }else{
  554. b.setIsEndProcess(0);
  555. }
  556. if (b.getCheckType() == 1) {
  557. //院校巡查
  558. if (checkMemberList!=null && !checkMemberList.isEmpty()) {
  559. List<Long> checkPlanIds = checkMemberList.stream().map(CheckMember::getCheckPlanId).collect(Collectors.toList());
  560. if (checkPlanIds.contains(b.getCheckPlanId())){
  561. b.setIsSelfData(1);
  562. }else {
  563. b.setIsSelfData(0);
  564. }
  565. }else {
  566. b.setIsSelfData(0);
  567. }
  568. }else {
  569. //实验室自查
  570. if(checkStaffUserList!=null && !checkStaffUserList.isEmpty()){
  571. List<Long> subIds = checkStaffUserList.stream().map(CheckStaffUser::getSubId).collect(Collectors.toList());
  572. if (subIds.contains(b.getSubId())){
  573. b.setIsSelfData(1);
  574. }else {
  575. b.setIsSelfData(0);
  576. }
  577. }else {
  578. b.setIsSelfData(0);
  579. }
  580. }
  581. });
  582. consumer.accept(checkManageListVoPage.getData().getRecords());
  583. return checkManageListVoPage;
  584. }
  585. return ResultData.success(page);
  586. }
  587. /**
  588. * 查询各管理状态数据数量
  589. * @Return com.zd.model.domain.ResultData
  590. **/
  591. @GetMapping(value = "/getManageStatusCount")
  592. @ApiOperation("查询检查计划各检查状态数据数量")
  593. public ResultData getManageStatusCount() {
  594. Map<String,Long> map = new HashMap<>();
  595. long noCheckNum = checkManageService.count(new LambdaQueryWrapper<CheckManage>().eq(CheckManage::getManageStatus, 0));
  596. long checkingNum = checkManageService.count(new LambdaQueryWrapper<CheckManage>().eq(CheckManage::getManageStatus,1));
  597. long applyNum = checkHazardService.count(new LambdaQueryWrapper<CheckHazard>().eq(CheckHazard::getRectifyStatus, 3));
  598. map.put("noCheck",noCheckNum);
  599. map.put("checking",checkingNum);
  600. map.put("applyNum",applyNum);
  601. return ResultData.success(map);
  602. }
  603. /**
  604. * 根据实验室id查询该实验室有关计划
  605. * @Return com.zd.model.domain.ResultData
  606. **/
  607. @GetMapping(value = "/getCheckPlanBySubId")
  608. @ApiOperation("根据实验室id查询该实验室有关计划")
  609. public ResultData getCheckPlanBySubId(@RequestParam("subId") Long subId) {
  610. List<CheckManage> list = checkManageService.list(new LambdaQueryWrapper<CheckManage>().eq(CheckManage::getSubId, subId)
  611. .le(CheckManage::getCycleStartTime, LocalDate.now())
  612. .and(checkManage -> checkManage.eq(CheckManage::getManageStatus, 0).or().eq(CheckManage::getManageStatus, 1))
  613. .orderByDesc(CheckManage::getId));
  614. List<CheckManageListVo> checkManageListVos = BeanUtils.copyList2List(list, CheckManageListVo.class);
  615. if (checkManageListVos != null && !checkManageListVos.isEmpty()){
  616. permissionData(checkManageListVos);
  617. }
  618. return ResultData.success(checkManageListVos);
  619. }
  620. private void permissionData(List<CheckManageListVo> checkManageListVos) {
  621. //权限
  622. boolean adminGentle = Boolean.FALSE;
  623. boolean applyGentle = Boolean.FALSE;
  624. boolean myApplyGentle = Boolean.FALSE;
  625. //获取管理员身份
  626. ResultData<Boolean> postInfo = remoteUserService.selectPostInfo(getCurrentUserId());
  627. if(Boolean.valueOf(postInfo.getData())){
  628. adminGentle = Boolean.TRUE;
  629. }else{
  630. adminGentle = Boolean.FALSE;
  631. }
  632. //获取巡查组身份
  633. List<CheckPlan> checkPlans = checkPlanService.list(new LambdaQueryWrapper<CheckPlan>().and(i -> i.eq(CheckPlan::getCheckStatus, 1).or().eq(CheckPlan::getCheckStatus, 2)));
  634. List<Long> checkPlanIdList = checkPlans.stream().map(CheckPlan::getId).collect(Collectors.toList());
  635. LambdaQueryWrapper<CheckMember> queryWrapper = new LambdaQueryWrapper<>();
  636. if(CollectionUtil.isNotEmpty(checkPlanIdList)){
  637. queryWrapper.in(CheckMember::getCheckPlanId, checkPlanIdList);
  638. }
  639. queryWrapper.eq(CheckMember::getUserId,getCurrentUserId());
  640. List<CheckMember> memberList = checkMemberService.list(queryWrapper);
  641. if(CollectionUtil.isNotEmpty(memberList)){
  642. applyGentle = Boolean.TRUE;
  643. }else{
  644. applyGentle = Boolean.FALSE;
  645. }
  646. //获取自查身份
  647. QueryWrapper <CheckStaffUser> wrapperCheckUser = new QueryWrapper<>();
  648. wrapperCheckUser.lambda().eq(CheckStaffUser::getStaffType,1)
  649. .eq(CheckStaffUser::getUserId,getCurrentUserId());
  650. List<CheckStaffUser> checkStaffUserList = checkStaffUserService.list(wrapperCheckUser);
  651. if(checkStaffUserList!=null && !checkStaffUserList.isEmpty()){
  652. myApplyGentle = Boolean.TRUE;
  653. }else{
  654. myApplyGentle = Boolean.FALSE;
  655. }
  656. if (!adminGentle) {
  657. if(applyGentle && myApplyGentle){
  658. checkManageListVos.forEach(i->{
  659. if(i.getCheckType() == 1){
  660. List<Long> collect = memberList.stream().map(CheckMember::getCheckPlanId).collect(Collectors.toList());
  661. if (collect.contains(i.getCheckPlanId())) {
  662. i.setIsSelfData(1);
  663. }else {
  664. i.setIsSelfData(0);
  665. }
  666. }else {
  667. List<Long> subIds = checkStaffUserList.stream().map(CheckStaffUser::getSubId).collect(Collectors.toList());
  668. if (subIds.contains(i.getSubId())) {
  669. i.setIsSelfData(1);
  670. }else {
  671. i.setIsSelfData(0);
  672. }
  673. }
  674. });
  675. } else if (!applyGentle && myApplyGentle) {
  676. //无巡查有自查 检查类型(1校院巡查 2实验室自查)
  677. checkManageListVos = checkManageListVos.stream().filter(i -> i.getCheckType() == 2).collect(Collectors.toList());
  678. checkManageListVos.forEach(i->{
  679. List<Long> subIds = checkStaffUserList.stream().map(CheckStaffUser::getSubId).collect(Collectors.toList());
  680. if (subIds.contains(i.getSubId())) {
  681. i.setIsSelfData(1);
  682. }else {
  683. i.setIsSelfData(0);
  684. }
  685. });
  686. } else if (applyGentle && !myApplyGentle) {
  687. //有巡查无自查
  688. checkManageListVos = checkManageListVos.stream().filter(i -> i.getCheckType() == 1).collect(Collectors.toList());
  689. checkManageListVos.forEach(i->{
  690. List<Long> collect = Optional.ofNullable(memberList).orElseGet(Collections::emptyList).stream().map(CheckMember::getCheckPlanId).collect(Collectors.toList());
  691. if (collect.contains(i.getCheckPlanId())) {
  692. i.setIsSelfData(1);
  693. }else {
  694. i.setIsSelfData(0);
  695. }
  696. });
  697. } else if (!applyGentle && !myApplyGentle) {
  698. //均无
  699. checkManageListVos = new ArrayList<>();
  700. }
  701. }else {
  702. checkManageListVos.forEach(i->{
  703. i.setIsSelfData(1);
  704. });
  705. }
  706. }
  707. /**
  708. * 实验室id,危险源ids 查询开展检查检查项
  709. */
  710. @GetMapping("/getHazardInfo")
  711. @ApiOperation(value = "实验室id,危险源ids 查询开展检查检查项")
  712. public ResultData getHazardInfo(@RequestParam("subId") Long subId,@RequestParam("hazardIds") String hazardIds) {
  713. List<CheckHazardInfoVo> checkHazardDtoList = checkManageService.getHazardInfo(subId,hazardIds);
  714. return ResultData.success(checkHazardDtoList);
  715. }
  716. /**
  717. * 根据关联ids查询开展检查检查项
  718. */
  719. @GetMapping("/getHazardInfoByJoinIds")
  720. @ApiOperation(value = "根据关联ids查询开展检查检查项")
  721. public ResultData getHazardInfoByJoinIds(@RequestParam("joinHazardIds") String joinHazardIds) {
  722. List<CheckHazardInfoVo> checkHazardDtoList = checkManageService.getHazardInfoByJoinIds(joinHazardIds);
  723. return ResultData.success(checkHazardDtoList);
  724. }
  725. /**
  726. * 生成整改通知书
  727. * @Param [id, response]
  728. * @Return void
  729. **/
  730. @ApiOperation(value = "生成整改通知书")
  731. @GetMapping("/getRectifyAdviceNoteView/{checkMangeId}")
  732. public ResultData getRectifyAdviceNoteView(@PathVariable("checkMangeId") Long checkMangeId) {
  733. return ResultData.success(checkManageService.getRectifyAdviceNoteView(checkMangeId));
  734. }
  735. /**
  736. * 生成整改通知书
  737. * @Param [id, response]
  738. * @Return void
  739. **/
  740. @ApiOperation(value = "生成整改通知书")
  741. @RequestMapping("/getRectifyAdviceNote/{checkMangeId}")
  742. public void getRectifyAdviceNote(@PathVariable("checkMangeId") Long checkMangeId, HttpServletResponse response) {
  743. wordService.getRectifyAdviceNote(checkMangeId, response);
  744. }
  745. /**
  746. * 生成整改告知书
  747. * @Param [id, response]
  748. * @Return void
  749. **/
  750. @ApiOperation(value = "生成整改告知书")
  751. @RequestMapping("/getRectifyNotificationView/{checkMangeId}")
  752. public ResultData getRectifyNotificationView(@PathVariable("checkMangeId") Long checkMangeId) {
  753. return ResultData.success(checkManageService.getRectifyNotificationView(checkMangeId));
  754. }
  755. /**
  756. * 生成整改告知书
  757. * @Param [id, response]
  758. * @Return void
  759. **/
  760. @ApiOperation(value = "生成整改告知书")
  761. @RequestMapping("/getRectifyNotification/{checkMangeId}")
  762. public void getRectifyNotification(@PathVariable("checkMangeId") Long checkMangeId, HttpServletResponse response) {
  763. wordService.getRectifyNotification(checkMangeId, response);
  764. }
  765. }