package com.whyc.service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.whyc.constant.BattSingalIdEnum; import com.whyc.constant.DevAlarmEnum; import com.whyc.constant.PowerAlarmEnum; import com.whyc.dto.Response; import com.whyc.mapper.AlarmInspectionMapper; import com.whyc.pojo.db_user.Baojigroup; import com.whyc.pojo.db_user.User; import com.whyc.pojo.web_site.AlarmInspection; import com.whyc.pojo.web_site.AlarmInspectionResult; import com.whyc.util.CommonUtil; import com.whyc.util.DateUtil; import com.whyc.util.ThreadLocalUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import java.io.File; import java.io.IOException; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @Service public class AlarmInspectionService { @Resource private AlarmInspectionMapper mapper; @Autowired private AlarmInspectionResultService resultService; public Response getList(Integer stationId, Integer inspectionType) { //需要附加填充 负责班组信息 及 告警诊断信息 List list = mapper.getList(stationId,inspectionType); return new Response().set(1,list); } @Transactional public Response submitInspection(AlarmInspectionResult result, List file) throws IOException { //对file进行处理,保存到文件夹中 //对存储路径进行定义 String stationName = result.getStationName(); Date now = new Date(); String timeFormat = ThreadLocalUtil.format(ThreadLocalUtil.TIME_YYYY_MM_DD_HH_MM_SS_UNION, now); String dirMonth = ThreadLocalUtil.format(ThreadLocalUtil.TIME_YYYY_MM, now); String fileDirPath = CommonUtil.getRootFile() + "alarmInspection" + File.separator + dirMonth + File.separator + stationName + "_" + timeFormat; File fileDir = new File(fileDirPath); //如果文件夹不存在则创建 if (!fileDir.exists()) { fileDir.mkdirs(); } StringBuilder pictureUrlSb = new StringBuilder(); if (file != null && file.size() > 0) { for (int j = 0; j < file.size(); j++) { MultipartFile multipartFile = file.get(j); String fileName = multipartFile.getOriginalFilename(); //将fileName中可能存在的,去掉 fileName = fileName.replace(",",""); String filePath = fileDirPath + File.separator + fileName; multipartFile.transferTo(new File(filePath)); String split = "pis_file"+File.separator+"alarmInspection"; String picUrl = File.separator + filePath.substring(filePath.indexOf(split)); //最后一个元素 if (j == file.size() - 1) { pictureUrlSb.append(picUrl); }else { pictureUrlSb.append(picUrl).append(","); } } } result.setPictureUrl(pictureUrlSb.toString()); //根据提交的站点id和inspectionType查询出对应的工单 List list = mapper.getList(result.getStationId(),result.getInspectionType()); //校验告警是否全部消失,是则通过 for (int i = 0; i < list.size(); i++) { if (list.get(i).getIsExist() == 1) { return new Response().set(1,false,"当前巡检单内告警未全部消失"); } } //检验通过,进行巡检结果提交,形成巡检历史 //判断stationName,powerName,devName,battGroupName是否存在,逐个存在则拼接成一个字符串 StringBuilder alarmDescriptionSb = new StringBuilder(); for (int i = 0; i < list.size(); i++) { AlarmInspection temp = list.get(i); if (temp.getStationName() != null) { alarmDescriptionSb.append(temp.getStationName()).append("-"); } if (temp.getPowerName() != null) { alarmDescriptionSb.append(temp.getPowerName()).append("-"); } if (temp.getDevName() != null) { alarmDescriptionSb.append(temp.getDevName()).append("-"); } if (temp.getBattGroupName() != null) { alarmDescriptionSb.append(temp.getBattGroupName()); } if(temp.getMonNum() != null){ alarmDescriptionSb.append("单体编号:").append(temp.getMonNum()); } if(temp.getType() == 1) { //电源告警 alarmDescriptionSb.append("在" + DateUtil.YYYY_MM_DD_HH_MM_SS.format(temp.getAlmStartTime()) + "发生" + PowerAlarmEnum.getValue(temp.getAlmId()) + "告警,告警级别为" + temp.getAlmLevel() + ".\n"); } else if(temp.getType() == 2) { //设备告警 alarmDescriptionSb.append("在" + DateUtil.YYYY_MM_DD_HH_MM_SS.format(temp.getAlmStartTime()) + "发生" + DevAlarmEnum.getValue(temp.getAlmId()) + "告警,告警级别为" + temp.getAlmLevel() + ".\n"); }else{ //电池告警 alarmDescriptionSb.append("在" + DateUtil.YYYY_MM_DD_HH_MM_SS.format(temp.getAlmStartTime()) + "发生" + BattSingalIdEnum.getValue(temp.getAlmId()) +"告警,告警级别为" + temp.getAlmLevel() + ".\n"); } } result.setAlarmDescription(alarmDescriptionSb.toString()); User user = CommonUtil.getUser(); result.setSubmitUserId(user.getId()); result.setSubmitUserName(user.getName()); result.setCreateTime(new Date()); //所属班组 Baojigroup baoJiGroup = list.get(0).getBaoJiGroup(); result.setBaoJiGroupId(baoJiGroup.getBaojiGroupId()); result.setBaoJiGroupName(baoJiGroup.getBaojiGroupName()); resultService.add(result); //删除当前巡检单记录 List ids = list.stream().map(AlarmInspection::getId).collect(Collectors.toList()); mapper.deleteBatchIds(ids); return new Response().set(1,true,"提交完成"); } public void addBatch(List inspectionList) { mapper.insertBatchSomeColumn(inspectionList); } public List getAlarmExistList() { QueryWrapper query = Wrappers.query(); query.eq("is_exist",1); return mapper.selectList(query); } public void updateIsExist(List notExistIdList) { QueryWrapper query = Wrappers.query(); query.in("id",notExistIdList); AlarmInspection alarmInspection = new AlarmInspection(); alarmInspection.setIsExist(0); mapper.update(alarmInspection,query); } }