TExceptionLogServiceImpl.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287
  1. package com.sckj.warn.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.baomidou.mybatisplus.core.metadata.IPage;
  4. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  5. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  6. import com.sckj.common.core.AjaxResult;
  7. import com.sckj.common.core.PageResult;
  8. import com.sckj.common.exception.OperateException;
  9. import com.sckj.common.util.ExcelUtils;
  10. import com.sckj.common.validate.commons.PageValidate;
  11. import com.sckj.warn.dto.WarnDTO;
  12. import com.sckj.warn.entity.TExceptionLog;
  13. import com.sckj.warn.mapper.TExceptionLogMapper;
  14. import com.sckj.warn.validate.TExceptionLogCreateValidate;
  15. import com.sckj.warn.validate.TExceptionLogSearchValidate;
  16. import com.sckj.warn.validate.TExceptionLogUpdateValidate;
  17. import com.sckj.warn.vo.TExceptionLogBigScreenVo;
  18. import com.sckj.warn.vo.TExceptionLogDetailVo;
  19. import com.sckj.warn.vo.TExceptionLogExportVo;
  20. import com.sckj.warn.vo.TExceptionLogListedVo;
  21. import org.apache.commons.lang3.ObjectUtils;
  22. import org.apache.poi.ss.usermodel.Cell;
  23. import org.apache.poi.ss.usermodel.Row;
  24. import org.apache.poi.ss.usermodel.Sheet;
  25. import org.apache.poi.ss.usermodel.Workbook;
  26. import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  27. import org.springframework.beans.BeanUtils;
  28. import org.springframework.stereotype.Service;
  29. import org.springframework.util.Assert;
  30. import org.springframework.util.CollectionUtils;
  31. import javax.annotation.Resource;
  32. import javax.servlet.http.HttpServletResponse;
  33. import java.io.ByteArrayOutputStream;
  34. import java.io.IOException;
  35. import java.text.SimpleDateFormat;
  36. import java.util.Date;
  37. import java.util.LinkedList;
  38. import java.util.List;
  39. /**
  40. * 异常情况记录实现类
  41. * @author zhanghao
  42. */
  43. @Service
  44. public class TExceptionLogServiceImpl extends ServiceImpl<TExceptionLogMapper, TExceptionLog> {
  45. @Resource
  46. TExceptionLogMapper tExceptionLogMapper;
  47. /**
  48. * 异常情况记录列表
  49. *
  50. * @author zhanghao
  51. * @param pageValidate 分页参数
  52. * @param searchValidate 搜索参数
  53. * @return PageResult<TExceptionLogListedVo>
  54. */
  55. public PageResult<TExceptionLogListedVo> list(PageValidate pageValidate, TExceptionLogSearchValidate searchValidate) {
  56. Integer page = pageValidate.getPageNo();
  57. Integer limit = pageValidate.getPageSize();
  58. QueryWrapper<TExceptionLog> queryWrapper = new QueryWrapper<>();
  59. queryWrapper.eq("del_flag", "1");
  60. queryWrapper.orderByDesc("id");
  61. if(ObjectUtils.isNotEmpty(searchValidate.getCreateTimeStart()) && ObjectUtils.isNotEmpty(searchValidate.getCreateTimeEnd())){
  62. queryWrapper.between("create_time", searchValidate.getCreateTimeStart(), searchValidate.getCreateTimeEnd());
  63. }
  64. /*数据库时间类型为datetime不可走setSearch()*/
  65. // if (StringUtils.isNotEmpty(searchValidate.getCreateTimeStart()) && StringUtils.isNotEmpty(searchValidate.getCreateTimeEnd())){
  66. // queryWrapper.ge("create_time", searchValidate.getCreateTimeStart())
  67. // .le("create_time", searchValidate.getCreateTimeEnd());
  68. // }
  69. //setSearch()时间参数移除
  70. /*"datetime:createTimeStart-createTimeEnd@create_time:str",
  71. "datetime:updateTimeStart-updateTimeEnd@update_time:str",*/
  72. tExceptionLogMapper.setSearch(queryWrapper, searchValidate, new String[]{
  73. "=:exceptionType@exception_type:int",
  74. "=:exceptionArea@exception_area:str",
  75. "=:exceptionLevel@exception_level:str",
  76. });
  77. IPage<TExceptionLog> iPage = tExceptionLogMapper.selectPage(new Page<>(page, limit), queryWrapper);
  78. List<TExceptionLogListedVo> list = new LinkedList<>();
  79. for(TExceptionLog item : iPage.getRecords()) {
  80. TExceptionLogListedVo vo = new TExceptionLogListedVo();
  81. BeanUtils.copyProperties(item, vo);
  82. vo.setCreateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(item.getCreateTime())); //由于QueryWrapper或IPage的原因导致JsonFormat注解未生效,此处手动转换格式
  83. list.add(vo);
  84. }
  85. return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list);
  86. }
  87. /**
  88. * 异常情况记录详情
  89. *
  90. * @author zhanghao
  91. * @param id 主键参数
  92. * @return TExceptionLog
  93. */
  94. public TExceptionLogDetailVo detail(Integer id) {
  95. TExceptionLog model = tExceptionLogMapper.selectOne(
  96. new QueryWrapper<TExceptionLog>()
  97. .eq("id", id).eq("del_flag", "1")
  98. .last("limit 1"));
  99. Assert.notNull(model, "数据不存在");
  100. TExceptionLogDetailVo vo = new TExceptionLogDetailVo();
  101. BeanUtils.copyProperties(model, vo);
  102. return vo;
  103. }
  104. /**
  105. * 异常情况记录新增
  106. *
  107. * @author zhanghao
  108. * @param createValidate 参数
  109. */
  110. public void add(TExceptionLogCreateValidate createValidate) {
  111. TExceptionLog model = new TExceptionLog();
  112. model.setCreateTime(new Date(System.currentTimeMillis()));//gg
  113. model.setUpdateTime(new Date(System.currentTimeMillis()));//gg
  114. model.setExceptionType(createValidate.getExceptionType());
  115. model.setExceptionLevel(createValidate.getExceptionLevel());
  116. model.setReportedStatus(createValidate.getReportedStatus());
  117. model.setBoilerId(createValidate.getBoilerId());
  118. model.setExceptionDesc(createValidate.getExceptionDesc());
  119. tExceptionLogMapper.insert(model);
  120. }
  121. /**
  122. * 异常情况记录编辑
  123. *
  124. * @author zhanghao
  125. * @param updateValidate 参数
  126. */
  127. public void edit(TExceptionLogUpdateValidate updateValidate) {
  128. TExceptionLog model = tExceptionLogMapper.selectOne(
  129. new QueryWrapper<TExceptionLog>()
  130. .eq("id", updateValidate.getId())
  131. .last("limit 1"));
  132. Assert.notNull(model, "数据不存在!");
  133. model.setUpdateTime(new Date(System.currentTimeMillis()));//gg
  134. tExceptionLogMapper.updateById(model);
  135. }
  136. /**
  137. * 异常情况记录删除
  138. *
  139. * @author zhanghao
  140. * @param id 主键ID
  141. */
  142. public void del(Integer id) {
  143. TExceptionLog model = tExceptionLogMapper.selectOne(
  144. new QueryWrapper<TExceptionLog>()
  145. .eq("id", id)
  146. .last("limit 1"));
  147. Assert.notNull(model, "数据不存在!");
  148. model.setDelFlag("0");
  149. tExceptionLogMapper.updateById(model);
  150. }
  151. public AjaxResult<Object> del_ex(List<Long> ids) {
  152. List<TExceptionLog> models = tExceptionLogMapper.selectList(
  153. new QueryWrapper<TExceptionLog>()
  154. .in("id", ids));
  155. if (CollectionUtils.isEmpty(models)){
  156. return AjaxResult.failed("数据不存在");
  157. }
  158. TExceptionLog model = new TExceptionLog();
  159. model.setDelFlag("0");
  160. tExceptionLogMapper.update(model, new QueryWrapper<TExceptionLog>().in("id", ids));
  161. return AjaxResult.success();
  162. }
  163. /**
  164. * 异常情况记录导出
  165. *
  166. * @author zhanghao
  167. * @param searchValidate 搜索参数·
  168. */
  169. public ByteArrayOutputStream exportTExceptionLog(TExceptionLogSearchValidate searchValidate) {
  170. Workbook workbook = new XSSFWorkbook();
  171. Sheet sheet = workbook.createSheet("Persons");
  172. QueryWrapper<TExceptionLog> queryWrapper = new QueryWrapper<>();
  173. tExceptionLogMapper.setSearch(queryWrapper, searchValidate, new String[]{
  174. "=:exceptionType@exception_type:int",
  175. "=:exceptionArea@exception_area:str",
  176. "=:exceptionLevel@exception_level:str",
  177. });
  178. List<TExceptionLog> tExceptionLogList = tExceptionLogMapper.selectList(new QueryWrapper<TExceptionLog>());
  179. // 创建标题行
  180. Row headerRow = sheet.createRow(0);
  181. String[] columnNames = {"高炉编号", "异常类型", "异常区域", "危害程度", "上报状态", "创建时间"};
  182. for (int i = 0; i < columnNames.length; i++) {
  183. Cell cell = headerRow.createCell(i);
  184. cell.setCellValue(columnNames[i]);
  185. }
  186. // 填充数据
  187. for (int i = 0; i < tExceptionLogList.size(); i++) {
  188. Row row = sheet.createRow(i + 1);
  189. TExceptionLog tExceptionLog = tExceptionLogList.get(i);
  190. row.createCell(0).setCellValue(tExceptionLog.getBoilerId());
  191. row.createCell(1).setCellValue(tExceptionLog.getExceptionType());
  192. row.createCell(2).setCellValue(tExceptionLog.getExceptionArea());
  193. row.createCell(3).setCellValue(tExceptionLog.getExceptionLevel());
  194. row.createCell(4).setCellValue(tExceptionLog.getReportedStatus().equals("0") ? "未上报" : "已上报");
  195. row.createCell(5).setCellValue(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(tExceptionLog.getCreateTime()));
  196. }
  197. // 将数据写入输出流
  198. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  199. try {
  200. workbook.write(outputStream);
  201. workbook.close();
  202. } catch (Exception e) {
  203. e.printStackTrace();
  204. }
  205. return outputStream;
  206. }
  207. /***
  208. * 查询预警统计
  209. * @return
  210. */
  211. public List<WarnDTO> selectWarnStats(){
  212. return tExceptionLogMapper.selectWarnStats();
  213. }
  214. /**
  215. * 异常统计
  216. * @param searchValidate
  217. * @param response
  218. */
  219. public void exportExceptionLogList(TExceptionLogSearchValidate searchValidate, HttpServletResponse response){
  220. List<TExceptionLogExportVo> tExceptionLogExportVos = tExceptionLogMapper.exportExceptionLogList();
  221. try {
  222. ExcelUtils.exportExcel(tExceptionLogExportVos, TExceptionLogExportVo.class, "异常统计", "异常统计", response);
  223. } catch (IOException e) {
  224. throw new RuntimeException(e);
  225. }
  226. }
  227. /***
  228. *
  229. * @return
  230. */
  231. public TExceptionLog getLatest() {
  232. return this.lambdaQuery().orderByDesc(TExceptionLog::getCreateTime).list().stream().findFirst().orElseThrow(()->new OperateException("未查询到数据"));
  233. }
  234. public List<TExceptionLog> getLatests() {
  235. return this.lambdaQuery().orderByDesc(TExceptionLog::getCreateTime).list();
  236. }
  237. public List<TExceptionLogBigScreenVo> getRealTimeExceptionLogList(TExceptionLog exceptionLog) {
  238. return tExceptionLogMapper.getRealTimeExceptionLogList(exceptionLog);
  239. }
  240. }