json数据转为本地xml,oracle数据库存入一条数据
package com.easipass.business.service.impl;
import com.easipass.business.constant.BusinessCode;
import com.easipass.business.exception.BusinessException;
import com.easipass.business.oracle.po.TSwgdCrossBorderAccessLog;
import com.easipass.business.oracle.repository.SwgdCrossBorderAccessDao;
import com.easipass.business.service.SingaporeAccessService;
import com.easipass.commons.result.dto.RestResult;
import lombok.extern.slf4j.Slf4j;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import java.util.UUID;
@Slf4j
@Service
@Transactional
public class SingaporeAccessServiceImpl implements SingaporeAccessService {
@Autowired
private SwgdCrossBorderAccessDao swgdCrossBorderAccessDao;
@Value(value = "${download.address}")
private String downloadAddress;
@Override
public RestResult printClearance(Map map) {
String xmlTo = String.valueOf(map.get("data"));
if(){
String time = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
String bizId = UUID.randomUUID().toString().replace("-", "");
String fileName = bizId+time+".xml";
String file = downloadAddress+fileName;
Document document = null;
try {
document = DocumentHelper.parseText(xmlTo);
} catch (DocumentException e) {
e.printStackTrace();
throw new BusinessException(BusinessCode.CODE_700001);
}
try {
OutputXml(document, file);
} catch (Exception e) {
e.printStackTrace();
throw e;
}
TSwgdCrossBorderAccessLog swgdCrossBorderAccessLog = new TSwgdCrossBorderAccessLog();
swgdCrossBorderAccessLog.setBizId(bizId);
swgdCrossBorderAccessLog.setBizType("S_EPT");
swgdCrossBorderAccessLog.setFileName(fileName);
swgdCrossBorderAccessDao.save(swgdCrossBorderAccessLog);
RestResult t = RestResult.T();
t.setFlag("T");
return t;
}
RestResult t = RestResult.F();
t.setFlag("F");
t.setErrorCode("001");
t.setErrorCode("服务器遇到未知问题");
return t;
}
@Override
public RestResult printClearanceNew(Map map) {
String xmlTo = String.valueOf(map.get("data"));
//名称规范
String systemTime = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
String bizId = UUID.randomUUID().toString().replace("-", "");
String fileName = bizId+systemTime+".xml";
//需修改,地址从配置文件里取
String file = "C:\\Users\\ken\\Desktop\\"+fileName;
Document document = null;
try {
document = DocumentHelper.parseText(xmlTo);
} catch (DocumentException e) {
e.printStackTrace();
//报错抛出,不要继续运行
throw new BusinessException(BusinessCode.CODE_700001);
}
// OutputXml(document, file);
try {
OutputXml(document, file);
} catch (Exception e) {
throw e;
}
TSwgdCrossBorderAccessLog swgdCrossBorderAccessLog = new TSwgdCrossBorderAccessLog();
swgdCrossBorderAccessLog.setBizId(bizId);
//需修改,按数据字典说明填写
swgdCrossBorderAccessLog.setBizType("S_EPT");
/**
* 实体类配置columnDefinition = "SYSDATE", insertable = false, updatable = false
* 代表该字段都是取数据库时间,不可修改、更新
*/
// swgdCrossBorderAccessLog.setReceiveTime(new Date());
swgdCrossBorderAccessLog.setFileName(fileName);
// TODO
swgdCrossBorderAccessDao.save(swgdCrossBorderAccessLog);
RestResult t = RestResult.T();
t.setFlag("T");
return t;
}
public static void OutputXml(Document doc,String filename) {
OutputFormat format = OutputFormat.createPrettyPrint();
/** 指定XML编码 */
format.setEncoding("UTF-8");
/** 将document中的内容写入文件中 */
XMLWriter writer = null;
try {
writer = new XMLWriter(new FileWriter(new File(filename)), format);
writer.write(doc);
//流操作,close都要放到finally里
// writer.close();
} catch (IOException e) {
log.error(e.getMessage(),e);
throw new BusinessException(BusinessCode.CODE_700002);
} finally {
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}