package com.ruoyi.task;
|
|
import com.alibaba.fastjson2.JSONObject;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
import com.ruoyi.common.annotation.Excel;
|
import com.ruoyi.common.config.RuoYiConfig;
|
import com.ruoyi.common.core.redis.RedisCache;
|
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.common.utils.spring.SpringUtils;
|
import com.ruoyi.common.utils.uuid.UUID;
|
import com.ruoyi.dl.domain.DlShebeixx;
|
import com.ruoyi.dl.domain.DlShebeixxCd;
|
import com.ruoyi.dl.domain.DlShebeixxCdSssj;
|
import com.ruoyi.dl.domain.DlShebeixxCdYcsj;
|
import com.ruoyi.dl.service.IDlShebeixxCdService;
|
import com.ruoyi.dl.service.IDlShebeixxCdSssjService;
|
import com.ruoyi.dl.service.IDlShebeixxCdYcsjService;
|
import com.ruoyi.dl.service.IDlShebeixxService;
|
import com.ruoyi.interchange.domain.TbDataSendRecords;
|
import com.ruoyi.interchange.service.ITbDataSendRecordsService;
|
import com.ruoyi.utils.FileUtil;
|
import com.ruoyi.utils.FtpUtils;
|
import sun.applet.Main;
|
|
import java.io.File;
|
import java.nio.charset.Charset;
|
import java.text.SimpleDateFormat;
|
import java.util.Date;
|
import java.util.List;
|
|
public class DataAssembleUtil {
|
|
private static IDlShebeixxService dlShebeixxService;
|
private static IDlShebeixxCdService dlShebeixxCdService;
|
private static IDlShebeixxCdSssjService dlShebeixxCdSssjService;
|
private static IDlShebeixxCdYcsjService dlShebeixxCdYcsjService;
|
private static ITbDataSendRecordsService tbDataSendRecordsService;
|
private static RedisCache redisCache;
|
|
//一矿:煤矿编码 220181014879
|
//二矿:煤矿编码 220181014860
|
private static String MKBM= RuoYiConfig.getMkbm(); //煤矿编码
|
private static String MKMC= RuoYiConfig.getMkmc(); //煤矿名称
|
private static String SCCJ="徐州珂尔玛科技有限公司"; //生产厂家名称
|
private static String XTXH="KEM2023DLJKXT"; //系统型号
|
private static String XTMC="供电监控系统"; //系统名称
|
|
private static SimpleDateFormat YMDformat = new SimpleDateFormat("yyyy-MM-dd");
|
private static SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
|
private static SimpleDateFormat formatYMD = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
private static SimpleDateFormat YMD_format = new SimpleDateFormat("yyyy/MM/dd");
|
|
static {
|
dlShebeixxService = SpringUtils.getBean(IDlShebeixxService.class);
|
dlShebeixxCdService = SpringUtils.getBean(IDlShebeixxCdService.class);
|
dlShebeixxCdSssjService = SpringUtils.getBean(IDlShebeixxCdSssjService.class);
|
dlShebeixxCdYcsjService = SpringUtils.getBean(IDlShebeixxCdYcsjService.class);
|
tbDataSendRecordsService = SpringUtils.getBean(ITbDataSendRecordsService.class);
|
redisCache = SpringUtils.getBean(RedisCache.class);
|
}
|
|
/*系统名称 系统简称 文件分类 说明
|
变电站设备基本信息 bdsj GDSB 变电站设备基本信息
|
变电站设备监测系统 gdjc GDJC 变电站设备测点基础信息
|
GDSS 变电站设备测点实时信息
|
GDYC 变电站设备测点异常信息
|
重大设备基本信息 jbsj JBSJ 重大设备基本信息
|
主通风机用电监测 tfjc TFJC 主通风机测点基础信息
|
TFSS 主通风机实时信息
|
TFYC 主通风机异常信息
|
主排水用电监测 psjc PSJC 主排水基础信息
|
PSSS 主排水实时信息
|
PSYC 主排水异常信息
|
主运输用电监测 zyjc ZYJC 主运输基础信息
|
ZYSS 主运输实时信息
|
ZYYC 主运输异常信息
|
提升系统用电监测 tsjc TSJC 提升系统基础信息
|
TSSS 提升系统实时信息
|
TSYC 提升系统异常信息*/
|
|
//设备基本信息(项目启动或者修改后发送一次)
|
public static void AssembleBDZSBJBXX(){
|
List<DlShebeixx> list=dlShebeixxService.selectListByGroupBy(new DlShebeixx());
|
for (int i = 0; i < list.size(); i++) {
|
AssembleBDZSBJBXX_Add(list.get(i).getXiTongBM(),list.get(i).getWenJianFL());
|
}
|
}
|
|
/**
|
* @param XTBM 系统编码
|
* @param WJFL 文件分类
|
*/
|
public static void AssembleBDZSBJBXX_Add(String XTBM,String WJFL){
|
Date nowD=new Date();
|
|
//煤矿编码_GDSB_系统编码_数据上传时间.txt
|
//数据上传时间格式:yyyyMMddHHmmss 如:20190929112425
|
//文件名示例:140121020034_GDSB_6001_20190929112425.txt
|
|
|
//文件存储位置
|
String url= RuoYiConfig.getProfile() + "/upload/"+MKBM+"/"+YMD_format.format(nowD)+"/"+WJFL.substring(0,2);
|
File file = new File(url);
|
if (!file.exists()) {
|
file.mkdirs();
|
}
|
|
//文件内容包括两部分:文件头和文件体。
|
//文件头包括煤矿编码;煤矿名称;数据上传时间,3 个字段为必填项。数据上传时间是指生成该数据文件的时间。各字段使用英文符号“;”隔开,文件头以“~”符号结束。
|
//文件体是煤矿所有变电站设备基本信息的集合。每条设备的信息格式为“设备编码;设备名称;规格型号;设备类别;生产日期;所属系统;安装日期;安装位置;生产厂家;出厂编码;安标证书编号;防爆证书编号;额定电压;额定电流;额定功率”。每一条变电站设备基本信息各字段以英文字符“;”隔开,以“~”结束,每组数据以“||”结尾。
|
//140121020034;XXX煤矿;2019-09-29 11:24:24~1401210200340000017633;进线柜;VW-5/21;1;2019-09-01;6001;2020-09-01;中央变电所;***有限公司;4103123213;MFB130444;CE071275;380;30;2500~||
|
|
//文件头
|
String toString=MKBM+";"+MKMC+";"+formatYMD.format(nowD)+"~";
|
DlShebeixx sOBJ=new DlShebeixx();
|
sOBJ.setXiTongBM(XTBM);//系统编码
|
sOBJ.setWenJianFL(WJFL);//文件分类
|
List<DlShebeixx> list = dlShebeixxService.selectDlShebeixxList(sOBJ);
|
|
//文件体
|
for (int i = 0; i < list.size(); i++) {
|
DlShebeixx dlShebeixx=list.get(i);
|
String objString=dlShebeixx.getSheBeiBM()+";" //设备编码
|
+dlShebeixx.getSheBeiMC()+";" //设备名称
|
+dlShebeixx.getGuiGeXH()+";" //规格型号
|
+dlShebeixx.getSheBeiLX()+";" //设备类别
|
+YMDformat.format(dlShebeixx.getShengChanRQ())+";" //生产日期
|
+dlShebeixx.getSuoShuXT()+";" //所属系统
|
+YMDformat.format(dlShebeixx.getAnZhuangRQ())+";" //安装日期
|
+dlShebeixx.getAnZhuangWZ()+";" //安装位置
|
+dlShebeixx.getShengChanCJ()+";" //生产厂家
|
+dlShebeixx.getChuChangBM()+";" //出厂编码
|
+dlShebeixx.getAnBIaoZSBH()+";" //安标证书编号
|
+dlShebeixx.getFangBaoZSBH()+";" //防爆证书编号
|
+dlShebeixx.geteDingDY()+";" //额定电压
|
+dlShebeixx.geteDingDL()+";" //额定电流
|
+dlShebeixx.geteDingGL()+"~||"; //额定功率
|
|
toString+=objString;
|
}
|
//批量替换null字符串
|
toString = StringUtils.replace(toString, "null", "");
|
|
String fileUrl=url + "/"+MKBM+"_"+WJFL+"_"+XTBM+"_"+format.format(nowD)+".txt";
|
FileUtil.writeLogInFile(fileUrl,toString);
|
|
JSONObject obj=new JSONObject();
|
obj.put("type","变电站");
|
obj.put("url",fileUrl);
|
obj.put("sendSum",0);
|
obj.put("fileName",MKBM+"_"+WJFL+"_"+XTBM+"_"+format.format(nowD));
|
redisCache.rightPush("DataAssemble",obj);
|
}
|
|
|
|
//变电站设备监测数据(项目启动或者修改后发送一次)
|
public static void AssembleBDZSBJCSJ(){
|
List<DlShebeixxCd> list=dlShebeixxCdService.selectListByGroupBy(new DlShebeixxCd());
|
for (int i = 0; i < list.size(); i++) {
|
AssembleBDZSBJCSJ_Add(list.get(i).getXiTongBM(),list.get(i).getWenJianFL());
|
}
|
}
|
|
public static void AssembleBDZSBJCSJ_Add(String XTBM,String WJFL){
|
Date nowD=new Date();
|
|
//煤矿编码_GDJC_系统编码_数据上传时间.txt
|
//数据上传时间格式:yyyyMMddHHmmss 如:20190929112425
|
//文件名示例:140121020034_GDJC_6001_20190929112425.txt
|
|
//文件存储位置
|
String url= RuoYiConfig.getProfile() + "/upload/"+MKBM+"/"+YMD_format.format(nowD)+"/"+WJFL.substring(0,2);
|
File file = new File(url);
|
if (!file.exists()) {
|
file.mkdirs();
|
}
|
|
//文件内容包括两部分:文件头和文件体。
|
//文件头包括煤矿编码;煤矿名称;系统编码;系统型号;系统名称;生产厂家名称;数据上传时间,这 7 个字段都是必填项。数据上传时间是指生成该数据文件的时间。各字段使用英文符号“;”隔开,文件头以“~”符号结束。
|
//文件体是测点基础数据的集合。每条信息格式为“测点编码;测点类型编码;测点类型名称;所属设备编码;测点位置;测量值单位;量程上限;量程下限;报警上限;报警下限;传感器关联关系;数据时间”。每一条信息各字段以英文字符“;”隔开,以“~”结束,每组数据以“||”结尾。
|
//140121020034;XXX煤矿;6001;KJ××;供电监控系统;**厂家;2019-09-0110:31:24~14012102003430MN30101000000006331234;2103;电流;1401210200345001100542;中央变电所电流监控;A;100;0.01;80;5;;2019-09-01 10:31:24~||
|
|
//文件头
|
String toString="";
|
if(XTBM.equals("5001")){
|
toString=MKBM+";"+MKMC+";"+XTBM+";"+XTXH+";"+XTMC+";"+SCCJ+";"+formatYMD.format(nowD)+"~";
|
}else{
|
toString=MKBM+";"+MKMC+";"+XTXH+";"+XTMC+";"+formatYMD.format(nowD)+"~";
|
}
|
|
DlShebeixxCd dlShebeixxCd=new DlShebeixxCd();
|
dlShebeixxCd.setXiTongBM(XTBM);//系统编码
|
dlShebeixxCd.setWenJianFL(WJFL);//文件分类
|
List<DlShebeixxCd> list = dlShebeixxCdService.selectDlShebeixxCdList(dlShebeixxCd);
|
|
//文件体
|
for (int i = 0; i < list.size(); i++) {
|
DlShebeixxCd dlShebeiCD=list.get(i);
|
|
String objString="";
|
if(XTBM.equals("5001")){
|
objString=dlShebeiCD.getCeDianBM()+";" //测点编码
|
+dlShebeiCD.getCeDianLXBM()+";" //测点类型编码
|
+dlShebeiCD.getCeDianLXMC()+";" //测点类型名称
|
+dlShebeiCD.getSuoShuSBBM()+";" //所属设备编码
|
+dlShebeiCD.getCeDianWZ()+";" //测点位置
|
+dlShebeiCD.getCeLiangZDW()+";" //测量值单位
|
+dlShebeiCD.getLiangChenSX()+";" //量程上限
|
+dlShebeiCD.getLiangChenXX()+";" //量程下限
|
+dlShebeiCD.getBiaoJingSX()+";" //报警上限
|
+dlShebeiCD.getBiaoJingXX()+";" //报警下限
|
+dlShebeiCD.getChuanGanQGLGX()+";" //传感器关联关系
|
+YMDformat.format(dlShebeiCD.getShuJuDYSJ())+"~||"; //数据时间
|
}else{
|
objString=dlShebeiCD.getCeDianBM()+";" //测点编码
|
+dlShebeiCD.getCeDianLXBM()+";" //测点类型编码
|
+dlShebeiCD.getCeDianLXMC()+";" //测点类型名称
|
+dlShebeiCD.getSuoShuSBBM()+";" //所属设备编码
|
+dlShebeiCD.getCeDianWZ()+";" //测点位置
|
+dlShebeiCD.getCeLiangZDW()+";" //测量值单位
|
+dlShebeiCD.getLiangChenSX()+";" //量程上限
|
+dlShebeiCD.getLiangChenXX()+";" //量程下限
|
+dlShebeiCD.getBiaoJingSX()+";" //报警上限
|
+dlShebeiCD.getBiaoJingXX()+";" //报警下限
|
+YMDformat.format(dlShebeiCD.getShuJuDYSJ())+"~||"; //数据时间
|
}
|
toString+=objString;
|
}
|
|
//批量替换null字符串
|
toString = StringUtils.replace(toString, "null", "");
|
|
String fileUrl=url + "/"+MKBM+"_"+WJFL+"_"+XTBM+"_"+format.format(nowD)+".txt";
|
FileUtil.writeLogInFile(fileUrl,toString);
|
|
JSONObject obj=new JSONObject();
|
obj.put("type","测点数据");
|
obj.put("url",fileUrl);
|
obj.put("sendSum",0);
|
obj.put("fileName",MKBM+"_"+WJFL+"_"+XTBM+"_"+format.format(nowD));
|
redisCache.rightPush("DataAssemble",obj);
|
}
|
|
|
|
//测点实时数据(每10秒发送一次)
|
public static void AssembleCDSSSJ(){
|
List<DlShebeixxCdSssj> list=dlShebeixxCdSssjService.selectListByGroupBy(new DlShebeixxCdSssj());
|
for (int i = 0; i < list.size(); i++) {
|
AssembleCDSSSJ_Add(list.get(i).getXiTongBM(),list.get(i).getWenJianFL());
|
}
|
}
|
public static void AssembleCDSSSJ_Add(String XTBM,String WJFL){
|
Date nowD=new Date();
|
|
//煤矿编码_GDSS_系统编码_数据上传时间.txt
|
//数据上传时间格式:yyyyMMddHHmmss 如:20190929112425
|
//文件名示例:140121020034_GDSS_6001_20190929112425.txt
|
//说明:数据上传时间是指将各测点实时数据汇总生成数据文件的时间。
|
|
//文件存储位置
|
String url= RuoYiConfig.getProfile() + "/upload/"+MKBM+"/"+YMD_format.format(nowD)+"/"+WJFL.substring(0,2);
|
File file = new File(url);
|
if (!file.exists()) {
|
file.mkdirs();
|
}
|
|
|
//文件内容包括两部分:文件头和文件体。
|
//文件头包括煤矿编码;矿井名称;系统编码;数据上传时间,4 个字段为必填项。数据上传时间是指生成该数据文件的时间。各字段使用英文符号“;”隔开,文件头以“~”符号结束。
|
//文件体是煤矿下所有测点 10 秒感知数据的集合。每条信息格式为“测点编码;测点类型编码;测点类型名称;所属设备编码;测点数值;测点数值单位;测点状态;数据时间”。每一条信息各字段以英文字符“;”隔开,以“~”结束,每组数据以“||”结尾。
|
//140121020034;XXX煤矿;6001;2019-09-0110:31:24~14012102003430MN30101000000006331234;500011;电流;1401210200345001100542;5;A;0;2019-09-01 10:31:24~||
|
|
//文件头
|
String toString="";
|
if(XTBM.equals("5001")){
|
toString=MKBM+";"+MKMC+";"+XTBM+";"+formatYMD.format(nowD)+"~";
|
}else{
|
toString=MKBM+";"+MKMC+";"+formatYMD.format(nowD)+"~";
|
}
|
|
DlShebeixxCdSssj dlShebeixxCdSssj=new DlShebeixxCdSssj();
|
dlShebeixxCdSssj.setXiTongBM(XTBM);//系统编码
|
dlShebeixxCdSssj.setWenJianFL(WJFL);//文件分类
|
List<DlShebeixxCdSssj> list = dlShebeixxCdSssjService.selectDlShebeixxCdSssjList(dlShebeixxCdSssj);
|
|
//文件体
|
for (int i = 0; i < list.size(); i++) {
|
DlShebeixxCdSssj dlShebeiSSSJ=list.get(i);
|
|
String ceDianSZ=dlShebeiSSSJ.getCeDianSZ();
|
|
if(dlShebeiSSSJ.getCeDianLXBM().equals("500008")
|
|| dlShebeiSSSJ.getCeDianLXBM().equals("500009")
|
|| dlShebeiSSSJ.getCeDianLXBM().equals("500011")
|
|| dlShebeiSSSJ.getCeDianLXBM().equals("610005")
|
|| dlShebeiSSSJ.getCeDianLXBM().equals("610006")
|
|| dlShebeiSSSJ.getCeDianLXBM().equals("610007")
|
|| dlShebeiSSSJ.getCeDianLXBM().equals("610008")
|
|| dlShebeiSSSJ.getCeDianLXBM().equals("610009")
|
|| dlShebeiSSSJ.getCeDianLXBM().equals("610010")
|
|| dlShebeiSSSJ.getCeDianLXBM().equals("610011")
|
|| dlShebeiSSSJ.getCeDianLXBM().equals("610012")
|
|| dlShebeiSSSJ.getCeDianLXBM().equals("620003")
|
|| dlShebeiSSSJ.getCeDianLXBM().equals("620004")
|
|| dlShebeiSSSJ.getCeDianLXBM().equals("620005")
|
|| dlShebeiSSSJ.getCeDianLXBM().equals("620006")
|
|| dlShebeiSSSJ.getCeDianLXBM().equals("620007")
|
|| dlShebeiSSSJ.getCeDianLXBM().equals("630004")
|
|| dlShebeiSSSJ.getCeDianLXBM().equals("630005")
|
|| dlShebeiSSSJ.getCeDianLXBM().equals("630006")
|
|| dlShebeiSSSJ.getCeDianLXBM().equals("630007")
|
|| dlShebeiSSSJ.getCeDianLXBM().equals("630008")
|
|| dlShebeiSSSJ.getCeDianLXBM().equals("640004")
|
|| dlShebeiSSSJ.getCeDianLXBM().equals("640005")
|
|| dlShebeiSSSJ.getCeDianLXBM().equals("640006")
|
|| dlShebeiSSSJ.getCeDianLXBM().equals("640007")
|
|| dlShebeiSSSJ.getCeDianLXBM().equals("640008")){
|
ceDianSZ=ceDianSZ.split("\\.")[0];
|
}
|
|
|
String shuJuSJ="";
|
|
if(dlShebeiSSSJ.getShuJuSJ().getTime()>nowD.getTime()){
|
shuJuSJ=formatYMD.format(nowD);
|
}else{
|
shuJuSJ=formatYMD.format(dlShebeiSSSJ.getShuJuSJ());
|
}
|
|
|
String objString=dlShebeiSSSJ.getCeDianBM()+";" //测点编码
|
+dlShebeiSSSJ.getCeDianLXBM()+";" //测点类型编码
|
+dlShebeiSSSJ.getCeDianLXMC()+";" //测点类型名称
|
+dlShebeiSSSJ.getSuoShuSBBM()+";" //所属设备编码
|
+ceDianSZ+";" //测点数值
|
+dlShebeiSSSJ.getCeDianSZDW()+";" //测点数值单位
|
+dlShebeiSSSJ.getCeDianZT()+";" //测点状态
|
+shuJuSJ+"~||"; //数据时间
|
|
|
toString+=objString;
|
}
|
|
//批量替换null字符串
|
toString = StringUtils.replace(toString, "null", "");
|
|
String fileUrl=url + "/"+MKBM+"_"+WJFL+"_"+XTBM+"_"+format.format(nowD)+".txt";
|
FileUtil.writeLogInFile(fileUrl,toString);
|
|
JSONObject obj=new JSONObject();
|
obj.put("type","实时数据");
|
obj.put("url",fileUrl);
|
obj.put("sendSum",0);
|
obj.put("fileName",MKBM+"_"+WJFL+"_"+XTBM+"_"+format.format(nowD));
|
redisCache.rightPush("DataAssemble",obj);
|
}
|
|
|
|
|
//测点异常数据(存在异常的时候才发送)
|
public static void AssembleCDYCSJ(){
|
List<DlShebeixxCdYcsj> list=dlShebeixxCdYcsjService.selectListByGroupBy(new DlShebeixxCdYcsj());
|
for (int i = 0; i < list.size(); i++) {
|
AssembleCDYCSJ_Add(list.get(i).getXiTongBM(),list.get(i).getWenJianFL());
|
}
|
}
|
|
public static void AssembleCDYCSJ_Add(String XTBM,String WJFL){
|
Date nowD=new Date();
|
|
//煤矿编码_GDYC_系统编码_数据上传时间.txt
|
//数据上传时间格式:yyyyMMddHHmmss 如:20190929112425
|
//文件名示例:140121020034_GDYC_6001_20190929112425.txt
|
//说明:数据上传时间是指将各测点异常数据汇总生成数据文件的时间。
|
|
//文件存储位置
|
String url= RuoYiConfig.getProfile() + "/upload/"+MKBM+"/"+YMD_format.format(nowD)+"/"+WJFL.substring(0,2);
|
File file = new File(url);
|
if (!file.exists()) {
|
file.mkdirs();
|
}
|
|
|
//文件内容包括两部分:文件头和文件体。
|
//文件头包括煤矿编码;矿井名称;系统编码;数据上传时间,4 个字段为必填项。数据上传时间是指生成该数据文件的时间。各字段使用英文符号“;”隔开,文件头以“~”符号结束。
|
//文件体是煤矿下所有测点异常感知数据的集合。每条信息格式为“测点编码;测点类型编码;测点类型名称;所属设备编码;异常类型;异常开始时间;异常结束时间;异常期间最大值;最大值时刻;异常期间最小值;最小值时刻;异常期间平均值;数据时间”。每一条信息各字段以英文字符“;”隔开,以“~”结束,每组数据以“||”结尾。
|
//140121020034;XXX煤矿;6001;2019-09-0110:31:24~14012102003430MN30101000000006331234;500010;电流;1401210200345001100542;1;2019-09-0110:25:24;8;2019-09-0110:27:24;5; 2019-09-0110:26:24;6.2;2019-09-0110:31:24~||
|
|
//文件头
|
String toString="";
|
if(XTBM.equals("5001")){
|
toString=MKBM+";"+MKMC+";"+XTBM+";"+formatYMD.format(nowD)+"~";
|
}else{
|
toString=MKBM+";"+MKMC+";"+formatYMD.format(nowD)+"~";
|
}
|
|
|
DlShebeixxCdYcsj dlShebeixxCdYcsj=new DlShebeixxCdYcsj();
|
dlShebeixxCdYcsj.setShiFouFS(0);//是否发送 0未发送 1发送
|
dlShebeixxCdYcsj.setXiTongBM(XTBM);//系统编码
|
dlShebeixxCdYcsj.setWenJianFL(WJFL);//文件分类
|
List<DlShebeixxCdYcsj> list = dlShebeixxCdYcsjService.selectDlShebeixxCdYcsjList(dlShebeixxCdYcsj);
|
|
//文件体
|
for (int i = 0; i < list.size(); i++) {
|
DlShebeixxCdYcsj dlShebeiYCSJ=list.get(i);
|
String objString=dlShebeiYCSJ.getCeDianBM()+";" //测点编码
|
+dlShebeiYCSJ.getCeDianLXBM()+";" //测点类型编码
|
+dlShebeiYCSJ.getCeDianLXMC()+";" //测点类型名称
|
+dlShebeiYCSJ.getSuoShuSBBM()+";" //所属设备编码
|
+dlShebeiYCSJ.getYiChangLX()+";" //异常类型
|
+formatYMD.format(dlShebeiYCSJ.getYiChangKSSJ())+";" //异常开始时间
|
+formatYMD.format(dlShebeiYCSJ.getYiChangJSSJ())+";" //异常结束时间
|
+dlShebeiYCSJ.getYiChangQJZDZ()+";" //异常期间最大值
|
+formatYMD.format(dlShebeiYCSJ.getZuiDaZSK())+";" //最大值时刻
|
+dlShebeiYCSJ.getYiChangQJZXZ()+";" //异常期间最小值
|
+formatYMD.format(dlShebeiYCSJ.getZuiXiaoZSK())+";" //最小值时刻
|
+dlShebeiYCSJ.getYiChangQJPJZ()+";" //异常期间平均值
|
+formatYMD.format(dlShebeiYCSJ.getShuJuSJ())+"~||"; //数据时间
|
|
toString+=objString;
|
|
//更新为已发送
|
DlShebeixxCdYcsj dlShebeixxCdYcsjU=new DlShebeixxCdYcsj();
|
dlShebeixxCdYcsjU.setId(dlShebeiYCSJ.getId());
|
dlShebeixxCdYcsjU.setShiFouFS(1);
|
dlShebeixxCdYcsjService.updateDlShebeixxCdYcsj(dlShebeixxCdYcsjU);
|
}
|
|
//批量替换null字符串
|
toString = StringUtils.replace(toString, "null", "");
|
|
String fileUrl=url + "/"+MKBM+"_"+WJFL+"_"+XTBM+"_"+format.format(nowD)+".txt";
|
FileUtil.writeLogInFile(fileUrl,toString);
|
|
JSONObject obj=new JSONObject();
|
obj.put("type","异常数据");
|
obj.put("url",fileUrl);
|
obj.put("sendSum",0);
|
obj.put("fileName",MKBM+"_"+WJFL+"_"+XTBM+"_"+format.format(nowD));
|
redisCache.rightPush("DataAssemble",obj);
|
}
|
|
//记录发送次数
|
public static void DataTransmission(FtpUtils ftpUtil,JSONObject obj) throws InterruptedException {
|
//通过ftp方式发送
|
//取出的数据
|
System.out.println("电力上传开始发送数据:"+obj.toString());
|
|
TbDataSendRecords tbDataSendRecords=new TbDataSendRecords();
|
try{
|
String url=obj.getString("url");
|
String fileName=obj.getString("fileName");
|
|
tbDataSendRecords.setFileName(fileName);//文件名
|
tbDataSendRecords.setDataHeader("");//数据头
|
tbDataSendRecords.setDataNumber(1l);//数据数量
|
tbDataSendRecords.setSendFileUrl(url);//文件发送FTP位置
|
tbDataSendRecords.setCoalMineId(1l);//所属煤矿ID
|
tbDataSendRecords.setSystemId(1l);//所属系统ID
|
tbDataSendRecords.setRuleId(1l);//数据文件采集规则ID
|
tbDataSendRecords.setDetectionTime(new Date());//文件处理时间
|
tbDataSendRecords.setDetectionResult("0");//是否系统生成的 0是 1否
|
tbDataSendRecords.setCheckResult("1");//校验结果 0通过 1未通过
|
|
String[] split = fileName.split("_");
|
|
String lj=split[1].substring(0,2);
|
|
if(lj.equals("JB")){
|
String ks=split[2].substring(0,2);
|
if(ks.equals("61")){
|
lj="TF";
|
}else if(ks.equals("62")){
|
lj="PS";
|
}else if(ks.equals("63")){
|
lj="ZY";
|
}else if(ks.equals("64")){
|
lj="TS";
|
}
|
}
|
|
boolean storeFlag=ftpUtil.uploadFile(RuoYiConfig.getFtpPath()+"\\"+lj,"",fileName,url);
|
if(storeFlag){
|
tbDataSendRecords.setSendResult("0");//发送结果 0成功 1失败
|
}else{
|
tbDataSendRecords.setSendResult("1");//发送结果 0成功 1失败
|
int sendSum=obj.getInteger("sendSum");
|
int nowSendSum=sendSum+1;
|
obj.put("sendSum",nowSendSum);
|
redisCache.rightPush("DataAssemble",obj);
|
Thread.sleep(1000);
|
}
|
//tbDataSendRecordsService.insertTbDataSendRecords(tbDataSendRecords);
|
}catch (Exception e){
|
System.err.println("FTP发送出现异常:::::"+e.getMessage());
|
//如果出现异常需重新缓存,重新进行发送
|
|
tbDataSendRecords.setSendResult("1");//发送结果 0成功 1失败
|
int sendSum=obj.getInteger("sendSum");
|
int nowSendSum=sendSum+1;
|
obj.put("sendSum",nowSendSum);
|
redisCache.rightPush("DataAssemble",obj);
|
//tbDataSendRecordsService.insertTbDataSendRecords(tbDataSendRecords);
|
Thread.sleep(1000);
|
}
|
|
}
|
|
|
}
|