package com.zehong.system.service.impl; import cn.hutool.core.date.DateTime; import com.zehong.common.core.domain.entity.SysUser; import com.zehong.common.core.domain.model.LoginUser; import com.zehong.common.utils.DateUtils; import com.zehong.common.utils.SecurityUtils; import com.zehong.system.domain.TNews; import com.zehong.system.domain.TStaningBook; import com.zehong.system.domain.vo.HiddenStatVO; import com.zehong.system.mapper.SysDeptMapper; import com.zehong.system.mapper.THiddenTroubleWorkMapper; import com.zehong.system.mapper.TStaningBookMapper; import com.zehong.system.mapper.TTrainCourseMapper; import com.zehong.system.service.ITStaningBookService; 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.*; /** * 隐患台账Service业务层处理 * * @author zehong * @date 2022-07-09 */ @Service public class TStaningBookServiceImpl implements ITStaningBookService { private static final Logger logger = LoggerFactory.getLogger(TStaningBookServiceImpl.class); @Autowired private TStaningBookMapper tStaningBookMapper; @Autowired private THiddenTroubleWorkMapper tHiddenTroubleWorkMapper; @Autowired private SysDeptMapper deptMapper; @Autowired private TTrainCourseMapper tTrainCourseMapper; /** * 查询隐患台账 * * @param bookId 隐患台账ID * @return 隐患台账 */ @Override public TStaningBook selectTStaningBookById(Long bookId) { return tStaningBookMapper.selectTStaningBookById(bookId); } /** * 查询隐患台账列表 * * @param tStaningBook 隐患台账 * @return 隐患台账 */ @Override public List<TStaningBook> selectTStaningBookList(TStaningBook tStaningBook,Long roleId) { if(roleId!=3){//当角色是管理员时候查询全部 tStaningBook.setUserId(0l); } List<TStaningBook> list = tStaningBookMapper.selectTStaningBookList(tStaningBook); for (TStaningBook t : list){ if(t.getRectificationTerm()!=null&&t.getRectificationTerm().getTime()<new Date().getTime()&&t.getState()==0){ t.setFinishDay(1l); }else { t.setFinishDay(0l); } } 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); } /** * 新增隐患台账 * * @param tStaningBook 隐患台账 * @return 结果 */ @Override public int insertTStaningBook(TStaningBook tStaningBook) { tStaningBook.setCreateTime(DateUtils.getNowDate()); /** 手机端消息新封装类 */ TNews tNews=new TNews(); /**设置所属模块*/ tNews.setModule(2); //查询接收人姓名 // String nickName = tTrainCourseMapper.selectRecipient(tStaningBook.getRectification()); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String myDate = simpleDateFormat.format(tStaningBook.getRectificationTerm()); /**设置内容*/ tNews.setMessageContent("隐患排查:"+tStaningBook.getTroubleName()+",请于"+myDate+"前整改完毕。"); 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; } /** * 修改隐患台账 * * @param tStaningBook 隐患台账 * @return 结果 */ @Override public int updateTStaningBook(TStaningBook tStaningBook) { return tStaningBookMapper.updateTStaningBook(tStaningBook); } /** * 批量删除隐患台账 * * @param bookIds 需要删除的隐患台账ID * @return 结果 */ @Override public int deleteTStaningBookByIds(Long[] bookIds) { return tStaningBookMapper.deleteTStaningBookByIds(bookIds); } /** * 删除隐患台账信息 * * @param bookId 隐患台账ID * @return 结果 */ @Override public int deleteTStaningBookById(Long bookId) { return tStaningBookMapper.deleteTStaningBookById(bookId); } @Override public Map statics(String type) { return tStaningBookMapper.statics(type); } @Override public Map<String,List> hiddenStat(Integer troubleLevel, Date beginTime, Date endTime){ Map<String,List> result = new HashMap<>(16); 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); } return result; } /** * 获取两个日期之间的所有月份 (年月) * * @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(); } return list; } }