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