|
|
|
@ -2,25 +2,32 @@ package com.platform.service.impl;
|
|
|
|
|
|
|
|
|
|
import java.io.File;
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.Collections;
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
|
|
|
|
|
|
import net.sf.json.regexp.RegexpUtils;
|
|
|
|
|
|
|
|
|
|
import org.apache.log4j.Logger;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
|
|
import com.platform.dao.PreDataInfoDao;
|
|
|
|
|
import com.platform.entities.DefaultDataDescription;
|
|
|
|
|
import com.platform.entities.MyFileEntity;
|
|
|
|
|
import com.platform.entities.MyFilesEntity;
|
|
|
|
|
import com.platform.entities.PreDataInfo;
|
|
|
|
|
import com.platform.service.IScriptMakeService;
|
|
|
|
|
import com.platform.utils.BeanCopy;
|
|
|
|
|
import com.platform.utils.Compare4MyFilesEntity;
|
|
|
|
|
import com.platform.utils.Configs;
|
|
|
|
|
import com.platform.utils.Constant;
|
|
|
|
|
import com.platform.utils.FileOperateHelper;
|
|
|
|
|
import com.platform.utils.XmlOperationByDom4j;
|
|
|
|
|
|
|
|
|
|
import dk.brics.automaton.RegExp;
|
|
|
|
|
|
|
|
|
|
@Service(value = "scriptMakeService")
|
|
|
|
|
public class ScriptMakeService implements IScriptMakeService {
|
|
|
|
|
|
|
|
|
@ -34,7 +41,7 @@ public class ScriptMakeService implements IScriptMakeService {
|
|
|
|
|
public int makeCfg() throws Exception {
|
|
|
|
|
log.info("makeCfg");
|
|
|
|
|
List<PreDataInfo> systemInfoList = preDataInfoDao.findAll();
|
|
|
|
|
String path = FileOperateHelper.addLastSeparator(Configs.sql_script_path_standard);
|
|
|
|
|
String path = FileOperateHelper.addLastSeparator(Configs.SQL_SCRIPT_PATH_STANDARD);
|
|
|
|
|
StringBuffer sb = new StringBuffer();
|
|
|
|
|
sb.append("市\t县(市、区)\t行政区划代码\r\n");
|
|
|
|
|
Map<String, Object> startData = new HashMap<String, Object>();
|
|
|
|
@ -61,7 +68,7 @@ public class ScriptMakeService implements IScriptMakeService {
|
|
|
|
|
public int makeXml() throws Exception {
|
|
|
|
|
log.info("makeXml");
|
|
|
|
|
List<PreDataInfo> systemInfoList = preDataInfoDao.findAll();
|
|
|
|
|
String dirpath = FileOperateHelper.addLastSeparator(Configs.sql_script_path_standard);
|
|
|
|
|
String dirpath = FileOperateHelper.addLastSeparator(Configs.SQL_SCRIPT_PATH_STANDARD);
|
|
|
|
|
Map<String, List<Object>> map = new HashMap<String, List<Object>>();
|
|
|
|
|
for (PreDataInfo preDataInfo : systemInfoList) {
|
|
|
|
|
putSystemByAreaCode(map, preDataInfo.getAreaCode(), preDataInfo);
|
|
|
|
@ -86,15 +93,23 @@ public class ScriptMakeService implements IScriptMakeService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public int moveFiles(MyFileEntity file) throws Exception {
|
|
|
|
|
// TODO Auto-generated method stub
|
|
|
|
|
public int moveFiles(List<MyFilesEntity> files) throws Exception {
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<MyFileEntity> FindFiles() throws Exception {
|
|
|
|
|
// TODO Auto-generated method stub
|
|
|
|
|
return null;
|
|
|
|
|
public List<MyFilesEntity> FindAllFiles() throws Exception {
|
|
|
|
|
List<PreDataInfo> systemDataInfo = preDataInfoDao.findAll();
|
|
|
|
|
// 查找 Configs.SQL_SCRIPT_PATH_LAST 路径下的 所有的文件:路径
|
|
|
|
|
Map<String, String> sqlFilePathsLast = new HashMap<String, String>();
|
|
|
|
|
sqlFilePathsLast = getAllFile(sqlFilePathsLast, Configs.SQL_SCRIPT_PATH_LAST);
|
|
|
|
|
//遍历 查找 Configs.SQL_SCRIPT_PATH_STANDARD 脚本文件 放入集合中
|
|
|
|
|
Map<String, String> sqlFilePathsStandard = new HashMap<String, String>();
|
|
|
|
|
sqlFilePathsStandard = getAllFile(sqlFilePathsStandard, Configs.SQL_SCRIPT_PATH_STANDARD);
|
|
|
|
|
// 填充 脚本状态、位置的信息
|
|
|
|
|
List<MyFilesEntity> result = setScript(systemDataInfo, sqlFilePathsStandard, sqlFilePathsLast);
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -113,4 +128,132 @@ public class ScriptMakeService implements IScriptMakeService {
|
|
|
|
|
return map;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/** 遍历文件
|
|
|
|
|
* @param ps
|
|
|
|
|
* @param path
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
private Map<String, String> getAllFile(Map<String, String> ps, String path){
|
|
|
|
|
File f = new File(path);
|
|
|
|
|
String name = f.getName();
|
|
|
|
|
//如果是 sql文件
|
|
|
|
|
if(name.endsWith(".sql") || name.endsWith(".SQL"))
|
|
|
|
|
ps.put(name.toLowerCase(),f.getAbsolutePath());
|
|
|
|
|
if (f.exists()) {
|
|
|
|
|
String[] subpaths = f.list();
|
|
|
|
|
if (null != subpaths) {
|
|
|
|
|
for (String tmppath : subpaths) {
|
|
|
|
|
getAllFile(ps, f.getAbsolutePath()+"/"+tmppath);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return ps;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @param systemDataInfo 系统信息
|
|
|
|
|
* @param sqlFilePathsStandard 标准的-归档的脚本
|
|
|
|
|
* @param sqlFilePathsLast 最新的脚本
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
private List<MyFilesEntity> setScript(List<PreDataInfo> systemDataInfo, Map<String, String> sqlFilePathsStandard, Map<String, String> sqlFilePathsLast){
|
|
|
|
|
List<MyFilesEntity> fileEntitys = new ArrayList<MyFilesEntity>();
|
|
|
|
|
for (PreDataInfo preDataInfo : systemDataInfo) {
|
|
|
|
|
MyFilesEntity myfile = new MyFilesEntity();
|
|
|
|
|
//复制
|
|
|
|
|
BeanCopy.copyBean(preDataInfo, myfile);
|
|
|
|
|
// 归档表空间脚本的位置-
|
|
|
|
|
String TablePathStandard = getFilePath("UserTablespace_", sqlFilePathsStandard, myfile, ".sql");
|
|
|
|
|
myfile.setUserTableScriptPathStandard(TablePathStandard);
|
|
|
|
|
// 归档预算 脚本的位置-
|
|
|
|
|
String indicatePathStandard = getFilePath("Checkout_Indicate_", sqlFilePathsStandard, myfile, ".sql");
|
|
|
|
|
myfile.setCkIndicateScriptPathStandard(indicatePathStandard);
|
|
|
|
|
// 归档表空间脚本的位置-
|
|
|
|
|
String payPathStandard = getFilePath("Checkout_Pay_", sqlFilePathsStandard, myfile, ".sql");
|
|
|
|
|
myfile.setCkPayScriptPathStandard(payPathStandard);
|
|
|
|
|
// 最新表空间脚本的位置-
|
|
|
|
|
String TablePathLast = getFilePath("UserTablespace_", sqlFilePathsLast, myfile, ".sql");
|
|
|
|
|
myfile.setUserTableScriptPathLast(TablePathLast);
|
|
|
|
|
// 最新预算 脚本的位置-
|
|
|
|
|
String indicatePathLast = getFilePath("Checkout_Indicate_", sqlFilePathsLast, myfile, ".sql");
|
|
|
|
|
myfile.setCkIndicateScriptPathLast(indicatePathLast);
|
|
|
|
|
// 最新表空间脚本的位置-
|
|
|
|
|
String payPathLast = getFilePath("Checkout_Pay_", sqlFilePathsLast, myfile, ".sql");
|
|
|
|
|
myfile.setCkPayScriptPathLast(payPathLast);
|
|
|
|
|
//设置 状态
|
|
|
|
|
myfile.setUserTableStatus(getStatus(myfile.getUserTableScriptPathStandard(), myfile.getUserTableScriptPathLast()));
|
|
|
|
|
myfile.setCkIndicateStatus(getStatus(myfile.getCkIndicateScriptPathStandard(), myfile.getCkIndicateScriptPathLast()));
|
|
|
|
|
myfile.setCkPayStatus(getStatus(myfile.getCkPayScriptPathStandard(), myfile.getCkPayScriptPathLast()));
|
|
|
|
|
myfile.setSysStatus(getTotalStatus(myfile));
|
|
|
|
|
fileEntitys.add(myfile);
|
|
|
|
|
}
|
|
|
|
|
Compare4MyFilesEntity com = new Compare4MyFilesEntity();
|
|
|
|
|
Collections.sort(fileEntitys, com);
|
|
|
|
|
return fileEntitys;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/** 查找文件
|
|
|
|
|
* @param prefix
|
|
|
|
|
* @param map
|
|
|
|
|
* @param myf
|
|
|
|
|
* @param affix
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
private String getFilePath(String prefix, Map<String, String> map, MyFilesEntity myf, String affix) {
|
|
|
|
|
StringBuffer sb = new StringBuffer();
|
|
|
|
|
sb.append(prefix).append(myf.getAreaCode().toLowerCase()).append("_").append(myf.getSysCode()).append(affix.toLowerCase());
|
|
|
|
|
String fileName = sb.toString().toLowerCase();
|
|
|
|
|
if (!map.keySet().contains(fileName)) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
// 地区字母 小写 -- 文件属性小写
|
|
|
|
|
String pathStandard = map.get(fileName);
|
|
|
|
|
return pathStandard;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/** 返回状态--0: standard, last为空; 1:standard不空,last为空; 2:standard为空,last不空,3:standard不空,last不空
|
|
|
|
|
* 对应 含义,操作: 0:(有缺失,上传) ; 1: (正常 ,查看); 2:(待归档,归档) ; 3: (待审核,审核)
|
|
|
|
|
* @param standard
|
|
|
|
|
* @param last
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
private int getStatus(String standard, String last) {
|
|
|
|
|
int status = 0;
|
|
|
|
|
if (null != standard && !standard.isEmpty()) {
|
|
|
|
|
status = status | 1;
|
|
|
|
|
}
|
|
|
|
|
if (null != last && !last.isEmpty()) {
|
|
|
|
|
status = status | 2;
|
|
|
|
|
}
|
|
|
|
|
return status;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/** 返回状态
|
|
|
|
|
* 对应 含义,操作: 0:(有缺失,上传) ; 1: (正常 ,查看); 2:(待归档,归档) ; 3: (待审核,审核)
|
|
|
|
|
* @param standard
|
|
|
|
|
* @param last
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
private int getTotalStatus(MyFilesEntity myfile) {
|
|
|
|
|
Integer[] numArr = new Integer[3];
|
|
|
|
|
Integer result = 1;
|
|
|
|
|
numArr[0] = myfile.getUserTableStatus();
|
|
|
|
|
numArr[1] = myfile.getCkIndicateStatus();
|
|
|
|
|
numArr[2] = myfile.getCkPayStatus();
|
|
|
|
|
for (Integer integer : numArr) {
|
|
|
|
|
if (integer != 1) {
|
|
|
|
|
result = integer;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (result == 1) {
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
for (Integer integer : numArr) {
|
|
|
|
|
if (integer != 1) {
|
|
|
|
|
result = result & integer;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|