You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
457 lines
18 KiB
Java
457 lines
18 KiB
Java
package com.api.sfj.DA.util;
|
|
|
|
import org.dom4j.Document;
|
|
import org.dom4j.DocumentHelper;
|
|
import org.dom4j.Element;
|
|
import org.dom4j.io.OutputFormat;
|
|
import org.dom4j.io.XMLWriter;
|
|
import weaver.conn.RecordSet;
|
|
import weaver.general.BaseBean;
|
|
|
|
import java.io.File;
|
|
import java.io.FileOutputStream;
|
|
import java.util.*;
|
|
|
|
public class CreatXML {
|
|
|
|
|
|
//
|
|
// public static void main(String[] args) {
|
|
// Long start = System.currentTimeMillis();
|
|
// HashMap map = new HashMap();
|
|
// // createGDWJXml("","D:/WEAVER/DA",map);
|
|
// // createYJSMXml();
|
|
// System.out.println("运行时间:"+ (System.currentTimeMillis() - start));
|
|
// }
|
|
|
|
// public static void main(String[] args) {
|
|
// String fileName="1e01r515g45g5g015.zip";
|
|
// String fileNameNoEx = getFileNameNoEx(fileName);
|
|
// System.out.println(fileNameNoEx);
|
|
//
|
|
// }
|
|
|
|
public static String getFileNameNoEx(String filename) {
|
|
|
|
if ((filename != null) && (filename.length() > 0)) {
|
|
|
|
int dot = filename.lastIndexOf('.');
|
|
|
|
if ((dot >-1) && (dot < (filename.length()))) {
|
|
|
|
return filename.substring(0, dot);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return filename;
|
|
|
|
}
|
|
|
|
public static boolean isEmpty(String str) {
|
|
if ("".equals(str) || str == null) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 生成xml方法
|
|
*/
|
|
public void createGDWJXml(String path, HashMap<String, Object> map) throws Exception {
|
|
|
|
BaseBean bs = new BaseBean();
|
|
bs.writeLog("进入xml生成方法---归档文件");
|
|
|
|
bs.writeLog("进入xml生成方法---归档文件---" + map);
|
|
|
|
bs.writeLog("进入xml生成方法---归档文件---准备执行sql");
|
|
String fj = map.get("fj").toString();
|
|
|
|
|
|
|
|
bs.writeLog("创建document对象");
|
|
// 1、创建document对象
|
|
Document document = DocumentHelper.createDocument();
|
|
// 2、创建根节点rss
|
|
Element root = document.addElement("root");
|
|
// 3、向rss节点添加version属性
|
|
// root.addAttribute("version", "2.0");
|
|
// 4、生成子节点及子节点内容
|
|
Element v1 = root.addElement("电子文件移交存储数据包");
|
|
Element v2 = v1.addElement("文件实体");
|
|
Element w1 = v2.addElement("档号");
|
|
Element w2 = v2.addElement("题名");
|
|
Element w3 = v2.addElement("并列题名");
|
|
Element w4 = v2.addElement("类别");
|
|
Element w5 = v2.addElement("主题词或关键字");
|
|
Element w6 = v2.addElement("人名");
|
|
Element w7 = v2.addElement("文件编号");
|
|
Element w8 = v2.addElement("责任者");
|
|
Element w9 = v2.addElement("保管期限");
|
|
Element w10 = v2.addElement("机构或问题");
|
|
Element w11 = v2.addElement("控制标识");
|
|
Element w12 = v2.addElement("日期");
|
|
Element w13 = v2.addElement("文种");
|
|
Element w14 = v2.addElement("主送");
|
|
Element w15 = v2.addElement("抄送");
|
|
Element w16 = v2.addElement("密级");
|
|
Element w17 = v2.addElement("保密期限");
|
|
Element w18 = v2.addElement("页数");
|
|
Element w19 = v2.addElement("附注");
|
|
Element w20 = v2.addElement("脱机载体编号");
|
|
//正文 稿本块
|
|
Element g21 = v2.addElement("稿本块");
|
|
Element g211 = g21.addElement("稿本");
|
|
Element g2111 = g211.addElement("稿本类型");
|
|
Element g2112 = g211.addElement("稿本文件");
|
|
Element g2113 = g211.addElement("文件标识符");
|
|
|
|
g2111.setText("正文");
|
|
w18.setText("1");
|
|
// g2112.setText("正文文件");
|
|
// g2113.setText("正文标识符");
|
|
|
|
String aq = getfilename(map.get("zw").toString()).get(0).get("gbwj").toString();
|
|
String aq2 = getfilename(map.get("zw").toString()).get(0).get("bsf").toString();
|
|
bs.writeLog("---------------------------正文稿本文件" + aq + "---" + aq2);
|
|
|
|
g2112.setText(aq);
|
|
String fileNameNoEx = getFileNameNoEx(aq2);
|
|
g2113.setText(fileNameNoEx);
|
|
//附件稿本块
|
|
bs.writeLog("获取附件"+map.get("fj").toString());
|
|
if(map.get("fj").toString()=="0" && "0".equals(map.get("fj").toString())){
|
|
// Element g311 = g21.addElement("稿本");
|
|
// Element g3111 = g311.addElement("稿本类型");
|
|
// Element g3112 = g311.addElement("稿本文件");
|
|
// Element g3113 = g311.addElement("文件标识符");
|
|
// g3111.setText("附件");
|
|
// g3112.setText("");
|
|
// g3113.setText("");
|
|
bs.writeLog("---------------------------没有附件");
|
|
}else{
|
|
int i = getfilename(map.get("fj").toString()).size();
|
|
for (int o = 0; o < i; o++) {
|
|
Element g312 = g21.addElement("稿本");
|
|
g312.addElement("稿本类型").setText("附件");
|
|
g312.addElement("稿本文件").setText(getfilename(map.get("fj").toString()).get(o).get("gbwj").toString());
|
|
g312.addElement("文件标识符").setText(getFileNameNoEx(getfilename(map.get("fj").toString()).get(o).get("bsf").toString()));
|
|
}
|
|
String zwofd = map.get("zwofd").toString();
|
|
if (!isEmpty(zwofd)){
|
|
bs.writeLog("zwofd不为空-->"+zwofd);
|
|
int y = getfilename(zwofd).size();
|
|
if (y>0){
|
|
for (int o = 0; o < y; o++) {
|
|
Element g312 = g21.addElement("稿本");
|
|
g312.addElement("稿本类型").setText("附件");
|
|
g312.addElement("稿本文件").setText(getfilename(map.get("zwofd").toString()).get(o).get("gbwj").toString());
|
|
g312.addElement("文件标识符").setText(getFileNameNoEx(getfilename(map.get("zwofd").toString()).get(o).get("bsf").toString()));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
bs.writeLog("---------------------------附件稿本文件" );
|
|
|
|
// Element g311 = g21.addElement("稿本");
|
|
// Element g3111 = g311.addElement("稿本类型");
|
|
// Element g3112 = g311.addElement("稿本文件");
|
|
// Element g3113 = g311.addElement("文件标识符");
|
|
// g3111.setText("附件");
|
|
// g3112.setText("文件");
|
|
// g3113.setText("uuid");
|
|
//处理单稿本块
|
|
|
|
Element g411 = g21.addElement("稿本");
|
|
Element g4111 = g411.addElement("稿本类型");
|
|
Element g4112 = g411.addElement("稿本文件");
|
|
Element g4113 = g411.addElement("文件标识符");
|
|
g4111.setText("处理单");
|
|
bs.writeLog(map.get("zw").toString());
|
|
g4112.setText(getfilename(map.get("zw").toString()).get(0).get("gbwj").toString());
|
|
g4113.setText(map.get("cld").toString());
|
|
//附件稿本块
|
|
// bs.writeLog("-----------------------处理单稿本文件" +cldname+"(2)");
|
|
|
|
List<Map<String, Object>> nodeInfoList = (List<Map<String, Object>>)map.get("nodeInfoList");
|
|
bs.writeLog("-----进入生成xmlAction-----nodeInfoList-->" +nodeInfoList);
|
|
|
|
int size = nodeInfoList.size();
|
|
bs.writeLog("--nodeInfoList--size-->" +size);
|
|
|
|
if (size==0){
|
|
Element w22 = v2.addElement("流程跟踪");//需要循环节点信息
|
|
w22.addElement("环节名称");
|
|
w22.addElement("办理人");
|
|
w22.addElement("办理部门");
|
|
w22.addElement("接收时间");
|
|
w22.addElement("当前状态");
|
|
w22.addElement("完成时间");
|
|
}else {
|
|
for (int i = 0; i < nodeInfoList.size(); i++) {
|
|
//a.id,b.nodename,a.lastname,a.departmentname,a.receivedate,a.receivetime,a.operatedate,a.operatetime
|
|
Element w22 = v2.addElement("流程跟踪");//需要循环节点信息
|
|
w22.addElement("环节名称").setText(nodeInfoList.get(i).get("nodename").toString());
|
|
w22.addElement("办理人").setText(nodeInfoList.get(i).get("lastname").toString());
|
|
w22.addElement("办理部门").setText(nodeInfoList.get(i).get("departmentname").toString());
|
|
String receivedate = nodeInfoList.get(i).get("receivedate").toString();
|
|
String receivetime = nodeInfoList.get(i).get("receivetime").toString();
|
|
String receivet = receivedate+" "+receivetime;
|
|
bs.writeLog("--接收时间-->" +receivet);
|
|
w22.addElement("接收时间").setText(receivet);
|
|
String operatedate = nodeInfoList.get(i).get("operatedate").toString();
|
|
String operatetime = nodeInfoList.get(i).get("operatetime").toString();
|
|
String operate = operatedate+" "+operatetime;
|
|
bs.writeLog("--完成时间-->" +operate);
|
|
String id = nodeInfoList.get(i).get("id").toString();
|
|
if (isEmpty(id)){
|
|
bs.writeLog("--id为空-->" +id);
|
|
w22.addElement("当前状态").setText("未完成");
|
|
}else {
|
|
bs.writeLog("--id不为空-->" +id);
|
|
w22.addElement("当前状态").setText("已完成");
|
|
}
|
|
w22.addElement("完成时间").setText(operate);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
w1.setText(map.get("dh").toString());
|
|
w2.setText(map.get("bt").toString());
|
|
// w3.setText("");
|
|
// w4.setText("");
|
|
// w5.setText("");
|
|
// w6.setText("");
|
|
// w7.setText("");
|
|
w8.setText(map.get("zrz").toString());
|
|
|
|
// w9.setText("");
|
|
// w10.setText("");
|
|
// w11.setText("控制");
|
|
w11.setText(map.get("kzbs").toString());
|
|
w12.setText(map.get("rq").toString());
|
|
w13.setText(map.get("wz").toString());
|
|
// w14.setText("");
|
|
// w15.setText("");
|
|
w16.setText(map.get("mj").toString());
|
|
// w17.setText("");
|
|
// w18.setText("1");
|
|
// w19.setText("");
|
|
// w20.setText("");
|
|
Element v3 = v1.addElement("业务实体块");
|
|
Element w31 = v3.addElement("业务实体");
|
|
Element w311 = w31.addElement("机构人员标识符");
|
|
Element w312 = w31.addElement("业务行为");
|
|
Element w313 = w31.addElement("行为时间");
|
|
Element w314 = w31.addElement("文件标识符");
|
|
|
|
w311.setText(map.get("jgryid").toString());
|
|
w312.setText("归档");
|
|
Date date = new Date();
|
|
w313.setText(date.toString());
|
|
w314.setText(fileNameNoEx);
|
|
|
|
// w311.setText("");
|
|
// w312.setText("");
|
|
// w313.setText("");
|
|
// w314.setText("");
|
|
|
|
Element v4 = v1.addElement("机构人员实体块");
|
|
Element v41 = v4.addElement("机构人员实体");
|
|
Element v411 = v41.addElement("机构人员标识符");
|
|
Element v412 = v41.addElement("机构名称");
|
|
Element v413 = v41.addElement("人员名称");
|
|
v411.setText(map.get("jgryid").toString());
|
|
v412.setText(map.get("jgryBmName").toString());
|
|
v413.setText(map.get("jgryName").toString());
|
|
if (size==0){
|
|
bs.writeLog("--size==0--机构人员实体块-->" );
|
|
}else {
|
|
for (int i = 0; i < nodeInfoList.size(); i++) {
|
|
String id = nodeInfoList.get(i).get("id").toString();
|
|
if (isEmpty(id)){
|
|
bs.writeLog("--id为空不插入机构人员数据-->" +id);
|
|
}else {
|
|
bs.writeLog("--id不为空-->" +id);
|
|
Element v42 = v4.addElement("机构人员实体");
|
|
Element v421 = v42.addElement("机构人员标识符");
|
|
Element v422 = v42.addElement("机构名称");
|
|
Element v423 = v42.addElement("人员名称");
|
|
v421.setText(nodeInfoList.get(i).get("id").toString());
|
|
v422.setText(nodeInfoList.get(i).get("departmentname").toString());
|
|
v423.setText(nodeInfoList.get(i).get("lastname").toString());
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// v411.setText("");
|
|
// v412.setText("");
|
|
// v413.setText("");
|
|
|
|
Element v5 = v1.addElement("实体关系块");
|
|
Element v51 = v5.addElement("实体关系");
|
|
Element v511 = v51.addElement("实体标识");
|
|
Element v512 = v51.addElement("文件标识符");
|
|
v511.setText(map.get("dh").toString());
|
|
v512.setText(fileNameNoEx);
|
|
Element v52 = v5.addElement("实体关系");
|
|
v52.addElement("实体标识").setText(map.get("dh").toString());
|
|
v52.addElement("文件标识符").setText(map.get("cld").toString());
|
|
if(map.get("fj").toString()=="0" && "0".equals(map.get("fj").toString())){
|
|
// v511.setText(map.get("dh").toString());
|
|
// v512.setText(fileNameNoEx);
|
|
}else {
|
|
int y = getfilename(map.get("fj").toString()).size();
|
|
for (int i = 0; i < y; i++) {
|
|
Element v53 = v5.addElement("实体关系");
|
|
v53.addElement("实体标识").setText(map.get("dh").toString());
|
|
v53.addElement("文件标识符").setText(getFileNameNoEx(getfilename(map.get("fj").toString()).get(i).get("bsf").toString()));
|
|
}
|
|
String zwofd = map.get("zwofd").toString();
|
|
if (!isEmpty(zwofd)){
|
|
int z = getfilename(zwofd).size();
|
|
if(z>0){
|
|
for (int i = 0; i < z; i++) {
|
|
Element v53 = v5.addElement("实体关系");
|
|
v53.addElement("实体标识").setText(map.get("dh").toString());
|
|
v53.addElement("文件标识符").setText(getFileNameNoEx(getfilename(map.get("zwofd").toString()).get(i).get("bsf").toString()));
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
bs.writeLog("进入xml生成方法----22-");
|
|
////文档实体块--文档详细信息
|
|
bs.writeLog("进入xml生成方法");
|
|
|
|
// 5、设置生成xml的格式
|
|
OutputFormat format = OutputFormat.createPrettyPrint();
|
|
// 设置编码格式
|
|
format.setEncoding("UTF-8");
|
|
|
|
|
|
// 6、生成xml文件
|
|
File file = new File(path + "/gdwj.xml");
|
|
file.createNewFile();
|
|
bs.writeLog("进入xml生成方法----33");
|
|
XMLWriter writer = new XMLWriter(new FileOutputStream(file), format);
|
|
// 设置是否转义,默认使用转义字符
|
|
writer.setEscapeText(false);
|
|
writer.write(document);
|
|
writer.close();
|
|
bs.writeLog("生成gdwj.xml成功");
|
|
bs.writeLog("进入xml生成方法----44生成gdwj.xml成功");
|
|
|
|
}
|
|
|
|
public void createYJSMXml(String path, HashMap<String, Object> map) throws Exception {
|
|
|
|
BaseBean bs = new BaseBean();
|
|
bs.writeLog("进入xml生成方法-----11+依据说明");
|
|
|
|
|
|
bs.writeLog("进入xml生成方法-----22----1+依据说明");
|
|
// 1、创建document对象
|
|
Document document = DocumentHelper.createDocument();
|
|
// 2、创建根节点rss
|
|
Element root = document.addElement("root");
|
|
// 3、向rss节点添加version属性
|
|
// root.addAttribute("version", "2.0");
|
|
// 4、生成子节点及子节点内容
|
|
Element v1 = root.addElement("电子文件移交说明及目录描述");
|
|
Element v2 = v1.addElement("目录描述");
|
|
bs.writeLog("依据说明-----");
|
|
Element w1 = v2.addElement("档号");
|
|
Element w2 = v2.addElement("题名");
|
|
Element w3 = v2.addElement("文件编号");
|
|
Element w4 = v2.addElement("责任者");
|
|
Element w5 = v2.addElement("日期");
|
|
Element w6 = v2.addElement("页数");
|
|
bs.writeLog("进入xml生成方法-----33----1+依据说明" + map);
|
|
|
|
w1.setText(map.get("dh").toString());
|
|
w2.setText(map.get("bt").toString());
|
|
w3.setText(map.get("bh").toString());
|
|
w4.setText(map.get("zrz").toString());
|
|
w5.setText(map.get("rq").toString());
|
|
w6.setText(map.get("ys").toString());
|
|
|
|
bs.writeLog("进入xml生成方法----222");
|
|
// 5、设置生成xml的格式
|
|
OutputFormat format = OutputFormat.createPrettyPrint();
|
|
// 设置编码格式
|
|
format.setEncoding("UTF-8");
|
|
|
|
|
|
// 6、生成xml文件
|
|
File file = new File(path + "/yjsm.xml");
|
|
file.createNewFile();
|
|
|
|
bs.writeLog("进入xml生成方法----33" + file);
|
|
XMLWriter writer = new XMLWriter(new FileOutputStream(file), format);
|
|
// 设置是否转义,默认使用转义字符
|
|
writer.setEscapeText(false);
|
|
writer.write(document);
|
|
writer.close();
|
|
bs.writeLog("生成yjsm.xml成功");
|
|
bs.writeLog("进入xml生成方法-----22----1+生成yjsm.xml成功");
|
|
|
|
|
|
}
|
|
|
|
/**
|
|
* 根据参数信息返回文件名,及标识符
|
|
* @param fj
|
|
* @return
|
|
*/
|
|
public static List<HashMap> getfilename(String fj) {
|
|
BaseBean bs = new BaseBean();
|
|
bs.writeLog("==11=进入查询方法-->fj"+fj);
|
|
List<HashMap> list = new ArrayList<>();
|
|
// HashMap map = new HashMap();
|
|
String[] arr = fj.split(",");
|
|
bs.writeLog("==22=进入查询方法");
|
|
// RecordSet rs3 = new RecordSet();
|
|
for (int i = 0; i < arr.length; i++) {
|
|
RecordSet rs3 = new RecordSet();
|
|
String docdetail = "select top(1) im.filerealpath,do.imagefilename,im.iszip from imagefile im left join docimagefile do on im.imagefileid = do.imagefileid where docid=" + arr[i] + " order by versionid desc";
|
|
rs3.execute(docdetail);
|
|
HashMap<String, String> map = new HashMap();
|
|
// List<String> list = new ArrayList<>();
|
|
bs.writeLog("==22=" + docdetail);
|
|
if (rs3.next()) {
|
|
String filerealpath = rs3.getString("filerealpath");
|
|
String imagefilename = rs3.getString("imagefilename");
|
|
bs.writeLog("==33=" + filerealpath + "---" + imagefilename);
|
|
int index = filerealpath.lastIndexOf("/");
|
|
int index2 = imagefilename.lastIndexOf(".");
|
|
String zipPath = filerealpath.substring(index + 1); //压缩文件名
|
|
|
|
String newname = imagefilename.substring(0, index2);
|
|
bs.writeLog("==44=" + zipPath + "---" + newname);
|
|
map.put("bsf", zipPath);
|
|
map.put("gbwj", newname);
|
|
|
|
bs.writeLog("==45=" + map);
|
|
}
|
|
list.add(map);
|
|
|
|
}
|
|
bs.writeLog("=55==" + list);
|
|
return list;
|
|
}
|
|
}
|
|
|