📄 datald.java
字号:
package net.aetherial.gis.baobu.TotalExcel;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import net.aetherial.gis.output.FileOperate;
import net.aetherial.gis.surface.ItemValue;
public class DataLd {
/**
* @param args
*/
private String oldFilePath = "E:\\temp\\first"; // 上一次报部数据路径
private String newFilePath = "E:\\temp\\current"; // 本次数据路径
// private String oldFilePath = "d:\\test"; //上一次报部数据路径
// private String newFilePath = "d:\\testbak"; //本次数据路径
private List newAddList = new ArrayList(); // 新增的乡镇、行政村
private List delList = new ArrayList(); // 已经删除的乡镇、行政村
private String[] oldLdArray = null;
private String[] newLdArray = null;
private String cityName = ""; // 城市名
/*
* 构造函数
*/
public DataLd() {
super();
}
public void print(List list) {
List l = list;
for (int j = 0; j < l.size(); j++) {
String str = (String) l.get(j);
System.out.println(str);
}
}
public void printAll() throws IOException {
String filePath = "E:\\test";
File allFile = new File(filePath);
File[] files = allFile.listFiles();// 获取城市目录列表
for (int i = 0; files != null && i < files.length; i++) {
filePath = files[i].getPath();
String tempPath = filePath.replace('\\', ',');
String[] paths = tempPath.split(",");
int lenInt = paths.length - 1;
String shiName = paths[lenInt]; // 城市名
this.oldFilePath = filePath + "\\first"; // 上次报部接口文件路径
this.newFilePath = filePath + "\\current"; // 本次报部接口文件路径
this.cityName = shiName;
CommClass cc = new CommClass();
oldLdArray = cc.getOldLd(this.oldFilePath);
newLdArray = cc.getNewLd(this.newFilePath);
System.out.println("***************正在处理 " + shiName
+ " 数据! ********************");
/*
* System.out.println(" 正在处理 已删除路段一览表..."); getDelRoadS();
* System.out.println(" 正在处理 已保留路段一览表..."); getBoliuLD();
* System.out.println(" 正在处理 新增加路段一览表..."); getAddLD();
* System.out.println(" 正在处理 超范围删除路段一览表..."); getDelLuDuan();
* System.out.println(" 正在处理 有更改路段一览表..."); getAlterLuDuan();
*/
System.out.println(" 正在处理 有更改路线一览表...");
getAlterLX();
// System.out.println(" 正在处理 新增加路线一览表...");
// getAddLX();
// System.out.println(" 正在处理 已删除路线一览表...");
// getDelLX();
System.out.println("*************** " + shiName
+ " 数据比较完成! ********************");
}
}
// 已经删除的路线
public List getDelRoadS() throws IOException {
List tempList = new ArrayList();
FileOperate fo = new FileOperate();
String outPutFile = "E:\\报部接口文件\\" + this.cityName + "\\已经删除的路段一览表.txt";
File newFile = fo.createFolder(outPutFile);
FileWriter resultFile = new FileWriter(newFile);
PrintWriter myFile = new PrintWriter(resultFile);
CommClass cc = new CommClass();
String[] list2 = this.oldLdArray;
String[] list1 = this.newLdArray;
String oldLineStr = "";
String newLineStr = "";
String oldQiDianName = "";
String oldZhiDianName = "";
String oldLiCheng = "";
String newQiDianName = "";
String newZhiDianName = "";
String newLiCheng = "";
String[] oldLine = null;
String[] newLine = null;
double xianCount = 0.0;
double xiangCount = 0.0;
double cunCount = 0.0;
double sumCount = 0.0;
double xianCFCount = 0.0;
double xiangCFCount = 0.0;
double cunCFCount = 0.0;
String tempStr = "";
int n = 0;
int lineInt = 0;
System.out.println("正在比较数据,请稍后...");
for (int i = 0; list2 != null && i < list2.length; i++) {
newLineStr = list2[i];
newLine = newLineStr.split("\t");
oldQiDianName = newLine[5];
oldZhiDianName = newLine[11];
oldLiCheng = newLine[19];
n = 0;
for (int j = 0; list1 != null && j < list1.length; j++) {
oldLineStr = list1[j];
oldLine = oldLineStr.split("\t");
newQiDianName = oldLine[5];
newZhiDianName = oldLine[11];
newLiCheng = oldLine[19];
if (oldQiDianName.equals(newQiDianName)
&& oldZhiDianName.equals(newZhiDianName)
&& oldLiCheng.equals(newLiCheng)) {
n++;
break;
}
}
if (n == 0) {
lineInt++;
System.out
.println("已删除路段: " + newLine[0] + " " + newLine[1]);
if (newLine[1].trim().substring(0, 1).equals("X")) {
xianCount += Double.parseDouble(oldLiCheng);
if (newLine[22].trim().equals("1"))
xianCFCount += Double.parseDouble(oldLiCheng);
if (newLine[26].trim().equals("1"))
xianCFCount += Double.parseDouble(oldLiCheng);
}
if (newLine[1].trim().substring(0, 1).equals("Y")) {
xiangCount += Double.parseDouble(oldLiCheng);
if (newLine[22].trim().equals("1"))
xiangCFCount += Double.parseDouble(oldLiCheng);
if (newLine[26].trim().equals("1"))
xiangCFCount += Double.parseDouble(oldLiCheng);
}
if (newLine[1].trim().substring(0, 1).equals("C")) {
cunCount += Double.parseDouble(oldLiCheng);
if (newLine[22].trim().equals("1"))
cunCFCount += Double.parseDouble(oldLiCheng);
if (newLine[26].trim().equals("1"))
cunCFCount += Double.parseDouble(oldLiCheng);
}
myFile.write(newLineStr + "\r\n");
}
}
sumCount = xianCount + xiangCount + cunCount - xianCFCount
- xiangCFCount - cunCFCount;
tempStr = "合计:" + sumCount + "\t" + xianCount + "\t" + xiangCount
+ "\t" + cunCount + "\t" + xianCFCount + "\t" + xiangCFCount
+ "\t" + cunCFCount;
myFile.write(tempStr + "\r\n");
myFile.close();
return tempList;
}
// 已经保留的路段
public List getBoliuLD() throws IOException {
List tempList = new ArrayList();
FileOperate fo = new FileOperate();
String outPutFile = "E:\\报部接口文件\\" + this.cityName + "\\已经保留的路段一览表.txt";
File newFile = fo.createFolder(outPutFile);
FileWriter resultFile = new FileWriter(newFile);
PrintWriter myFile = new PrintWriter(resultFile);
CommClass cc = new CommClass();
String[] list1 = this.oldLdArray;
String[] list2 = this.newLdArray;
String oldLineStr = "";
String newLineStr = "";
String oldQiDianName = "";
String oldZhiDianName = "";
String oldLiCheng = "";
String newQiDianName = "";
String newZhiDianName = "";
String newLiCheng = "";
String[] oldLine = null;
String[] newLine = null;
double xianCount = 0.0;
double xiangCount = 0.0;
double cunCount = 0.0;
double sumCount = 0.0;
double xianCFCount = 0.0;
double xiangCFCount = 0.0;
double cunCFCount = 0.0;
String tempStr = "";
int n = 0;
int lineInt = 0;
System.out.println("正在比较数据,请稍后...");
for (int i = 1; list2 != null && i < list2.length; i++) {
newLineStr = list2[i];
newLine = newLineStr.split("\t");
oldQiDianName = newLine[5];
oldZhiDianName = newLine[11];
oldLiCheng = newLine[19];
n = 0;
for (int j = 1; list1 != null && j < list1.length; j++) {
oldLineStr = list1[j];
oldLine = oldLineStr.split("\t");
newQiDianName = oldLine[5];
newZhiDianName = oldLine[11];
newLiCheng = oldLine[19];
if (oldQiDianName.equals(newQiDianName)
&& oldZhiDianName.equals(newZhiDianName)
&& oldLiCheng.equals(newLiCheng)) {
n = 1;
break;
}
}
if (n == 1) {
lineInt++;
if (newLine[1].trim().substring(0, 1).equals("X")) {
xianCount += Double.parseDouble(oldLiCheng);
if (newLine[22].trim().equals("1"))
xianCFCount += Double.parseDouble(oldLiCheng);
if (newLine[26].trim().equals("1"))
xianCFCount += Double.parseDouble(oldLiCheng);
}
if (newLine[1].trim().substring(0, 1).equals("Y")) {
xiangCount += Double.parseDouble(oldLiCheng);
if (newLine[22].trim().equals("1"))
xiangCFCount += Double.parseDouble(oldLiCheng);
if (newLine[26].trim().equals("1"))
xiangCFCount += Double.parseDouble(oldLiCheng);
}
if (newLine[1].trim().substring(0, 1).equals("C")) {
cunCount += Double.parseDouble(oldLiCheng);
if (newLine[22].trim().equals("1"))
cunCFCount += Double.parseDouble(oldLiCheng);
if (newLine[26].trim().equals("1"))
cunCFCount += Double.parseDouble(oldLiCheng);
}
System.out
.println("已保留路段: " + newLine[0] + " " + newLine[1]);
tempStr = oldLine[0] + "\t" + oldLine[1] + "\t" + newLine[0]
+ "\t" + newLine[1] + "\t" + oldQiDianName + "\t"
+ oldZhiDianName + "\t" + oldLiCheng;
myFile.write(tempStr + "\r\n");
}
}
sumCount = xianCount + xiangCount + cunCount - xianCFCount
- xiangCFCount - cunCFCount;
tempStr = "合计:" + sumCount + "\t" + xianCount + "\t" + xiangCount
+ "\t" + cunCount + "\t" + xianCFCount + "\t" + xiangCFCount
+ "\t" + cunCFCount;
myFile.write(tempStr + "\r\n");
myFile.close();
return tempList;
}
// 新增加的路段
public List getAddLD() throws IOException {
List tempList = new ArrayList();
FileOperate fo = new FileOperate();
String outPutFile = "E:\\报部接口文件\\" + this.cityName + "\\新增加的路段一览表.txt";
File newFile = fo.createFolder(outPutFile);
FileWriter resultFile = new FileWriter(newFile);
PrintWriter myFile = new PrintWriter(resultFile);
CommClass cc = new CommClass();
String[] list1 = this.oldLdArray;
String[] list2 = this.newLdArray;
String tempStr = "";
String oldLineStr = "";
String newLineStr = "";
String oldQiDianName = "";
String oldZhiDianName = "";
String oldLiCheng = "";
String newQiDianName = "";
String newZhiDianName = "";
String newLiCheng = "";
String[] oldLine = null;
String[] newLine = null;
double xianCount = 0.0;
double xiangCount = 0.0;
double cunCount = 0.0;
double sumCount = 0.0;
double xianCFCount = 0.0;
double xiangCFCount = 0.0;
double cunCFCount = 0.0;
int n = 0;
int lineInt = 0;
System.out.println("正在比较数据,请稍后...");
for (int i = 1; list2 != null && i < list2.length; i++) {
newLineStr = list2[i];
newLine = newLineStr.split("\t");
oldQiDianName = newLine[7];
oldZhiDianName = newLine[13];
oldLiCheng = newLine[19];
n = 0;
// sumCount = 0.0;
for (int j = 1; list1 != null && j < list1.length; j++) {
oldLineStr = list1[j];
oldLine = oldLineStr.split("\t");
newQiDianName = oldLine[7];
newZhiDianName = oldLine[13];
newLiCheng = oldLine[19];
if ((oldQiDianName.equals(newQiDianName)
&& oldZhiDianName.equals(newZhiDianName) && oldLiCheng
.equals(newLiCheng))
|| ((oldQiDianName.equals(newQiDianName) && oldZhiDianName
.equals(newZhiDianName)) || oldLiCheng
.equals(newLiCheng))
|| (oldQiDianName.equals(newQiDianName)
|| oldLiCheng.equals(newLiCheng) || oldZhiDianName
.equals(newZhiDianName))) {
n++;
break;
}
}
if (n == 0) {
lineInt++;
System.out
.println("新增加路段: " + newLine[0] + " " + newLine[1]);
if (newLine[1].trim().substring(0, 1).equals("X")) {
xianCount += Double.parseDouble(oldLiCheng);
if (newLine[22].trim().equals("1"))
xianCFCount += Double.parseDouble(oldLiCheng);
if (newLine[26].trim().equals("1"))
xianCFCount += Double.parseDouble(oldLiCheng);
}
if (newLine[1].trim().substring(0, 1).equals("Y")) {
xiangCount += Double.parseDouble(oldLiCheng);
if (newLine[22].trim().equals("1"))
xiangCFCount += Double.parseDouble(oldLiCheng);
if (newLine[26].trim().equals("1"))
xiangCFCount += Double.parseDouble(oldLiCheng);
}
if (newLine[1].trim().substring(0, 1).equals("C")) {
cunCount += Double.parseDouble(oldLiCheng);
if (newLine[22].trim().equals("1"))
cunCFCount += Double.parseDouble(oldLiCheng);
if (newLine[26].trim().equals("1"))
cunCFCount += Double.parseDouble(oldLiCheng);
}
tempStr = newLine[0] + "\t" + newLine[1] + "\t" + newLine[2]
+ "\t" + newLine[19];
myFile.write(tempStr + "\r\n");
}
}
sumCount = xianCount + xiangCount + cunCount - xianCFCount
- xiangCFCount - cunCFCount;
tempStr = "合计:" + sumCount + "\t" + xianCount + "\t" + xiangCount
+ "\t" + cunCount + "\t" + xianCFCount + "\t" + xiangCFCount
+ "\t" + cunCFCount;
myFile.write(tempStr + "\r\n");
myFile.close();
return tempList;
}
// 新增加的路线(处理县乡道)
public List getAddLX() throws IOException {
// List list1 = new ArrayList();
// List list2 = new ArrayList();
List tempList = new ArrayList();
FileOperate fo = new FileOperate();
String outPutFile = "E:\\报部接口文件\\" + this.cityName + "\\新增加的路线一览表.txt";
File newFile = fo.createFolder(outPutFile);
FileWriter resultFile = new FileWriter(newFile);
PrintWriter myFile = new PrintWriter(resultFile);
CommClass cc = new CommClass();
// String [] newLdList = cc.getNewLd(this.newFilePath);
String[] list1 = cc.getRoadArray(this.oldFilePath);
String[] list2 = cc.getRoadArray(this.newFilePath);
String tempStr = "";
String oldLineStr = "";
String newLineStr = "";
String oldRoadNumber = "";
String newRoadNumber = "";
String newRoadName = "";
String oldRoadName = "";
String[] oldLine = null;
String[] newLine = null;
double[] roadMile = null;
double sumCount = 0.0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -