package com.zd.security.controller;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.CheckManageBo;
import com.zd.security.api.bo.QueryCheckManageListParam;
import com.zd.security.api.bo.QueryManageListParam;
import com.zd.security.api.vo.CheckHazardInfoVo;
import com.zd.security.api.vo.CheckManageListVo;
import com.zd.security.api.vo.CheckManageVo;
import com.zd.security.entity.*;
import com.zd.security.scope.DataPermission;
import com.zd.security.scope.DataPermissionAspect;
import com.zd.security.service.*;
import com.zd.security.service.impl.WordService;
import com.zd.system.api.feign.RemoteUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.Nullable;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.*;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import java.util.function.Consumer;
import java.util.stream.Collectors;
/**
*
* 检查管理表 前端控制器
*
*
* @author hzw
* @since 2023-04-21
*/
@Api(tags = "检查管理")
@RestController
@RequestMapping("/checkManage")
public class CheckManageController extends AbstractController {
private Lock lock = new ReentrantLock();
@Autowired
private CheckManageService checkManageService;
@Autowired
private CheckHazardService checkHazardService;
@Autowired
private WordService wordService;
@Autowired
private CheckPlanService checkPlanService;
@Autowired
private CheckMemberService checkMemberService;
@Autowired
private CheckStaffUserService checkStaffUserService;
@Autowired
private RemoteUserService remoteUserService;
/**
* 添加计划管理
*
* @Param [checkManageBo]
* @Return com.zd.model.domain.ResultData
**/
@Log(title = "添加计划管理", businessType = BusinessType.INSERT)
@ApiOperation("添加计划管理")
@PostMapping(value = "/add")
public ResultData add(@RequestBody CheckManageBo checkManageBo) {
//参数检查
paramCheck.notNull(checkManageBo).strNotEmpty(checkManageBo.getTitle()).notNull(checkManageBo.getCheckType())
.notNull(checkManageBo.getCycleStartTime()).notNull(checkManageBo.getCycleEndTime());
checkManageBo.setLoginUserName(getCurrentUserName());
checkManageBo.setLoginUserId(getCurrentUserId());
if (checkManageService.addcheckManage(checkManageBo)) {
return ResultData.success("操作成功");
}
return ResultData.fail("操作失败");
}
/**
* 修改检查管理
*
* @Param [checkManageBo]
* @Return com.zd.model.domain.ResultData
**/
@Log(title = "修改检查管理", businessType = BusinessType.UPDATE)
@PreAuthorize(hasAnyPermi = {PerPrefix.SECURITY_CHECK_MANAGE + PerFun.EDIT,
PerPrefix.SECURITY_CHECK_MANAGE_1 + PerFun.EDIT,
PerPrefix.SECURITY_CHECK_MANAGE_2 + PerFun.EDIT,
PerPrefix.SECURITY_CHECK_MANAGE_3 + PerFun.EDIT,
PerPrefix.SECURITY_CHECK_MANAGE_4 + PerFun.EDIT})
@ApiOperation("修改检查管理")
@PutMapping(value = "/update")
public ResultData update(@RequestBody CheckManageBo checkManageBo) {
//参数检查
paramCheck.notNull(checkManageBo).strNotEmpty(checkManageBo.getTitle()).notNull(checkManageBo.getCheckType());
checkManageBo.setLoginUserName(getCurrentUserName());
checkManageBo.setLoginUserId(getCurrentUserId());
if(checkManageService.updateCheckManage(checkManageBo)){
return ResultData.success("操作成功");
}
return ResultData.fail("操作失败");
}
/**
* 小程序修改检查管理
*
* @Param [checkManageBo]
* @Return com.zd.model.domain.ResultData
**/
@Log(title = "小程序修改检查管理", businessType = BusinessType.UPDATE)
@ApiOperation("小程序修改检查管理")
@PutMapping(value = "/appUpdate")
public ResultData appUpdate(@RequestBody CheckManageBo checkManageBo) {
//参数检查
paramCheck.notNull(checkManageBo).strNotEmpty(checkManageBo.getTitle()).notNull(checkManageBo.getCheckType());
checkManageBo.setLoginUserName(getCurrentUserName());
checkManageBo.setLoginUserId(getCurrentUserId());
if(checkManageService.updateCheckManage(checkManageBo)){
return ResultData.success("操作成功");
}
return ResultData.fail("操作失败");
}
/**
* 通过id查询巡查管理
*
* @Param [id 巡查管理id]
* @Return com.zd.model.domain.ResultData
**/
@ApiOperation("通过id查询巡查管理")
@PreAuthorize(hasAnyPermi = {PerPrefix.SECURITY_CHECK_MANAGE + PerFun.QUERY,PerPrefix.SECURITY_CHECK_MANAGE_1 + PerFun.QUERY
,PerPrefix.SECURITY_CHECK_MANAGE_2 + PerFun.QUERY,PerPrefix.SECURITY_CHECK_MANAGE_3 + PerFun.QUERY})
@GetMapping(value = "/findCheckManage")
@ApiImplicitParam(name = "id", value = "巡查管理id", required = true, dataTypeClass = Long.class)
public ResultData find(@RequestParam("id") Long id) {
CheckManageVo checkManageVo = checkManageService.findCheckManage(id);
return ResultData.success(checkManageVo);
}
/**
* 小程序通过id查询巡查管理
*
* @Param [id 巡查管理id]
* @Return com.zd.model.domain.ResultData
**/
@ApiOperation("小程序通过id查询巡查管理")
@GetMapping(value = "/appFindCheckManage")
@ApiImplicitParam(name = "id", value = "巡查管理id", required = true, dataTypeClass = Long.class)
public ResultData appFindCheckManage(@RequestParam("id") Long id) {
CheckManageVo checkManageVo = checkManageService.findCheckManage(id);
return ResultData.success(checkManageVo);
}
/**
* 获取巡查计划管理列表(分页)
*
* @Param [checkManageBo]
* @Return com.zd.model.domain.ResultData
**/
@ApiOperation("获取巡查计划管理列表(分页)")
//@DataPermission(permissionStr = PerPrefix.SECURITY_CHECK_MANAGE)
@DataPermission
@PreAuthorize(hasAnyPermi = {PerPrefix.SECURITY_CHECK_MANAGE + PerFun.LIST,PerPrefix.SECURITY_CHECK_MANAGE_1 + PerFun.LIST})
@PostMapping(value = "/list")
public ResultData list(@RequestBody QueryCheckManageListParam queryCheckManageListParam) {
lock.lock();
try {
List checkMembers = checkMemberService.list(new LambdaQueryWrapper().eq(CheckMember::getUserId, getCurrentUserId()));
String checkPlanIds = Optional.ofNullable(checkMembers).orElseGet(Collections::emptyList).stream().map(CheckMember::getCheckPlanId).map(i -> String.valueOf(i)).collect(Collectors.joining(","));
QueryWrapper wrapperCheckUser = new QueryWrapper<>();
wrapperCheckUser.lambda().eq(CheckStaffUser::getStaffType,1)
.eq(CheckStaffUser::getUserId,getCurrentUserId());
List checkStaffUserList = checkStaffUserService.list(wrapperCheckUser);
String subIds = Optional.ofNullable(checkStaffUserList).orElseGet(Collections::emptyList).stream().map(CheckStaffUser::getSubId).map(i -> String.valueOf(i)).collect(Collectors.joining(","));
Page page = getCheckManagePage(queryCheckManageListParam, checkPlanIds, subIds);
ResultData> checkManageListVoPage = getResultData(page);
if (checkManageListVoPage != null) return checkManageListVoPage;
return ResultData.success(page);
}finally {
lock.unlock();
}
}
/**
* 小程序获取巡查计划管理列表(分页)
*
* @Param [checkManageBo]
* @Return com.zd.model.domain.ResultData
**/
@ApiOperation("小程序获取巡查计划管理列表(分页)")
//@DataPermission(permissionStr = PerPrefix.SECURITY_CHECK_MANAGE)
@DataPermission
@PostMapping(value = "/appList")
public ResultData appList(@RequestBody QueryCheckManageListParam queryCheckManageListParam) {
lock.lock();
try {
queryCheckManageListParam.setMyRelated(1);
List checkMembers = checkMemberService.list(new LambdaQueryWrapper().eq(CheckMember::getUserId, getCurrentUserId()));
String checkPlanIds = Optional.ofNullable(checkMembers).orElseGet(Collections::emptyList).stream().map(CheckMember::getCheckPlanId).map(i -> String.valueOf(i)).collect(Collectors.joining(","));
QueryWrapper wrapperCheckUser = new QueryWrapper<>();
wrapperCheckUser.lambda().eq(CheckStaffUser::getStaffType,1)
.eq(CheckStaffUser::getUserId,getCurrentUserId());
List checkStaffUserList = checkStaffUserService.list(wrapperCheckUser);
String subIds = Optional.ofNullable(checkStaffUserList).orElseGet(Collections::emptyList).stream().map(CheckStaffUser::getSubId).map(i -> String.valueOf(i)).collect(Collectors.joining(","));
Page page = getCheckManagePage(queryCheckManageListParam, checkPlanIds, subIds);
ResultData> checkManageListVoPage = getResultData(page);
if (checkManageListVoPage != null) return checkManageListVoPage;
return ResultData.success(page);
}finally {
lock.unlock();
}
}
private Page getCheckManagePage(QueryCheckManageListParam queryCheckManageListParam, String checkPlanIds, String subIds) {
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
if (!Objects.isNull(queryCheckManageListParam.getManageStatus()) && queryCheckManageListParam.getManageStatus() != -1) {
queryWrapper.eq(CheckManage::getManageStatus, queryCheckManageListParam.getManageStatus());
}
if(!Objects.isNull(queryCheckManageListParam.getCheckType()) && queryCheckManageListParam.getCheckType() != 0){
queryWrapper.eq(CheckManage::getCheckType, queryCheckManageListParam.getCheckType());
}
if (!Objects.isNull(queryCheckManageListParam.getDeptId()) && queryCheckManageListParam.getDeptId() != 0) {
queryWrapper.eq(CheckManage::getDeptId, queryCheckManageListParam.getDeptId());
}
if (!Objects.isNull(queryCheckManageListParam.getStartTime()) && !Objects.isNull(queryCheckManageListParam.getEndTime())) {
queryWrapper.between(CheckManage::getCheckTime, queryCheckManageListParam.getStartTime().atStartOfDay(), queryCheckManageListParam.getEndTime().atTime(LocalTime.MAX));
}
if (StringUtils.isNotBlank(queryCheckManageListParam.getSearchValue())) {
queryWrapper.and(wrapper -> {
wrapper.like(CheckManage::getTitle, queryCheckManageListParam.getSearchValue())
.or().like(CheckManage::getSubjectName, queryCheckManageListParam.getSearchValue())
.or().like(CheckManage::getRoomNumber, queryCheckManageListParam.getSearchValue())
.or().like(CheckManage::getCheckUser, queryCheckManageListParam.getSearchValue());
});
}
if (Objects.nonNull(queryCheckManageListParam.getCheckTimeSort()) && queryCheckManageListParam.getCheckTimeSort() == 1){
queryWrapper.orderByAsc(CheckManage::getCheckTime);
}
if (Objects.nonNull(queryCheckManageListParam.getCheckTimeSort()) && queryCheckManageListParam.getCheckTimeSort() == 2){
queryWrapper.orderByDesc(CheckManage::getCheckTime);
}
StringBuilder sb = new StringBuilder();
if (Objects.nonNull(queryCheckManageListParam.getMyRelated()) && queryCheckManageListParam.getMyRelated() == 1) {
//与我有关
if (Objects.nonNull(queryCheckManageListParam.getCheckType()) && queryCheckManageListParam.getCheckType() == 0) {
sb.append("(( check_type = 1 and ( create_by =").append(getCurrentUserId());
if (StringUtils.isNotBlank(checkPlanIds)) {
sb.append(" OR check_plan_id in (").append(checkPlanIds).append(")");
}
sb.append(")) ");
sb.append(" OR ( check_type = 2 and ( create_by = ").append(getCurrentUserId());
if (StringUtils.isNotBlank(subIds)) {
sb.append(" OR sub_id in (").append(subIds).append(") ");
}
sb.append(" ))) ");
} else {
sb.append(" ( create_by = ").append(getCurrentUserId());
if (Objects.nonNull(queryCheckManageListParam.getCheckType()) && queryCheckManageListParam.getCheckType() == 1) {
if (StringUtils.isNotBlank(checkPlanIds)) {
sb.append(" OR check_plan_id in (").append(checkPlanIds).append(") ");
}
}
if (Objects.nonNull(queryCheckManageListParam.getCheckType()) && queryCheckManageListParam.getCheckType() == 2) {
if (StringUtils.isNotBlank(subIds)) {
sb.append(" OR sub_id in (").append(subIds).append(") ");
}
}
sb.append(" ) ");
}
}
if(Objects.nonNull(queryCheckManageListParam.getMyRelated()) && queryCheckManageListParam.getMyRelated() != 1){
//全部
sb.append(" ( create_by = ").append(getCurrentUserId());
if(Objects.nonNull(queryCheckManageListParam.getCheckType()) && queryCheckManageListParam.getCheckType() == 1){
if(StringUtils.isNotBlank(checkPlanIds)){
sb.append(" OR check_plan_id in (").append(checkPlanIds).append(") ");
}
}
if(Objects.nonNull(queryCheckManageListParam.getCheckType()) && queryCheckManageListParam.getCheckType() == 2){
if(StringUtils.isNotBlank(subIds)){
sb.append(" OR sub_id in (").append(subIds).append(") ");
}
}
List users = DataPermissionAspect.threadLocal.get();
DataPermissionAspect.threadLocal.remove();
if(CollectionUtil.isNotEmpty(users)){
String userStr = users.stream().map(a->a.toString()).collect(Collectors.joining(","));
sb.append(" or create_by in(" + userStr + ")");
}
sb.append(" ) ");
}
queryWrapper.apply(sb.toString());
queryWrapper.orderByDesc(CheckManage::getId);
return checkManageService.getlist(queryCheckManageListParam,queryWrapper);
}
@Nullable
private ResultData> getResultData(Page page) {
ResultData> checkManageListVoPage = getPageResultData(page);
if (checkManageListVoPage != null){
//获取当前用户巡查计划列表
List checkPlans = checkPlanService.list(new LambdaQueryWrapper().and(i -> i.eq(CheckPlan::getCheckStatus, 1).or().eq(CheckPlan::getCheckStatus, 2)));
List checkPlanIdList = checkPlans.stream().map(CheckPlan::getId).collect(Collectors.toList());
if(checkPlanIdList.size()==0){
checkPlanIdList.add(-99L);
}
List checkMemberList = checkMemberService.list(new LambdaQueryWrapper().in(CheckMember::getCheckPlanId, checkPlanIdList).eq(CheckMember::getUserId, getCurrentUserId()));
//获取自查身份
QueryWrapper wrapper = new QueryWrapper<>();
wrapper.lambda().eq(CheckStaffUser::getStaffType,1)
.eq(CheckStaffUser::getUserId,getCurrentUserId());
List checkStaffUsers = checkStaffUserService.list(wrapper);
Consumer> consumer = a->Optional.ofNullable(a)
.orElseGet(Collections::emptyList)
.stream()
.forEach(b->{
List rectifyStatus = new ArrayList <>();
rectifyStatus.add(2);
rectifyStatus.add(3);
List checkHazardList = checkHazardService.list(new LambdaQueryWrapper ()
.in(CheckHazard::getRectifyStatus,rectifyStatus).eq(CheckHazard::getCheckManageId,b.getId()));
if(b.getManageStatus().intValue()==2){
if(checkHazardList==null || checkHazardList.isEmpty()){
b.setIsEndProcess(1);
}else{
b.setIsEndProcess(0);
}
}else{
b.setIsEndProcess(0);
}
if (b.getCheckType() == 1) {
//院校巡查
if (checkMemberList!=null && !checkMemberList.isEmpty()) {
List planIds = checkMemberList.stream().map(CheckMember::getCheckPlanId).collect(Collectors.toList());
if (planIds.contains(b.getCheckPlanId())){
b.setIsSelfData(1);
}else {
b.setIsSelfData(0);
}
}else {
b.setIsSelfData(0);
}
}else {
//实验室自查
if(checkStaffUsers!=null && !checkStaffUsers.isEmpty()){
List checkSubIds = checkStaffUsers.stream().map(CheckStaffUser::getSubId).collect(Collectors.toList());
if (checkSubIds.contains(b.getSubId())){
b.setIsSelfData(1);
}else {
b.setIsSelfData(0);
}
}else {
b.setIsSelfData(0);
}
//开展检查
if(b.getCheckPlanId()!=null && getCurrentUserId().longValue() == b.getCreateBy().longValue()){
b.setIsSelfData(1);
}
}
});
consumer.accept(checkManageListVoPage.getData().getRecords());
return checkManageListVoPage;
}
return null;
}
@Nullable
private ResultData> getPageResultData(Page page) {
List records = page.getRecords();
if (page.getTotal() > 0){
List checkManageListVos = BeanUtils.copyList2List(records, CheckManageListVo.class);
checkManageListVos.forEach(checkManageListVo -> {
if (Objects.nonNull(checkManageListVo.getCycleStartTime())) {
LocalDateTime localDateTime = checkManageListVo.getCycleStartTime().atStartOfDay();
if (LocalDateTime.now().isAfter(localDateTime)) {
checkManageListVo.setIsCheck(1);
}
}
});
Page checkManageListVoPage = new Page<>();
BeanUtils.copyProperties(page,checkManageListVoPage);
checkManageListVoPage.setRecords(checkManageListVos);
return ResultData.success(checkManageListVoPage);
}
return null;
}
/**
* 根据检查计划id查询巡查管理列表(分页)
*
* @Param [checkManageBo]
* @Return com.zd.model.domain.ResultData
**/
@ApiOperation("根据检查计划id查询巡查管理列表(分页)")
//@DataPermission(permissionStr = PerPrefix.SECURITY_CHECK_MANAGE)
@PreAuthorize(hasAnyPermi = {
PerPrefix.SECURITY_CHECK_MANAGE + PerFun.LIST,
PerPrefix.SECURITY_CHECK_MANAGE_1 + PerFun.LIST,
PerPrefix.SECURITY_CHECK_MANAGE_2 + PerFun.LIST,
PerPrefix.SECURITY_CHECK_MANAGE_3 + PerFun.LIST})
@PostMapping(value = "/findByCheckPlanId")
public ResultData findByCheckPlanId(@RequestBody QueryManageListParam queryManageListParam) {
paramCheck.notNull(queryManageListParam.getCheckPlanId());
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(CheckManage::getCheckPlanId, queryManageListParam.getCheckPlanId());
if (Objects.nonNull(queryManageListParam.getDeptId())) {
queryWrapper.eq(CheckManage::getDeptId, queryManageListParam.getDeptId());
}
if (StringUtils.isNotBlank(queryManageListParam.getSearchValue())) {
queryWrapper.and(wrapper -> {
wrapper.like(CheckManage::getTitle, queryManageListParam.getSearchValue())
.or().like(CheckManage::getSubjectName, queryManageListParam.getSearchValue())
.or().like(CheckManage::getRoomNumber, queryManageListParam.getSearchValue())
.or().like(CheckManage::getCheckUser, queryManageListParam.getSearchValue());
});
}
if (!Objects.isNull(queryManageListParam.getStartTime()) && !Objects.isNull(queryManageListParam.getEndTime())) {
queryWrapper.between(CheckManage::getCheckTime, queryManageListParam.getStartTime().atStartOfDay(), queryManageListParam.getEndTime().atTime(LocalTime.MAX));
}
if (Objects.nonNull(queryManageListParam.getManageStatus()) && queryManageListParam.getManageStatus() != -1) {
queryWrapper.eq(CheckManage::getManageStatus, queryManageListParam.getManageStatus());
}
if (Objects.nonNull(queryManageListParam.getCheckTimeSort()) && queryManageListParam.getCheckTimeSort() == 1){
queryWrapper.orderByAsc(CheckManage::getId);
}
if (Objects.nonNull(queryManageListParam.getCheckTimeSort()) && queryManageListParam.getCheckTimeSort() == 2){
queryWrapper.orderByDesc(CheckManage::getId);
}
Page page = checkManageService.page(new Page<>(queryManageListParam.getPageNum(), queryManageListParam.getPageSize()), queryWrapper);
ResultData> checkManageListVoPage = getPageResultData(page);
if (checkManageListVoPage != null){
//获取当前用户巡查计划列表
List checkPlans = checkPlanService.list(new LambdaQueryWrapper().and(i -> i.eq(CheckPlan::getCheckStatus, 1).or().eq(CheckPlan::getCheckStatus, 2)));
List checkPlanIdList = checkPlans.stream().map(CheckPlan::getId).collect(Collectors.toList());
List checkMemberList = checkMemberService.list(new LambdaQueryWrapper().in(CheckMember::getCheckPlanId, checkPlanIdList).eq(CheckMember::getUserId, getCurrentUserId()));
//获取自查身份
QueryWrapper wrapperCheckUser = new QueryWrapper<>();
wrapperCheckUser.lambda().eq(CheckStaffUser::getStaffType,1)
.eq(CheckStaffUser::getUserId,getCurrentUserId());
List checkStaffUserList = checkStaffUserService.list(wrapperCheckUser);
Consumer> consumer = a->Optional.ofNullable(a)
.orElseGet(Collections::emptyList)
.stream()
.forEach(b->{
List rectifyStatus = new ArrayList <>();
rectifyStatus.add(2);
rectifyStatus.add(3);
List checkHazardList = checkHazardService.list(new LambdaQueryWrapper ()
.in(CheckHazard::getRectifyStatus,rectifyStatus).eq(CheckHazard::getCheckManageId,b.getId()));
if(b.getManageStatus().intValue()==2){
if(checkHazardList==null || checkHazardList.isEmpty()){
b.setIsEndProcess(1);
}else{
b.setIsEndProcess(0);
}
}else{
b.setIsEndProcess(0);
}
if (b.getCheckType() == 1) {
//院校巡查
if (checkMemberList!=null && !checkMemberList.isEmpty()) {
List checkPlanIds = checkMemberList.stream().map(CheckMember::getCheckPlanId).collect(Collectors.toList());
if (checkPlanIds.contains(b.getCheckPlanId())){
b.setIsSelfData(1);
}else {
b.setIsSelfData(0);
}
}else {
b.setIsSelfData(0);
}
}else {
//实验室自查
if(checkStaffUserList!=null && !checkStaffUserList.isEmpty()){
List subIds = checkStaffUserList.stream().map(CheckStaffUser::getSubId).collect(Collectors.toList());
if (subIds.contains(b.getSubId())){
b.setIsSelfData(1);
}else {
b.setIsSelfData(0);
}
}else {
b.setIsSelfData(0);
}
}
});
consumer.accept(checkManageListVoPage.getData().getRecords());
return checkManageListVoPage;
}
return ResultData.success(page);
}
/**
* 小程序根据检查计划id查询巡查管理列表(分页)
*
* @Param [checkManageBo]
* @Return com.zd.model.domain.ResultData
**/
@ApiOperation("小程序根据检查计划id查询巡查管理列表(分页)")
//@DataPermission(permissionStr = PerPrefix.SECURITY_CHECK_MANAGE)
@PostMapping(value = "/appFindByCheckPlanId")
public ResultData appFindByCheckPlanId(@RequestBody QueryManageListParam queryManageListParam) {
paramCheck.notNull(queryManageListParam.getCheckPlanId());
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(CheckManage::getCheckPlanId, queryManageListParam.getCheckPlanId());
if (Objects.nonNull(queryManageListParam.getDeptId())) {
queryWrapper.eq(CheckManage::getDeptId, queryManageListParam.getDeptId());
}
if (StringUtils.isNotBlank(queryManageListParam.getSearchValue())) {
queryWrapper.and(wrapper -> {
wrapper.like(CheckManage::getTitle, queryManageListParam.getSearchValue())
.or().like(CheckManage::getSubjectName, queryManageListParam.getSearchValue())
.or().like(CheckManage::getRoomNumber, queryManageListParam.getSearchValue())
.or().like(CheckManage::getCheckUser, queryManageListParam.getSearchValue());
});
}
if (!Objects.isNull(queryManageListParam.getStartTime()) && !Objects.isNull(queryManageListParam.getEndTime())) {
queryWrapper.between(CheckManage::getCheckTime, queryManageListParam.getStartTime().atStartOfDay(), queryManageListParam.getEndTime().atTime(LocalTime.MAX));
}
if (Objects.nonNull(queryManageListParam.getManageStatus()) && queryManageListParam.getManageStatus() != -1) {
queryWrapper.eq(CheckManage::getManageStatus, queryManageListParam.getManageStatus());
}
if (Objects.nonNull(queryManageListParam.getCheckTimeSort()) && queryManageListParam.getCheckTimeSort() == 1){
queryWrapper.orderByAsc(CheckManage::getId);
}
if (Objects.nonNull(queryManageListParam.getCheckTimeSort()) && queryManageListParam.getCheckTimeSort() == 2){
queryWrapper.orderByDesc(CheckManage::getId);
}
Page page = checkManageService.page(new Page<>(queryManageListParam.getPageNum(), queryManageListParam.getPageSize()), queryWrapper);
ResultData> checkManageListVoPage = getPageResultData(page);
if (checkManageListVoPage != null){
//获取当前用户巡查计划列表
List checkPlans = checkPlanService.list(new LambdaQueryWrapper().and(i -> i.eq(CheckPlan::getCheckStatus, 1).or().eq(CheckPlan::getCheckStatus, 2)));
List checkPlanIdList = checkPlans.stream().map(CheckPlan::getId).collect(Collectors.toList());
List checkMemberList = checkMemberService.list(new LambdaQueryWrapper().in(CheckMember::getCheckPlanId, checkPlanIdList).eq(CheckMember::getUserId, getCurrentUserId()));
//获取自查身份
QueryWrapper wrapperCheckUser = new QueryWrapper<>();
wrapperCheckUser.lambda().eq(CheckStaffUser::getStaffType,1)
.eq(CheckStaffUser::getUserId,getCurrentUserId());
List checkStaffUserList = checkStaffUserService.list(wrapperCheckUser);
Consumer> consumer = a->Optional.ofNullable(a)
.orElseGet(Collections::emptyList)
.stream()
.forEach(b->{
List rectifyStatus = new ArrayList <>();
rectifyStatus.add(2);
rectifyStatus.add(3);
List checkHazardList = checkHazardService.list(new LambdaQueryWrapper ()
.in(CheckHazard::getRectifyStatus,rectifyStatus).eq(CheckHazard::getCheckManageId,b.getId()));
if(b.getManageStatus().intValue()==2){
if(checkHazardList==null || checkHazardList.isEmpty()){
b.setIsEndProcess(1);
}else{
b.setIsEndProcess(0);
}
}else{
b.setIsEndProcess(0);
}
if (b.getCheckType() == 1) {
//院校巡查
if (checkMemberList!=null && !checkMemberList.isEmpty()) {
List checkPlanIds = checkMemberList.stream().map(CheckMember::getCheckPlanId).collect(Collectors.toList());
if (checkPlanIds.contains(b.getCheckPlanId())){
b.setIsSelfData(1);
}else {
b.setIsSelfData(0);
}
}else {
b.setIsSelfData(0);
}
}else {
//实验室自查
if(checkStaffUserList!=null && !checkStaffUserList.isEmpty()){
List subIds = checkStaffUserList.stream().map(CheckStaffUser::getSubId).collect(Collectors.toList());
if (subIds.contains(b.getSubId())){
b.setIsSelfData(1);
}else {
b.setIsSelfData(0);
}
}else {
b.setIsSelfData(0);
}
}
});
consumer.accept(checkManageListVoPage.getData().getRecords());
return checkManageListVoPage;
}
return ResultData.success(page);
}
/**
* 查询各管理状态数据数量
* @Return com.zd.model.domain.ResultData
**/
@GetMapping(value = "/getManageStatusCount")
@ApiOperation("查询检查计划各检查状态数据数量")
public ResultData getManageStatusCount() {
Map map = new HashMap<>();
long noCheckNum = checkManageService.count(new LambdaQueryWrapper().eq(CheckManage::getManageStatus, 0));
long checkingNum = checkManageService.count(new LambdaQueryWrapper().eq(CheckManage::getManageStatus,1));
long applyNum = checkHazardService.count(new LambdaQueryWrapper().eq(CheckHazard::getRectifyStatus, 3));
map.put("noCheck",noCheckNum);
map.put("checking",checkingNum);
map.put("applyNum",applyNum);
return ResultData.success(map);
}
/**
* 根据实验室id查询该实验室有关计划
* @Return com.zd.model.domain.ResultData
**/
@GetMapping(value = "/getCheckPlanBySubId")
@ApiOperation("根据实验室id查询该实验室有关计划")
public ResultData getCheckPlanBySubId(@RequestParam("subId") Long subId) {
List list = checkManageService.list(new LambdaQueryWrapper().eq(CheckManage::getSubId, subId)
.le(CheckManage::getCycleStartTime, LocalDate.now())
.and(checkManage -> checkManage.eq(CheckManage::getManageStatus, 0).or().eq(CheckManage::getManageStatus, 1))
.orderByDesc(CheckManage::getId));
List checkManageListVos = BeanUtils.copyList2List(list, CheckManageListVo.class);
if (checkManageListVos != null && !checkManageListVos.isEmpty()){
permissionData(checkManageListVos);
}
return ResultData.success(checkManageListVos);
}
private void permissionData(List checkManageListVos) {
//权限
boolean adminGentle = Boolean.FALSE;
boolean applyGentle = Boolean.FALSE;
boolean myApplyGentle = Boolean.FALSE;
//获取管理员身份
ResultData postInfo = remoteUserService.selectPostInfo(getCurrentUserId());
if(Boolean.valueOf(postInfo.getData())){
adminGentle = Boolean.TRUE;
}else{
adminGentle = Boolean.FALSE;
}
//获取巡查组身份
List checkPlans = checkPlanService.list(new LambdaQueryWrapper().and(i -> i.eq(CheckPlan::getCheckStatus, 1).or().eq(CheckPlan::getCheckStatus, 2)));
List checkPlanIdList = checkPlans.stream().map(CheckPlan::getId).collect(Collectors.toList());
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
if(CollectionUtil.isNotEmpty(checkPlanIdList)){
queryWrapper.in(CheckMember::getCheckPlanId, checkPlanIdList);
}
queryWrapper.eq(CheckMember::getUserId,getCurrentUserId());
List memberList = checkMemberService.list(queryWrapper);
if(CollectionUtil.isNotEmpty(memberList)){
applyGentle = Boolean.TRUE;
}else{
applyGentle = Boolean.FALSE;
}
//获取自查身份
QueryWrapper wrapperCheckUser = new QueryWrapper<>();
wrapperCheckUser.lambda().eq(CheckStaffUser::getStaffType,1)
.eq(CheckStaffUser::getUserId,getCurrentUserId());
List checkStaffUserList = checkStaffUserService.list(wrapperCheckUser);
if(checkStaffUserList!=null && !checkStaffUserList.isEmpty()){
myApplyGentle = Boolean.TRUE;
}else{
myApplyGentle = Boolean.FALSE;
}
if (!adminGentle) {
if(applyGentle && myApplyGentle){
checkManageListVos.forEach(i->{
if(i.getCheckType() == 1){
List collect = memberList.stream().map(CheckMember::getCheckPlanId).collect(Collectors.toList());
if (collect.contains(i.getCheckPlanId())) {
i.setIsSelfData(1);
}else {
i.setIsSelfData(0);
}
}else {
List subIds = checkStaffUserList.stream().map(CheckStaffUser::getSubId).collect(Collectors.toList());
if (subIds.contains(i.getSubId())) {
i.setIsSelfData(1);
}else {
i.setIsSelfData(0);
}
}
});
} else if (!applyGentle && myApplyGentle) {
//无巡查有自查 检查类型(1校院巡查 2实验室自查)
checkManageListVos = checkManageListVos.stream().filter(i -> i.getCheckType() == 2).collect(Collectors.toList());
checkManageListVos.forEach(i->{
List subIds = checkStaffUserList.stream().map(CheckStaffUser::getSubId).collect(Collectors.toList());
if (subIds.contains(i.getSubId())) {
i.setIsSelfData(1);
}else {
i.setIsSelfData(0);
}
});
} else if (applyGentle && !myApplyGentle) {
//有巡查无自查
checkManageListVos = checkManageListVos.stream().filter(i -> i.getCheckType() == 1).collect(Collectors.toList());
checkManageListVos.forEach(i->{
List collect = Optional.ofNullable(memberList).orElseGet(Collections::emptyList).stream().map(CheckMember::getCheckPlanId).collect(Collectors.toList());
if (collect.contains(i.getCheckPlanId())) {
i.setIsSelfData(1);
}else {
i.setIsSelfData(0);
}
});
} else if (!applyGentle && !myApplyGentle) {
//均无
checkManageListVos = new ArrayList<>();
}
}else {
checkManageListVos.forEach(i->{
i.setIsSelfData(1);
});
}
}
/**
* 实验室id,危险源ids 查询开展检查检查项
*/
@GetMapping("/getHazardInfo")
@ApiOperation(value = "实验室id,危险源ids 查询开展检查检查项")
public ResultData getHazardInfo(@RequestParam("subId") Long subId,@RequestParam("hazardIds") String hazardIds) {
List checkHazardDtoList = checkManageService.getHazardInfo(subId,hazardIds);
return ResultData.success(checkHazardDtoList);
}
/**
* 根据关联ids查询开展检查检查项
*/
@GetMapping("/getHazardInfoByJoinIds")
@ApiOperation(value = "根据关联ids查询开展检查检查项")
public ResultData getHazardInfoByJoinIds(@RequestParam("joinHazardIds") String joinHazardIds) {
List checkHazardDtoList = checkManageService.getHazardInfoByJoinIds(joinHazardIds);
return ResultData.success(checkHazardDtoList);
}
/**
* 生成整改通知书
* @Param [id, response]
* @Return void
**/
@ApiOperation(value = "生成整改通知书")
@GetMapping("/getRectifyAdviceNoteView/{checkMangeId}")
public ResultData getRectifyAdviceNoteView(@PathVariable("checkMangeId") Long checkMangeId) {
return ResultData.success(checkManageService.getRectifyAdviceNoteView(checkMangeId));
}
/**
* 生成整改通知书
* @Param [id, response]
* @Return void
**/
@ApiOperation(value = "生成整改通知书")
@RequestMapping("/getRectifyAdviceNote/{checkMangeId}")
public void getRectifyAdviceNote(@PathVariable("checkMangeId") Long checkMangeId, HttpServletResponse response) {
wordService.getRectifyAdviceNote(checkMangeId, response);
}
/**
* 生成整改告知书
* @Param [id, response]
* @Return void
**/
@ApiOperation(value = "生成整改告知书")
@RequestMapping("/getRectifyNotificationView/{checkMangeId}")
public ResultData getRectifyNotificationView(@PathVariable("checkMangeId") Long checkMangeId) {
return ResultData.success(checkManageService.getRectifyNotificationView(checkMangeId));
}
/**
* 生成整改告知书
* @Param [id, response]
* @Return void
**/
@ApiOperation(value = "生成整改告知书")
@RequestMapping("/getRectifyNotification/{checkMangeId}")
public void getRectifyNotification(@PathVariable("checkMangeId") Long checkMangeId, HttpServletResponse response) {
wordService.getRectifyNotification(checkMangeId, response);
}
}