无关风月
6 小时以前 5e2d78f61bf7d1513d5d5c8cd55442133a6e898e
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TInspectorController.java
@@ -9,16 +9,19 @@
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.WebUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.framework.web.service.TokenService;
import com.ruoyi.system.model.TDept;
import com.ruoyi.system.model.TLocation;
import com.ruoyi.system.model.TProjectDept;
import com.ruoyi.system.model.TTaskDetail;
import com.ruoyi.system.dto.TInspectorAuditDTO;
import com.ruoyi.system.dto.TTaskAuditDTO;
import com.ruoyi.system.model.*;
import com.ruoyi.system.query.InsepectorListQuery;
import com.ruoyi.system.query.TaskListQuery;
import com.ruoyi.system.service.*;
import com.ruoyi.system.utils.TemplateMessageSendUtil;
import com.ruoyi.system.vo.system.InspectorListVO;
import com.ruoyi.system.vo.system.TaskListVO;
import com.ruoyi.web.controller.tool.EmailUtils;
import com.ruoyi.web.controller.tool.MsgUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.ss.usermodel.Workbook;
@@ -30,6 +33,7 @@
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@@ -55,58 +59,77 @@
    @Resource
    private TTaskDetailService tTaskDetailService;
    @Resource
    private TokenService tokenService;
    @Resource
    private TDeptService deptService;
    @Resource
    private ISysUserService sysUserService;
    @Resource
    private TInspectorService inspectorService;
    @Resource
    private TTaskCleanService taskCleanerService;
    @ApiOperation(value = "督察记录分页列表")
    @PostMapping(value = "/pageList")
    public R<PageInfo<InspectorListVO>> pageList(@RequestBody InsepectorListQuery query) {
        List<SysUser> sysUsers = sysUserService.selectAllList();
        List<TLocation> locationList = locationService.list();
        if (StringUtils.hasLength(query.getDeptName())){
            List<String> projectIds = projectDeptService.lambdaQuery().like(TProjectDept::getProjectName, query.getDeptName()).list()
        if (StringUtils.hasLength(query.getDeptName())) {
            List<TProjectDept> list = projectDeptService.lambdaQuery().like(TProjectDept::getProjectName, query.getDeptName()).list();
            List<String> projectIds = list
                    .stream().map(TProjectDept::getId).collect(Collectors.toList());
            List<String> deptIds = deptService.lambdaQuery().like(TDept::getDeptName, query.getDeptName()).list()
                    .stream().map(TDept::getId).collect(Collectors.toList());
            for (TProjectDept projectDept : list) {
                if (projectDept.getParentId().equals("0")){
                    List<TProjectDept> list1 = projectDeptService.lambdaQuery().eq(TProjectDept::getParentId, projectDept.getId()).list();
                    List<String> collect = list1.stream().map(TProjectDept::getId).collect(Collectors.toList());
                    projectIds.addAll(collect);
                }
            }
            projectIds.addAll(deptIds);
            if (projectIds.isEmpty()){
            if (projectIds.isEmpty()) {
                return R.ok(new PageInfo<>());
            }
            if (StringUtils.hasLength(query.getPhonenumber())){
            // 用户ids
            List<Long> collect = sysUsers.stream().filter(e -> e.getDeptType() == 1 && projectIds.contains(e.getDeptId())).map(SysUser::getUserId)
                    .collect(Collectors.toList());
            List<Long> collect1 = sysUsers.stream().filter(e -> e.getDeptType() == 2 && deptIds.contains(e.getDeptId())).map(SysUser::getUserId)
                    .collect(Collectors.toList());
            collect.addAll(collect1);
            if (collect.isEmpty()) {
                return R.ok(new PageInfo<>());
            }
            query.setPatrolInspectorIds(collect);
            if (StringUtils.hasLength(query.getPhonenumber())) {
                List<Long> patrolInspectorIds = sysUsers.stream().filter(sysUser ->
                        sysUser.getPhonenumber().equals(query.getPhonenumber())
                                && projectIds.contains(sysUser.getDeptId())
                ).map(SysUser::getUserId).collect(Collectors.toList());
                if (patrolInspectorIds.isEmpty()){
                if (patrolInspectorIds.isEmpty()) {
                    return R.ok(new PageInfo<>());
                } else {
                    patrolInspectorIds = patrolInspectorIds.stream().filter(query.getPatrolInspectorIds()::contains).collect(Collectors.toList());
                    query.setPatrolInspectorIds(patrolInspectorIds);
                }
                query.setPatrolInspectorIds(patrolInspectorIds);
            }
        }
        if (StringUtils.hasLength(query.getPhonenumber())){
            List<Long> patrolInspectorIds = sysUsers.stream().filter(sysUser ->
                    sysUser.getPhonenumber().equals(query.getPhonenumber())
                    sysUser.getPhonenumber().contains(query.getPhonenumber())
            ).map(SysUser::getUserId).collect(Collectors.toList());
            if (!query.getPatrolInspectorIds().isEmpty()){
            if (query.getPatrolInspectorIds()!=null&&!query.getPatrolInspectorIds().isEmpty()){
                // 取交集
                patrolInspectorIds = patrolInspectorIds.stream().filter(query.getPatrolInspectorIds()::contains).collect(Collectors.toList());
            }
            query.setPatrolInspectorIds(patrolInspectorIds);
            if (patrolInspectorIds.isEmpty()){
                return R.ok(new PageInfo<>());
            }
            query.setPatrolInspectorIds(patrolInspectorIds);
        }
        if (query.getClearStatus()!=null){
            List<String> collect = tTaskDetailService.lambdaQuery().eq(TTaskDetail::getClearStatus, query.getClearStatus())
                    .list().stream().distinct().map(TTaskDetail::getTaskId).collect(Collectors.toList());
            query.setTaskIds(collect);
            if (collect.isEmpty()){
                return R.ok(new PageInfo<>());
            }
        }
        if (query.getLocationType()!=null){
            List<String> collect = locationList.stream().filter(e -> e.getLocationType().equals(query.getLocationType())).map(TLocation::getId)
                    .collect(Collectors.toList());
@@ -122,17 +145,23 @@
                query.setLocationIds(collect);
                return R.ok(new PageInfo<>());
            }else{
                collect = collect.stream().filter(query.getLocationIds()::contains).collect(Collectors.toList());
                if (collect.isEmpty()){
                    return R.ok(new PageInfo<>());
                if (query.getLocationIds()!=null){
                    collect = collect.stream().filter(query.getLocationIds()::contains).collect(Collectors.toList());
                    if (collect.isEmpty()){
                        return R.ok(new PageInfo<>());
                    }
                }
                query.setLocationIds(collect);
            }
        }
        if (StringUtils.hasLength(query.getEndTime())){
            String replace = query.getEndTime().replace(" 00:00:00", " 23:59:59");
            query.setEndTime(replace);
        }
        return R.ok(inspectorService.pageList(query));
    }
    @Log(title = "督察记录导出", businessType = BusinessType.EXPORT)
    @Log(title = "督察记录导出", businessType = BusinessType.OTHER)
    @ApiOperation(value = "督察记录导出")
    @PostMapping(value = "/exportExcel")
    public void exportExcel(@RequestBody InsepectorListQuery query) {
@@ -243,5 +272,125 @@
        inspectorService.removeById(id);
        return R.ok();
    }
    @Resource
    private TNoticeService noticeService;
    @Resource
    private TNoticeSetService noticeSetService;
    @Resource
    private TDictDataService dictDataService;
    @Resource
    private MsgUtils msgUtils;
    @Resource
    private TemplateMessageSendUtil templateMessageSendUtil;
    @Log(title = "审核任务", businessType = BusinessType.UPDATE)
    @ApiOperation(value = "审核任务")
    @PostMapping(value = "/audit")
    public R<Boolean> audit(@RequestBody TInspectorAuditDTO dto) throws Exception {
        TTaskAuditDTO tTaskAuditDTO = new TTaskAuditDTO();
        BeanUtils.copyProperties(dto, tTaskAuditDTO);
        TTask task = taskCleanerService.getById(dto.getTaskId());
        TLocation location = locationService.getById(task.getLocationId());
        TNotice tNotice = new TNotice();
        TNoticeSet noticeSet = noticeSetService.lambdaQuery().eq(TNoticeSet::getType, 2).last("limit 1")
                .one();
        tNotice.setUserId(task.getPatrolInspector());
        tNotice.setStatus(1);
        tNotice.setDataId(task.getId());
        tNotice.setNoticeSetType(noticeSet.getNoticeType());
        TInspector byId = inspectorService.getById(dto.getId());
        SysUser sysUser = sysUserService.selectUserById(Long.valueOf(task.getPatrolInspector()));
        // 邮箱
        TDictData email = dictDataService.lambdaQuery().eq(TDictData::getDataType,4).one();
        // 授权码
        TDictData code = dictDataService.lambdaQuery().eq(TDictData::getDataType,5).one();
        if (dto.getAuditStatus()==1){
            if (byId.getClearStatus()==2){
                tTaskAuditDTO.setHandleType(3);
                dto.setStatus(2);
                // 增加消息
                tNotice.setNoticeType(8);
                tNotice.setNoticeContent("【"+location.getLocationName()+"】督察任务不合格,请重新上传!");
                noticeService.save(tNotice);
                switch (noticeSet.getNoticeType()) {
                    case 1:
                        msgUtils.sendMsg5(sysUser.getPhonenumber(), location.getLocationName());
                        break;
                    case 2:
                        if (StringUtils.hasLength(email.getDataContent()) && StringUtils.hasLength(code.getDataContent())) {
                            EmailUtils.sendEmail(sysUser.getEmail(), email.getDataContent(), code.getDataContent(), "【"+location.getLocationName()+"】任务督察不合格,请及时整改!");
                        }
                        break;
                    case 3:
                        if (StringUtils.hasLength(sysUser.getOpenId())){
                            templateMessageSendUtil.wxTemplateProblemRectificationRequest(sysUser.getOpenId(),
                                    location.getLocationName(),dto.getAuditRemark());
                        }
                        break;
                }
            }else{
                if (dto.getAuditTime()!=null){
                    dto.setStatus(3);
                }else{
                    dto.setStatus(4);
                }
            }
        }
        dto.setAuditTime(LocalDateTime.now());
        dto.setAuditPerson(tokenService.getLoginUser().getUserId()+"");
        inspectorService.updateById(dto);
        return R.ok();
//        TInspector byId = inspectorService.getById(dto.getId());
//
//        TTaskAuditDTO tTaskAuditDTO = new TTaskAuditDTO();
//        BeanUtils.copyProperties(dto, tTaskAuditDTO);
//        TLocation location = locationService.getById(byId.getLocationId());
//        TNotice tNotice = new TNotice();
//        TNoticeSet noticeSet = noticeSetService.lambdaQuery().eq(TNoticeSet::getType, 2).last("limit 1")
//                .one();
//        tNotice.setUserId(location.getLocationLeader());
//        tNotice.setStatus(1);
//        tNotice.setDataId(byId.getId());
//        tNotice.setNoticeSetType(noticeSet.getNoticeType());
//        SysUser sysUser = sysUserService.selectUserById(Long.valueOf(location.getLocationLeader()));
//        // 邮箱
//        TDictData email = dictDataService.lambdaQuery().eq(TDictData::getDataType,4).one();
//        // 授权码
//        TDictData code = dictDataService.lambdaQuery().eq(TDictData::getDataType,5).one();
//        if (dto.getAuditStatus()==1){
//            if (byId.getClearStatus()==2){
//                tTaskAuditDTO.setHandleType(3);
//                dto.setStatus(2);
//                // 增加消息
//                tNotice.setNoticeType(8);
//                tNotice.setNoticeContent("【"+location.getLocationName()+"】督察任务不合格,请重新上传!");
//                noticeService.save(tNotice);
//                switch (noticeSet.getNoticeType()) {
//                    case 1:
//                        msgUtils.sendMsg5(sysUser.getPhonenumber(), location.getLocationName());
//                        break;
//                    case 2:
//                        if (StringUtils.hasLength(email.getDataContent()) && StringUtils.hasLength(code.getDataContent())) {
//                            EmailUtils.sendEmail(sysUser.getEmail(), email.getDataContent(), code.getDataContent(), "【"+location.getLocationName()+"】任务督察不合格,请及时整改!");
//                        }
//                        break;
//                    case 3:
//                        break;
//                }
//            }else{
//                if (dto.getAuditTime()!=null){
//                    dto.setStatus(3);
//                }else{
//                    dto.setStatus(4);
//                }
//            }
//        }
//        dto.setAuditTime(LocalDateTime.now());
//        dto.setAuditPerson(tokenService.getLoginUser().getUserId()+"");
//        inspectorService.updateById(dto);
//        return R.ok();
    }
}