CheckPlanController.java 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357
  1. package com.zd.security.controller;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  4. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  5. import com.zd.common.core.annotation.Log;
  6. import com.zd.common.core.annotation.PreAuthorize;
  7. import com.zd.common.core.log.BusinessType;
  8. import com.zd.common.core.utils.BeanUtils;
  9. import com.zd.common.core.web.controller.AbstractController;
  10. import com.zd.model.domain.ResultData;
  11. import com.zd.model.domain.per.PerFun;
  12. import com.zd.model.domain.per.PerPrefix;
  13. import com.zd.security.api.bo.CheckPlanBo;
  14. import com.zd.security.api.bo.QueryCheckPlanListParam;
  15. import com.zd.security.api.vo.CheckPlanListVo;
  16. import com.zd.security.api.vo.CheckPlanVo;
  17. import com.zd.security.entity.CheckMember;
  18. import com.zd.security.entity.CheckPlan;
  19. import com.zd.security.scope.DataPermission;
  20. import com.zd.security.service.CheckMemberService;
  21. import com.zd.security.service.CheckPlanService;
  22. import io.swagger.annotations.Api;
  23. import io.swagger.annotations.ApiImplicitParam;
  24. import io.swagger.annotations.ApiOperation;
  25. import org.apache.commons.lang3.StringUtils;
  26. import org.springframework.beans.factory.annotation.Autowired;
  27. import org.springframework.web.bind.annotation.*;
  28. import java.time.LocalDate;
  29. import java.time.temporal.TemporalAdjusters;
  30. import java.util.*;
  31. import java.util.concurrent.locks.Lock;
  32. import java.util.concurrent.locks.ReentrantLock;
  33. import java.util.stream.Collectors;
  34. /**
  35. * <p>
  36. * 检查计划表 前端控制器
  37. * </p>
  38. *
  39. * @author hzw
  40. * @since 2023-04-19
  41. */
  42. @Api(tags = "检查计划")
  43. @RestController
  44. @RequestMapping("/checkPlan")
  45. public class CheckPlanController extends AbstractController {
  46. private Lock lock = new ReentrantLock();
  47. @Autowired
  48. private CheckPlanService checkPlanService;
  49. @Autowired
  50. private CheckMemberService checkMemberService;
  51. /**
  52. * 添加检查计划
  53. *
  54. * @Param [checkPlanBo]
  55. * @Return com.zd.model.domain.ResultData
  56. **/
  57. @Log(title = "添加检查计划", businessType = BusinessType.INSERT)
  58. @PreAuthorize(hasAnyPermi = {PerPrefix.SECURITY_CHECK_PLAN + PerFun.ADD,PerPrefix.SECURITY_CHECK_PLAN_1 + PerFun.ADD})
  59. @ApiOperation("添加检查计划")
  60. @PostMapping(value = "/add")
  61. public ResultData add(@RequestBody CheckPlanBo checkPlanBo) {
  62. //参数检查
  63. paramCheck.notNull(checkPlanBo).strNotEmpty(checkPlanBo.getTitle()).notNull(checkPlanBo.getCheckType()).notNull(checkPlanBo.getCycleStartTime()).notNull(checkPlanBo.getCycleEndTime()).notNull(checkPlanBo.getCheckRange());
  64. checkPlanBo.setCreateName(getCurrentUserName());
  65. if (checkPlanService.addCheckPlan(checkPlanBo)) {
  66. return ResultData.success("操作成功");
  67. }
  68. return ResultData.fail("操作失败");
  69. }
  70. /**
  71. * 小程序添加检查计划
  72. * @param checkPlanBo
  73. * @return
  74. */
  75. @Log(title = "小程序添加检查计划", businessType = BusinessType.INSERT)
  76. @ApiOperation("小程序添加检查计划")
  77. @PostMapping(value = "/appAdd")
  78. public ResultData appAdd(@RequestBody CheckPlanBo checkPlanBo) {
  79. //参数检查
  80. paramCheck.notNull(checkPlanBo).strNotEmpty(checkPlanBo.getTitle()).notNull(checkPlanBo.getCheckType()).notNull(checkPlanBo.getCycleStartTime()).notNull(checkPlanBo.getCycleEndTime()).notNull(checkPlanBo.getCheckRange());
  81. checkPlanBo.setCreateName(getCurrentUserName());
  82. if (checkPlanService.addCheckPlan(checkPlanBo)) {
  83. return ResultData.success("操作成功");
  84. }
  85. return ResultData.fail("操作失败");
  86. }
  87. /**
  88. * 修改检查计划
  89. *
  90. * @Param [checkPlanBo]
  91. * @Return com.zd.model.domain.ResultData
  92. **/
  93. @Log(title = "修改检查计划", businessType = BusinessType.UPDATE)
  94. @PreAuthorize(hasAnyPermi = {PerPrefix.SECURITY_CHECK_PLAN + PerFun.EDIT,PerPrefix.SECURITY_CHECK_PLAN_1 + PerFun.EDIT})
  95. @ApiOperation("修改检查计划")
  96. @PutMapping(value = "/update")
  97. public ResultData update(@RequestBody CheckPlanBo checkPlanBo) {
  98. //参数检查
  99. paramCheck.notNull(checkPlanBo).strNotEmpty(checkPlanBo.getTitle()).notNull(checkPlanBo.getCheckType()).notNull(checkPlanBo.getCycleStartTime()).notNull(checkPlanBo.getCycleEndTime()).notNull(checkPlanBo.getCheckRange());
  100. checkPlanBo.setUpdateName(getCurrentUserName());
  101. if (checkPlanService.updateCheckPlan(checkPlanBo)) {
  102. return ResultData.success("操作成功");
  103. }
  104. return ResultData.fail("操作失败");
  105. }
  106. /**
  107. * 小程序修改检查计划
  108. *
  109. * @Param [checkPlanBo]
  110. * @Return com.zd.model.domain.ResultData
  111. **/
  112. @Log(title = "小程序修改检查计划", businessType = BusinessType.UPDATE)
  113. @ApiOperation("小程序修改检查计划")
  114. @PutMapping(value = "/appUpdate")
  115. public ResultData appUpdate(@RequestBody CheckPlanBo checkPlanBo) {
  116. //参数检查
  117. paramCheck.notNull(checkPlanBo).strNotEmpty(checkPlanBo.getTitle()).notNull(checkPlanBo.getCheckType()).notNull(checkPlanBo.getCycleStartTime()).notNull(checkPlanBo.getCycleEndTime()).notNull(checkPlanBo.getCheckRange());
  118. checkPlanBo.setUpdateName(getCurrentUserName());
  119. if (checkPlanService.updateCheckPlan(checkPlanBo)) {
  120. return ResultData.success("操作成功");
  121. }
  122. return ResultData.fail("操作失败");
  123. }
  124. /**
  125. * 根据id查询计划方法
  126. *
  127. * @Param [id 检查计划id]
  128. * @Return com.zd.model.domain.ResultData
  129. **/
  130. @ApiOperation("根据id查询计划方法")
  131. @PreAuthorize(hasAnyPermi = {PerPrefix.SECURITY_CHECK_PLAN + PerFun.QUERY,PerPrefix.SECURITY_CHECK_PLAN_1 + PerFun.QUERY})
  132. @GetMapping(value = "/findCheckPlan")
  133. @ApiImplicitParam(name = "id", value = "检查计划id", required = true, dataTypeClass = Long.class)
  134. public ResultData find(@RequestParam("id") Long id) {
  135. CheckPlanVo checkPlanVo = checkPlanService.findCheckPlan(id);
  136. return ResultData.success(checkPlanVo);
  137. }
  138. /**
  139. * 小程序根据id查询计划方法
  140. *
  141. * @Param [id 检查计划id]
  142. * @Return com.zd.model.domain.ResultData
  143. **/
  144. @ApiOperation("小程序根据id查询计划方法")
  145. @GetMapping(value = "/appFindCheckPlan")
  146. @ApiImplicitParam(name = "id", value = "检查计划id", required = true, dataTypeClass = Long.class)
  147. public ResultData appFindCheckPlan(@RequestParam("id") Long id) {
  148. CheckPlanVo checkPlanVo = checkPlanService.findCheckPlan(id);
  149. return ResultData.success(checkPlanVo);
  150. }
  151. /**
  152. * 获取检查计划列表(分页)
  153. *
  154. * @Param [checkPlanBo]
  155. * @Return com.zd.model.domain.ResultData
  156. **/
  157. @ApiOperation("获取检查计划列表(分页)")
  158. //@DataPermission(permissionStr = PerPrefix.SECURITY_CHECK_PLAN)
  159. // @DataPermission(roleKey="checkGentle", tableAlias="*")
  160. @PreAuthorize(hasAnyPermi = {PerPrefix.SECURITY_CHECK_PLAN + PerFun.LIST,PerPrefix.SECURITY_CHECK_PLAN_1 + PerFun.LIST})
  161. @PostMapping(value = "/list")
  162. public ResultData list(@RequestBody QueryCheckPlanListParam queryCheckPlanListParam) {
  163. LambdaQueryWrapper<CheckPlan> queryWrapper = new LambdaQueryWrapper<>();
  164. if (!Objects.isNull(queryCheckPlanListParam.getCheckType()) && queryCheckPlanListParam.getCheckType() != 0) {
  165. queryWrapper.eq(CheckPlan::getCheckType, queryCheckPlanListParam.getCheckType());
  166. }
  167. if (!Objects.isNull(queryCheckPlanListParam.getCheckStatus()) && queryCheckPlanListParam.getCheckStatus() != 0) {
  168. queryWrapper.eq(CheckPlan::getCheckStatus, queryCheckPlanListParam.getCheckStatus());
  169. }
  170. if (StringUtils.isNotBlank(queryCheckPlanListParam.getSearchValue())) {
  171. queryWrapper.and(wrapper -> {
  172. wrapper.like(CheckPlan::getTitle, queryCheckPlanListParam.getSearchValue()).or().like(CheckPlan::getCreateName, queryCheckPlanListParam.getSearchValue());
  173. });
  174. }
  175. if (!Objects.isNull(queryCheckPlanListParam.getCycleStartTime()) && !Objects.isNull(queryCheckPlanListParam.getCycleEndTime())) {
  176. queryWrapper.le(CheckPlan::getCycleStartTime, queryCheckPlanListParam.getCycleEndTime())
  177. .ge(CheckPlan::getCycleEndTime, queryCheckPlanListParam.getCycleStartTime());
  178. }
  179. if (Objects.nonNull(queryCheckPlanListParam.getCreateTimeSort()) && queryCheckPlanListParam.getCreateTimeSort() == 1){
  180. queryWrapper.orderByAsc(CheckPlan::getCreateTime);
  181. }
  182. if (Objects.nonNull(queryCheckPlanListParam.getCreateTimeSort()) && queryCheckPlanListParam.getCreateTimeSort() == 2){
  183. queryWrapper.orderByDesc(CheckPlan::getCreateTime);
  184. }
  185. StringBuilder sql = new StringBuilder();
  186. if(Objects.nonNull(queryCheckPlanListParam.getMyRelated()) && queryCheckPlanListParam.getMyRelated() == 1){
  187. sql.append(" ( create_by = ").append(getCurrentUserId()).append(" ) ");
  188. }
  189. if(Objects.nonNull(queryCheckPlanListParam.getMyRelated()) && queryCheckPlanListParam.getMyRelated() != 1){
  190. sql.append(" ( create_by = ").append(getCurrentUserId()).append(" OR 1=1 )");
  191. }
  192. queryWrapper.apply(sql.toString());
  193. queryWrapper.orderByDesc(CheckPlan::getId);
  194. Page<CheckPlan> page = checkPlanService.page(new Page<>(queryCheckPlanListParam.getPageNum(), queryCheckPlanListParam.getPageSize()), queryWrapper);;
  195. List<CheckPlan> records = page.getRecords();
  196. if (records!=null && !records.isEmpty()) {
  197. List<CheckPlanListVo> checkPlanListVos = BeanUtils.copyList2List(records, CheckPlanListVo.class);
  198. checkPlanListVos.forEach(checkPlanListVo -> {
  199. if (getCurrentUserId().equals(checkPlanListVo.getCreateBy())) {
  200. checkPlanListVo.setIsSelfData(1);
  201. }else {
  202. checkPlanListVo.setIsSelfData(0);
  203. }
  204. });
  205. Page<CheckPlanListVo> checkManageListVoPage = new Page<>();
  206. BeanUtils.copyProperties(page, checkManageListVoPage);
  207. checkManageListVoPage.setRecords(checkPlanListVos);
  208. return ResultData.success(checkManageListVoPage);
  209. }
  210. return ResultData.success(page);
  211. }
  212. /**
  213. * 小程序获取检查计划列表(分页)
  214. *
  215. * @Param [checkPlanBo]
  216. * @Return com.zd.model.domain.ResultData
  217. **/
  218. @ApiOperation("小程序获取检查计划列表(分页)")
  219. //@DataPermission(permissionStr = PerPrefix.SECURITY_CHECK_PLAN)
  220. @DataPermission(roleKey="checkGentle", tableAlias="*")
  221. @PostMapping(value = "/appList")
  222. public ResultData appList(@RequestBody QueryCheckPlanListParam queryCheckPlanListParam) {
  223. queryCheckPlanListParam.setMyRelated(1);
  224. LambdaQueryWrapper<CheckPlan> queryWrapper = new LambdaQueryWrapper<>();
  225. if (!Objects.isNull(queryCheckPlanListParam.getCheckType()) && queryCheckPlanListParam.getCheckType() != 0) {
  226. queryWrapper.eq(CheckPlan::getCheckType, queryCheckPlanListParam.getCheckType());
  227. }
  228. if (!Objects.isNull(queryCheckPlanListParam.getCheckStatus()) && queryCheckPlanListParam.getCheckStatus() != 0) {
  229. queryWrapper.eq(CheckPlan::getCheckStatus, queryCheckPlanListParam.getCheckStatus());
  230. }
  231. if (StringUtils.isNotBlank(queryCheckPlanListParam.getSearchValue())) {
  232. queryWrapper.and(wrapper -> {
  233. wrapper.like(CheckPlan::getTitle, queryCheckPlanListParam.getSearchValue()).or().like(CheckPlan::getCreateName, queryCheckPlanListParam.getSearchValue());
  234. });
  235. }
  236. if (!Objects.isNull(queryCheckPlanListParam.getCycleStartTime()) && !Objects.isNull(queryCheckPlanListParam.getCycleEndTime())) {
  237. queryWrapper.le(CheckPlan::getCycleStartTime, queryCheckPlanListParam.getCycleEndTime())
  238. .ge(CheckPlan::getCycleEndTime, queryCheckPlanListParam.getCycleStartTime());
  239. }
  240. if (Objects.nonNull(queryCheckPlanListParam.getCreateTimeSort()) && queryCheckPlanListParam.getCreateTimeSort() == 1){
  241. queryWrapper.orderByAsc(CheckPlan::getCreateTime);
  242. }
  243. if (Objects.nonNull(queryCheckPlanListParam.getCreateTimeSort()) && queryCheckPlanListParam.getCreateTimeSort() == 2){
  244. queryWrapper.orderByDesc(CheckPlan::getCreateTime);
  245. }
  246. StringBuilder sql = new StringBuilder();
  247. if(Objects.nonNull(queryCheckPlanListParam.getMyRelated()) && queryCheckPlanListParam.getMyRelated() == 1){
  248. sql.append(" ( create_by = ").append(getCurrentUserId()).append(" ) ");
  249. }
  250. if(Objects.nonNull(queryCheckPlanListParam.getMyRelated()) && queryCheckPlanListParam.getMyRelated() != 1){
  251. sql.append(" ( create_by = ").append(getCurrentUserId()).append(" OR 1=1 )");
  252. }
  253. queryWrapper.apply(sql.toString());
  254. queryWrapper.orderByDesc(CheckPlan::getId);
  255. Page<CheckPlan> page;
  256. lock.lock();
  257. try {
  258. page = checkPlanService.page(new Page<>(queryCheckPlanListParam.getPageNum(), queryCheckPlanListParam.getPageSize()), queryWrapper);
  259. }finally {
  260. lock.unlock();
  261. }
  262. return ResultData.success(page);
  263. }
  264. /**
  265. * 通过id删除检查计划
  266. *
  267. * @Param [id 检查计划id]
  268. * @Return com.zd.model.domain.ResultData
  269. **/
  270. @Log(title = "通过id删除检查计划", businessType = BusinessType.DELETE)
  271. //@DataPermission(permissionStr = PerPrefix.SECURITY_CHECK_PLAN)
  272. @PreAuthorize(hasAnyPermi = {PerPrefix.SECURITY_CHECK_PLAN + PerFun.REMOVE,PerPrefix.SECURITY_CHECK_PLAN_1 + PerFun.REMOVE})
  273. @DeleteMapping(value = "/delete")
  274. @ApiOperation("通过id删除检查计划")
  275. public ResultData delete(@RequestParam("id") Long id,
  276. @RequestParam("checkType") Integer checkType) {
  277. boolean b = checkPlanService.deleteCheckPlan(id,checkType);
  278. if (b) {
  279. return ResultData.success("操作成功");
  280. }
  281. return ResultData.fail("操作失败");
  282. }
  283. /**
  284. * 查询历史计划标题列表
  285. * @Return com.zd.model.domain.ResultData
  286. **/
  287. @GetMapping(value = "/getHistoryPlanTitles")
  288. @ApiOperation("查询历史计划标题列表")
  289. public ResultData getHistoryPlanTitles() {
  290. List<CheckPlan> list = checkPlanService.list(new LambdaQueryWrapper<CheckPlan>()
  291. .eq(CheckPlan::getCreateBy, getCurrentUserId())
  292. .eq(CheckPlan::getHideTitle,0)
  293. .between(CheckPlan::getCreateTime, LocalDate.now().with(TemporalAdjusters.firstDayOfYear()), LocalDate.now().with(TemporalAdjusters.lastDayOfYear()))
  294. .orderByDesc(CheckPlan::getId));
  295. return ResultData.success(list);
  296. }
  297. /**
  298. * 隐藏历史计划标题
  299. * @Return com.zd.model.domain.ResultData
  300. **/
  301. @GetMapping(value = "/hideHistoryPlanTitle")
  302. @ApiOperation("隐藏历史计划标题")
  303. public ResultData deletHistoryPlanTitl(@RequestParam("checkPlanId") Long checkPlanId) {
  304. boolean update = checkPlanService.update(new LambdaUpdateWrapper<CheckPlan>().eq(CheckPlan::getId, checkPlanId).set(CheckPlan::getHideTitle, 1));
  305. if (update) {
  306. return ResultData.success();
  307. }
  308. return ResultData.fail();
  309. }
  310. /**
  311. * 查询检查计划各检查状态数据数量
  312. * @Return com.zd.model.domain.ResultData
  313. **/
  314. @GetMapping(value = "/getCheckStatusCount")
  315. @ApiOperation("查询检查计划各检查状态数据数量")
  316. public ResultData getCheckStatusCount() {
  317. Map<String,Long> map = new HashMap<>();
  318. long noStartNum = checkPlanService.count(new LambdaQueryWrapper<CheckPlan>().eq(CheckPlan::getCheckStatus, 1));
  319. long startNum = checkPlanService.count(new LambdaQueryWrapper<CheckPlan>().eq(CheckPlan::getCheckStatus, 2));
  320. map.put("noStart",noStartNum);
  321. map.put("start",startNum);
  322. return ResultData.success(map);
  323. }
  324. /**
  325. * 查询所有计划 所有人员信息列表
  326. * @Return com.zd.model.domain.ResultData
  327. **/
  328. @GetMapping(value = "/getAllCheckMemberList/{userId}")
  329. @ApiOperation("查询所有计划 所有人员信息列表")
  330. public ResultData getAllCheckMemberList(@PathVariable("userId") Long userId) {
  331. List<CheckPlan> list = checkPlanService.list(new LambdaQueryWrapper<CheckPlan>().and(i -> i.eq(CheckPlan::getCheckStatus, 1).or().eq(CheckPlan::getCheckStatus, 2)));
  332. if (list!=null && !list.isEmpty()){
  333. List<Long> checkPlanIdList = list.stream().map(CheckPlan::getId).collect(Collectors.toList());
  334. List<CheckMember> memberList = checkMemberService.list(new LambdaQueryWrapper<CheckMember>().in(CheckMember::getCheckPlanId, checkPlanIdList).eq(CheckMember::getUserId,userId));
  335. return ResultData.success(memberList);
  336. }
  337. return ResultData.success(new ArrayList<CheckMember>());
  338. }
  339. }