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<CatAjjxx> catAjjxxQueryWrapper = new QueryWrapper<>();
|
catAjjxxQueryWrapper.eq("XMKYQBH", xmbh);
|
catAjjxxQueryWrapper.eq("XMKYQMC", xmmc);
|
List<CatAjjxx> 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<String, Object> 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<String, Object> 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<Node> yswjxxNodeList = getNodeList(zlxxNode, "WJJXX");
|
for (Node yswjxxNode : yswjxxNodeList) {
|
String wjtm = getNodeText(yswjxxNode, "WJTM");
|
HashMap<String, Object> map = new HashMap<>();
|
//判断是否存在,存在进行更新,不存在添加
|
|
Long catYswjxxId = IdGenerater.getId();
|
String selectSql = " select * from CAT_ITEM_YSWJXX where AJ_ID =" + ajjxxId + " and WJTM = '" + wjtm + "'";
|
List<Map<String, Object>> mapList = jdbcTemplate.queryForList(selectSql);
|
if (mapList.size() > 0) {
|
Map<String, Object> 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<Node> 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);
|
}
|
}
|