package com.zd.security.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.zd.common.core.annotation.Log; import com.zd.common.core.annotation.PreAuthorize; import com.zd.common.core.log.BusinessType; import com.zd.common.core.utils.BeanUtils; import com.zd.common.core.web.controller.AbstractController; import com.zd.model.domain.ResultData; import com.zd.model.domain.per.PerFun; import com.zd.model.domain.per.PerPrefix; import com.zd.security.api.bo.CheckPlanBo; import com.zd.security.api.bo.QueryCheckPlanListParam; import com.zd.security.api.vo.CheckPlanListVo; import com.zd.security.api.vo.CheckPlanVo; import com.zd.security.entity.CheckMember; import com.zd.security.entity.CheckPlan; import com.zd.security.scope.DataPermission; import com.zd.security.service.CheckMemberService; import com.zd.security.service.CheckPlanService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.time.LocalDate; import java.time.temporal.TemporalAdjusters; import java.util.*; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; import java.util.stream.Collectors; /** *

* 检查计划表 前端控制器 *

* * @author hzw * @since 2023-04-19 */ @Api(tags = "检查计划") @RestController @RequestMapping("/checkPlan") public class CheckPlanController extends AbstractController { private Lock lock = new ReentrantLock(); @Autowired private CheckPlanService checkPlanService; @Autowired private CheckMemberService checkMemberService; /** * 添加检查计划 * * @Param [checkPlanBo] * @Return com.zd.model.domain.ResultData **/ @Log(title = "添加检查计划", businessType = BusinessType.INSERT) @PreAuthorize(hasAnyPermi = {PerPrefix.SECURITY_CHECK_PLAN + PerFun.ADD,PerPrefix.SECURITY_CHECK_PLAN_1 + PerFun.ADD}) @ApiOperation("添加检查计划") @PostMapping(value = "/add") public ResultData add(@RequestBody CheckPlanBo checkPlanBo) { //参数检查 paramCheck.notNull(checkPlanBo).strNotEmpty(checkPlanBo.getTitle()).notNull(checkPlanBo.getCheckType()).notNull(checkPlanBo.getCycleStartTime()).notNull(checkPlanBo.getCycleEndTime()).notNull(checkPlanBo.getCheckRange()); checkPlanBo.setCreateName(getCurrentUserName()); if (checkPlanService.addCheckPlan(checkPlanBo)) { return ResultData.success("操作成功"); } return ResultData.fail("操作失败"); } /** * 小程序添加检查计划 * @param checkPlanBo * @return */ @Log(title = "小程序添加检查计划", businessType = BusinessType.INSERT) @ApiOperation("小程序添加检查计划") @PostMapping(value = "/appAdd") public ResultData appAdd(@RequestBody CheckPlanBo checkPlanBo) { //参数检查 paramCheck.notNull(checkPlanBo).strNotEmpty(checkPlanBo.getTitle()).notNull(checkPlanBo.getCheckType()).notNull(checkPlanBo.getCycleStartTime()).notNull(checkPlanBo.getCycleEndTime()).notNull(checkPlanBo.getCheckRange()); checkPlanBo.setCreateName(getCurrentUserName()); if (checkPlanService.addCheckPlan(checkPlanBo)) { return ResultData.success("操作成功"); } return ResultData.fail("操作失败"); } /** * 修改检查计划 * * @Param [checkPlanBo] * @Return com.zd.model.domain.ResultData **/ @Log(title = "修改检查计划", businessType = BusinessType.UPDATE) @PreAuthorize(hasAnyPermi = {PerPrefix.SECURITY_CHECK_PLAN + PerFun.EDIT,PerPrefix.SECURITY_CHECK_PLAN_1 + PerFun.EDIT}) @ApiOperation("修改检查计划") @PutMapping(value = "/update") public ResultData update(@RequestBody CheckPlanBo checkPlanBo) { //参数检查 paramCheck.notNull(checkPlanBo).strNotEmpty(checkPlanBo.getTitle()).notNull(checkPlanBo.getCheckType()).notNull(checkPlanBo.getCycleStartTime()).notNull(checkPlanBo.getCycleEndTime()).notNull(checkPlanBo.getCheckRange()); checkPlanBo.setUpdateName(getCurrentUserName()); if (checkPlanService.updateCheckPlan(checkPlanBo)) { return ResultData.success("操作成功"); } return ResultData.fail("操作失败"); } /** * 小程序修改检查计划 * * @Param [checkPlanBo] * @Return com.zd.model.domain.ResultData **/ @Log(title = "小程序修改检查计划", businessType = BusinessType.UPDATE) @ApiOperation("小程序修改检查计划") @PutMapping(value = "/appUpdate") public ResultData appUpdate(@RequestBody CheckPlanBo checkPlanBo) { //参数检查 paramCheck.notNull(checkPlanBo).strNotEmpty(checkPlanBo.getTitle()).notNull(checkPlanBo.getCheckType()).notNull(checkPlanBo.getCycleStartTime()).notNull(checkPlanBo.getCycleEndTime()).notNull(checkPlanBo.getCheckRange()); checkPlanBo.setUpdateName(getCurrentUserName()); if (checkPlanService.updateCheckPlan(checkPlanBo)) { return ResultData.success("操作成功"); } return ResultData.fail("操作失败"); } /** * 根据id查询计划方法 * * @Param [id 检查计划id] * @Return com.zd.model.domain.ResultData **/ @ApiOperation("根据id查询计划方法") @PreAuthorize(hasAnyPermi = {PerPrefix.SECURITY_CHECK_PLAN + PerFun.QUERY,PerPrefix.SECURITY_CHECK_PLAN_1 + PerFun.QUERY}) @GetMapping(value = "/findCheckPlan") @ApiImplicitParam(name = "id", value = "检查计划id", required = true, dataTypeClass = Long.class) public ResultData find(@RequestParam("id") Long id) { CheckPlanVo checkPlanVo = checkPlanService.findCheckPlan(id); return ResultData.success(checkPlanVo); } /** * 小程序根据id查询计划方法 * * @Param [id 检查计划id] * @Return com.zd.model.domain.ResultData **/ @ApiOperation("小程序根据id查询计划方法") @GetMapping(value = "/appFindCheckPlan") @ApiImplicitParam(name = "id", value = "检查计划id", required = true, dataTypeClass = Long.class) public ResultData appFindCheckPlan(@RequestParam("id") Long id) { CheckPlanVo checkPlanVo = checkPlanService.findCheckPlan(id); return ResultData.success(checkPlanVo); } /** * 获取检查计划列表(分页) * * @Param [checkPlanBo] * @Return com.zd.model.domain.ResultData **/ @ApiOperation("获取检查计划列表(分页)") //@DataPermission(permissionStr = PerPrefix.SECURITY_CHECK_PLAN) // @DataPermission(roleKey="checkGentle", tableAlias="*") @PreAuthorize(hasAnyPermi = {PerPrefix.SECURITY_CHECK_PLAN + PerFun.LIST,PerPrefix.SECURITY_CHECK_PLAN_1 + PerFun.LIST}) @PostMapping(value = "/list") public ResultData list(@RequestBody QueryCheckPlanListParam queryCheckPlanListParam) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); if (!Objects.isNull(queryCheckPlanListParam.getCheckType()) && queryCheckPlanListParam.getCheckType() != 0) { queryWrapper.eq(CheckPlan::getCheckType, queryCheckPlanListParam.getCheckType()); } if (!Objects.isNull(queryCheckPlanListParam.getCheckStatus()) && queryCheckPlanListParam.getCheckStatus() != 0) { queryWrapper.eq(CheckPlan::getCheckStatus, queryCheckPlanListParam.getCheckStatus()); } if (StringUtils.isNotBlank(queryCheckPlanListParam.getSearchValue())) { queryWrapper.and(wrapper -> { wrapper.like(CheckPlan::getTitle, queryCheckPlanListParam.getSearchValue()).or().like(CheckPlan::getCreateName, queryCheckPlanListParam.getSearchValue()); }); } if (!Objects.isNull(queryCheckPlanListParam.getCycleStartTime()) && !Objects.isNull(queryCheckPlanListParam.getCycleEndTime())) { queryWrapper.le(CheckPlan::getCycleStartTime, queryCheckPlanListParam.getCycleEndTime()) .ge(CheckPlan::getCycleEndTime, queryCheckPlanListParam.getCycleStartTime()); } if (Objects.nonNull(queryCheckPlanListParam.getCreateTimeSort()) && queryCheckPlanListParam.getCreateTimeSort() == 1){ queryWrapper.orderByAsc(CheckPlan::getCreateTime); } if (Objects.nonNull(queryCheckPlanListParam.getCreateTimeSort()) && queryCheckPlanListParam.getCreateTimeSort() == 2){ queryWrapper.orderByDesc(CheckPlan::getCreateTime); } StringBuilder sql = new StringBuilder(); if(Objects.nonNull(queryCheckPlanListParam.getMyRelated()) && queryCheckPlanListParam.getMyRelated() == 1){ sql.append(" ( create_by = ").append(getCurrentUserId()).append(" ) "); } if(Objects.nonNull(queryCheckPlanListParam.getMyRelated()) && queryCheckPlanListParam.getMyRelated() != 1){ sql.append(" ( create_by = ").append(getCurrentUserId()).append(" OR 1=1 )"); } queryWrapper.apply(sql.toString()); queryWrapper.orderByDesc(CheckPlan::getId); Page page = checkPlanService.page(new Page<>(queryCheckPlanListParam.getPageNum(), queryCheckPlanListParam.getPageSize()), queryWrapper);; List records = page.getRecords(); if (records!=null && !records.isEmpty()) { List checkPlanListVos = BeanUtils.copyList2List(records, CheckPlanListVo.class); checkPlanListVos.forEach(checkPlanListVo -> { if (getCurrentUserId().equals(checkPlanListVo.getCreateBy())) { checkPlanListVo.setIsSelfData(1); }else { checkPlanListVo.setIsSelfData(0); } }); Page checkManageListVoPage = new Page<>(); BeanUtils.copyProperties(page, checkManageListVoPage); checkManageListVoPage.setRecords(checkPlanListVos); return ResultData.success(checkManageListVoPage); } return ResultData.success(page); } /** * 小程序获取检查计划列表(分页) * * @Param [checkPlanBo] * @Return com.zd.model.domain.ResultData **/ @ApiOperation("小程序获取检查计划列表(分页)") //@DataPermission(permissionStr = PerPrefix.SECURITY_CHECK_PLAN) @DataPermission(roleKey="checkGentle", tableAlias="*") @PostMapping(value = "/appList") public ResultData appList(@RequestBody QueryCheckPlanListParam queryCheckPlanListParam) { queryCheckPlanListParam.setMyRelated(1); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); if (!Objects.isNull(queryCheckPlanListParam.getCheckType()) && queryCheckPlanListParam.getCheckType() != 0) { queryWrapper.eq(CheckPlan::getCheckType, queryCheckPlanListParam.getCheckType()); } if (!Objects.isNull(queryCheckPlanListParam.getCheckStatus()) && queryCheckPlanListParam.getCheckStatus() != 0) { queryWrapper.eq(CheckPlan::getCheckStatus, queryCheckPlanListParam.getCheckStatus()); } if (StringUtils.isNotBlank(queryCheckPlanListParam.getSearchValue())) { queryWrapper.and(wrapper -> { wrapper.like(CheckPlan::getTitle, queryCheckPlanListParam.getSearchValue()).or().like(CheckPlan::getCreateName, queryCheckPlanListParam.getSearchValue()); }); } if (!Objects.isNull(queryCheckPlanListParam.getCycleStartTime()) && !Objects.isNull(queryCheckPlanListParam.getCycleEndTime())) { queryWrapper.le(CheckPlan::getCycleStartTime, queryCheckPlanListParam.getCycleEndTime()) .ge(CheckPlan::getCycleEndTime, queryCheckPlanListParam.getCycleStartTime()); } if (Objects.nonNull(queryCheckPlanListParam.getCreateTimeSort()) && queryCheckPlanListParam.getCreateTimeSort() == 1){ queryWrapper.orderByAsc(CheckPlan::getCreateTime); } if (Objects.nonNull(queryCheckPlanListParam.getCreateTimeSort()) && queryCheckPlanListParam.getCreateTimeSort() == 2){ queryWrapper.orderByDesc(CheckPlan::getCreateTime); } StringBuilder sql = new StringBuilder(); if(Objects.nonNull(queryCheckPlanListParam.getMyRelated()) && queryCheckPlanListParam.getMyRelated() == 1){ sql.append(" ( create_by = ").append(getCurrentUserId()).append(" ) "); } if(Objects.nonNull(queryCheckPlanListParam.getMyRelated()) && queryCheckPlanListParam.getMyRelated() != 1){ sql.append(" ( create_by = ").append(getCurrentUserId()).append(" OR 1=1 )"); } queryWrapper.apply(sql.toString()); queryWrapper.orderByDesc(CheckPlan::getId); Page page; lock.lock(); try { page = checkPlanService.page(new Page<>(queryCheckPlanListParam.getPageNum(), queryCheckPlanListParam.getPageSize()), queryWrapper); }finally { lock.unlock(); } return ResultData.success(page); } /** * 通过id删除检查计划 * * @Param [id 检查计划id] * @Return com.zd.model.domain.ResultData **/ @Log(title = "通过id删除检查计划", businessType = BusinessType.DELETE) //@DataPermission(permissionStr = PerPrefix.SECURITY_CHECK_PLAN) @PreAuthorize(hasAnyPermi = {PerPrefix.SECURITY_CHECK_PLAN + PerFun.REMOVE,PerPrefix.SECURITY_CHECK_PLAN_1 + PerFun.REMOVE}) @DeleteMapping(value = "/delete") @ApiOperation("通过id删除检查计划") public ResultData delete(@RequestParam("id") Long id, @RequestParam("checkType") Integer checkType) { boolean b = checkPlanService.deleteCheckPlan(id,checkType); if (b) { return ResultData.success("操作成功"); } return ResultData.fail("操作失败"); } /** * 查询历史计划标题列表 * @Return com.zd.model.domain.ResultData **/ @GetMapping(value = "/getHistoryPlanTitles") @ApiOperation("查询历史计划标题列表") public ResultData getHistoryPlanTitles() { List list = checkPlanService.list(new LambdaQueryWrapper() .eq(CheckPlan::getCreateBy, getCurrentUserId()) .eq(CheckPlan::getHideTitle,0) .between(CheckPlan::getCreateTime, LocalDate.now().with(TemporalAdjusters.firstDayOfYear()), LocalDate.now().with(TemporalAdjusters.lastDayOfYear())) .orderByDesc(CheckPlan::getId)); return ResultData.success(list); } /** * 隐藏历史计划标题 * @Return com.zd.model.domain.ResultData **/ @GetMapping(value = "/hideHistoryPlanTitle") @ApiOperation("隐藏历史计划标题") public ResultData deletHistoryPlanTitl(@RequestParam("checkPlanId") Long checkPlanId) { boolean update = checkPlanService.update(new LambdaUpdateWrapper().eq(CheckPlan::getId, checkPlanId).set(CheckPlan::getHideTitle, 1)); if (update) { return ResultData.success(); } return ResultData.fail(); } /** * 查询检查计划各检查状态数据数量 * @Return com.zd.model.domain.ResultData **/ @GetMapping(value = "/getCheckStatusCount") @ApiOperation("查询检查计划各检查状态数据数量") public ResultData getCheckStatusCount() { Map map = new HashMap<>(); long noStartNum = checkPlanService.count(new LambdaQueryWrapper().eq(CheckPlan::getCheckStatus, 1)); long startNum = checkPlanService.count(new LambdaQueryWrapper().eq(CheckPlan::getCheckStatus, 2)); map.put("noStart",noStartNum); map.put("start",startNum); return ResultData.success(map); } /** * 查询所有计划 所有人员信息列表 * @Return com.zd.model.domain.ResultData **/ @GetMapping(value = "/getAllCheckMemberList/{userId}") @ApiOperation("查询所有计划 所有人员信息列表") public ResultData getAllCheckMemberList(@PathVariable("userId") Long userId) { List list = checkPlanService.list(new LambdaQueryWrapper().and(i -> i.eq(CheckPlan::getCheckStatus, 1).or().eq(CheckPlan::getCheckStatus, 2))); if (list!=null && !list.isEmpty()){ List checkPlanIdList = list.stream().map(CheckPlan::getId).collect(Collectors.toList()); List memberList = checkMemberService.list(new LambdaQueryWrapper().in(CheckMember::getCheckPlanId, checkPlanIdList).eq(CheckMember::getUserId,userId)); return ResultData.success(memberList); } return ResultData.success(new ArrayList()); } }