package com.zbooksoft.gdmis.service.impl; 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.IdGenerater; import com.ruili.wcp.data.entity.management.User; 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.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; import static com.zbooksoft.gdmis.common.XmlUtil.*; /** * @Description: * @Author: zhai * @Date: 2024/8/7 **/ @Service public class UpdateXml2017ServiceImpl implements UpdateXml2017Service { @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; @Override @Transactional(rollbackFor = Exception.class) public void updateXml(Document document, String checkData, Long ajjxxId) throws Exception { Subject currentUser = SecurityUtils.getSubject(); Session session = currentUser.getSession(); User user = (User) session.getAttribute("user"); CatAjjxx catAjjxx = catAjjxxService.getById(ajjxxId); Node ajjxxNode = getNode(document, "AJXX"); if (checkData != null && !"".equals(checkData)) { catAjjxx.setYswsj(stringToDate(checkData)); catAjjxx.setZlzt(2); catAjjxx.setSlr(user.getTrueName()); } // 案卷级信息 catAjjxx.setHjrdh(getNodeText(ajjxxNode, "HJRDH")); catAjjxx.setZlmc(getNodeText(ajjxxNode, "TM")); catAjjxx.setBzz(getNodeText(ajjxxNode, "BZZ")); catAjjxx.setXcdwmc(getNodeText(ajjxxNode, "XCDWMC")); catAjjxx.setXcdwshxydm(getNodeText(ajjxxNode, "XCZZJGDM")); catAjjxx.setXcsj(getNodeText(ajjxxNode, "XCSJ")); catAjjxx.setSpjg(getNodeText(ajjxxNode, "PSJG")); catAjjxx.setSpsj(stringToDate(getNodeText(ajjxxNode, "PSSJ"))); List xzqNodeList = getNodeList(ajjxxNode, "XZQList"); String xzqmc = ""; String xzqdms = ""; for (Node xzqNode : xzqNodeList) { CatXzq catXzq = new CatXzq(); catXzq.setAjId(ajjxxId); String sj = getNodeText(xzqNode, "Province"); String dj = getNodeText(xzqNode, "District"); String xj = getNodeText(xzqNode, "County"); if (!"".equals(sj)) { xzqmc += sj; } catXzq.setSj(sj); if (!"".equals(dj)) { xzqmc += " " + dj; } catXzq.setDj(dj); if (!"".equals(xj)) { xzqmc += " " + xj; } catXzq.setXj(xj); if ("".equals(getNodeText(xzqNode, "CountyCode"))) { catXzq.setXzqdm(getNodeText(xzqNode, "CountyCode")); } else if ("".equals(getNodeText(xzqNode, "DistrictCode"))) { catXzq.setXzqdm(getNodeText(xzqNode, "DistrictCode")); } else if ("".equals(getNodeText(xzqNode, "ProvinceCode"))) { catXzq.setXzqdm(getNodeText(xzqNode, "ProvinceCode")); } String xzqdm = catXzq.getXzqdm(); if (!"".equals(xzqdm)) { xzqdms += xzqdm + ","; } catXzqService.saveOrUpdate(catXzq); xzqmc += ","; } if (!"".equals(xzqmc)) { catAjjxx.setXzqmc(xzqmc.substring(0, xzqmc.length() - 1)); } if (!"".equals(xzqdms)) { catAjjxx.setXzqdm(xzqdms.substring(0, xzqdms.length() - 1)); } catAjjxx.setQsjdFx(getNodeText(ajjxxNode, "QSJDLX")); catAjjxx.setQsjdDu(getNodeText(ajjxxNode, "QSJDDu")); catAjjxx.setQsjdFen(getNodeText(ajjxxNode, "QSJDFen")); catAjjxx.setQsjdMiao(getNodeText(ajjxxNode, "QSJDMiao")); catAjjxx.setZzjdFx(getNodeText(ajjxxNode, "ZZJDLX")); catAjjxx.setZzjdDu(getNodeText(ajjxxNode, "ZZJDDu")); catAjjxx.setZzjdFen(getNodeText(ajjxxNode, "ZZJDFen")); catAjjxx.setZzjdMiao(getNodeText(ajjxxNode, "ZZJDMiao")); catAjjxx.setQswdFx(getNodeText(ajjxxNode, "QSWDLX")); catAjjxx.setQswdDu(getNodeText(ajjxxNode, "QSWDDu")); catAjjxx.setQswdFen(getNodeText(ajjxxNode, "QSWDFen")); catAjjxx.setQswdMiao(getNodeText(ajjxxNode, "QSWDMiao")); catAjjxx.setZzwdFx(getNodeText(ajjxxNode, "ZZWDLX")); catAjjxx.setZzwdDu(getNodeText(ajjxxNode, "ZZWDDu")); catAjjxx.setZzwdFen(getNodeText(ajjxxNode, "ZZWDFen")); catAjjxx.setZzwdMiao(getNodeText(ajjxxNode, "ZZWDMiao")); //WENEW catAjjxx.setYz(getNodeText(ajjxxNode, "YZ")); List kcNodeList = getNodeList(ajjxxNode, "KCList"); String kcmcs = ""; for (Node kcNode : kcNodeList) { CatKc catKc = new CatKc(); catKc.setAjId(ajjxxId); String kcdm = getNodeText(kcNode, "DM"); catKc.setKcdm(kcdm); String kcmc = getNodeText(kcNode, "MC"); catKc.setKcmc(kcmc); if (!"".equals(kcdm) && !"".equals(kcmc)) { kcmcs += kcdm + "-" + kcmc + ","; } catKcService.saveOrUpdate(catKc); } if (!"".equals(kcmcs)) { catAjjxx.setKcmc(kcmcs.substring(0, kcmcs.length() - 1)); } catAjjxx.setZllb(getNodeText(ajjxxNode, "ZLLB")); catAjjxx.setBz(getNodeText(ajjxxNode, "TMBZ")); String gzcd = getNodeText(ajjxxNode, "GZCD"); gzcd = gzcd.replaceAll("/", ":").replaceAll("万", "0000"); catAjjxx.setGzcd(gzcd); catAjjxx.setGzff(getNodeText(ajjxxNode, "GZFF")); catAjjxx.setNrzy(getNodeText(ajjxxNode, "NRZY")); catAjjxx.setYdzwjgsjbb(getNodeText(ajjxxNode, "KFGJWB")); catAjjxx.setYjhj(getNodeText(ajjxxNode, "YJHJ")); catAjjxx.setRjhj(getNodeText(ajjxxNode, "CZXT")); String dztjxtksm = getNodeText(ajjxxNode, "DZTJXTKSM"); if ("".equals(dztjxtksm)) { catAjjxx.setTjxtkzktysm(getNodeText(ajjxxNode, "DZWDSM")); } catAjjxx.setQtsm(getNodeText(ajjxxNode, "DZWJXXBZ")); catAjjxx.setHjrmc(getNodeText(ajjxxNode, "HJDWMC")); catAjjxx.setHjrdz(getNodeText(ajjxxNode, "HJRTXDZ")); catAjjxx.setHjryb(getNodeText(ajjxxNode, "HJRYZBM")); catAjjxx.setHjrtyshxydm(getNodeText(ajjxxNode, "HJZZJGDM")); catAjjxx.setHjrlxr(getNodeText(ajjxxNode, "HJLXR")); String hjrgddh = getNodeText(ajjxxNode, "HJRGDDH"); String hjrsjh = getNodeText(ajjxxNode, "HJRSJH"); catAjjxx.setHjrlxfs(hjrgddh + " " + hjrsjh); catAjjxx.setHjrdzyx(getNodeText(ajjxxNode, "HJRDZYX")); String bhq = getNodeText(ajjxxNode, "BHQ"); catAjjxx.setBhq(bhq); if (bhq != null && !"".equals(bhq)) { catAjjxx.setSfbh("是"); } else { catAjjxx.setSfbh("否"); } String nodeText = getNodeText(ajjxxNode, "MJ"); if ("不涉密".equals(nodeText)) { catAjjxx.setMjdm("0"); } else if ("内部".equals(nodeText)) { catAjjxx.setMjdm("1"); } else if ("秘密".equals(nodeText)) { catAjjxx.setMjdm("2"); } else if ("机密".equals(nodeText)) { catAjjxx.setMjdm("3"); } else if ("绝密".equals(nodeText)) { catAjjxx.setMjdm("4"); } catAjjxx.setMj(nodeText); //成果数量信息 catAjjxx.setCgzlsjl(stringToDouble(getNodeText(ajjxxNode, "CGZLSJL"))); catAjjxx.setCgzldzwjzs(stringToInteger(getNodeText(ajjxxNode, "DZWJSL"))); catAjjxx.setCgzldzwjjzs(stringToInteger(getNodeText(ajjxxNode, "DZWJJSL"))); catAjjxx.setZwdzjs(stringToInteger(getNodeText(ajjxxNode, "DZZWSL"))); catAjjxx.setSpdzjs(stringToInteger(getNodeText(ajjxxNode, "DZSPSL"))); catAjjxx.setFtdzjs(stringToInteger(getNodeText(ajjxxNode, "DZFTSL"))); catAjjxx.setFbdzjs(stringToInteger(getNodeText(ajjxxNode, "DZFBSL"))); catAjjxx.setFjdzjs(stringToInteger(getNodeText(ajjxxNode, "DZFJSL"))); catAjjxx.setRjdzjs(stringToInteger(getNodeText(ajjxxNode, "DZRJSL"))); catAjjxx.setSjkdzjs(stringToInteger(getNodeText(ajjxxNode, "DZSJKSL"))); catAjjxx.setDmtdzjs(stringToInteger(getNodeText(ajjxxNode, "DZDMTSL"))); catAjjxx.setQtdzjs(stringToInteger(getNodeText(ajjxxNode, "DZQTSL"))); catAjjxx.setCgzldzjs(catAjjxx.getZwdzjs() + catAjjxx.getSpdzjs() + catAjjxx.getFtdzjs() + catAjjxx.getFbdzjs() + catAjjxx.getFjdzjs() + catAjjxx.getRjdzjs() + catAjjxx.getSjkdzjs() + catAjjxx.getDmtdzjs() + catAjjxx.getQtdzjs()); catAjjxx.setZwzzjs(stringToInteger(getNodeText(ajjxxNode, "ZZZWSL"))); catAjjxx.setSpzzjs(stringToInteger(getNodeText(ajjxxNode, "ZZSPSL"))); catAjjxx.setFtzzjs(stringToInteger(getNodeText(ajjxxNode, "ZZFTSL"))); catAjjxx.setFbzzjs(stringToInteger(getNodeText(ajjxxNode, "ZZFBSL"))); catAjjxx.setFjzzjs(stringToInteger(getNodeText(ajjxxNode, "ZZFJSL"))); catAjjxx.setQtzzjs(stringToInteger(getNodeText(ajjxxNode, "ZZQTSL"))); catAjjxx.setCgzlzzjs(catAjjxx.getZwzzjs() + catAjjxx.getSpzzjs() + catAjjxx.getFtzzjs() + catAjjxx.getFbzzjs() + catAjjxx.getFjzzjs() + catAjjxx.getQtzzjs()); //原始数量信息 catAjjxx.setYszlsjl(stringToDouble(getNodeText(ajjxxNode, "YSDZWJDX"))); catAjjxx.setYszldzwjzs(stringToInteger(getNodeText(ajjxxNode, "YSDZWJSL"))); catAjjxx.setYszldzwjjzs(stringToInteger(getNodeText(ajjxxNode, "YSDZWJJSL"))); catAjjxx.setDzzjs(stringToInteger(getNodeText(ajjxxNode, "YSZZDLSL"))); catAjjxx.setCzzjs(stringToInteger(getNodeText(ajjxxNode, "YSZZCLSL"))); catAjjxx.setGzzjs(stringToInteger(getNodeText(ajjxxNode, "YSZZGLSL"))); catAjjxx.setTzzjs(stringToInteger(getNodeText(ajjxxNode, "YSZZTLSL"))); catAjjxx.setYzzjs(stringToInteger(getNodeText(ajjxxNode, "YSZZYLSL"))); catAjjxx.setSzzjs(stringToInteger(getNodeText(ajjxxNode, "YSZZSLSL"))); catAjjxx.setLzzjs(stringToInteger(getNodeText(ajjxxNode, "YSZZLLSL"))); catAjjxx.setXzzjs(stringToInteger(getNodeText(ajjxxNode, "YSZZXLSL"))); catAjjxx.setZzzjs(stringToInteger(getNodeText(ajjxxNode, "YSZZZLSL"))); catAjjxx.setWzzjs(stringToInteger(getNodeText(ajjxxNode, "YSZZWLSL"))); catAjjxx.setDdzjs(stringToInteger(getNodeText(ajjxxNode, "YSDZDLSL"))); catAjjxx.setCdzjs(stringToInteger(getNodeText(ajjxxNode, "YSDZCLSL"))); catAjjxx.setGdzjs(stringToInteger(getNodeText(ajjxxNode, "YSDZGLSL"))); catAjjxx.setTdzjs(stringToInteger(getNodeText(ajjxxNode, "YSDZTLSL"))); catAjjxx.setYdzjs(stringToInteger(getNodeText(ajjxxNode, "YSDZYLSL"))); catAjjxx.setSdzjs(stringToInteger(getNodeText(ajjxxNode, "YSDZSLSL"))); catAjjxx.setLdzjs(stringToInteger(getNodeText(ajjxxNode, "YSDZLLSL"))); catAjjxx.setXdzjs(stringToInteger(getNodeText(ajjxxNode, "YSDZXLSL"))); catAjjxx.setZdzjs(stringToInteger(getNodeText(ajjxxNode, "YSDZZLSL"))); catAjjxx.setWdzjs(stringToInteger(getNodeText(ajjxxNode, "YSDZWLSL"))); catAjjxx.setYszldzjs(catAjjxx.getDdzjs() + catAjjxx.getCdzjs() + catAjjxx.getGdzjs() + catAjjxx.getTdzjs() + catAjjxx.getYdzjs() + catAjjxx.getSdzjs() + catAjjxx.getLdzjs() + catAjjxx.getXdzjs() + catAjjxx.getZdzjs() + catAjjxx.getWdzjs()); //todo::原始资料数量怎么计算 // ajjxx.YSZLZZJS = DataPacketService.CountYSZZNum(ajjxx); // catAjjxx.setYszlzzjs() // 实物汇总数量信息 catAjjxx.setDdgzwz(getNodeText(ajjxxNode, "DDGZWZ")); catAjjxx.setCkd(getNodeText(ajjxxNode, "CKD")); catAjjxx.setZykz(getNodeText(ajjxxNode, "ZYKZ")); catAjjxx.setCylx(getNodeText(ajjxxNode, "CYLX")); catAjjxx.setCksd(getNodeText(ajjxxNode, "CKSD")); catAjjxx.setZycgjs(getNodeText(ajjxxNode, "ZYCG")); catAjjxx.setSwbz(getNodeText(ajjxxNode, "SWXXBZ")); catAjjxx.setZksl(stringToInteger(getNodeText(ajjxxNode, "SWYKX"))); catAjjxx.setZjc(stringToDouble(getNodeText(ajjxxNode, "SWZJC"))); catAjjxx.setYxzsl(stringToDouble(getNodeText(ajjxxNode, "SWQX"))); catAjjxx.setYxizsl(stringToInteger(getNodeText(ajjxxNode, "SWYX"))); catAjjxx.setBbzsl(stringToInteger(getNodeText(ajjxxNode, "SWBB"))); catAjjxx.setYpzsl(stringToInteger(getNodeText(ajjxxNode, "SWYP"))); catAjjxx.setGpzsl(stringToInteger(getNodeText(ajjxxNode, "SWGP"))); catAjjxx.setBpzsl(stringToInteger(getNodeText(ajjxxNode, "SWBP"))); catAjjxx.setQtswmc(getNodeText(ajjxxNode, "SWQT")); //成果文件级信息 List cgwjcNodeList = getNodeList(ajjxxNode, "CGWJCList"); for (Node cgwjcNode : cgwjcNodeList) { String wjlxmc = getNodeText(cgwjcNode, "WJLX"); Integer ch = stringToInteger(getNodeText(cgwjcNode, "CH")); //成果文件 List cgwjxxNodeList = getNodeList(cgwjcNode, "CGWJXXList"); for (Node cgwjxxNode : cgwjxxNodeList) { CatCgwjxx catCgwjxx = new CatCgwjxx(); long cgwjxxId = IdGenerater.getId(); catCgwjxx.setAjId(ajjxxId); String fileType = getFileType(wjlxmc); catCgwjxx.setWjlx(fileType); catCgwjxx.setCh(ch); catCgwjxx.setId(cgwjxxId); catCgwjxx.setJh(stringToInteger(getNodeText(cgwjxxNode, "JH"))); String wjmc = getNodeText(cgwjxxNode, "WJMC"); if (wjmc.contains(".")) { String wjm = wjmc.substring(0, wjmc.indexOf(".")); catCgwjxx.setWjm(wjm); } else { catCgwjxx.setWjm(wjmc); } catCgwjxx.setWjtm(getNodeText(cgwjxxNode, "WJBT")); catCgwjxx.setYdzwjm(getNodeText(cgwjxxNode, "WJMC")); catCgwjxx.setYdzwjlj(getNodeText(cgwjxxNode, "WJLJ")); catCgwjxx.setYdzwjdx(stringToDouble(getNodeText(cgwjxxNode, "WJDX"))); //TODO::插图信息 // XmlNode ctNode = cgwjNode.SelectSingleNode("CTList"); catCgwjxx.setCddzwjdx(stringToDouble(getNodeText(cgwjxxNode, "CDWJMC"))); catCgwjxx.setCddzwjlj(getNodeText(cgwjxxNode, "CDWJLJ")); catCgwjxx.setCddzwjdx(stringToDouble(getNodeText(cgwjxxNode, "CDWJDX"))); catCgwjxx.setZtxs(getNodeText(cgwjxxNode, "HJZTXS")); catCgwjxx.setXcr(getNodeText(cgwjxxNode, "XCR")); catCgwjxx.setXcdwmc(getNodeText(cgwjxxNode, "XCDW")); catCgwjxx.setXcsj(getNodeText(cgwjxxNode, "XCSJ")); // catCgwjxx.setXcsj(stringToDate(getNodeText(cgwjxxNode, "XCSJ"))); catCgwjxx.setFtzxblc(getNodeText(cgwjxxNode, "BLC")); catCgwjxx.setTh(getNodeText(cgwjxxNode, "TH")); catCgwjxx.setQzy(getNodeText(cgwjxxNode, "QZY")); String bz = getNodeText(cgwjxxNode, "BZ"); if ((catCgwjxx.getWjlx() == "FT" || catCgwjxx.getWjlx() == "附图") && bz.contains("*")) { catCgwjxx.setFtgg(bz); } else { catCgwjxx.setBz(bz); } //涉密信息 catCgwjxx.setSmym(getNodeText(cgwjxxNode, "SMYM")); catCgwjxx.setSmzl(getNodeText(cgwjxxNode, "SMZL")); catCgwjxx.setSmsx(getNodeText(cgwjxxNode, "SMSX")); String mj = getNodeText(cgwjxxNode, "MJ"); if (mj != null && !("").equals(mj)) { catCgwjxx.setSfsm("是"); Integer securityCode = getSecurityCode(mj); catCgwjxx.setSecurityCode(securityCode); } else { catCgwjxx.setSfsm("否"); } catCgwjxx.setWjmj(mj); catCgwjxx.setBmqx(getNodeText(cgwjxxNode, "SMZLSX")); ObjectMapper mapper = new ObjectMapper(); ObjectNode root = mapper.createObjectNode(); ArrayNode addresses = mapper.createArrayNode(); List smxxNodeList = getNodeList(cgwjxxNode, "SMXXList/SMXX"); for (Node smxxNode : smxxNodeList) { CatSmxx catSmxx = new CatSmxx(); catSmxx.setAjId(ajjxxId); catSmxx.setWjId(cgwjxxId); String smym = getNodeText(smxxNode, "SMYM"); String smzl = getNodeText(smxxNode, "SMZL"); String smsx = getNodeText(smxxNode, "SMSX"); String wjmj = getNodeText(smxxNode, "MJ"); String bmqx = getNodeText(smxxNode, "SMZLSX"); catSmxx.setSmym(smym); catSmxx.setSmzl(smzl); catSmxx.setSmsx(smsx); catSmxx.setWjmj(wjmj); catSmxx.setBmqx(bmqx); catSmxxService.saveOrUpdate(catSmxx); ObjectNode address = mapper.createObjectNode(); address.put("mj", wjmj); address.put("smym", smym); address.put("smsx", smsx); address.put("bmqx", bmqx); address.put("zxfw", ""); address.put("smzl", smzl); addresses.add(address); } root.put("classified", addresses); String jsonString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(root); catCgwjxx.setSmxx(jsonString); catCgwjxxService.saveOrUpdate(catCgwjxx); } } catAjjxxService.saveOrUpdate(catAjjxx); } }