diff --git a/pom.xml b/pom.xml index 2a6518d..1fa2d25 100644 --- a/pom.xml +++ b/pom.xml @@ -123,7 +123,12 @@ org.projectlombok lombok - + + + org.seleniumhq.selenium + selenium-java + 3.141.59 + diff --git a/src/main/java/com/bonus/emergencyrap/config/DataConfig.java b/src/main/java/com/bonus/emergencyrap/config/DataConfig.java new file mode 100644 index 0000000..2865f81 --- /dev/null +++ b/src/main/java/com/bonus/emergencyrap/config/DataConfig.java @@ -0,0 +1,111 @@ +package com.bonus.emergencyrap.config; + + +public class DataConfig { + /** + * url 网站地址 + */ + public static final String URL = "http://xydyjzh.ah.sgcc.com.cn"; + /** + * 驱动名称 + */ + public static final String DRIVE_NAME = "webdriver.chrome.driver"; + + /** + * 用户名1 蒋涛 + */ + public static final String USER_NAME1 = "guoj123X"; + + /** + * 密码1 + */ + public static final String PASS1 = "aqjzcm333.."; + + /** + * 用户名2 武警 + */ + public static final String USER_NAME2 = "wangzy0078"; + + /** + * 密码2 + */ + public static final String PASS2 = "sfzhsw@0078"; + + /** + * 浏览器驱动地址 + */ + public static final String drivePath = "D:\\bns\\chromedriver_win32\\chromedriver.exe"; + /** + * 文件地址 + */ + public static final String filePath = "D:\\bns\\config"; + + /** + * 日期替换 年月日 + */ + public static final String date="--date"; + + /** + * 日期替换 年月日-时分秒 + */ + public static final String dateTime="--dateTime"; + + /** + * 日期替换 年月日-时分秒 + */ + public static final String tr="--tr"; + + public static final String td="--td"; + + /** + * 日期替换 年月日-时分秒 + */ + public static final String attributeId="--attributeId"; + + + /** + * 日期替换 明天 年月日-时分秒 + */ + public static final String tomorrow="--tomorrow"; + + + /** + * 日期替换 今天 年月日-时分秒 + */ + public static final String today="--today"; + + /** + * 天气 + */ + public static final String weather = "--weather"; + + /** + * 上个月的按钮 + */ + public static final String lastMonth = "//*[@id=\"app\"]/div/section/main/div/div[1]/div[1]/div[3]/div[1]/div[2]/div/button[1]"; + + /** + * 预警按钮 + */ + public static final String yuJing ="//*[@id=\"tab-3\"]/div/span"; + + /** + * 早报 + */ + public static final String morningDaily ="morning_daily"; + + /** + * 晚报 + */ + public static final String eveningDaily ="evening_daily"; + + /** + * 早日志 + */ + public static final String morningLog ="morning_log"; + + /** + * 晚日志 + */ + public static final String eveningLog ="evening_log"; +} diff --git a/src/main/java/com/bonus/emergencyrap/mapper/CollectDataMapper.java b/src/main/java/com/bonus/emergencyrap/mapper/CollectDataMapper.java new file mode 100644 index 0000000..62e08e6 --- /dev/null +++ b/src/main/java/com/bonus/emergencyrap/mapper/CollectDataMapper.java @@ -0,0 +1,11 @@ +package com.bonus.emergencyrap.mapper; + +import com.bonus.emergencyrap.vo.CollectDataVo; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface CollectDataMapper { + CollectDataVo getCollectData(CollectDataVo collectDataVo); + + void updateCollectData(CollectDataVo collectDataVo); +} diff --git a/src/main/java/com/bonus/emergencyrap/service/LogsUtils.java b/src/main/java/com/bonus/emergencyrap/service/LogsUtils.java index 3135589..099d341 100644 --- a/src/main/java/com/bonus/emergencyrap/service/LogsUtils.java +++ b/src/main/java/com/bonus/emergencyrap/service/LogsUtils.java @@ -1,11 +1,7 @@ package com.bonus.emergencyrap.service; -import com.alibaba.fastjson2.JSON; -import com.bonus.emergencyrap.constant.TextConstants; import com.bonus.emergencyrap.mapper.LogsMapper; import com.bonus.emergencyrap.utils.DateTimeHelper; -import com.bonus.emergencyrap.utils.TextFileUtils; -import com.bonus.emergencyrap.utils.UploadFile; import com.bonus.emergencyrap.vo.TaskMessageVo; import com.bonus.emergencyrap.vo.TaskProcessVo; import com.bonus.emergencyrap.vo.TaskVo; diff --git a/src/main/java/com/bonus/emergencyrap/service/StepService.java b/src/main/java/com/bonus/emergencyrap/service/StepService.java new file mode 100644 index 0000000..430ea67 --- /dev/null +++ b/src/main/java/com/bonus/emergencyrap/service/StepService.java @@ -0,0 +1,31 @@ +package com.bonus.emergencyrap.service; + +import com.bonus.emergencyrap.vo.TaskProcessVo; +import com.bonus.emergencyrap.vo.TaskVo; + +import java.text.ParseException; + +/** + * @author 马三炮 + * @date 2025/9/28 + */ +public interface StepService { + + void initDrive(TaskVo taskVo); + + void openWeb(TaskVo taskVo) throws InterruptedException; + + void input(TaskProcessVo taskProcessVo, String res) throws Exception; + + void onClick(TaskProcessVo taskProcessVo) throws Exception ; + + String getObject(TaskProcessVo taskProcessVo) throws InterruptedException; + + void isAlert(); + + void hover(TaskProcessVo taskProcessVo) throws InterruptedException; + + String collectData(TaskProcessVo taskProcessVo,TaskVo taskVo); + + void getYuJing(TaskProcessVo taskProcessVo) throws InterruptedException, ParseException; +} diff --git a/src/main/java/com/bonus/emergencyrap/service/StepServiceImpl.java b/src/main/java/com/bonus/emergencyrap/service/StepServiceImpl.java new file mode 100644 index 0000000..f41e652 --- /dev/null +++ b/src/main/java/com/bonus/emergencyrap/service/StepServiceImpl.java @@ -0,0 +1,371 @@ +package com.bonus.emergencyrap.service; + +import com.alibaba.fastjson2.JSON; +import com.bonus.emergencyrap.config.DataConfig; +import com.bonus.emergencyrap.mapper.CollectDataMapper; +import com.bonus.emergencyrap.utils.DateTimeUtils; +import com.bonus.emergencyrap.utils.StringUtils; +import com.bonus.emergencyrap.vo.*; +import lombok.extern.slf4j.Slf4j; +import org.openqa.selenium.By; +import org.openqa.selenium.JavascriptExecutor; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.chrome.ChromeDriver; +import org.openqa.selenium.chrome.ChromeOptions; +import org.openqa.selenium.interactions.Actions; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * @author 马三炮 + * @date 2025/9/28 + */ +@Slf4j +@Service +public class StepServiceImpl implements StepService{ + + private static WebDriver webDriver; + + @Resource + private CollectDataMapper collectDataMapper; + + + /** + * 初始化浏览器 + * @param taskVo + */ + public void initDrive(TaskVo taskVo) { + // chromedriver服务地址 + System.setProperty(taskVo.getDriverName(), taskVo.getDriverUrl()); + ChromeOptions option = new ChromeOptions(); + //添加浏览器地址 + option.setBinary(taskVo.getBrowserUrl()); + + option.addArguments("--start-maximized"); + option.addArguments(taskVo.getResolution()); + option.addArguments("disable-infobars"); + + webDriver = new ChromeDriver(option); + } + + /** + * 打开网页 + * @param taskVo + * @throws InterruptedException + */ + public void openWeb(TaskVo taskVo) throws InterruptedException { + //第一步打开指定网站 + webDriver.get(taskVo.getUrl()); + log.info("打开网站------------"); + Thread.sleep(2000); + } + + /** + * 输入 + */ + public void input(TaskProcessVo taskProcessVo, String res) throws Exception { + //****************************************************************** + /** + * 第二步 用户登录 + */ + log.info("输入值:" + taskProcessVo + ",---------"); + if (StringUtils.isNotNull(taskProcessVo.getXpath())){ + //填写内容 + String traof = taskProcessVo.getElementName(); + WebElement traofEle = webDriver.findElement(By.xpath(taskProcessVo.getXpath())); + traofEle.clear(); + traofEle.sendKeys(traof); + log.info(taskProcessVo.getElementName()+"填写新增-----------"); + Thread.sleep(Long.valueOf(String.valueOf(taskProcessVo.getSleepTime()*1000))); + }else { + //输入用户名 + webDriver.findElement(By.id(taskProcessVo.getElement())).sendKeys(taskProcessVo.getElementName()); + log.info(taskProcessVo.getElementName()+"输入值完成------------"); + Thread.sleep(Long.valueOf(String.valueOf(taskProcessVo.getSleepTime()*1000))); + } + + } + + /** + * 点击事件 + * @param taskProcessVo + * @throws Exception + */ + public void onClick(TaskProcessVo taskProcessVo) throws Exception { + + if (StringUtils.isNotNull(taskProcessVo.getXpath())){ + Thread.sleep(2000); + webDriver.findElement(By.xpath(taskProcessVo.getXpath())).click(); + log.info(taskProcessVo.getElementName()+"----------"); + }else { + webDriver.findElement(By.id(taskProcessVo.getElementName())).click(); + log.info("系统登录------------"); + Thread.sleep(Long.valueOf(String.valueOf(taskProcessVo.getSleepTime()*1000))); + } + } + + /** + * 悬停 + * @param taskProcessVo + * @return + * @throws InterruptedException + */ + public String getObject(TaskProcessVo taskProcessVo) throws InterruptedException { + //执行鼠标悬停动作-管理 + Actions action = new Actions(webDriver); + WebElement wegl = webDriver.findElement(By.xpath(taskProcessVo.getXpath())); + action.moveToElement(wegl).build().perform(); + Thread.sleep(Long.valueOf(String.valueOf(taskProcessVo.getSleepTime()*1000))); + + //获取管理标签中的aria-describedby属性 + String attributeId = wegl.getAttribute("aria-describedby"); + log.info(taskProcessVo.getElementName()+"管理标签的ID值为:" + attributeId); + Thread.sleep(Long.valueOf(String.valueOf(taskProcessVo.getSleepTime()*1000))); + return attributeId; + } + + + /** + * 判断是否有弹框,隐藏弹框 + */ + public void isAlert() { + try { + WebElement alert = webDriver.findElement(By.xpath("/html/body/div[5]")); + JavascriptExecutor js = (JavascriptExecutor) webDriver; + js.executeScript("arguments[0].setAttribute(arguments[1],arguments[2])", alert, "style", "display:none"); + Thread.sleep(3000); + + WebElement alert1 = webDriver.findElement(By.xpath("/html/body/div[2]")); + JavascriptExecutor js1 = (JavascriptExecutor) webDriver; + js1.executeScript("arguments[0].setAttribute(arguments[1],arguments[2])", alert1, "style", "display:none"); + Thread.sleep(3000); + }catch (Exception e){ + log.error("隐藏出错或者没有弹窗"); + } + } + + /** + * 悬停 + * @param taskProcessVo + */ + public void hover(TaskProcessVo taskProcessVo) throws InterruptedException { + + if (StringUtils.isNotNull(taskProcessVo.getXpath())){ + Actions action = new Actions(webDriver); + //执行鼠标悬停动作-常态值班 + String ctzbXpath =taskProcessVo.getXpath(); + WebElement wectzb = webDriver.findElement(By.xpath(ctzbXpath)); + action.moveToElement(wectzb).build().perform(); + Thread.sleep(Long.valueOf(String.valueOf(taskProcessVo.getSleepTime()*1000))); + }else { + //定位值班管理iframe的标签 + WebElement dutyIframe = webDriver.findElement(By.id(taskProcessVo.getElement())); + webDriver.switchTo().frame(dutyIframe); + log.info("定位到值班管理iframe-----------"); + Thread.sleep(Long.valueOf(String.valueOf(taskProcessVo.getSleepTime()*1000))); + } + + + } + + /** + * + * @param taskProcessVo + * @param taskVo + * @return + */ + public String collectData(TaskProcessVo taskProcessVo,TaskVo taskVo) { + if (DataConfig.morningDaily.equals(taskProcessVo.getElementName()) || DataConfig.eveningDaily.equals(taskProcessVo.getElementName())){ + CollectDataVo collectDataVo = new CollectDataVo(); + collectDataVo.setType(taskProcessVo.getElementName()); + collectDataVo = collectDataMapper.getCollectData(collectDataVo); + String data = collectDataVo.getData(); + DailyBean dailyBean = JSON.parseObject(data, DailyBean.class); + String month = DateTimeUtils.getCurrentDay().substring(5, 7); + if ("11".equals(month) || "12".equals(month) || "01".equals(month) || "02".equals(month) || "03".equals(month)) { + dailyBean.getTenBean().setUhv("0"); + dailyBean.getTenBean().setFiveHundredKv("0"); + dailyBean.getTenBean().setTwoHundredTwentyKv("0"); + dailyBean.getTenBean().setOneHundredTenKv("0"); + dailyBean.getTenBean().setThirtyFiveKv("0"); + dailyBean.getTenBean().setTenKv("0"); + dailyBean.getTenBean().setAverageWaterLevel("0"); + dailyBean.getTenBean().setDesignValues("0"); + dailyBean.getTenBean().setMeasuredValue("0"); + dailyBean.getTenBean().setActionHasBeenTaken("0"); + + dailyBean.getElevenBean().setUhv("0"); + dailyBean.getElevenBean().setFiveHundredKv("0"); + dailyBean.getElevenBean().setTwoHundredTwentyKv("0"); + dailyBean.getElevenBean().setOneHundredTenKv("0"); + dailyBean.getElevenBean().setThirtyFiveKv("0"); + dailyBean.getElevenBean().setTenKv("0"); + dailyBean.getElevenBean().setAverageWaterLevel("0"); + dailyBean.getElevenBean().setMeasuredValue("0"); + dailyBean.getElevenBean().setActionHasBeenTaken("0"); + } else { + dailyBean.getTenBean().setUhv(""); + dailyBean.getTenBean().setFiveHundredKv(""); + dailyBean.getTenBean().setTwoHundredTwentyKv(""); + dailyBean.getTenBean().setOneHundredTenKv(""); + dailyBean.getTenBean().setThirtyFiveKv(""); + dailyBean.getTenBean().setTenKv(""); + dailyBean.getTenBean().setAverageWaterLevel(""); + dailyBean.getTenBean().setDesignValues(""); + dailyBean.getTenBean().setMeasuredValue(""); + dailyBean.getTenBean().setActionHasBeenTaken(""); + + dailyBean.getElevenBean().setUhv(""); + dailyBean.getElevenBean().setFiveHundredKv(""); + dailyBean.getElevenBean().setTwoHundredTwentyKv(""); + dailyBean.getElevenBean().setOneHundredTenKv(""); + dailyBean.getElevenBean().setThirtyFiveKv(""); + dailyBean.getElevenBean().setTenKv(""); + dailyBean.getElevenBean().setAverageWaterLevel(""); + dailyBean.getElevenBean().setMeasuredValue(""); + dailyBean.getElevenBean().setActionHasBeenTaken(""); + } + if ("06".equals(month) || "07".equals(month) || "08".equals(month) || "09".equals(month)) { + dailyBean.getTwelveBean().setUhv("0"); + dailyBean.getTwelveBean().setFiveHundredKv("0"); + dailyBean.getTwelveBean().setTwoHundredTwentyKv("0"); + dailyBean.getTwelveBean().setOneHundredTenKv("0"); + dailyBean.getTwelveBean().setThirtyFiveKv("0"); + dailyBean.getTwelveBean().setTenKv("0"); + dailyBean.getTwelveBean().setAverageWaterLevel("0"); + dailyBean.getTwelveBean().setDesignValues("0"); + dailyBean.getTwelveBean().setMeasuredValue("0"); + dailyBean.getTwelveBean().setActionHasBeenTaken("0"); + + dailyBean.getThirteenBean().setUhv("0"); + dailyBean.getThirteenBean().setFiveHundredKv("0"); + dailyBean.getThirteenBean().setTwoHundredTwentyKv("0"); + dailyBean.getThirteenBean().setOneHundredTenKv("0"); + dailyBean.getThirteenBean().setThirtyFiveKv("0"); + dailyBean.getThirteenBean().setTenKv("0"); + dailyBean.getThirteenBean().setAverageWaterLevel("0"); + dailyBean.getThirteenBean().setDesignValues("0"); + dailyBean.getThirteenBean().setMeasuredValue("0"); + dailyBean.getThirteenBean().setActionHasBeenTaken("0"); + + } else { + dailyBean.getTwelveBean().setUhv(""); + dailyBean.getTwelveBean().setFiveHundredKv(""); + dailyBean.getTwelveBean().setTwoHundredTwentyKv(""); + dailyBean.getTwelveBean().setOneHundredTenKv(""); + dailyBean.getTwelveBean().setThirtyFiveKv(""); + dailyBean.getTwelveBean().setTenKv(""); + dailyBean.getTwelveBean().setAverageWaterLevel(""); + dailyBean.getTwelveBean().setDesignValues(""); + dailyBean.getTwelveBean().setMeasuredValue(""); + dailyBean.getTwelveBean().setActionHasBeenTaken(""); + + dailyBean.getThirteenBean().setUhv(""); + dailyBean.getThirteenBean().setFiveHundredKv(""); + dailyBean.getThirteenBean().setTwoHundredTwentyKv(""); + dailyBean.getThirteenBean().setOneHundredTenKv(""); + dailyBean.getThirteenBean().setThirtyFiveKv(""); + dailyBean.getThirteenBean().setTenKv(""); + dailyBean.getThirteenBean().setAverageWaterLevel(""); + dailyBean.getThirteenBean().setDesignValues(""); + dailyBean.getThirteenBean().setMeasuredValue(""); + dailyBean.getThirteenBean().setActionHasBeenTaken(""); + } + collectDataVo.setData(dailyBean.toString()); + collectDataMapper.updateCollectData(collectDataVo); + } + return null; + } + + @Override + public void getYuJing(TaskProcessVo taskProcessVo) throws InterruptedException, ParseException { + Thread.sleep(5000); + String code = ""; + CollectDataVo collectDataVo = new CollectDataVo(); + collectDataVo.setType(taskProcessVo.getElementName()); + collectDataVo = collectDataMapper.getCollectData(collectDataVo); + String data = collectDataVo.getData(); + DailyBean dailyBean = JSON.parseObject(data, DailyBean.class); + String code_child = "宿州灵璧公司安排抢修以伍12支(主网10支,配网2支)、车辆12台、发电机1台、照明灯40套、配变10台、箱变4台、电缆1千米、电杆50根、金具50套、绝缘子100串。"; + String code_chlid2 = "针对此次预警,今日宿州灵璧供电公司开展预警响应,对重要保电线路、变电站进行特巡,安排抢修队伍、绑定应急车辆、装备,抢修队长,通过i" + + "国网反馈巡视照片、视频,在新一代系统里均形成巡视记录、车辆队伍轨迹,未发现问题。"; + //判断是否有发布数据 + WebElement numClasses = webDriver.findElement(By.xpath("//*[@id=\"tab-3\"]/div/span")); + if ("0".equals(numClasses.getText())) { + code = "宿州灵璧未发布预警,"; + } else { + //险情类别与等级 例:高温蓝色,暴雨蓝色 + WebElement weatherEle = webDriver.findElement(By.xpath("/html/body/div[1]/div/section/main/div[1]/div[2]/div[1]/section/main/div/div[3]/table/tbody/tr[1]/td[6]/div/div")); + Thread.sleep(300); + log.info("天气:" + weatherEle.getText()); + WebElement time1Ele = webDriver.findElement(By.xpath("/html/body/div[1]/div/section/main/div[1]/div[2]/div[1]/section/main/div/div[3]/table/tbody/tr[1]/td[8]/div/div/div[1]")); + Thread.sleep(300); + log.info("时间1:" + time1Ele.getText()); + WebElement time2Ele = webDriver.findElement(By.xpath("/html/body/div[1]/div/section/main/div[1]/div[2]/div[1]/section/main/div/div[3]/table/tbody/tr[1]/td[8]/div/div/div[2]")); + Thread.sleep(300); + log.info("时间2:" + time2Ele.getText()); + //判断当前日期是否在此之间 + String startTime = time1Ele.getText().substring(0, 10); + String endTime = time2Ele.getText().substring(0, 10); +// boolean tf = DateTimeUtils.compareDate(startTime, endTime); + SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd"); + Date date = inputFormat.parse(startTime); + Date date1 = inputFormat.parse(endTime); + + SimpleDateFormat outputFormat = new SimpleDateFormat("MM月dd日"); + code = "宿州灵璧供电公司发布" + weatherEle.getText() + "预警1项,(" + outputFormat.format(date) + "-" + outputFormat.format(date1) + "发布"+weatherEle.getText()+"),"; + } + if ("宿州灵璧未发布预警,".equals(code)){ + code_child = ""; + code_chlid2 = ""; + } + //一、总体情况 + //今天的日期 + String data2 = DateTimeUtils.getCurrentDay2(); + //明天的日期 + String data3 = DateTimeUtils.getTomorrowDate(); + if (DataConfig.morningDaily.equals(taskProcessVo.getElementName())) { + data = data2 + "17:30至" + data3 + "08:30,"; + } else { + data = data2 + "08:30至" + data2 + "17:30,"; + } + if (DataConfig.morningLog.equals(taskProcessVo.getElementName())){ + LogBean logBean = JSON.parseObject(data, LogBean.class); + String logDate = data3 +"08:30,"; + if (DataConfig.eveningLog.equals(taskProcessVo.getElementName())){ + logDate=data2 + "17:30,"; + } + logBean.setEvent_detection_content(data + "灵璧供电公司电网运行正常,安全生产、电力建设、供电服务、网络与信息系统安全运行,安全生产形势平稳。截止" + logDate + "发生主网设备故障跳闸0起,配网线路故障跳闸0起,停运公变0台,停运专变0台,低压故障停电0户。施工作业计划执行正常,安全生产态势平稳有序。用于应急救援、抢修作业等物资齐全;相关队伍在新一代应急系统中位置正常,没有不在所属地域情况。\n" + code + + "对系统检测图层中气象实况风速、温度、降雨进行查看、对专题灾害图层地震、台风防汛进行查看均正常,未对宿州灵璧" + + "辖区造成影响。通过首页公共气象图层检查宿州灵璧境内公共预警正常;降雨预报、预警正常;雷达预报正常。"); + logBean.setWarning_disposal_title(code.substring(0,code.length() - 1)); + logBean.setWarning_disposal_content(data+code+code_child+"各单位重点做好以下工作:1、密切关注气象变化,做好防范应对准备。 2、做好电网运行方式和施工现场安排,合理安排电网运行方式。3、加强设备巡视和运行监控。各单位要加强输变配电设备巡视检查和运行监控,排查变配电站(房)的防渗、防淹隐患,备齐防汛物资和抽水设备,提前清理输配电通道周边可能影响线路安全的树竹、广告标牌、易飘浮物,防范树竹倒伏造成倒杆断线,消除各类隐患。\n"+code_chlid2); + logBean.setGeneral_chronicles_content(logBean.getGeneral_chronicles_content()); + } + + if ("0".equals(numClasses.getText())) { + dailyBean.setWarning_company(data+code + code_child); + dailyBean.setWarning_company_impatient(data+code + code_child); + dailyBean.setImportant_matters(data + "1"+code +"2"+"今日灵璧公司对本部进行通信测试值班电话均及时接通,值班人员响应速度,用词规范,电话声音清晰;值班视频均音质清晰,画面清楚,无回声、杂音。电话及网络均通畅。砀山公司对本部日常操练、值班视频均音质清晰,画面清楚,无回声、杂音,操练人员精神面貌良好,对应急工作职责清楚明晰,结果合格。队员着装、装备齐全,队伍迅速集结,在20分钟内集结完毕,队员职责明确,任务明确,队员抢修能力,应急处置能力良好,未发现其他问题。\n"); + }else { + dailyBean.setWarning_company(data+code +"对系统检测图层中气象实况风速、温度、降雨进行查看、对专题灾害图层地震、台风防汛进行查看均正常,未对宿州灵璧" + + "辖区造成影响。通过首页公共气象图层检查宿州灵璧境内公共预警正常;降雨预报、预警正常;雷达预报正常。"+ code_child); + dailyBean.setWarning_company_impatient(data+code +"对系统检测图层中气象实况风速、温度、降雨进行查看、对专题灾害图层地震、台风防汛进行查看均正常,未对宿州灵璧" + + "辖区造成影响。通过首页公共气象图层检查宿州灵璧境内公共预警正常;降雨预报、预警正常;雷达预报正常。"+ code_child); + + dailyBean.setImportant_matters(data + "1"+code +"对系统检测图层中气象实况风速、温度、降雨进行查看、对专题灾害图层地震、台风防汛进行查看均正常,未对宿州灵璧" + + "辖区造成影响。通过首页公共气象图层检查宿州灵璧境内公共预警正常;降雨预报、预警正常;雷达预报正常。"+"2"+"今日灵璧公司对本部进行通信测试值班电话均及时接通,值班人员响应速度,用词规范,电话声音清晰;值班视频均音质清晰,画面清楚,无回声、杂音。电话及网络均通畅。砀山公司对本部日常操练、值班视频均音质清晰,画面清楚,无回声、杂音,操练人员精神面貌良好,对应急工作职责清楚明晰,结果合格。队员着装、装备齐全,队伍迅速集结,在20分钟内集结完毕,队员职责明确,任务明确,队员抢修能力,应急处置能力良好,未发现其他问题。\n"); + + } + dailyBean.setOverall(data + "宿州灵璧公司电网运行平稳,电力建设、供电服务、网络与信息系统运行正常,安全生产形势总体平稳。\n"); + dailyBean.setPersonnel_daily_work(dailyBean.getPersonnel_daily_work()); + collectDataVo.setData(dailyBean.toString()); + collectDataMapper.updateCollectData(collectDataVo); + log.info("天气预警日报更新完成"); + } +} diff --git a/src/main/java/com/bonus/emergencyrap/service/TaskService.java b/src/main/java/com/bonus/emergencyrap/service/TaskService.java index 6ea8788..937031c 100644 --- a/src/main/java/com/bonus/emergencyrap/service/TaskService.java +++ b/src/main/java/com/bonus/emergencyrap/service/TaskService.java @@ -76,4 +76,6 @@ public interface TaskService { * @param taskVo */ void updateTaskStatus(TaskVo taskVo); + + void runJob(TaskVo taskVo); } diff --git a/src/main/java/com/bonus/emergencyrap/service/TaskServiceImpl.java b/src/main/java/com/bonus/emergencyrap/service/TaskServiceImpl.java index 11b24d2..5750b89 100644 --- a/src/main/java/com/bonus/emergencyrap/service/TaskServiceImpl.java +++ b/src/main/java/com/bonus/emergencyrap/service/TaskServiceImpl.java @@ -1,18 +1,21 @@ package com.bonus.emergencyrap.service; -import com.alibaba.fastjson2.JSON; -import com.bonus.emergencyrap.constant.TextConstants; + +import com.bonus.emergencyrap.config.DataConfig; import com.bonus.emergencyrap.mapper.TaskMapper; import com.bonus.emergencyrap.utils.DateTimeHelper; import com.bonus.emergencyrap.utils.StringUtils; -import com.bonus.emergencyrap.utils.TextFileUtils; -import com.bonus.emergencyrap.utils.UploadFile; +import com.bonus.emergencyrap.utils.*; import com.bonus.emergencyrap.vo.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.text.ParseException; import java.util.*; +import java.text.SimpleDateFormat; @Service @Slf4j @@ -21,6 +24,9 @@ public class TaskServiceImpl implements TaskService{ @Autowired private TaskMapper mapper; + @Resource + private StepService stepService; + @Override public List getTaskList(TaskVo vo) { try{ @@ -193,4 +199,133 @@ public class TaskServiceImpl implements TaskService{ } + /** + * 执行任务 + */ + + @Async + public void runJob(TaskVo taskVo){ + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + List taskProcessList = taskVo.getList(); + taskVo.setExeTime(sdf.format(new Date())); + String res =null; + //执行每一步操作 + for (int i = 0; i < taskProcessList.size(); i++) { + try { + switch (taskProcessList.get(i).getInteractive()) { + case "文本输入": + if("是".equals(taskProcessList.get(i).getIsStep())){ + replaceXpath(taskProcessList.get(i),res); + } + stepService.input(taskProcessList.get(i),res); + break; + case "单击": + if (taskProcessList.get(i).getXpath().contains(DataConfig.lastMonth)){ + //判断是否是第一天,是的话,点击上月按钮,切换至上月,不是直接跳过 + if (!DateTimeUtils.isOneDay()) { + replaceTr(taskProcessList.get(i+1).getXpath()); + break; + }else { + String mothDay = DateTimeUtils.getBeforeLastMonthdate(); + //判断上个月最后一天的位置 + int tr = DateTimeUtils.getWeekNum(mothDay); + int td = DateTimeUtils.getWeekOfDate(mothDay); + taskProcessList.get(i+1).getXpath().replaceAll(DataConfig.tr,String.valueOf(tr)); + taskProcessList.get(i+1).getXpath().replaceAll(DataConfig.td,String.valueOf(td)); + } + } + + if("是".equals(taskProcessList.get(i).getIsStep())){ + replaceXpath(taskProcessList.get(i),res); + } + stepService.onClick(taskProcessList.get(i)); + break; + case "获取对象": + res = stepService.getObject(taskProcessList.get(i)); + // 在这里添加"获取对象"对应的处理逻辑 + break; + case "悬停": + stepService.hover(taskProcessList.get(i)); + // 在这里添加"获取对象"对应的处理逻辑 + break; + case "双击": + // 在这里添加"获取对象"对应的处理逻辑 + break; + case "采集数据": + if(StringUtils.isNotEmpty(taskProcessList.get(i).getRealTaskId())){ + TaskVo param=new TaskVo(taskProcessList.get(i).getRealTaskId()); + TaskVo vo =getTaskDetails(param); + res = stepService.collectData(taskProcessList.get(i),vo); + }else if (taskProcessList.get(i).getXpath().contains(DataConfig.yuJing)){ + stepService.getYuJing(taskProcessList.get(i)); + } + + break; + case "判断时间": + break; + // 可以根据需要添加其他case + default: + // 可选:添加默认处理逻辑 + break; + } + }catch (Exception e){ + log.error(taskProcessList.get(i).getElementName(), e); + + } + } + } + + private void replaceTr(String xpath) throws ParseException { + //不是本月第一天 + int tr = 1; + int td = 1; + String currentDay = DateTimeUtils.getCurrentDay(); + int weekNum = DateTimeUtils.getWeekNum(currentDay); + int dayNum = DateTimeUtils.getWeekOfDate(currentDay); + if (dayNum == 1) { + if (DateTimeUtils.getMonthOneDayIs0()) {//第一天是0 + tr = weekNum; + } else { + tr = weekNum - 1; + if (weekNum == 1) { + tr = 5; + } + } + td = 7; + } else { + if (DateTimeUtils.getMonthOneDayIs0()) {//第一天是0 + tr = weekNum + 1; + } else { + tr = weekNum; + } + td = dayNum - 1; + } + xpath.replaceAll(DataConfig.tr,String.valueOf(tr)); + xpath.replaceAll(DataConfig.td,String.valueOf(td)); + } + + /** + * 进行替换 + * @param taskProcessVo + * @param res + */ + public void replaceXpath(TaskProcessVo taskProcessVo,String res){ + if (StringUtils.isNotEmpty(taskProcessVo.getXpath())){ + //今天的日期 + String data2 = DateTimeUtils.getCurrentDay2(); + //明天的日期 + String data3 = DateTimeUtils.getTomorrowDate(); + + if (taskProcessVo.getXpath().contains(DataConfig.attributeId)){ + taskProcessVo.getXpath().replaceAll(DataConfig.attributeId,res); + } + if (taskProcessVo.getElementName().contains(DataConfig.today)){ + taskProcessVo.getElementName().replaceAll(DataConfig.today,data2); + } + if (taskProcessVo.getElementName().contains(DataConfig.tomorrow)){ + taskProcessVo.getElementName().replaceAll(DataConfig.tomorrow,data3); + } + + } + } } diff --git a/src/main/java/com/bonus/emergencyrap/task/job/ActuatorJob.java b/src/main/java/com/bonus/emergencyrap/task/job/ActuatorJob.java index 9badab3..b6ee0ac 100644 --- a/src/main/java/com/bonus/emergencyrap/task/job/ActuatorJob.java +++ b/src/main/java/com/bonus/emergencyrap/task/job/ActuatorJob.java @@ -16,6 +16,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import javax.annotation.Resource; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.Map; @@ -28,9 +29,10 @@ import java.util.Map; public class ActuatorJob implements Job { private static final Logger logger = LoggerFactory.getLogger(ActuatorJob.class); - @Autowired + @Resource private TaskService taskService; + @Override public void execute(JobExecutionContext context) throws JobExecutionException { try{ @@ -39,6 +41,14 @@ public class ActuatorJob implements Job { String taskId = context.getTrigger().getJobDataMap().get("taskId").toString(); TaskVo param=new TaskVo(taskId); TaskVo vo =taskService.getTaskDetails(param); + //执行任务 + if (vo.getFailNum()==0){ + logger.warn("任务ID: {} 错误次数已达{}次,超过最大限制10次,本次不执行任务", + vo.getTaskId(), vo.getFailNum()); + return; + } + vo.setFailNum(vo.getFailNum()-1); + taskService.runJob(vo); logger.info("SampleJob 执行时间: {}", currentTime); logger.info("任务执行器开始执行,执行任务id=="+vo.getTaskId()+"任务名称是=="+vo.getTaskName()+"执行时间=="+vo.getCron()); }catch (Exception e){ diff --git a/src/main/java/com/bonus/emergencyrap/utils/DateTimeUtils.java b/src/main/java/com/bonus/emergencyrap/utils/DateTimeUtils.java new file mode 100644 index 0000000..279eb79 --- /dev/null +++ b/src/main/java/com/bonus/emergencyrap/utils/DateTimeUtils.java @@ -0,0 +1,288 @@ +package com.bonus.emergencyrap.utils; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.util.*; + +/** + * 日期操作工具类 + */ +public class DateTimeUtils { + + + + /** + * 获取当前时间是本周第几天,从周一开始计算 + * @return + */ + public static int getWeekOfDate(String dateString ) throws ParseException { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date dt= sdf.parse(dateString); + int[] weekDays = {7, 1, 2, 3, 4,5, 6}; + Calendar cal = Calendar.getInstance(); + cal.setTime(dt); + int w = cal.get(Calendar.DAY_OF_WEEK) - 1; + if (w < 0){ + w = 0; + } + return weekDays[w]; + } + + /**' + *获取当前时间是本月第几周 + * @return + */ + public static int getWeekNum(String dateString ) throws ParseException { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date date= sdf.parse(dateString); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + int weekOfMonth = calendar.get(Calendar.WEEK_OF_MONTH); + if (getWeekOfDate(dateString) == 7){ + weekOfMonth = weekOfMonth - 1; + } + return weekOfMonth; + } + + /** + * 获取本月第一天在第几周 + * @return true 0 false >0 + * @throws ParseException + */ + public static boolean getMonthOneDayIs0() throws ParseException { + LocalDate firstDayOfMonth = LocalDate.now().withDayOfMonth(1); + int t=getWeekNum(firstDayOfMonth.toString()); +// int t=getWeekNum(day); + if(t>0){ + return false; + } + return true; + } + + /** + * 获取上个月的最后一天 + */ + public static String getBeforeLastMonthdate(){ + SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd"); + Calendar calendar=Calendar.getInstance(); + int month=calendar.get(Calendar.MONTH); + calendar.set(Calendar.MONTH, month-1); + calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); + String format = sf.format(calendar.getTime()); + return format; + } + + /** + * 获取当前日期 + * @return + */ + public static String getCurrentDay(){ + Date date=new Date(); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); + return formatter.format(date); + } + + /** + * 获取昨天的日期 + * @return + */ + public static String getLastDayYYYYMMDD(){ + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Calendar c = Calendar.getInstance(); + c.add(Calendar.DATE, -1);//-1.昨天时间 0.当前时间 1.明天时间 *以此类推 + String time = sdf.format(c.getTime()); + System.out.println("昨天的时间时间是:" + time);//20190704 + return time; + } + private static List getARandomCollectionOfData() { + Random random = new Random(); + int minCount = 3; // 最小数量 + int maxCount = 5; // 最大数量 + int count = random.nextInt(maxCount - minCount + 1) + minCount; // 随机生成数量 + List numbers = new ArrayList<>(); + while (numbers.size() < count) { + int randomNumber = random.nextInt(6) + 2; // 随机生成1到7的数字 + if (!numbers.contains(randomNumber)) { + numbers.add(randomNumber); + } + } + Collections.shuffle(numbers); + System.out.println(numbers); + return numbers; + } + + public static void main(String[] args) throws ParseException { +// System.out.println(getMMDDByNow()); + //获取一个随机数据集合 + List list = getARandomCollectionOfData(); + for (int i = 0; i < list.size(); i++) { + String type = ""; + String company = ""; + if (i < 2){ + type = "通信测试"; + }else { + type = "日常操练"; + } + switch(String.valueOf(list.get(i))){ + case "1": + company = "宿州"; + break; + case "2": + company = "埇桥"; + break; + case "3": + company = "砀山"; + break; + case "4": + company = "萧县"; + break; + case "5": + company = "灵璧"; + break; + case "6": + company = "城郊"; + break; + case "7": + company = "泗县"; + break; + default: + break; + } + System.out.println(type); + System.out.println(company); + System.out.println(i+1); + System.out.println("-------------------"); + } + } + public static String getCurrentDay2(){ + Date date=new Date(); + SimpleDateFormat formatter = new SimpleDateFormat("MM月dd日"); + return formatter.format(date); + } + + /** + * 获取昨天的日期 + * @return + */ + public static String getLastDay(){ + SimpleDateFormat sdf = new SimpleDateFormat("MM月dd日"); + Calendar c = Calendar.getInstance(); + c.add(Calendar.DATE, -1);//-1.昨天时间 0.当前时间 1.明天时间 *以此类推 + String time = sdf.format(c.getTime()); + System.out.println("昨天的时间时间是:" + time);//20190704 + return time; + } + /** + * 获取明天的日期 + * @return + */ + public static String getTomorrowDate() { + SimpleDateFormat sdf = new SimpleDateFormat("MM月dd日"); + Calendar c = Calendar.getInstance(); + c.add(Calendar.DATE, 1);//-1.昨天时间 0.当前时间 1.明天时间 *以此类推 + String time = sdf.format(c.getTime()); + System.out.println("昨天的时间时间是:" + time);//20190704 + return time; + } + /** + * 获取当前月日 + * @return + */ + public static String getCurrentDayByMonth(){ + Date date=new Date(); + SimpleDateFormat formatter = new SimpleDateFormat("MM月dd日"); + return formatter.format(date); + } + public static String getMMDDByNow(){ + Date date=new Date(); + SimpleDateFormat formatter = new SimpleDateFormat("MMdd"); + return formatter.format(date); + } + + /** + * 判断当前日期是否为本月第一天 + * @return + */ + public static boolean isOneDay(){ + // TODO Auto-generated method stub + Date now = new Date(); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");//可以方便地修改日期格式 + String curr = dateFormat.format( now ); + System.out.println("当前日期:" + curr); + + Calendar c = Calendar.getInstance();//可以对每个时间域单独修改 + + int year = c.get(Calendar.YEAR); + int month = c.get(Calendar.MONTH); + int date = c.get(Calendar.DATE); + if(date == 1){ + System.out.println(curr + "是第一天"); + return true; + } + else{ + System.out.println(curr + "不是第一天"); + return false; + } + } + + /** + * 判断当前时间是否在[startTime, endTime]区间,注意三个参数的时间格式要一致 + * @param startTime + * @param endTime + * @return 在时间段内返回true,不在返回false + */ + public static boolean isEffectiveDate(String startTime, String endTime){ + /** + * 判断当前时间是否在一个时间段内 HH:mm 格式 + */ + SimpleDateFormat sdf = new SimpleDateFormat("HH:mm"); + String now = sdf.format(new Date()); + Date nowTime; + try{ + nowTime = sdf.parse(now); + Date startTime1 = sdf.parse(startTime); + Date endTime1 = sdf.parse(endTime); + if (nowTime.getTime() == startTime1.getTime() + || nowTime.getTime() == endTime1.getTime()) { + return true; + } + + Calendar date = Calendar.getInstance(); + date.setTime(nowTime); + + Calendar begin = Calendar.getInstance(); + begin.setTime(startTime1); + + Calendar end = Calendar.getInstance(); + end.setTime(endTime1); + + return date.after(begin) && date.before(end); + }catch (Exception e){ + e.printStackTrace(); + } + return false; + } + + public static boolean compareDate(String date1, String date2) throws ParseException { + boolean tf = false; + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); + + // 定义起始日期和结束日期 + Date startDate = dateFormat.parse(date1 + " 00:00:00"); + Date endDate = dateFormat.parse(date2 + " 23:59:59"); + + // 定义要判断的日期 + Date dateToCheck = new Date(); + + // 判断日期是否在范围内 + if (startDate.compareTo(dateToCheck) <= 0 && endDate.compareTo(dateToCheck) >= 0) { + System.out.println("日期在范围内"); + tf = true; + } else { + tf = false; + System.out.println("日期不在范围内"); + } + return tf; + } +} diff --git a/src/main/java/com/bonus/emergencyrap/vo/AnnexEightBean.java b/src/main/java/com/bonus/emergencyrap/vo/AnnexEightBean.java new file mode 100644 index 0000000..b699fbe --- /dev/null +++ b/src/main/java/com/bonus/emergencyrap/vo/AnnexEightBean.java @@ -0,0 +1,78 @@ +package com.bonus.emergencyrap.vo; + +import lombok.Data; + +/** + * 日报实体类 + * 附件八-输配电线停运及恢复 + * @author ztq + */ +@Data +public class AnnexEightBean { + + /** + * 特高压 + */ + private String transmit_electricity_add_outage_uvh; + private String transmit_electricity_add_repair_uvh; + private String transmit_electricity_add_no_repair_uvh; + + private String transmit_electricity_cumulative_outage_uvh; + private String transmit_electricity_cumulative_repair_uvh; + private String transmit_electricity_cumulative_no_repair_uvh; + + /** + * 500kv + */ + private String transmit_electricity_add_outage_five; + private String transmit_electricity_add_repair_five; + private String transmit_electricity_add_no_repair_five; + + private String transmit_electricity_cumulative_outage_five; + private String transmit_electricity_cumulative_repair_five; + private String transmit_electricity_cumulative_no_repair_five; + + /** + * 220/300kv + */ + private String transmit_electricity_add_outage_two; + private String transmit_electricity_add_repair_two; + private String transmit_electricity_add_no_repair_two; + + private String transmit_electricity_cumulative_outage_two; + private String transmit_electricity_cumulative_repair_two; + private String transmit_electricity_cumulative_no_repair_two; + + /** + * 110/66kv + */ + private String transmit_electricity_add_outage_one; + private String transmit_electricity_add_repair_one; + private String transmit_electricity_add_no_repair_one; + + private String transmit_electricity_cumulative_outage_one; + private String transmit_electricity_cumulative_repair_one; + private String transmit_electricity_cumulative_no_repair_one; + + /** + * 35kv + */ + private String transmit_electricity_add_outage_three; + private String transmit_electricity_add_repair_three; + private String transmit_electricity_add_no_repair_three; + + private String transmit_electricity_cumulative_outage_three; + private String transmit_electricity_cumulative_repair_three; + private String transmit_electricity_cumulative_no_repair_three; + + /** + * 10kv + */ + private String transmit_electricity_add_outage_ten; + private String transmit_electricity_add_repair_ten; + private String transmit_electricity_add_no_repair_ten; + + private String transmit_electricity_cumulative_outage_ten; + private String transmit_electricity_cumulative_repair_ten; + private String transmit_electricity_cumulative_no_repair_ten; +} diff --git a/src/main/java/com/bonus/emergencyrap/vo/AnnexElevenBean.java b/src/main/java/com/bonus/emergencyrap/vo/AnnexElevenBean.java new file mode 100644 index 0000000..6186ee8 --- /dev/null +++ b/src/main/java/com/bonus/emergencyrap/vo/AnnexElevenBean.java @@ -0,0 +1,23 @@ +package com.bonus.emergencyrap.vo; + +import lombok.Data; + +/** + * 包名称:com.bonus.autoweb.UI.entity + * 类名称:AnnexTenBean + * 类描述:附件十一 + * 创建人:@author tqzhang + * 创建时间:2023年08月01日 13:23 + */ +@Data +public class AnnexElevenBean { + private String uhv; + private String fiveHundredKv; + private String twoHundredTwentyKv; + private String oneHundredTenKv; + private String thirtyFiveKv; + private String tenKv; + private String averageWaterLevel; + private String measuredValue; + private String actionHasBeenTaken; +} diff --git a/src/main/java/com/bonus/emergencyrap/vo/AnnexFiveBean.java b/src/main/java/com/bonus/emergencyrap/vo/AnnexFiveBean.java new file mode 100644 index 0000000..e28ffff --- /dev/null +++ b/src/main/java/com/bonus/emergencyrap/vo/AnnexFiveBean.java @@ -0,0 +1,26 @@ +package com.bonus.emergencyrap.vo; + +import lombok.Data; + +/** + * 包名称:com.bonus.autoweb.UI.entity + * 类名称:AnnexFiveBean + * 类描述:附件五 入境筛查和集中观察场所供电保障情况表 + * 创建人:@author tqzhang + * 创建时间:2023年07月27日 11:29 + */ + +@Data +public class AnnexFiveBean { + //入境筛选和集中观察场所数量 + private String airportPort; + private String venueHospital; + private String guesthouseHotel; + private String safeguardPersonnel; + //投入力量 + private String electricallyGuaranteedVehicles; + private String powerGenerationVehicles; + private String dynamo; + private String remark; + +} diff --git a/src/main/java/com/bonus/emergencyrap/vo/AnnexFourBean.java b/src/main/java/com/bonus/emergencyrap/vo/AnnexFourBean.java new file mode 100644 index 0000000..d171a2e --- /dev/null +++ b/src/main/java/com/bonus/emergencyrap/vo/AnnexFourBean.java @@ -0,0 +1,58 @@ +package com.bonus.emergencyrap.vo; + +import lombok.Data; + +/** + * 日报实体类 + * 附件四-疫情防控供电保障情况统计表 + * @author zys + */ +@Data +public class AnnexFourBean { + + /** + * 定点医院 + */ + private String designated_hospitals; + + /** + * 发热门诊 + */ + private String fever_clinic; + + /** + * 防疫用品企业 + */ + private String epidemic_enterprise; + + /** + * 其他重要用户 + */ + private String other_important_users; + + /** + * 客户用电保障人员 + */ + private String customer_power_personnel; + + /** + * 电网运维保障人员 + */ + private String power_devops_personnel; + + /** + * 保电车辆 + */ + private String electrically_vehicles; + + /** + * 应急发电车 + */ + private String emergency_power_vehicles; + + /** + * 应急发电机 + */ + private String emergency_generator; + +} diff --git a/src/main/java/com/bonus/emergencyrap/vo/AnnexFourteenBean.java b/src/main/java/com/bonus/emergencyrap/vo/AnnexFourteenBean.java new file mode 100644 index 0000000..e026b30 --- /dev/null +++ b/src/main/java/com/bonus/emergencyrap/vo/AnnexFourteenBean.java @@ -0,0 +1,24 @@ +package com.bonus.emergencyrap.vo; + +import lombok.Data; + +/** + * 包名称:com.bonus.autoweb.UI.entity + * 类名称:AnnexTwelveBean + * 类描述:附件十四 超设计风力线路数量统计表 + * 创建人:@author tqzhang + * 创建时间:2023年07月27日 13:15 + */ +@Data +public class AnnexFourteenBean { + private String uhv; + private String fiveHundredKv; + private String twoHundredTwentyKv; + private String oneHundredTenKv; + private String thirtyFiveKv; + private String tenKv; + private String averageWaterLevel; + private String measuredValue; + private String designValues; + private String actionHasBeenTaken; +} diff --git a/src/main/java/com/bonus/emergencyrap/vo/AnnexNineBean.java b/src/main/java/com/bonus/emergencyrap/vo/AnnexNineBean.java new file mode 100644 index 0000000..b0a838b --- /dev/null +++ b/src/main/java/com/bonus/emergencyrap/vo/AnnexNineBean.java @@ -0,0 +1,45 @@ +package com.bonus.emergencyrap.vo; + +/** + * 日报实体类 + * 附件九-台区用户停电及恢复 + * @author ztq + */ + +import lombok.Data; + +@Data +public class AnnexNineBean { + + /** + * 台区 + */ + private String add_blackout_tai_district; + private String add_repair_tai_district; + private String add_no_repair_tai_district; + + private String cumulative_blackout_tai_district; + private String cumulative_repair_tai_district; + private String cumulative_no_repair_tai_district; + + /** + * 用户 + */ + private String add_blackout_user; + private String add_repair_user; + private String add_no_repair_user; + + private String cumulative_blackout_user; + private String cumulative_repair_user; + private String cumulative_no_repair_user; + + /** + * 出动抢修力量 + * 人员 车辆 + */ + private String add_power_personnel; + private String add_power_vehicle; + + private String cumulative_power_personnel; + private String cumulative_power_vehicle; +} diff --git a/src/main/java/com/bonus/emergencyrap/vo/AnnexOneBean.java b/src/main/java/com/bonus/emergencyrap/vo/AnnexOneBean.java new file mode 100644 index 0000000..6bfc68a --- /dev/null +++ b/src/main/java/com/bonus/emergencyrap/vo/AnnexOneBean.java @@ -0,0 +1,55 @@ +package com.bonus.emergencyrap.vo; + +import lombok.Data; + +/** + * 日报实体类 + * 附件一-操练情况统计表 + * @author zys + */ +@Data +public class AnnexOneBean { + + /** + * 操练内容(选择框) + * “四要素”检查 + * 通信测试 + * 重要站线视频连线检查 + */ + private String exercise_content; + + /** + * 操练数量 + * 人员 + */ + private String exercise_person_num; + + /** + * 操练数量 + * 车辆 + */ + private String exercise_vehicle_num; + + /** + * 操练数量 + * 发电车 + */ + private String exercise_power_vehicle_num; + + /** + * 操练数量 + * 发电机 + */ + private String exercise_dynamo_num; + + /** + * 操练发现的问题 + */ + private String exercise_find_problems; + + /** + * 备注 + */ + private String remark; + +} diff --git a/src/main/java/com/bonus/emergencyrap/vo/AnnexSevenBean.java b/src/main/java/com/bonus/emergencyrap/vo/AnnexSevenBean.java new file mode 100644 index 0000000..9111777 --- /dev/null +++ b/src/main/java/com/bonus/emergencyrap/vo/AnnexSevenBean.java @@ -0,0 +1,69 @@ +package com.bonus.emergencyrap.vo; + +import lombok.Data; + +/** + * 日报实体类 + * 附件七-变电站停运及恢复 + * @author ztq + */ +@Data +public class AnnexSevenBean { + + /** + * 特高压 + */ + private String power_substation_add_outage_uvh; + private String power_substation_add_repair_uvh; + private String power_substation_add_no_repair_uvh; + + private String power_substation_cumulative_outage_uvh; + private String power_substation_cumulative_repair_uvh; + private String power_substation_cumulative_no_repair_uvh; + + /** + * 500kv + */ + private String power_substation_add_outage_five; + private String power_substation_add_repair_five; + private String power_substation_add_no_repair_five; + + private String power_substation_cumulative_outage_five; + private String power_substation_cumulative_repair_five; + private String power_substation_cumulative_no_repair_five; + + /** + * 220/300kv + */ + private String power_substation_add_outage_two; + private String power_substation_add_repair_two; + private String power_substation_add_no_repair_two; + + private String power_substation_cumulative_outage_two; + private String power_substation_cumulative_repair_two; + private String power_substation_cumulative_no_repair_two; + + /** + * 110/66kv + */ + private String power_substation_add_outage_one; + private String power_substation_add_repair_one; + private String power_substation_add_no_repair_one; + + private String power_substation_cumulative_outage_one; + private String power_substation_cumulative_repair_one; + private String power_substation_cumulative_no_repair_one; + + /** + * 35kv + */ + private String power_substation_add_outage_three; + private String power_substation_add_repair_three; + private String power_substation_add_no_repair_three; + + private String power_substation_cumulative_outage_three; + private String power_substation_cumulative_repair_three; + private String power_substation_cumulative_no_repair_three; + + +} diff --git a/src/main/java/com/bonus/emergencyrap/vo/AnnexSixBean.java b/src/main/java/com/bonus/emergencyrap/vo/AnnexSixBean.java new file mode 100644 index 0000000..4c76f05 --- /dev/null +++ b/src/main/java/com/bonus/emergencyrap/vo/AnnexSixBean.java @@ -0,0 +1,47 @@ +package com.bonus.emergencyrap.vo; + +import lombok.Data; + +/** + * 日报实体类 + * 附件六-预警及应急响应情况跟踪表 + * @author zys + */ +@Data +public class AnnexSixBean { + + /** + * 领导及指挥人员 + */ + private String leaders_command_staff; + + /** + * 投入力量 + * 人员 + */ + private String input_amount_person; + + /** + * 投入力量 + * 车辆 + */ + private String input_amount_vehicle; + + /** + * 投入力量 + * 发电车 + */ + private String input_amount_power_vehicle; + + /** + * 投入力量 + * 发电机 + */ + private String input_amount_dynamo; + + /** + * 备注 + */ + private String remark; + +} diff --git a/src/main/java/com/bonus/emergencyrap/vo/AnnexTenBean.java b/src/main/java/com/bonus/emergencyrap/vo/AnnexTenBean.java new file mode 100644 index 0000000..7a1165f --- /dev/null +++ b/src/main/java/com/bonus/emergencyrap/vo/AnnexTenBean.java @@ -0,0 +1,24 @@ +package com.bonus.emergencyrap.vo; + +import lombok.Data; + +/** + * 包名称:com.bonus.autoweb.UI.entity + * 类名称:AnnexTenBean + * 类描述:附件十 + * 创建人:@author tqzhang + * 创建时间:2023年08月01日 13:23 + */ +@Data +public class AnnexTenBean { + private String uhv; + private String fiveHundredKv; + private String twoHundredTwentyKv; + private String oneHundredTenKv; + private String thirtyFiveKv; + private String tenKv; + private String averageWaterLevel; + private String measuredValue; + private String designValues; + private String actionHasBeenTaken; +} diff --git a/src/main/java/com/bonus/emergencyrap/vo/AnnexThirteenBean.java b/src/main/java/com/bonus/emergencyrap/vo/AnnexThirteenBean.java new file mode 100644 index 0000000..643d07e --- /dev/null +++ b/src/main/java/com/bonus/emergencyrap/vo/AnnexThirteenBean.java @@ -0,0 +1,24 @@ +package com.bonus.emergencyrap.vo; + +import lombok.Data; + +/** + * 包名称:com.bonus.autoweb.UI.entity + * 类名称:AnnexTwelveBean + * 类描述:附件十三 超设计水位线路数量统计表(仅6月-9月报送) + * 创建人:@author tqzhang + * 创建时间:2023年07月27日 13:15 + */ +@Data +public class AnnexThirteenBean { + private String uhv; + private String fiveHundredKv; + private String twoHundredTwentyKv; + private String oneHundredTenKv; + private String thirtyFiveKv; + private String tenKv; + private String averageWaterLevel; + private String measuredValue; + private String designValues; + private String actionHasBeenTaken; +} diff --git a/src/main/java/com/bonus/emergencyrap/vo/AnnexThreeBean.java b/src/main/java/com/bonus/emergencyrap/vo/AnnexThreeBean.java new file mode 100644 index 0000000..a5f4d0d --- /dev/null +++ b/src/main/java/com/bonus/emergencyrap/vo/AnnexThreeBean.java @@ -0,0 +1,55 @@ +package com.bonus.emergencyrap.vo; + +import lombok.Data; + +/** + * 包名称:com.bonus.autoweb.UI.entity + * 类名称:AnnexThreeBean + * 类描述:附件三 电网生产相关专业员工感染情况统计表 + * 创建人:@author tqzhang + * 创建时间:2023年07月27日 11:18 + */ + +@Data +public class AnnexThreeBean { + //合计 新增 + private String totalAddDiagnosed; + private String totalAddHeal; + private String totalAddSuspected; + //合计 现有 + private String totalExistingDiagnosed; + private String totalExistingHeal; + private String totalExistingSuspected; + //电网调度 新增 + private String dispatchAddDiagnosed; + private String dispatchAddHeal; + private String dispatchAddSuspected; + //电网调度 现有 + private String dispatchExistingDiagnosed; + private String dispatchExistingHeal; + private String dispatchExistingSuspected; + //运维维修 新增 + private String repairAddDiagnosed; + private String repairAddHeal; + private String repairAddSuspected; + //运维维修 现有 + private String repairExistingDiagnosed; + private String repairExistingHeal; + private String repairExistingSuspected; + //营销服务 新增 + private String marketingAddDiagnosed; + private String marketingAddHeal; + private String marketingAddSuspected; + //营销服务 现有 + private String marketingExistingDiagnosed; + private String marketingExistingHeal; + private String marketingExistingSuspected; + //电网建设 新增 + private String constructionAddDiagnosed; + private String constructionAddHeal; + private String constructionAddSuspected; + //电网建设 现有 + private String constructionExistingDiagnosed; + private String constructionExistingHeal; + private String constructionExistingSuspected; +} diff --git a/src/main/java/com/bonus/emergencyrap/vo/AnnexTwelveBean.java b/src/main/java/com/bonus/emergencyrap/vo/AnnexTwelveBean.java new file mode 100644 index 0000000..02b2770 --- /dev/null +++ b/src/main/java/com/bonus/emergencyrap/vo/AnnexTwelveBean.java @@ -0,0 +1,24 @@ +package com.bonus.emergencyrap.vo; + +import lombok.Data; + +/** + * 包名称:com.bonus.autoweb.UI.entity + * 类名称:AnnexTwelveBean + * 类描述:附件十二 超设计水位变电站数量统计表(仅6月-9月报送) + * 创建人:@author tqzhang + * 创建时间:2023年07月27日 13:15 + */ +@Data +public class AnnexTwelveBean { + private String uhv; + private String fiveHundredKv; + private String twoHundredTwentyKv; + private String oneHundredTenKv; + private String thirtyFiveKv; + private String tenKv; + private String averageWaterLevel; + private String measuredValue; + private String designValues; + private String actionHasBeenTaken; +} diff --git a/src/main/java/com/bonus/emergencyrap/vo/AnnexTwoBean.java b/src/main/java/com/bonus/emergencyrap/vo/AnnexTwoBean.java new file mode 100644 index 0000000..97393e9 --- /dev/null +++ b/src/main/java/com/bonus/emergencyrap/vo/AnnexTwoBean.java @@ -0,0 +1,53 @@ +package com.bonus.emergencyrap.vo; + +import lombok.Data; + +/** + * 日报实体类 + * 附件二-资源核查问题数量统计表 + * @author zys + */ +@Data +public class AnnexTwoBean { + + /** + * 核查数量 + * 人员 + */ + private String verification_person_num; + + /** + * 核查数量 + * 队伍 + */ + private String verification_team_num; + + /** + * 核查数量 + * 装备 + */ + private String verification_equip_num; + + /** + * 核查数量 + * 物资 + */ + private String verification_material_num; + + /** + * 核查数量 + * 车辆 + */ + private String verification_vehicle_num; + + /** + * 核查发现的问题 + */ + private String verification_find_problems; + + /** + * 备注 + */ + private String remark; + +} diff --git a/src/main/java/com/bonus/emergencyrap/vo/CollectDataVo.java b/src/main/java/com/bonus/emergencyrap/vo/CollectDataVo.java new file mode 100644 index 0000000..dba8bad --- /dev/null +++ b/src/main/java/com/bonus/emergencyrap/vo/CollectDataVo.java @@ -0,0 +1,19 @@ +package com.bonus.emergencyrap.vo; + +import lombok.Data; + +/** + * @author 马三炮 + * @date 2025/9/28 + */ +@Data +public class CollectDataVo { + + private String id; + + private String type; + + private String updateTime; + + private String data; +} diff --git a/src/main/java/com/bonus/emergencyrap/vo/DailyBean.java b/src/main/java/com/bonus/emergencyrap/vo/DailyBean.java new file mode 100644 index 0000000..64ed6a6 --- /dev/null +++ b/src/main/java/com/bonus/emergencyrap/vo/DailyBean.java @@ -0,0 +1,140 @@ +package com.bonus.emergencyrap.vo; + +import lombok.Data; + +/** + * 日报实体类 + * @author zys + */ +@Data +public class DailyBean { + + /** + * 总体情况 + */ + private String overall; + + /** + * 重要事项 + */ + private String important_matters; + + /** + * 安全生产情况 + */ + private String safety_production; + + /** + * 值班员日常工作情况 + */ + private String personnel_daily_work; + + /** + * 供电保障情况 + * 今日重大活动保电情况 + */ + private String power_guarantee_today_work; + + /** + * 供电保障情况 + * 明日重大保电情况 + */ + private String power_guarantee_tomorrow_work; + + /** + * 供电保障情况 + * 今日疫情防控应急保电情况 + */ + private String power_guarantee_today_pestilence; + + /** + * 预警及应急响应情况 + * 公司预警情况 + */ + private String warning_company; + + /** + * 预警及应急响应情况 + * 公司应急响应情况 + */ + private String warning_company_impatient; + + /** + * 预警及应急响应情况 + * 社会突发事件救援及处置情况 + */ + private String warning_society_emergency; + + /** + * 其他情况说明 + */ + private String other_situations; + + /** + * 附件一 + */ + private AnnexOneBean oneBean; + + /** + * 附件二 + */ + private AnnexTwoBean twoBean; + + /** + * 附件三 + */ + private AnnexThreeBean threeBean; + + /** + * 附件四 + */ + private AnnexFourBean fourBean; + + /** + * 附件五 + */ + private AnnexFiveBean fiveBean; + + /** + * 附件六 + */ + private AnnexSixBean sixBean; + + /** + * 附件七 + */ + private AnnexSevenBean sevenBean; + + /** + * 附件八 + */ + private AnnexEightBean eightBean; + + /** + * 附件九 + */ + private AnnexNineBean nineBean; + + /** + * 附件十 + */ + private AnnexTenBean tenBean; + /** + * 附件十一 + */ + private AnnexElevenBean elevenBean; + /** + * 附件十二 + */ + private AnnexTwelveBean twelveBean; + + /** + * 附件十三 + */ + private AnnexThirteenBean thirteenBean; + + /** + * 附件十四 + */ + private AnnexFourteenBean fourteenBean; +} diff --git a/src/main/java/com/bonus/emergencyrap/vo/LogBean.java b/src/main/java/com/bonus/emergencyrap/vo/LogBean.java new file mode 100644 index 0000000..de1d4e3 --- /dev/null +++ b/src/main/java/com/bonus/emergencyrap/vo/LogBean.java @@ -0,0 +1,108 @@ +package com.bonus.emergencyrap.vo; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 日志实体类 + * @author zys + */ +@Data +public class LogBean implements Serializable { + + /** + * 天气 + */ + private String weather; + /** + * 最低气温 0/10 + */ + private String min_temperature; + + /** + * 最高气温 0/10 + */ + private String max_temperature; + + /** + * 事件检测标题 + */ + private String event_detection_title; + + /** + * 事件检测内容 + */ + private String event_detection_content; + + /** + * 保电工作标题 + */ + private String power_work_title; + + /** + * 保电工作内容 + */ + private String power_work_content; + + /** + * 资源核查情况标题 + */ + private String resource_check_title; + + /** + * 资源核查情况内容 + */ + private String resource_check_content; + + /** + * 通信测试标题 + */ + private String communications_test_title; + + /** + * 通信测试内容 + */ + private String communications_test_content; + + /** + * 日常操作情况标题 + */ + private String daily_operation_title; + + /** + * 日常操作情况内容 + */ + private String daily_operation_content; + + /** + * 日报提报情况标题 + */ + private String daily_submission_title; + + /** + * 日报提报情况内容 + */ + private String daily_submission_content; + + /** + * 预警处置标题 + */ + private String warning_disposal_title; + + /** + * 预警处置内容 + */ + private String warning_disposal_content; + + /** + * 一般记事标题 + */ + private String general_chronicles_title; + + /** + * 一般记事内容 + */ + private String general_chronicles_content; + +} diff --git a/src/main/java/com/bonus/emergencyrap/vo/TaskProcessVo.java b/src/main/java/com/bonus/emergencyrap/vo/TaskProcessVo.java index 600200f..5877c8e 100644 --- a/src/main/java/com/bonus/emergencyrap/vo/TaskProcessVo.java +++ b/src/main/java/com/bonus/emergencyrap/vo/TaskProcessVo.java @@ -28,7 +28,7 @@ public class TaskProcessVo { private double sleepTime; /** * 交互方式 - * 点击 、输入 、双击、单击、无操作 + * 悬停 、文本输入 、双击、单击、获取对象、数据采集、单选、多选 */ private String interactive; /** diff --git a/src/main/resources/mapper/CollectDataMapper.xml b/src/main/resources/mapper/CollectDataMapper.xml new file mode 100644 index 0000000..53ff240 --- /dev/null +++ b/src/main/resources/mapper/CollectDataMapper.xml @@ -0,0 +1,14 @@ + + + + + update tb_collect_data set data = #{date} where id =#{id} + + + +