修改参数下载服务,抢险救灾增量生成入参修改,并在tomcat的配置文件中增加可配置参数加载几天增量,目前抢险救灾增量加载一天的增量,其他增量还是加载10天的增量

#抢险救灾当前加载几天的增量
EMERCARINCDay=1
#除抢险救灾外其他增量当前加载几天的增量
incDays=10
main
gaoshuguang 4 months ago
parent 9b17a26d57
commit e2fb5f7c27

@ -10,6 +10,7 @@ import com.nm.gsgl.common.utils.FileUtil;
import com.nm.gsgl.common.utils.LogUtil; import com.nm.gsgl.common.utils.LogUtil;
import com.nm.gsgl.common.utils.MD5Util; import com.nm.gsgl.common.utils.MD5Util;
import com.nm.gsgl.common.utils.PathUtil; import com.nm.gsgl.common.utils.PathUtil;
import com.nm.gsgl.common.utils.PropertiesUtil;
import com.nm.gsgl.entity.FileInfo; import com.nm.gsgl.entity.FileInfo;
import com.nm.gsgl.entity.NameTableAuto; import com.nm.gsgl.entity.NameTableAuto;
import com.nm.gsgl.entity.dis.NewFileInfo; import com.nm.gsgl.entity.dis.NewFileInfo;
@ -45,8 +46,8 @@ public class CreateDbfByDllServiceImpl implements CreateDbfByDllService {
//dbf文件名称 //dbf文件名称
private String dbName = ""; private String dbName = "";
//加载几天的增量 //加载几天的增量
@Value("${incDays}") //@Value("${incDays}")
public String incDays; //public String incDays;
@Value("${NFSFilePath}") @Value("${NFSFilePath}")
public String NFSFilePath; public String NFSFilePath;
@ -240,7 +241,8 @@ public class CreateDbfByDllServiceImpl implements CreateDbfByDllService {
LogUtil.WriteLog_HRBlackCard("[uuid:" + uuid + "]-调用动态库生成增量SQB文件完成,返回值为" + countSqb, "CreateDbfByDllServiceImpl"); LogUtil.WriteLog_HRBlackCard("[uuid:" + uuid + "]-调用动态库生成增量SQB文件完成,返回值为" + countSqb, "CreateDbfByDllServiceImpl");
} else { } else {
//获取当前加载几天的增量
String incDays = StringUtils.isNotBlank(PropertiesUtil.getValue("incDays")) ? PropertiesUtil.getValue("incDays") : "10";
//每天生成一个备份zip文件夹存放增量下载的zip文件 //每天生成一个备份zip文件夹存放增量下载的zip文件
String dayBackPath = NFSFilePath + PathUtil.downFileBackup + dbfDir + File.separator + dateTime + File.separator; String dayBackPath = NFSFilePath + PathUtil.downFileBackup + dbfDir + File.separator + dateTime + File.separator;
FileUtil.fileCreat(dayBackPath); FileUtil.fileCreat(dayBackPath);

@ -34,7 +34,7 @@ import java.util.List;
* @description: * @description:
*/ */
@Service @Service
public class CreateMinFeeSqbServiceImpl implements CreateMinFeeSqbService{ public class CreateMinFeeSqbServiceImpl implements CreateMinFeeSqbService {
@Value("${sqliteDriverName}") @Value("${sqliteDriverName}")
private String sqliteDriverName; private String sqliteDriverName;
@Value("${sqliteUrl}") @Value("${sqliteUrl}")
@ -74,7 +74,7 @@ public class CreateMinFeeSqbServiceImpl implements CreateMinFeeSqbService{
String id = businessTask.getId(); String id = businessTask.getId();
//获取本地路径将文件复制到本地路径生成SQB然后再移动到nfs共享目录中 //获取本地路径将文件复制到本地路径生成SQB然后再移动到nfs共享目录中
String localDownZipPath = PropertiesUtil.getValue("localDownZipPath"); String localDownZipPath = PropertiesUtil.getValue("localDownZipPath");
String localUnZipPath = PropertiesUtil.getValue("localUnZipPath")+File.separator + id; String localUnZipPath = PropertiesUtil.getValue("localUnZipPath") + File.separator + id;
String localSqbPath = PropertiesUtil.getValue("localSqbPath"); String localSqbPath = PropertiesUtil.getValue("localSqbPath");
FileUtil.fileCreat(localDownZipPath); FileUtil.fileCreat(localDownZipPath);
FileUtil.fileCreat(localUnZipPath); FileUtil.fileCreat(localUnZipPath);
@ -90,7 +90,7 @@ public class CreateMinFeeSqbServiceImpl implements CreateMinFeeSqbService{
//更新sqlite任务表的任务状态为2-报错,轮询下次再处理 //更新sqlite任务表的任务状态为2-报错,轮询下次再处理
DatabaseUtil.insertSqlite(sqliteDriverName, sqliteUrl, Constant.ERROR_UPDATE_BUSINESS_HANDLER + businessTask.getId()); DatabaseUtil.insertSqlite(sqliteDriverName, sqliteUrl, Constant.ERROR_UPDATE_BUSINESS_HANDLER + businessTask.getId());
} else { } else {
FileUtil.copyFile(nfsDownFilePath + fileName,localDownZipPath + fileName); FileUtil.copyFile(nfsDownFilePath + fileName, localDownZipPath + fileName);
//解压之前先清空解压目标目录 //解压之前先清空解压目标目录
FileUtil.removeFiles(new File(localUnZipPath)); FileUtil.removeFiles(new File(localUnZipPath));
List<String> stringList = UnzipUtil.decompress(localDownZipPath + fileName, localUnZipPath); List<String> stringList = UnzipUtil.decompress(localDownZipPath + fileName, localUnZipPath);
@ -110,15 +110,24 @@ public class CreateMinFeeSqbServiceImpl implements CreateMinFeeSqbService{
String subComNO; String subComNO;
subComNO = String.valueOf(nameTable.getSubComNo()); subComNO = String.valueOf(nameTable.getSubComNo());
switch (subComNO) { switch (subComNO) {
case "37"://十大 //十大
case "37":
subComNO = "38"; subComNO = "38";
break; break;
case "34"://大东 和城大 //大东 和城大
case "34":
subComNO = "33"; subComNO = "33";
break; break;
case "29"://东察 //东察
case "29":
subComNO = "35"; subComNO = "35";
break; break;
//巴银归属到乌银分公司
case "46":
subComNO = "55";
break;
default:
break;
} }
Integer staNo = nameTable.getStaNo(); Integer staNo = nameTable.getStaNo();
LogUtil.WriteLog_MinFee("[uuid:" + uuid + "]-获取分公司编号为=" + subComNO, "CreateMinFeeSqbServiceImpl"); LogUtil.WriteLog_MinFee("[uuid:" + uuid + "]-获取分公司编号为=" + subComNO, "CreateMinFeeSqbServiceImpl");
@ -182,7 +191,7 @@ public class CreateMinFeeSqbServiceImpl implements CreateMinFeeSqbService{
//获取生成的zlib的文件名 //获取生成的zlib的文件名
String zlibFileNameMd5 = FileUtil.zlibFileName(localSqbPathDll, zlibName.replace(Constant.STR_ZLIB, Constant.NULL_STRING) + Constant.STR_); String zlibFileNameMd5 = FileUtil.zlibFileName(localSqbPathDll, zlibName.replace(Constant.STR_ZLIB, Constant.NULL_STRING) + Constant.STR_);
LogUtil.WriteLog_MinFee("[uuid:" + uuid + "]-获取zlib的文件名称为" + zlibFileNameMd5, "CreateMinFeeSqbServiceImpl"); LogUtil.WriteLog_MinFee("[uuid:" + uuid + "]-获取zlib的文件名称为" + zlibFileNameMd5, "CreateMinFeeSqbServiceImpl");
FileUtil.copyFile(localSqbPathDll+ File.separator +zlibFileNameMd5, nfsSqbPathDll + zlibFileNameMd5); FileUtil.copyFile(localSqbPathDll + File.separator + zlibFileNameMd5, nfsSqbPathDll + zlibFileNameMd5);
//获取高路分中心需要下发的收费站编码,如果是多个站,站编码用,间隔 //获取高路分中心需要下发的收费站编码,如果是多个站,站编码用,间隔
String glMinFeeFZXs = PropertiesUtil.getValue("GLMinFeeFZXs"); String glMinFeeFZXs = PropertiesUtil.getValue("GLMinFeeFZXs");
@ -245,10 +254,10 @@ public class CreateMinFeeSqbServiceImpl implements CreateMinFeeSqbService{
disMinFeeFileMapper.update(null, updateWrap); disMinFeeFileMapper.update(null, updateWrap);
} }
FileUtil.delete(new File(sqbFileDllPath)); FileUtil.delete(new File(sqbFileDllPath));
FileUtil.delete(new File(localUnZipPath +File.separator+ businessTask.getFileName())); FileUtil.delete(new File(localUnZipPath + File.separator + businessTask.getFileName()));
FileUtil.delete(new File(localDownZipPath + businessTask.getFileName())); FileUtil.delete(new File(localDownZipPath + businessTask.getFileName()));
FileUtil.delete(new File(NFSFilePath + PathUtil.downFile + businessTask.getFileName())); FileUtil.delete(new File(NFSFilePath + PathUtil.downFile + businessTask.getFileName()));
FileUtil.delete(new File(localSqbPathDll+ File.separator +zlibFileNameMd5)); FileUtil.delete(new File(localSqbPathDll + File.separator + zlibFileNameMd5));
String nowString = DateTimeUtil.getFormateString(new Date(), Constant.YYYY_MM_DD_HH_MM_SS); String nowString = DateTimeUtil.getFormateString(new Date(), Constant.YYYY_MM_DD_HH_MM_SS);
String sqlParam = Constant.UPDATE_BUSINESS_HANDLER + nowString + Constant.PUBLISH_TIME + nowString + Constant.WHERE_ID + businessTask.getId(); String sqlParam = Constant.UPDATE_BUSINESS_HANDLER + nowString + Constant.PUBLISH_TIME + nowString + Constant.WHERE_ID + businessTask.getId();
if (DatabaseUtil.insertSqlite(sqliteDriverName, sqliteUrl, sqlParam) > 0) { if (DatabaseUtil.insertSqlite(sqliteDriverName, sqliteUrl, sqlParam) > 0) {

@ -13,6 +13,7 @@ import com.nm.gsgl.common.utils.FileUtil;
import com.nm.gsgl.common.utils.LogUtil; import com.nm.gsgl.common.utils.LogUtil;
import com.nm.gsgl.common.utils.MD5Util; import com.nm.gsgl.common.utils.MD5Util;
import com.nm.gsgl.common.utils.PathUtil; import com.nm.gsgl.common.utils.PathUtil;
import com.nm.gsgl.common.utils.PropertiesUtil;
import com.nm.gsgl.common.utils.UnzipUtil; import com.nm.gsgl.common.utils.UnzipUtil;
import com.nm.gsgl.entity.FileInfo; import com.nm.gsgl.entity.FileInfo;
import com.nm.gsgl.entity.NameTableAuto; import com.nm.gsgl.entity.NameTableAuto;
@ -54,8 +55,8 @@ public class ZipToSqbServiceImpl implements ZipToSqbService {
@Value("${sqliteUrl}") @Value("${sqliteUrl}")
private String sqliteUrl; private String sqliteUrl;
//加载几天的增量 //加载几天的增量
@Value("${incDays}") //@Value("${incDays}")
public String incDays; //public String incDays;
@Value("${NFSFilePath}") @Value("${NFSFilePath}")
public String NFSFilePath; public String NFSFilePath;
@ -185,7 +186,7 @@ public class ZipToSqbServiceImpl implements ZipToSqbService {
break; break;
case Constant.STR_920://抢险救灾车增量 case Constant.STR_920://抢险救灾车增量
dbName = "EMERCARINC.DBF"; dbName = "EMERCARINC.DBF";
type = 4; type = 5;
etcType = 10; etcType = 10;
dbfDir = "EMERCAR"; dbfDir = "EMERCAR";
qlSqbName = "SQB_EMERCARALL"; qlSqbName = "SQB_EMERCARALL";
@ -224,7 +225,121 @@ public class ZipToSqbServiceImpl implements ZipToSqbService {
LogUtil.WriteLog_HRBlackCard("[uuid:" + uuid + "]-调用动态库生成全量SQB文件完成,返回值为" + countSqb, "ZipToSqbServiceImpl"); LogUtil.WriteLog_HRBlackCard("[uuid:" + uuid + "]-调用动态库生成全量SQB文件完成,返回值为" + countSqb, "ZipToSqbServiceImpl");
} else { } else if (type == 5){
//获取当前加载几天的增量
String emercarincDay = StringUtils.isNotBlank(PropertiesUtil.getValue("EMERCARINCDay")) ? PropertiesUtil.getValue("EMERCARINCDay") : "1";
LogUtil.WriteLog_HRBlackCard("[uuid:" + uuid + "]-调用动态库生成增量SQB文件中,协议类型为" + protocolType + "zip文件名为" + fileName, "ZipToSqbServiceImpl-createSqbByDll");
//每天生成一个备份zip文件夹存放增量下载的zip文件
dayBackPath = NFSFilePath + PathUtil.downFileBackup + dbfDir + File.separator + dateTime + File.separator;
FileUtil.fileCreat(dayBackPath);
FileUtil.copyFile(localPath + fileName, dayBackPath + fileName);
//将下载的增量文件复制到入库文件夹下
String insertDbPath = NFSFilePath + File.separator + "ParamInsertDb" + File.separator + "zipFilePath" + File.separator;
FileUtil.fileCreat(insertDbPath);
FileUtil.copyFile(localPath + fileName, insertDbPath + fileName);
//当前时段是否生成新版本增量
boolean isGenerate = false;
//根据主键protocolType查询DIS_NEWFILEINFO_JAVA表中上次的生成时间
NewFileInfo newFileInfo = newFileInfoMapper.selectById(protocolType);
if (newFileInfo != null) {
Date updateTime = newFileInfo.getUpdateTime();
LogUtil.WriteLog_HRBlackCard("[uuid:" + uuid + "]-根据主键protocolType=" + protocolType + "查询DIS_NEWFILEINFO_JAVA表中上次的生成时间为" + updateTime, "ZipToSqbServiceImpl-createSqbByDll");
int hours = DateTimeUtil.getHour(date);
if (updateTime != null) {
if (hours != DateTimeUtil.getHour(updateTime)) {
isGenerate = true;
}
} else {
isGenerate = true;
}
} else {
isGenerate = true;
}
if (isGenerate) {
//如果是增量先查询上一版本的版本号
if (Constant.ONE_HOUR_ISSUED.contains(protocolType)) {
version = getVersion(protocolType, date);
LogUtil.WriteLog_HRBlackCard("[uuid:" + uuid + "]-最终增量本次版本号为" + version, "ZipToSqbServiceImpl-createSqbByDll");
}
//增量目录名称
StringBuilder incDirLst = new StringBuilder();
boolean fDir = false;
for (int i = 0; i < Integer.parseInt(emercarincDay); i++) {
if (fDir) {
incDirLst.append("|");
}
incDirLst.append(NFSFilePath).append(PathUtil.downFileBackup).append(dbfDir).append(File.separator).append(DateTimeUtil.getFormateString(DateTimeUtil.addDateDays(date, -i), Constant.YYYYMMDD));
fDir = true;
}
zlibSqbName = bfSqbName + Constant.STR_ + formateString + Constant.STR_ + version + Constant.STR_ZLIB;
sqbZlibPathName = sqbPath + dbfDir + File.separator + zlibSqbName;
LogUtil.WriteLog_HRBlackCard("[uuid:" + uuid + "]-调用动态库生成增量SQB文件中,协议类型为" + protocolType + "zip文件名为" + fileName, "ZipToSqbServiceImpl-createSqbByDll");
//获取最新的全量sqb文件全路径
//全量文件
String sqbQlFileDir = NFSFilePath + PathUtil.sqbBackPath + dbfDir;
String pblackAllFileName = "";
List<FileInfo> fileInfos2 = new ArrayList<>();
File[] files2 = new File(sqbQlFileDir).listFiles();
if (null != files2 && files2.length > 0) {
for (File file : files2) {
if (file.isFile() && file.getName().endsWith(Constant.STR_SQB) && file.getName().contains(qlSqbName)) {
FileInfo fileInfo = new FileInfo();
fileInfo.setFileName(file.getName());
fileInfo.setLastModified(new Date(file.lastModified()));
fileInfo.setFilePath(file.getPath());
fileInfos2.add(fileInfo);
}
}
//获取当前时间的全量文件版本号
String nowVersion = DateTimeUtil.getFormateString(date, Constant.YYMMDD) + "103";
if (fileInfos2.size() > 0) {
//对文件的最后修改时间进行排序
fileInfos2.sort(Comparator.comparing(FileInfo::getLastModified));
for (FileInfo fileInfo2 : fileInfos2) {
if (DateUtils.isSameDay(date, fileInfo2.getLastModified()) || fileInfo2.getFileName().contains(nowVersion)) {
pblackAllFileName = fileInfo2.getFileName();
break;
}
}
if (StringUtils.isBlank(pblackAllFileName)) {
pblackAllFileName = fileInfos2.get(0).getFileName();
}
} else {
LogUtil.WriteLog_Error("[uuid:" + uuid + "]-获取当日全量SQB文件失败", "ZipToSqbServiceImpl-createSqbByDll");
//更新sqlite任务表的任务状态为2-报错
DatabaseUtil.insertSqlite(sqliteDriverName, sqliteUrl, Constant.ERROR_UPDATE_BUSINESS_HANDLER + businessTask.getId());
}
LogUtil.WriteLog_HRBlackCard("[uuid:" + uuid + "]-获取当日全量SQB文件名称" + pblackAllFileName, "ZipToSqbServiceImpl-createSqbByDll");
}
//如果没有最新的全量SQB文件时不生成增量文件
if (StringUtils.isNotBlank(pblackAllFileName)) {
LogUtil.WriteLog_HRBlackCard("[uuid:" + uuid + "]-调用动态库生成增量入参,全量SQB文件全路径" + (sqbQlFileDir + File.separator + pblackAllFileName).replace("\\", "/"), "ZipToSqbServiceImpl-createSqbByDll");
LogUtil.WriteLog_HRBlackCard("[uuid:" + uuid + "]-调用动态库生成增量入参,生成SQB文件全路径" + sqbPathName.replace("\\", "/"), "ZipToSqbServiceImpl-createSqbByDll");
LogUtil.WriteLog_HRBlackCard("[uuid:" + uuid + "]-调用动态库生成增量入参,生成SQBzlib文件全路径" + sqbZlibPathName.replace("\\", "/"), "ZipToSqbServiceImpl-createSqbByDll");
countSqb = CMinFeeCreator.INSTANCE.MakeBlackIncSQB(etcType, version, format, incDirLst.toString(),
(sqbQlFileDir + File.separator + pblackAllFileName).replace("\\", "/"),
sqbPathName.replace("\\", "/"), sqbZlibPathName.replace("\\", "/"), bytMd5);
LogUtil.WriteLog_HRBlackCard("[uuid:" + uuid + "]-]调用动态库生成增量SQB文件完成,返回值为" + countSqb, "ZipToSqbServiceImpl-createSqbByDll");
}
} else {
LogUtil.WriteLog_HRBlackCard("[uuid:" + uuid + "]-该时间点" + protocolType + "已下发/或者该点不下发", "ZipToSqbServiceImpl-createSqbByDll");
//更新sqlite任务表的任务状态为3-不下发
DatabaseUtil.insertSqlite(sqliteDriverName, sqliteUrl,
Constant.NOT_DIS_UPDATE_BUSINESS_HANDLER + DateTimeUtil.getFormateString(new Date(), Constant.YYYY_MM_DD_HH_MM_SS) + Constant.WHERE_ID + businessTask.getId());
LogUtil.WriteLog_HRBlackCard("[uuid:" + uuid + "]-更新business_tasks_info任务表的下发状态为3-不下发id为" + businessTask.getId(), "ZipToSqbServiceImpl-createSqbByDll");
}
}else{
//获取当前加载几天的增量
String incDays = StringUtils.isNotBlank(PropertiesUtil.getValue("incDays")) ? PropertiesUtil.getValue("incDays") : "10";
LogUtil.WriteLog_HRBlackCard("[uuid:" + uuid + "]-调用动态库生成增量SQB文件中,协议类型为" + protocolType + "zip文件名为" + fileName, "ZipToSqbServiceImpl-createSqbByDll"); LogUtil.WriteLog_HRBlackCard("[uuid:" + uuid + "]-调用动态库生成增量SQB文件中,协议类型为" + protocolType + "zip文件名为" + fileName, "ZipToSqbServiceImpl-createSqbByDll");
//每天生成一个备份zip文件夹存放增量下载的zip文件 //每天生成一个备份zip文件夹存放增量下载的zip文件
dayBackPath = NFSFilePath + PathUtil.downFileBackup + dbfDir + File.separator + dateTime + File.separator; dayBackPath = NFSFilePath + PathUtil.downFileBackup + dbfDir + File.separator + dateTime + File.separator;
@ -515,6 +630,8 @@ public class ZipToSqbServiceImpl implements ZipToSqbService {
LogUtil.WriteLog_MDBlackCard("[uuid:" + uuid + "]-调用动态库生成全量SQB文件完成,返回值为" + countSqb, "ZipToSqbServiceImpl-createMDSqbByDll"); LogUtil.WriteLog_MDBlackCard("[uuid:" + uuid + "]-调用动态库生成全量SQB文件完成,返回值为" + countSqb, "ZipToSqbServiceImpl-createMDSqbByDll");
} else { } else {
//获取当前加载几天的增量
String incDays = StringUtils.isNotBlank(PropertiesUtil.getValue("incDays")) ? PropertiesUtil.getValue("incDays") : "10";
LogUtil.WriteLog_MDBlackCard("[uuid:" + uuid + "]-调用动态库生成增量SQB文件中,协议类型为" + protocolType + "zip文件名为" + fileName, "ZipToSqbServiceImpl-createMDSqbByDll"); LogUtil.WriteLog_MDBlackCard("[uuid:" + uuid + "]-调用动态库生成增量SQB文件中,协议类型为" + protocolType + "zip文件名为" + fileName, "ZipToSqbServiceImpl-createMDSqbByDll");
//每天生成一个备份zip文件夹存放增量下载的zip文件 //每天生成一个备份zip文件夹存放增量下载的zip文件

@ -0,0 +1,35 @@
package com.nm.gsgl.test;
import com.nm.gsgl.common.Constant;
import com.nm.gsgl.common.utils.DateTimeUtil;
import com.nm.gsgl.common.utils.PathUtil;
import com.nm.gsgl.common.utils.PropertiesUtil;
import org.apache.commons.lang3.StringUtils;
import java.io.File;
import java.util.Date;
/**
* @author: shuguang
* @date: 20250730 15:35
* @description:
*/
public class Test250730 {
public static void main(String[] args) {
Date date = new Date();
//获取当前加载几天的增量
String emercarincDay = "1";
String dbfDir = "EMERCAR";
StringBuilder incDirLst = new StringBuilder();
boolean fDir = false;
for (int i = 0; i < Integer.parseInt(emercarincDay); i++) {
if (fDir) {
incDirLst.append("|");
}
incDirLst.append("/usr/test").append(File.separator).append(DateTimeUtil.getFormateString(DateTimeUtil.addDateDays(date, -i), Constant.YYYYMMDD));
fDir = true;
}
System.out.println(incDirLst);
}
}
Loading…
Cancel
Save