huanghongfa
2021-08-21 2e64c232ab6b51b2cecf1ee96e1e9b709234f326
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComSwDangerReportServiceImpl.java
@@ -1,11 +1,37 @@
package com.panzhihua.service_community.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.panzhihua.common.enums.SafeWordStatusEnum;
import com.panzhihua.common.model.dtos.community.ComSwDangerReportHandleDTO;
import com.panzhihua.common.model.dtos.community.ComSwDangerReportRectifyDTO;
import com.panzhihua.common.model.dtos.community.ComSwPatrolRecordPageDTO;
import com.panzhihua.common.model.vos.LoginUserInfoVO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.community.ComMngCarExcelVO;
import com.panzhihua.common.model.vos.community.ComSwDangerReportExcelVO;
import com.panzhihua.common.model.vos.community.ComSwDangerReportVO;
import com.panzhihua.common.model.vos.community.ComSwSafetyWorkRecordVO;
import com.panzhihua.common.service.user.UserService;
import com.panzhihua.common.utlis.DateUtils;
import com.panzhihua.common.utlis.StringUtils;
import com.panzhihua.service_community.dao.ComSwDangerReportDAO;
import com.panzhihua.service_community.dao.ComSwPatrolRecordDAO;
import com.panzhihua.service_community.dao.ComSwPatrolRecordReportDAO;
import com.panzhihua.service_community.model.dos.ComSwDangerReportDO;
import com.panzhihua.service_community.model.dos.ComSwPatrolRecordDO;
import com.panzhihua.service_community.model.dos.ComSwPatrolRecordReportDO;
import com.panzhihua.service_community.model.dos.ComSwSafetyWorkRecordDO;
import com.panzhihua.service_community.service.ComSwDangerReportService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.*;
/**
 * @auther txb
@@ -16,4 +42,303 @@
@Service
public class ComSwDangerReportServiceImpl extends ServiceImpl<ComSwDangerReportDAO, ComSwDangerReportDO> implements ComSwDangerReportService {
    @Resource
    private ComSwDangerReportDAO comSwDangerReportDAO;
    @Resource
    private ComSwPatrolRecordDAO comSwPatrolRecordDAO;
    @Resource
    private ComSwPatrolRecordReportDAO comSwPatrolRecordReportDAO;
    @Resource
    private UserService userService;
    @Override
    public R pageDangerReport(ComSwPatrolRecordPageDTO comSwPatrolRecordPageDTO) {
        Page page = new Page<>();
        Long pageNum = comSwPatrolRecordPageDTO.getPageNum();
        Long pageSize = comSwPatrolRecordPageDTO.getPageSize();
        if (null == pageNum || 0 == pageNum) {
            pageNum = 1L;
        }
        if (null == pageSize || 0 == pageSize) {
            pageSize = 10L;
        }
        page.setSize(pageSize);
        page.setCurrent(pageNum);
        IPage<ComSwDangerReportVO> iPage = comSwDangerReportDAO.pageDangerReport(page, comSwPatrolRecordPageDTO);
        if (!iPage.getRecords().isEmpty()) {
            iPage.getRecords().forEach(comSwDangerReportVO -> {
                if (StringUtils.isNotEmpty(comSwDangerReportVO.getStatus()) && "2".equals(comSwDangerReportVO.getStatus())) {
                    comSwDangerReportVO.setIsAssign(ComSwDangerReportVO.isOk.yes);
                }else {
                    comSwDangerReportVO.setIsAssign(ComSwDangerReportVO.isOk.no);
                }
                StringBuilder patrolNameString = new StringBuilder();
                StringBuilder patrolPhoneString = new StringBuilder();
                //巡查人员id查询巡查人员的名字和电话
                if(StringUtils.isNotEmpty(comSwDangerReportVO.getPatrolPerson())){
                    String[] patrolIds = comSwDangerReportVO.getPatrolPerson().split(",");
                    for (int i = 0; i < patrolIds.length ; i++) {
                        Map<String,String> leader = comSwPatrolRecordDAO.getPbServiceTeamById(patrolIds[i]);
                        if(leader != null){
                            if(i != 0){
                                patrolNameString.append(",");
                                patrolPhoneString.append(",");
                            }
                            patrolNameString.append(leader.get("name"));
                            patrolPhoneString.append(leader.get("phone"));
                        }
                    }
                    comSwDangerReportVO.setPPersonName(patrolNameString.toString());
                    comSwDangerReportVO.setPPersonPhone(patrolPhoneString.toString());
                }
                //整改人员id查询整改人员的名字和电话
                StringBuilder dangerNameString = new StringBuilder();
                StringBuilder dangerPhoneString = new StringBuilder();
                if(StringUtils.isNotEmpty(comSwDangerReportVO.getRectifyPerson())){
                    String[] dangerIds = comSwDangerReportVO.getRectifyPerson().split(",");
                    for (int i = 0; i < dangerIds.length ; i++) {
                        Map<String,String> person = comSwPatrolRecordDAO.getPbServiceTeamById(dangerIds[i]);
                        if(person != null){
                            if(i != 0){
                                dangerNameString.append(",");
                                dangerPhoneString.append(",");
                            }
                            dangerNameString.append(person.get("name"));
                            dangerPhoneString.append(person.get("phone"));
                        }
                    }
                    comSwDangerReportVO.setDPersonName(dangerNameString.toString());
                    comSwDangerReportVO.setDPersonPhone(dangerPhoneString.toString());
                }
            });
        }
        return R.ok(iPage);
    }
    @Override
    public R detailDangerReport(Long dangerReportId) {
        ComSwDangerReportDO comSwDangerReportDO = comSwDangerReportDAO.selectById(dangerReportId);
        if (null == comSwDangerReportDO) {
            return R.fail("该隐患报告不存在");
        }
        ComSwDangerReportVO comSwDangerReportVO = new ComSwDangerReportVO();
        ComSwPatrolRecordReportDO comSwPatrolRecordReportDO = comSwPatrolRecordReportDAO.selectOne(new QueryWrapper<ComSwPatrolRecordReportDO>().lambda().eq(ComSwPatrolRecordReportDO::getReportId, dangerReportId));
        if (null != comSwPatrolRecordReportDO) {
            ComSwPatrolRecordDO comSwPatrolRecordDO = comSwPatrolRecordDAO.selectById(comSwPatrolRecordReportDO.getPatrolRecordId());
            BeanUtils.copyProperties(comSwPatrolRecordDO, comSwDangerReportVO);
        }
        BeanUtils.copyProperties(comSwDangerReportDO, comSwDangerReportVO);
        //组装巡查类型
        if(StringUtils.isNotEmpty(comSwDangerReportVO.getPatrolType())){
            StringBuilder sb = new StringBuilder();
            String patrolTypes[] = comSwDangerReportVO.getPatrolType().split(",");
            for (int i = 0; i < patrolTypes.length; i++) {
                if(i != 0){
                    sb.append(",");
                }
                if(patrolTypes[i].equals("1")){
                    sb.append("防火巡查");
                }else if(patrolTypes[i].equals("2")){
                    sb.append("防汛巡查");
                }else if(patrolTypes[i].equals("3")){
                    sb.append("防疫巡查");
                }
            }
            comSwDangerReportVO.setPatrolType(sb.toString());
        }
        //查询整改人员信息
        if(StringUtils.isNotEmpty(comSwDangerReportVO.getRectifyPerson())){
            StringBuilder sb = new StringBuilder();
            String personIds[] = comSwDangerReportVO.getRectifyPerson().split(",");
            for (int i = 0; i < personIds.length; i++) {
                if(i != 0){
                    sb.append(",");
                }
                Map<String,String> personMap = comSwPatrolRecordDAO.getPbServiceTeamById(personIds[i]);
                if(personMap != null){
                    sb.append(personMap.get("name"));
                }
            }
            comSwDangerReportVO.setPersonName(sb.toString());
        }
        //查询填报人名称
        if(comSwDangerReportVO.getCreateBy() != null){
            comSwDangerReportVO.setCreateName(comSwPatrolRecordDAO.getCreateName(comSwDangerReportVO.getCreateBy()));
        }
        //查询指派人名称
        if(StringUtils.isNotEmpty(comSwDangerReportVO.getAssignPerson())){
            StringBuilder sb = new StringBuilder();
            String personIds[] = comSwDangerReportVO.getAssignPerson().split(",");
            for (int i = 0; i < personIds.length; i++) {
                if(i != 0){
                    sb.append(",");
                }
                Map<String,String> personMap = comSwPatrolRecordDAO.getPbServiceTeamById(personIds[i]);
                if(personMap != null){
                    sb.append(personMap.get("name"));
                }
            }
            comSwDangerReportVO.setAssignPersonName(sb.toString());
        }
        StringBuilder patrolNameString = new StringBuilder();
        StringBuilder patrolPhoneString = new StringBuilder();
        //巡查人员id查询巡查人员的名字和电话
        if(StringUtils.isNotEmpty(comSwDangerReportVO.getPatrolPerson())){
            String[] patrolIds = comSwDangerReportVO.getPatrolPerson().split(",");
            for (int i = 0; i < patrolIds.length ; i++) {
                Map<String,String> leader = comSwPatrolRecordDAO.getPbServiceTeamById(patrolIds[i]);
                if(leader != null){
                    if(i != 0){
                        patrolNameString.append(",");
                        patrolPhoneString.append(",");
                    }
                    patrolNameString.append(leader.get("name"));
                    patrolPhoneString.append(leader.get("phone"));
                }
            }
            comSwDangerReportVO.setPPersonName(patrolNameString.toString());
            comSwDangerReportVO.setPPersonPhone(patrolPhoneString.toString());
        }
        //整改人员id查询整改人员的名字和电话
        StringBuilder dangerNameString = new StringBuilder();
        StringBuilder dangerPhoneString = new StringBuilder();
        if(StringUtils.isNotEmpty(comSwDangerReportVO.getRectifyPerson())){
            String[] dangerIds = comSwDangerReportVO.getRectifyPerson().split(",");
            for (int i = 0; i < dangerIds.length ; i++) {
                Map<String,String> person = comSwPatrolRecordDAO.getPbServiceTeamById(dangerIds[i]);
                if(person != null){
                    if(i != 0){
                        dangerNameString.append(",");
                        dangerPhoneString.append(",");
                    }
                    dangerNameString.append(person.get("name"));
                    dangerPhoneString.append(person.get("phone"));
                }
            }
            comSwDangerReportVO.setDPersonName(dangerNameString.toString());
            comSwDangerReportVO.setDPersonPhone(dangerPhoneString.toString());
        }
        return R.ok(comSwDangerReportVO);
    }
    @Override
    public R detailDangerReportByPrId(Long patrolRecordId) {
        ComSwPatrolRecordDO comSwPatrolRecordDO = comSwPatrolRecordDAO.selectById(patrolRecordId);
        if(comSwPatrolRecordDO == null){
            return R.fail("该隐患报告不存在");
        }
        ComSwDangerReportVO comSwDangerReportVO = new ComSwDangerReportVO();
        ComSwPatrolRecordReportDO comSwPatrolRecordReportDO = comSwPatrolRecordReportDAO.selectOne(new QueryWrapper<ComSwPatrolRecordReportDO>().lambda().eq(ComSwPatrolRecordReportDO::getPatrolRecordId, patrolRecordId));
        if (null != comSwPatrolRecordReportDO) {
            ComSwDangerReportDO comSwDangerReportDO = comSwDangerReportDAO.selectById(comSwPatrolRecordReportDO.getReportId());
            if (null == comSwDangerReportDO) {
                return R.fail("该隐患报告不存在");
            }
            BeanUtils.copyProperties(comSwDangerReportDO, comSwDangerReportVO);
        }
        BeanUtils.copyProperties(comSwPatrolRecordDO, comSwDangerReportVO);
        StringBuilder patrolNameString = new StringBuilder();
        StringBuilder patrolPhoneString = new StringBuilder();
        //巡查人员id查询巡查人员的名字和电话
        if(StringUtils.isNotEmpty(comSwDangerReportVO.getPatrolPerson())){
            String[] patrolIds = comSwDangerReportVO.getPatrolPerson().split(",");
            for (int i = 0; i < patrolIds.length ; i++) {
                Map<String,String> leader = comSwPatrolRecordDAO.getPbServiceTeamById(patrolIds[i]);
                if(leader != null){
                    if(i != 0){
                        patrolNameString.append(",");
                        patrolPhoneString.append(",");
                    }
                    patrolNameString.append(leader.get("name"));
                    patrolPhoneString.append(leader.get("phone"));
                }
            }
            comSwDangerReportVO.setPPersonName(patrolNameString.toString());
            comSwDangerReportVO.setPPersonPhone(patrolPhoneString.toString());
        }
        //整改人员id查询整改人员的名字和电话
        StringBuilder dangerNameString = new StringBuilder();
        StringBuilder dangerPhoneString = new StringBuilder();
        if(StringUtils.isNotEmpty(comSwDangerReportVO.getRectifyPerson())){
            String[] dangerIds = comSwDangerReportVO.getRectifyPerson().split(",");
            for (int i = 0; i < dangerIds.length ; i++) {
                Map<String,String> person = comSwPatrolRecordDAO.getPbServiceTeamById(dangerIds[i]);
                if(person != null){
                    if(i != 0){
                        dangerNameString.append(",");
                        dangerPhoneString.append(",");
                    }
                    dangerNameString.append(person.get("name"));
                    dangerPhoneString.append(person.get("phone"));
                }
            }
            comSwDangerReportVO.setDPersonName(dangerNameString.toString());
            comSwDangerReportVO.setDPersonPhone(dangerPhoneString.toString());
        }
        return R.ok(comSwDangerReportVO);
    }
    @Override
    public R handleDangerReport(ComSwDangerReportHandleDTO comSwDangerReportHandleDTO) {
        ComSwDangerReportDO comSwDangerReportDO = comSwDangerReportDAO.selectById(comSwDangerReportHandleDTO.getDangerReportId());
        if (null == comSwDangerReportDO) {
            return R.fail("该隐患报告不存在");
        }
        BeanUtils.copyProperties(comSwDangerReportHandleDTO, comSwDangerReportDO);
        comSwDangerReportDO.setStatus(String.valueOf(SafeWordStatusEnum.YCL.getCode()));
        ComSwDangerReportDO comSwDangerReportDO1 = comSwDangerReportDAO.selectById(comSwDangerReportHandleDTO.getDangerReportId());
        if (!comSwDangerReportDO1.getStatus().equals(String.valueOf(SafeWordStatusEnum.DCL.getCode()))) {
            return R.fail("该隐患报告已处理,请勿重复操作");
        }
        int update = comSwDangerReportDAO.updateById(comSwDangerReportDO);
        if (update > 0) {
            return R.ok();
        }
        return R.fail("处理失败");
    }
    @Override
    public R rectifyDangerReport(ComSwDangerReportRectifyDTO comSwDangerReportRectifyDTO) {
        ComSwDangerReportDO comSwDangerReportDO = comSwDangerReportDAO.selectById(comSwDangerReportRectifyDTO.getDangerReportId());
        if (null == comSwDangerReportDO) {
            return R.fail("该隐患报告不存在");
        }
        BeanUtils.copyProperties(comSwDangerReportRectifyDTO, comSwDangerReportDO);
        comSwDangerReportDO.setStatus(String.valueOf(SafeWordStatusEnum.YZG.getCode()));
        comSwDangerReportDO.setRectifyTime(DateUtils.getCurrentDateStr());
        ComSwDangerReportDO comSwDangerReportDO1 = comSwDangerReportDAO.selectById(comSwDangerReportRectifyDTO.getDangerReportId());
        if (comSwDangerReportDO1.getStatus().equals(String.valueOf(SafeWordStatusEnum.YZG.getCode()))) {
            return R.fail("该隐患报告已整改,请勿重复操作");
        }
        int update = comSwDangerReportDAO.updateById(comSwDangerReportDO);
        if (update > 0) {
            return R.ok();
        }
        return R.fail("整改失败");
    }
    @Override
    public R exportDangerReport(List<Long> dangerReportIds) {
        List<ComSwDangerReportExcelVO> list = comSwDangerReportDAO.exportDangerReport(dangerReportIds);
//        list.forEach(comSwDangerReportExcelVO -> {
//            List<String> patrolUserIds = Arrays.asList(comSwDangerReportExcelVO.getPatrolPerson().split(","));
//            List<String> patrolPhones = new ArrayList<>();
//            for (String userId : patrolUserIds) {
//                LoginUserInfoVO loginUserInfoVO = userService.getUserInfoByUserId(userId).getData();
//                patrolPhones.add(loginUserInfoVO.getPhone());
//            }
//            comSwDangerReportExcelVO.setPatrolPersonPhone(StringUtils.join(patrolPhones,","));
//        });
        return R.ok(list);
    }
}