package com.zbooksoft.gdmis.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; import com.ruili.wcp.common.CustomConfigUtil; import com.ruili.wcp.common.IdGenerater; import com.ruili.wcp.data.entity.management.User; import com.ruili.wcp.engine.form.IFormData; import com.zbooksoft.gdmis.data.entity.*; import com.zbooksoft.gdmis.service.*; import org.apache.shiro.SecurityUtils; import org.apache.shiro.session.Session; import org.apache.shiro.subject.Subject; import org.dom4j.Document; import org.dom4j.Node; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.text.SimpleDateFormat; import java.util.HashMap; import java.util.List; import java.util.Map; import static com.zbooksoft.gdmis.common.XmlUtil.*; /** * @Description: * @Author: zhai * @Date: 2024/8/7 **/ @Service public class XmlServiceImpl implements XmlService { @Autowired CatXzqService catXzqService; @Autowired CatDlwzxxService catDlwzxxService; @Autowired CatKcService catKcService; @Autowired CatSmxxService catSmxxService; @Autowired CatZkxxService catZkxxService; @Autowired CatTfxxService catTfxxService; @Autowired CatYswjxxService catYswjxxService; @Autowired CatCgwjxxService catCgwjxxService; @Autowired CatAjjxxService catAjjxxService; @Autowired CatCheckService catCheckService; @Autowired CustomConfigUtil customConfigUtil; @Autowired JdbcTemplate jdbcTemplate; @Autowired IFormData iform; @Override @Transactional(rollbackFor = Exception.class) public void readXml(Document document, String startData, String endData) throws Exception { Subject currentUser = SecurityUtils.getSubject(); Session session = currentUser.getSession(); User user = (User) session.getAttribute("user"); //案卷级信息 Node ajjxxNode = getNode(document, "AJJXX"); Node zlxxNode = getNode(document, "ZLXX"); // Node bsdNode = getNode(document, "DZZLBSD"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String xmbh = getNodeText(ajjxxNode, "XMBH"); String xmmc = getNodeText(ajjxxNode, "XMMC"); Long ajjxxId = 0L; QueryWrapper catAjjxxQueryWrapper = new QueryWrapper<>(); catAjjxxQueryWrapper.eq("XMKYQBH", xmbh); catAjjxxQueryWrapper.eq("XMKYQMC", xmmc); List list = catAjjxxService.list(catAjjxxQueryWrapper); if (list.size() > 0) { CatAjjxx catAjjxx = list.get(0); ajjxxId = catAjjxx.getId(); } else { CatAjjxx catAjjxx = new CatAjjxx(); ajjxxId = IdGenerater.getId(); String sql = "select NVL(max(DH), 0) DH FROM CAT_FILE_AJJXX"; Map stringObjectMap = jdbcTemplate.queryForMap(sql); String dh = stringObjectMap.get("DH").toString(); if (dh.length() > 4) { //取后4位 dh = dh.substring(dh.length() - 4); } int maxDH = Integer.parseInt(dh); int newDH = maxDH + 1; String newDhString = String.format("%04d", newDH); catAjjxx.setDh(newDhString); catAjjxx.setId(ajjxxId); catAjjxx.setDeleteState(0); catAjjxx.setSlsj(startData); catAjjxx.setYsjzsj(stringToDate(endData)); catAjjxx.setZlzt(0); if (user != null) { catAjjxx.setSlr(user.getTrueName()); catAjjxx.setYsr(user.getTrueName()); } //项目信息XMKYQBH catAjjxx.setXmkyqbh(getNodeText(ajjxxNode, "XMBH")); catAjjxx.setRwsbh(getNodeText(ajjxxNode, "XMRWSBH")); catAjjxx.setXmkyqlx(getNodeText(ajjxxNode, "XMLX")); catAjjxx.setXmkyqxz(getNodeText(ajjxxNode, "XMXZ")); catAjjxx.setZjly(getNodeText(ajjxxNode, "XMZJLY")); catAjjxx.setXmsfzm(getNodeText(ajjxxNode, "XMSFM")); //矿业权人 catAjjxx.setXmkyqmc(getNodeText(ajjxxNode, "XMMC")); catAjjxx.setNd(getNodeText(ajjxxNode, "ND")); catAjjxx.setNdjf(getNodeText(ajjxxNode, "NDJF")); catAjjxx.setQssj(getNodeText(ajjxxNode, "QSSJ")); catAjjxx.setZzsj(getNodeText(ajjxxNode, "ZZSJ")); catAjjxx.setXmzq(getNodeText(ajjxxNode, "XMZQ")); catAjjxx.setXmsx(getNodeText(ajjxxNode, "XMSX")); catAjjxx.setSxdw(getNodeText(ajjxxNode, "SXDW")); catAjjxx.setSxdw(getNodeText(ajjxxNode, "SXDW")); catAjjxx.setXmzt(getNodeText(ajjxxNode, "XMZT")); catAjjxx.setXmfzr(getNodeText(ajjxxNode, "XMFZR")); catAjjxx.setXmzgjgmc(getNodeText(ajjxxNode, "XMZGJGMC")); catAjjxx.setXmfzrjs(getNodeText(ajjxxNode, "XMFZRJS")); catAjjxx.setXmfzrhq(getNodeText(ajjxxNode, "XMFFZR")); catAjjxx.setXmxxsm(getNodeText(ajjxxNode, "XMXXSM")); catAjjxxService.saveOrUpdate(catAjjxx); } String yjdw = getNodeText(ajjxxNode, "YJDW"); String yjsj = getNodeText(ajjxxNode, "YJSJ"); String yjr = getNodeText(ajjxxNode, "YJR"); String yjrlxfs = getNodeText(ajjxxNode, "YJRLXFS"); String yjbh = getNodeText(ajjxxNode, "YJBH"); String cjsj = getNodeText(ajjxxNode, "CJSJ"); HashMap transferMap = new HashMap<>(); transferMap.put("TRANSFER_DEPT", yjdw); transferMap.put("TRANSFER_TIEM", yjsj); transferMap.put("TRANSFER_USER", yjr); transferMap.put("USER_NUMBER", yjrlxfs); transferMap.put("TRANSFER_NUM", yjbh); transferMap.put("CREATE_TIME", cjsj); transferMap.put("CREATE_USER_ID", user.getUserId()); transferMap.put("AJ_ID", ajjxxId); Long insertId = iform.insert(1977224563949338625l, transferMap); // 原始文件级信息 List yswjxxNodeList = getNodeList(zlxxNode, "WJJXX"); for (Node yswjxxNode : yswjxxNodeList) { String wjtm = getNodeText(yswjxxNode, "WJTM"); HashMap map = new HashMap<>(); //判断是否存在,存在进行更新,不存在添加 Long catYswjxxId = IdGenerater.getId(); String selectSql = " select * from CAT_ITEM_YSWJXX where AJ_ID =" + ajjxxId + " and WJTM = '" + wjtm + "'"; List> mapList = jdbcTemplate.queryForList(selectSql); if (mapList.size() > 0) { Map stringObjectMap = mapList.get(0); String yszt = stringObjectMap.get("yszt") == null ? "0" : stringObjectMap.get("yszt").toString(); if (("3").equals(yszt)) { throw new Exception(wjtm + "资料已被接收,请勿重复导入"); } catYswjxxId = Long.parseLong(stringObjectMap.get("ID").toString()); Object transferNumber = stringObjectMap.get("TRANSFER_NUMBER"); int transfer = 1; if (transferNumber != null) { transfer = Integer.parseInt(transferNumber.toString()); } map.put("TRANSFER_NUMBER", transfer); } String cgwjmc = getNodeText(yswjxxNode, "WJLB"); String jh = getNodeText(yswjxxNode, "JH"); String jhLast = jh.substring(jh.length() - 1); String xcdw = getNodeText(yswjxxNode, "XCDW"); String xcr = getNodeText(yswjxxNode, "XCR"); String xcsj = getNodeText(yswjxxNode, "XCSJ"); String sl = getNodeText(yswjxxNode, "SL"); String ym = getNodeText(yswjxxNode, "YM"); String psdw = getNodeText(yswjxxNode, "PSDW"); String pswh = getNodeText(yswjxxNode, "PSWH"); String pssj = getNodeText(yswjxxNode, "PSSJ"); String bxdw = getNodeText(yswjxxNode, "BXDW"); String bxz = getNodeText(yswjxxNode, "BXZ"); String zzys = getNodeText(yswjxxNode, "ZZYS"); String wjdx = getNodeText(yswjxxNode, "WJDX"); String wjlb = getNodeText(yswjxxNode, "WJLB"); String wjlj = getNodeText(yswjxxNode, "WJLJ"); String ztxs = getNodeText(yswjxxNode, "ZTXS"); String qzy = getNodeText(yswjxxNode, "QZY"); String hxblc = getNodeText(yswjxxNode, "HXBLC"); String zxblc = getNodeText(yswjxxNode, "ZXBLC"); String wjgs = getNodeText(yswjxxNode, "WJGSXX/WJGS"); String wjgssm = getNodeText(yswjxxNode, "WJGSXX/WJGSSM"); map.put("ID", catYswjxxId); map.put("AJ_ID", ajjxxId); map.put("CGWJMC", cgwjmc); map.put("JNXH", jh); map.put("WJTM", wjtm); //E:\项目\广海\测试数据导入\海南陆XX成果年度总结报告光盘(GHD20255082;含成果报告、普查报告、附图、评审意见).pdf //截取文件名不带后缀 从最后一个\开始 String wjm = ""; if (wjgs != null && !"".equals(wjgs)) { wjm = wjlj.substring(wjlj.lastIndexOf("\\") + 1, wjlj.lastIndexOf(".")); } else { wjm = wjlj.substring(wjlj.lastIndexOf("\\") + 1); } map.put("WJM", wjm); map.put("XCDWMC", xcdw); map.put("BXZ", xcr); map.put("XCSJ", xcsj); map.put("SL", sl); map.put("YM", ym); map.put("PSDW", psdw); map.put("PSWH", pswh); map.put("PSSJ", pssj); map.put("BXDW", bxdw); // map.put("BXZ", bxz); map.put("ZZYS", zzys); map.put("WJDX", wjdx); map.put("WJLX", wjlb); map.put("WJLJ", wjlj); map.put("GDZTXS", ztxs); map.put("QZY", qzy); map.put("FTHXBLC", hxblc); map.put("FTZXBLC", zxblc); map.put("WJGS", wjgs); map.put("WJGSSM", wjgssm); map.put("JUANH", 1); map.put("XH", jhLast); map.put("YJ_ID", insertId); //涉密信息 List smxxNodeList = getNodeList(yswjxxNode, "SMXX/Item"); ObjectMapper mapper = new ObjectMapper(); ObjectNode root = mapper.createObjectNode(); ArrayNode addresses = mapper.createArrayNode(); if (smxxNodeList.size() > 0) { map.put("SFSM", "是"); } else { map.put("SFSM", "否"); } for (int j = 0; j < smxxNodeList.size(); j++) { Node smxxNode = smxxNodeList.get(j); if (j == 0) { map.put("SMYM", getNodeText(smxxNode, "SMNR")); map.put("SMZL", getNodeText(smxxNode, "SMZL")); map.put("SMSX", getNodeText(smxxNode, "SMSX")); map.put("WJMJ", getNodeText(smxxNode, "WJMJ")); Integer securityCode = getSecurityCode(getNodeText(smxxNode, "WJMJ")); map.put("SECURITY_CODE", securityCode); map.put("BMQX", getNodeText(smxxNode, "BMQX")); map.put("ZXFW", getNodeText(smxxNode, "ZXFW")); } else { String smnr = getNodeText(smxxNode, "SMNR"); String smzl = getNodeText(smxxNode, "SMZL"); String smsx = getNodeText(smxxNode, "SMSX"); String wjmj = getNodeText(smxxNode, "WJMJ"); String bmqx = getNodeText(smxxNode, "BMQX"); String zxfw = getNodeText(smxxNode, "ZXFW"); CatSmxx catSmxx = new CatSmxx(); catSmxx.setAjId(ajjxxId); catSmxx.setWjId(catYswjxxId); catSmxx.setSmnr(smnr); catSmxx.setSmzl(smzl); catSmxx.setSmsx(smsx); catSmxx.setWjmj(wjmj); catSmxx.setBmqx(bmqx); // catSmxx.setZxfw(zxfw); catSmxxService.saveOrUpdate(catSmxx); //{"classified":[{"mj":"内部","smym":"11","smsx":"22","bmqx":"33","zxfw":"34","smzl":""}]} ObjectNode address = mapper.createObjectNode(); address.put("mj", wjmj); address.put("smym", smnr); address.put("smsx", smsx); address.put("bmqx", bmqx); address.put("zxfw", zxfw); address.put("smzl", smzl); addresses.add(address); } } root.put("classified", addresses); String jsonString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(root); map.put("smxx", jsonString); if (mapList.size() > 0) { //TRANSFER_NUMBER iform.update(1823021414679085057L, map, catYswjxxId); } else { iform.insert(1823021414679085057L, map); } } } public static void main(String[] args) { //E:\项目\广海\测试数据导入\海南陆XX成果年度总结报告光盘(GHD20255082;含成果报告、普查报告、附图、评审意见).pdf //截取文件名不带后缀 从最后一个\开始 String wjtm = "E:\\项目\\广海\\测试数据导入\\海南陆XX成果年度总结报告光盘(GHD20255082;含成果报告、普查报告、附图、评审意见).pdf"; String wjm = wjtm.substring(wjtm.lastIndexOf("\\") + 1, wjtm.lastIndexOf(".")); System.out.println(wjm); } }