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 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> nodeInfoList = (List>)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 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 getfilename(String fj) { BaseBean bs = new BaseBean(); bs.writeLog("==11=进入查询方法-->fj"+fj); List 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 map = new HashMap(); // List 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; } }