TStaningBookServiceImpl.java 8.04 KB
Newer Older
耿迪迪's avatar
耿迪迪 committed
1 2
package com.zehong.system.service.impl;

吴卿华's avatar
吴卿华 committed
3 4 5
import cn.hutool.core.date.DateTime;
import com.zehong.common.core.domain.entity.SysUser;
import com.zehong.common.core.domain.model.LoginUser;
耿迪迪's avatar
耿迪迪 committed
6
import com.zehong.common.utils.DateUtils;
吴卿华's avatar
吴卿华 committed
7 8
import com.zehong.common.utils.SecurityUtils;
import com.zehong.system.domain.TNews;
9
import com.zehong.system.domain.TStaningBook;
耿迪迪's avatar
耿迪迪 committed
10
import com.zehong.system.domain.vo.HiddenStatVO;
耿迪迪's avatar
耿迪迪 committed
11 12 13
import com.zehong.system.mapper.SysDeptMapper;
import com.zehong.system.mapper.THiddenTroubleWorkMapper;
import com.zehong.system.mapper.TStaningBookMapper;
吴卿华's avatar
吴卿华 committed
14
import com.zehong.system.mapper.TTrainCourseMapper;
耿迪迪's avatar
耿迪迪 committed
15
import com.zehong.system.service.ITStaningBookService;
16 17 18 19 20 21 22
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.text.SimpleDateFormat;
import java.util.*;
耿迪迪's avatar
耿迪迪 committed
23 24 25

/**
 * 隐患台账Service业务层处理
吴卿华's avatar
吴卿华 committed
26
 *
耿迪迪's avatar
耿迪迪 committed
27 28 29 30
 * @author zehong
 * @date 2022-07-09
 */
@Service
吴卿华's avatar
吴卿华 committed
31
public class TStaningBookServiceImpl implements ITStaningBookService
耿迪迪's avatar
耿迪迪 committed
32
{
33
    private static final Logger logger = LoggerFactory.getLogger(TStaningBookServiceImpl.class);
耿迪迪's avatar
耿迪迪 committed
34 35 36 37 38 39
    @Autowired
    private TStaningBookMapper tStaningBookMapper;
    @Autowired
    private THiddenTroubleWorkMapper tHiddenTroubleWorkMapper;
    @Autowired
    private SysDeptMapper deptMapper;
吴卿华's avatar
吴卿华 committed
40 41
    @Autowired
    private TTrainCourseMapper tTrainCourseMapper;
耿迪迪's avatar
耿迪迪 committed
42 43
    /**
     * 查询隐患台账
吴卿华's avatar
吴卿华 committed
44
     *
耿迪迪's avatar
耿迪迪 committed
45 46 47 48 49 50 51 52 53 54 55
     * @param bookId 隐患台账ID
     * @return 隐患台账
     */
    @Override
    public TStaningBook selectTStaningBookById(Long bookId)
    {
        return tStaningBookMapper.selectTStaningBookById(bookId);
    }

    /**
     * 查询隐患台账列表
吴卿华's avatar
吴卿华 committed
56
     *
耿迪迪's avatar
耿迪迪 committed
57 58 59 60
     * @param tStaningBook 隐患台账
     * @return 隐患台账
     */
    @Override
61
    public List<TStaningBook> selectTStaningBookList(TStaningBook tStaningBook,Long roleId)
耿迪迪's avatar
耿迪迪 committed
62
    {
63 64 65
        if(roleId!=3){//当角色是管理员时候查询全部
            tStaningBook.setUserId(0l);
        }
耿迪迪's avatar
耿迪迪 committed
66
        List<TStaningBook> list = tStaningBookMapper.selectTStaningBookList(tStaningBook);
zhangjianqian's avatar
zhangjianqian committed
67 68 69 70 71 72 73
        for (TStaningBook t : list){
            if(t.getRectificationTerm()!=null&&t.getRectificationTerm().getTime()<new Date().getTime()&&t.getState()==0){
                t.setFinishDay(1l);
            }else {
                t.setFinishDay(0l);
            }
        }
zhangjianqian's avatar
zhangjianqian committed
74 75 76 77 78 79 80 81 82
        return  list;
    }
    public List<Long> selectDeptIds(List<Long> list,List<Long> deptIds){
        List<Long> resultlist = deptMapper.selectDeptByParentId(deptIds);
        if(resultlist.size()==0){
            return list;
        }
        list.addAll(resultlist);
        return selectDeptIds(list,resultlist);
耿迪迪's avatar
耿迪迪 committed
83 84 85
    }
    /**
     * 新增隐患台账
吴卿华's avatar
吴卿华 committed
86
     *
耿迪迪's avatar
耿迪迪 committed
87 88 89 90 91 92 93
     * @param tStaningBook 隐患台账
     * @return 结果
     */
    @Override
    public int insertTStaningBook(TStaningBook tStaningBook)
    {
        tStaningBook.setCreateTime(DateUtils.getNowDate());
吴卿华's avatar
吴卿华 committed
94 95 96 97
            /** 手机端消息新封装类 */
            TNews tNews=new TNews();
            /**设置所属模块*/
            tNews.setModule(2);
吴卿华's avatar
吴卿华 committed
98 99 100 101
            //查询接收人姓名
//            String nickName = tTrainCourseMapper.selectRecipient(tStaningBook.getRectification());
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String myDate = simpleDateFormat.format(tStaningBook.getRectificationTerm());
吴卿华's avatar
吴卿华 committed
102
            /**设置内容*/
吴卿华's avatar
吴卿华 committed
103
            tNews.setMessageContent("隐患排查:"+tStaningBook.getTroubleName()+",请于"+myDate+"前整改完毕。");
吴卿华's avatar
吴卿华 committed
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
            LoginUser loginUser = SecurityUtils.getLoginUser();
            SysUser user = loginUser.getUser();
            Long userId = user.getUserId();
            /** 发布人ID*/
            tNews.setPublisherId(userId);
            /** 接收人id*/
            tNews.setRecipientId(Math.toIntExact(tStaningBook.getRectification()));
            int i = tStaningBookMapper.insertTStaningBook(tStaningBook);
             /** 所属模块id*/
            tNews.setModuleId(Long.valueOf(tStaningBook.getBookId()));
            tNews.setReleaseTime(new DateTime());
            /**
             * 消息添加
             */
            tTrainCourseMapper.insertNews(tNews);


        return i;
耿迪迪's avatar
耿迪迪 committed
122 123 124 125
    }

    /**
     * 修改隐患台账
吴卿华's avatar
吴卿华 committed
126
     *
耿迪迪's avatar
耿迪迪 committed
127 128 129 130 131 132 133 134 135 136 137
     * @param tStaningBook 隐患台账
     * @return 结果
     */
    @Override
    public int updateTStaningBook(TStaningBook tStaningBook)
    {
        return tStaningBookMapper.updateTStaningBook(tStaningBook);
    }

    /**
     * 批量删除隐患台账
吴卿华's avatar
吴卿华 committed
138
     *
耿迪迪's avatar
耿迪迪 committed
139 140 141 142 143 144 145 146 147 148 149
     * @param bookIds 需要删除的隐患台账ID
     * @return 结果
     */
    @Override
    public int deleteTStaningBookByIds(Long[] bookIds)
    {
        return tStaningBookMapper.deleteTStaningBookByIds(bookIds);
    }

    /**
     * 删除隐患台账信息
吴卿华's avatar
吴卿华 committed
150
     *
耿迪迪's avatar
耿迪迪 committed
151 152 153 154 155 156 157 158
     * @param bookId 隐患台账ID
     * @return 结果
     */
    @Override
    public int deleteTStaningBookById(Long bookId)
    {
        return tStaningBookMapper.deleteTStaningBookById(bookId);
    }
lizhichao's avatar
lizhichao committed
159 160 161 162 163

    @Override
    public Map statics(String type) {
        return tStaningBookMapper.statics(type);
    }
耿迪迪's avatar
耿迪迪 committed
164 165 166 167

    @Override
    public Map<String,List> hiddenStat(Integer troubleLevel, Date beginTime, Date endTime){
        Map<String,List> result = new HashMap<>(16);
168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207
        try {
            List<HiddenStatVO> barData = tStaningBookMapper.hiddenBarStat(troubleLevel,beginTime,endTime);
            //柱状图月份数据
            List<String> months = getMonthBetweenDate(beginTime,endTime);
            //柱状图隐患数量
            List<Integer> hiddens = new ArrayList<>();
            //柱状图整改数量
            List<Integer> rectifieds = new ArrayList<>();
            for(String month : months){
                boolean isHas = false;
                for(HiddenStatVO hidden : barData){
                    if(month.equals(hidden.getMonth())){
                        isHas = true;
                        hiddens.add(hidden.getHiddenCount());
                        rectifieds.add(hidden.getRectifiedCount());
                        break;
                    }
                }
                if(!isHas){
                    hiddens.add(0);
                    rectifieds.add(0);
                }
            }
            result.put("months",months);
            result.put("hiddens",hiddens);
            result.put("rectifieds",rectifieds);
            //环状统计图
            Map<String,Integer> pieData = tStaningBookMapper.hiddenPieStat(troubleLevel,beginTime,endTime);
            List<Map<String,Object>> pieResult = new ArrayList<>();
            Map<String,Object> rectifiedMap = new HashMap<>(16);
            rectifiedMap.put("name","已整改");
            rectifiedMap.put("value",pieData.get("rectifiedCount"));
            pieResult.add(rectifiedMap);
            Map<String,Object> stayRectifiedMap = new HashMap<>(16);
            stayRectifiedMap.put("name","未整改");
            stayRectifiedMap.put("value",pieData.get("stayRectifiedCount"));
            pieResult.add(stayRectifiedMap);
            result.put("pieData",pieResult);
        } catch (Exception e) {
            logger.error("隐患统计错误:" + e);
耿迪迪's avatar
耿迪迪 committed
208
        }
209

耿迪迪's avatar
耿迪迪 committed
210 211 212
        return result;
    }

213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235

    /**
     * 获取两个日期之间的所有月份 (年月)
     *
     * @param startTime
     * @param endTime
     * @return:YYYY-MM
     */
    private List<String> getMonthBetweenDate(Date startTime, Date endTime){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
        // 声明保存日期集合
        List<String> list = new ArrayList<String>();
        //用Calendar 进行日期比较判断
        Calendar calendar = Calendar.getInstance();
        while (startTime.getTime()<=endTime.getTime()){
            // 把日期添加到集合
            list.add(sdf.format(startTime));
            // 设置日期
            calendar.setTime(startTime);
            //把日期增加一天
            calendar.add(Calendar.MONTH, 1);
            // 获取增加后的日期
            startTime=calendar.getTime();
耿迪迪's avatar
耿迪迪 committed
236
        }
237
        return list;
耿迪迪's avatar
耿迪迪 committed
238
    }
239

耿迪迪's avatar
耿迪迪 committed
240
}