初版小程序

This commit is contained in:
马三炮 2025-10-09 09:09:05 +08:00
parent 23308b03a5
commit 8972ac59b7
29 changed files with 1857 additions and 11 deletions

View File

@ -123,7 +123,12 @@
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
</dependencies>
<build>

View File

@ -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";
}

View File

@ -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);
}

View File

@ -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;

View File

@ -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;
}

View File

@ -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 +"0830";
if (DataConfig.eveningLog.equals(taskProcessVo.getElementName())){
logDate=data2 + "1730";
}
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("天气预警日报更新完成");
}
}

View File

@ -76,4 +76,6 @@ public interface TaskService {
* @param taskVo
*/
void updateTaskStatus(TaskVo taskVo);
void runJob(TaskVo taskVo);
}

View File

@ -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<TaskVo> 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<TaskProcessVo> 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);
}
}
}
}

View File

@ -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){

View File

@ -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<Integer> getARandomCollectionOfData() {
Random random = new Random();
int minCount = 3; // 最小数量
int maxCount = 5; // 最大数量
int count = random.nextInt(maxCount - minCount + 1) + minCount; // 随机生成数量
List<Integer> 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<Integer> 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;
}
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -28,7 +28,7 @@ public class TaskProcessVo {
private double sleepTime;
/**
* 交互方式
* 点击 输入 双击单击无操作
* 悬停 文本输入 双击单击获取对象数据采集单选多选
*/
private String interactive;
/**

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bonus.emergencyrap.mapper.CollectDataMapper">
<update id="updateCollectData">
update tb_collect_data set data = #{date} where id =#{id}
</update>
<select id="getCollectData" resultType="com.bonus.emergencyrap.vo.CollectDataVo">
select id,type,update_time as updateTime,data
from tb_collect_data
where type=#{type}
</select>
</mapper>