package com.example.mimsosm.bfm.QC.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.example.mimsosm.FileUtil.DOMReadXmlUtils;
import com.example.mimsosm.bfm.QC.entity.Power;
import com.example.mimsosm.bfm.QC.entity.SelectInfo;
import com.example.mimsosm.bfm.QC.mapper.PowerMapper;
import com.example.mimsosm.bfm.QC.mapper.SelectInfoMapper;
import com.example.mimsosm.bfm.QC.service.PowerService;
import com.example.mimsosm.bfm.config.configService.createSelectInfoTable;
import com.example.mimsosm.common.exception.MyException;
import com.example.mimsosm.common.result.ResponseResult;
import com.example.mimsosm.conn.GlobalConfig;
import com.example.mimsosm.osm.getSystemdatetime;
import com.example.mimsosm.vo.ResultCode;
import com.example.mimsosm.vo.ResultVo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@RestController
@RequestMapping("/SelectInfo")
public class SelectInfoController {
@Resource(name = "selectInfoMapper")
SelectInfoMapper selectInfoMapper;
@Resource(name = "jdbcTemplateOne")
private JdbcTemplate jdbcTemplateOne;
/**
* @Description 初始化创建SelectInfo
* @Author 苏某
* @Date 2022/5/16
* @return com.example.mimsmes.licUrl.result.ResponseResult
*/
@PostConstruct
public void createdDataDict() {
try {
int i = 0;
DataSource dataSource = jdbcTemplateOne.getDataSource();
assert dataSource != null;
Connection connection = dataSource.getConnection();
DatabaseMetaData metaData = connection.getMetaData();
String[] types = { "TABLE" };
ResultSet username = metaData.getTables(null, null, "SelectInfo", types);
if (username.next()) {
i=1;
}
username.close();
connection.close();
if (i==0){
createTable(jdbcTemplateOne);
}
initDictData();
} catch (Exception e) {
throw new MyException("DataDict", e);
}
}
private void createTable(JdbcTemplate jdbcTemplate){
String sql = "CREATE TABLE dbo.SelectInfo(\n" +
" ID INT IDENTITY(1,1) NOT NULL,\n" +
" TypeFlag INT DEFAULT(0),\n" +
" EnglishName NVARCHAR(max) DEFAULT(''),\n" +
" ChineseName NVARCHAR(max) DEFAULT(''),\n" +
" Remark NVARCHAR(max) DEFAULT(''),\n" +
" SysFlag BIT DEFAULT(0),\n" +
" xgName NVARCHAR(max) DEFAULT(''),\n" +
" xgDate nvarchar(MAX) default(''),\n" +
")";
jdbcTemplate.update(sql);
jdbcTemplate.update("CREATE UNIQUE NONCLUSTERED INDEX SelectInfoIndex ON SelectInfo(ID)");
}
public void initDictData() {
ArrayList<HashMap<String, String>> xml = DOMReadXmlUtils.getXML("SelectInfo.xml","book");
ArrayList<SelectInfo> dataDictsList = new ArrayList<>();
if ( xml.size()<=0){
return;
}
//组装DataDict对象
for (int i = 0; i < xml.size(); i++) {
SelectInfo dataDict = new SelectInfo();
HashMap<String, String> hashMap = xml.get(i);
for (String key : hashMap.keySet()) {
if (key.equals("TypeFlag")){
dataDict.setTypeFlag(Integer.valueOf(hashMap.get(key)));
}
if (key.equals("EnglishName")){
dataDict.setEnglishName(hashMap.get(key));
}
if (key.equals("ChineseName")){
dataDict.setChineseName(hashMap.get(key));
}
if (key.equals("Remark")){
dataDict.setRemark(hashMap.get(key));
}
if (key.equals("SysFlag")){
dataDict.setSysFlag(Integer.valueOf(hashMap.get(key)));
}
}
dataDictsList.add(dataDict);
}
//新增数据
ResponseResult responseResult = initDictDatas(dataDictsList);
responseResult.getStatus();
}
public ResponseResult initDictDatas(List<SelectInfo> DictList) {
// 修改人
String xgName = "";
// 修改时间
String xgTime = getSystemdatetime.getSystemdatetime();
Integer integer=0;
for (SelectInfo dictInfo : DictList) {
if (!"".equals(dictInfo.getTypeFlag()) && !"".equals(dictInfo.getEnglishName()) && !"".equals(dictInfo.getChineseName())
&& dictInfo.getTypeFlag() != null && dictInfo.getEnglishName() != null && dictInfo.getChineseName() != null) {
QueryWrapper<SelectInfo> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("TypeFlag", dictInfo.getTypeFlag());
queryWrapper.eq("EnglishName", dictInfo.getEnglishName());
queryWrapper.eq("ChineseName", dictInfo.getChineseName());
SelectInfo dict = selectInfoMapper.selectOne(queryWrapper);
//存在跳过本次循环,进入下次循环
if (dict != null) {
continue;
}
if (dictInfo.getRemark() == null) {
dictInfo.setRemark("");
}
dictInfo.setXgName(xgName);
dictInfo.setXgDate(xgTime);
//插入数据
integer = selectInfoMapper.insert(dictInfo);
} else {
return new ResponseResult(ResultCode.DATA_IS_ERROR.getCode(), ResultCode.DATA_IS_ERROR.getMsg());
}
}
if (integer>=1){
return new ResponseResult(ResultCode.OK.getCode(), ResultCode.OK.getMsg(), "成功" + integer);
}else {
return new ResponseResult(ResultCode.DATA_IS_ERROR.getCode(), ResultCode.DATA_IS_ERROR.getMsg());
}
}
}
SelectInfo.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!--
<?xml version="1.0" encoding="UTF-8" ?>
以上内容就是xml文件的声明,
version="1.0" version表示xml的版本
encoding="utf-8" encoding表示xml文件本身的编码
-->
<books>
<book >
<TypeFlag>1</TypeFlag>
<EnglishName>SHD</EnglishName>
<ChineseName>收货地类型</ChineseName>
<Remark></Remark>
<SysFlag>0</SysFlag>
</book>
<book >
<TypeFlag>2</TypeFlag>
<EnglishName>NH</EnglishName>
<ChineseName>内盒标类别</ChineseName>
<Remark></Remark>
<SysFlag>0</SysFlag>
</book>
<book >
<TypeFlag>3</TypeFlag>
<EnglishName>XS</EnglishName>
<ChineseName>鞋舌标类别</ChineseName>
<Remark></Remark>
<SysFlag>0</SysFlag>
</book>
</books>
DOMReadXmlUtils
package com.example.mimsosm.FileUtil;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Objects;
/**
* 1. @description:
* 2. @Author 苏某
* String name xml文件名称 xxx.xml
* String book xml文件对象标签 "book"
* 3. @time: 2022/5/16 11:12
*/
public class DOMReadXmlUtils {
public static ArrayList<HashMap<String, String>> getXML(String name, String book){
ArrayList<HashMap<String, String>> mapArr = new ArrayList<>();
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try{
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = null;
try {
FileInputStream fileInputStream = new FileInputStream(Objects.requireNonNull(DOMReadXmlUtils.class.getClassLoader().getResource(name)).getPath());
document = db.parse(fileInputStream);
} catch (SAXException e) {
e.printStackTrace();
}
NodeList booklist = document.getElementsByTagName(book);
for(int i = 0; i < booklist.getLength(); i++){
HashMap<String, String> stringMAP = new HashMap<>();
Element ele = (Element) booklist.item(i);
NodeList childNodes= ele.getChildNodes();
for(int j = 0; j < childNodes.getLength(); j++){
Node n = childNodes.item(j);
if(n.getNodeName() != "#text"){
stringMAP.put(n.getNodeName(),n.getTextContent());
}
}
mapArr.add(stringMAP);
}
}catch (ParserConfigurationException e){
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}
return mapArr;
}
}