资质申请文件解析

This commit is contained in:
dxfeng 2025-03-27 09:17:13 +08:00
parent 9b6ccc8732
commit 7dd3671dd2
9 changed files with 847 additions and 22 deletions

View File

@ -0,0 +1,24 @@
package com.engine.secret.entity.unpack;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author:dxfeng
* @createTime: 2025/03/26
* @version: 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ApplicationResource {
private String id;
private String aid;
private String fid;
private String rid;
private String createdTime;
private String isDelete;
}

View File

@ -0,0 +1,28 @@
package com.engine.secret.entity.unpack;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author:dxfeng
* @createTime: 2025/03/26
* @version: 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class DataConfig {
private String id;
private String mainTableName;
private String detailTableName;
private String rootPath;
List<DataConfig> childDataConfig;
List<DataConfigDetail> detailList;
List<FileConfig> fileList;
}

View File

@ -0,0 +1,21 @@
package com.engine.secret.entity.unpack;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author:dxfeng
* @createTime: 2025/03/26
* @version: 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class DataConfigDetail {
private String fieldName;
private String path;
private String condition;
}

View File

@ -0,0 +1,21 @@
package com.engine.secret.entity.unpack;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author:dxfeng
* @createTime: 2025/03/26
* @version: 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class FileConfig {
private String filedName;
private String fileId;
private String isFilled;
}

View File

@ -0,0 +1,26 @@
package com.engine.secret.entity.unpack;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author:dxfeng
* @createTime: 2025/03/26
* @version: 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ResourceInfo {
private String id;
private String fileName;
private String filePath;
private String fileSuffix;
private String virtualPath;
private String createdTime;
private String updatedTime;
private String isDelete;
}

View File

@ -0,0 +1,18 @@
package com.engine.secret.service;
import net.lingala.zip4j.model.FileHeader;
import java.util.zip.ZipFile;
/**
* @author:dxfeng
* @createTime: 2025/03/26
* @version: 1.0
*/
public interface UnpackZipService {
void dataUnpack(ZipFile zipFile, FileHeader jsonFileHeader);
void fileUnpack();
}

View File

@ -0,0 +1,24 @@
package com.engine.secret.service.impl;
import com.engine.core.impl.Service;
import com.engine.secret.service.UnpackZipService;
import net.lingala.zip4j.model.FileHeader;
import java.util.zip.ZipFile;
/**
* @author:dxfeng
* @createTime: 2025/03/26
* @version: 1.0
*/
public class OfflineZipUnpackServiceImpl extends Service implements UnpackZipService {
@Override
public void dataUnpack(ZipFile zipFile, FileHeader jsonFileHeader) {
}
@Override
public void fileUnpack() {
}
}

View File

@ -1,14 +1,24 @@
package com.engine.secret.service.impl;
import com.alibaba.fastjson.JSON;
import com.engine.core.impl.Service;
import com.engine.secret.entity.unpack.DataConfig;
import com.engine.secret.entity.unpack.DataConfigDetail;
import com.engine.secret.entity.unpack.FileConfig;
import com.engine.secret.exception.CustomizeRunTimeException;
import com.engine.secret.service.QualificationApplicationService;
import com.engine.secret.util.ModeUtil;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.wbi.util.Util;
import net.lingala.zip4j.ZipFile;
import net.lingala.zip4j.exception.ZipException;
import net.lingala.zip4j.model.FileHeader;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import weaver.conn.RecordSet;
import weaver.file.ImageFileManager;
import weaver.formmode.IgnoreCaseHashMap;
import java.io.IOException;
import java.io.InputStream;
@ -16,10 +26,7 @@ import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.*;
/**
* @author:dxfeng
@ -27,10 +34,14 @@ import java.util.Optional;
* @version: 1.0
*/
public class QualificationApplicationServiceImpl extends Service implements QualificationApplicationService {
private static String CONFIG_TABLE_NAME = "uf_bmj_sjjxpz";
private static String CONFIG_DETAIL_TABLE_NAME = "uf_bmj_sjjxpz_dt1";
private static String FILE_DETAIL_TABLE_NAME = "uf_bmj_sjjxpz_dt2";
@Override
public Map<String, Object> parsingFiles(Map<String, Object> param) {
try {
int fileId = 1627;
String imageId = Util.null2String(param.get("imageId"));
if (StringUtils.isBlank(imageId)) {
throw new CustomizeRunTimeException("文件获取失败,请确认文件是否上传");
@ -38,55 +49,74 @@ public class QualificationApplicationServiceImpl extends Service implements Qual
Map<String, Object> returnMap = new HashMap<>();
// 根据文件id获取文件流
ImageFileManager manager = new ImageFileManager();
manager.getImageFileInfoById(fileId);
manager.getImageFileInfoById(Integer.parseInt(imageId));
manager.getImageFileName();
InputStream inputStream = manager.getInputStream();
Path tempZipFile = Files.createTempFile("temp", ".zip");
Files.copy(inputStream, tempZipFile, StandardCopyOption.REPLACE_EXISTING);
String password = "zizhi102!";
//解压文件处理压缩包
unzipWithPassword(tempZipFile, Paths.get("output"), password);
return returnMap;
} catch (Exception e) {
throw new CustomizeRunTimeException("文件解析失败", e);
}
}
private static void unzipWithPassword(Path zipFilePath, Path outputDir, String password) {
/**
* 解压ZIP文件
*
* @param zipFilePath
* @param outputDir
* @param password
*/
private void unzipWithPassword(Path zipFilePath, Path outputDir, String password) {
try {
ZipFile zipFile = new ZipFile(zipFilePath.toFile());
if (zipFile.isEncrypted()) {
zipFile.setPassword(password.toCharArray()); // 设置密码
zipFile.setPassword(password.toCharArray());
}
// 遍历并解压所有文件
zipFile.extractAll(outputDir.toString());
System.out.println("解压成功");
// 12345678_资质申请附件/(database)data.json
// 存储文件
// 遍历 ZIP 内文件可选
List<FileHeader> fileHeaders = zipFile.getFileHeaders();
// 获取压缩包解析后的根目录
Optional<String> commonRoot = fileHeaders.stream()
.map(FileHeader::getFileName)
.filter(path -> !path.trim().isEmpty())
.map(path -> path.split("/")[0]) // 取第一级目录或文件名
.map(path -> path.split("/")[0])
.distinct()
.reduce((a, b) -> a.equals(b) ? a : null);
String rootPath = commonRoot.orElse(null);
Map<String,FileHeader> fileHeaderMap = new HashMap<>();
String rootPath = commonRoot.orElse("");
// TODO 测试 后续删除
Map<String, FileHeader> fileHeaderMap = new HashMap<>();
for (FileHeader header : fileHeaders) {
if (header.isDirectory()) {
continue;
}
System.out.println("文件: " + header.getFileName());
fileHeaderMap.put(header.getFileName(),header);
fileHeaderMap.put(header.getFileName(), header);
}
// 遍历配置表
// 获取数据文件用于后续数据解析
String jsonFileName = StringUtils.isBlank(rootPath) ? "(database)data.json" : rootPath + "/(database)data.json";
FileHeader jsonFileHeader = zipFile.getFileHeader(jsonFileName);
if (jsonFileHeader != null) {
// 离线端方式
offline(zipFile, jsonFileHeader);
}
// TODO 兼容其他方式
} catch (ZipException e) {
} catch (IOException e) {
if (e.getMessage().contains("Wrong password")) {
System.err.println("密码错误");
} else {
@ -100,4 +130,313 @@ public class QualificationApplicationServiceImpl extends Service implements Qual
}
}
}
/**
* 离线解析方式
*
* @param zipFile
* @param jsonFileHeader
* @throws JsonProcessingException
*/
private void offline(ZipFile zipFile, FileHeader jsonFileHeader) throws JsonProcessingException {
// 解析JSON文件
String jsonContent = parseJsonContent(zipFile, jsonFileHeader);
ObjectMapper mapper = new ObjectMapper();
JsonNode rootNode = mapper.readTree(jsonContent);
List<DataConfig> dataConfigList = getDataConfig("0");
if (CollectionUtils.isNotEmpty(dataConfigList)) {
// 遍历配置读取配置文件并插入数据
for (DataConfig dataConfig : dataConfigList) {
String mainTableName = dataConfig.getMainTableName();
String rootPath = dataConfig.getRootPath();
// 字段对照关系
List<DataConfigDetail> fieldDetailList = dataConfig.getDetailList();
// 获取明细表相关信息
List<DataConfig> childDataConfigList = dataConfig.getChildDataConfig();
List<FileConfig> fileList = dataConfig.getFileList();
if (CollectionUtils.isNotEmpty(fieldDetailList)) {
if (StringUtils.isNotBlank(rootPath)) {
if (rootPath.contains("[*]")) {
rootPath = rootPath.replace("[*]", "");
JsonNode jsonNode = rootNode.at(rootPath);
if (null == jsonNode) {
throw new CustomizeRunTimeException("数据解析失败,未找到对应字段:[" + rootPath + "]");
}
if (!jsonNode.isArray()) {
throw new CustomizeRunTimeException("数据解析失败,未找到对应字段集合:[" + rootPath + "]");
}
for (JsonNode node : jsonNode) {
int billId = insertMainTable(node, mainTableName, fieldDetailList);
if (billId < 0) {
continue;
}
dealDetailData(rootNode, billId, childDataConfigList);
// TODO 更新文件信息
}
} else {
JsonNode jsonNode = rootNode.at(rootPath);
int billId = insertMainTable(jsonNode, mainTableName, fieldDetailList);
if (billId < 0) {
continue;
}
dealDetailData(rootNode, billId, childDataConfigList);
}
} else {
int billId = insertMainTable(rootNode, mainTableName, fieldDetailList);
if (billId < 0) {
continue;
}
dealDetailData(rootNode, billId, childDataConfigList);
}
}
}
}
}
/**
* 处理明细表数据
*
* @param rootNode
* @param mainId
* @param childDataConfigList
*/
private void dealDetailData(JsonNode rootNode, int mainId, List<DataConfig> childDataConfigList) {
if (CollectionUtils.isEmpty(childDataConfigList)) {
return;
}
for (DataConfig childDataConfig : childDataConfigList) {
String detailTableName = childDataConfig.getDetailTableName();
// 获取字段对照关系数据
List<DataConfigDetail> fieldList = childDataConfig.getDetailList();
String rootPath = childDataConfig.getRootPath();
if (StringUtils.isNotBlank(rootPath)) {
if (rootPath.contains("[*]")) {
rootPath = rootPath.replace("[*]", "");
JsonNode jsonNode = rootNode.at(rootPath);
if (null == jsonNode) {
throw new CustomizeRunTimeException("数据解析失败,未找到对应字段:[" + rootPath + "]");
}
if (!jsonNode.isArray()) {
throw new CustomizeRunTimeException("数据解析失败,未找到对应字段集合:[" + rootPath + "]");
}
for (JsonNode node : jsonNode) {
insertDetailTable(node, detailTableName, mainId, fieldList);
}
} else {
JsonNode jsonNode = rootNode.at(rootPath);
insertDetailTable(jsonNode, detailTableName, mainId, fieldList);
}
} else {
insertDetailTable(rootNode, detailTableName, mainId, fieldList);
}
}
}
/**
* 构建主表数据,插入数据并返回数据ID
*
* @param jsonNode
* @param mainTableName
* @param fieldList
* @return
*/
private int insertMainTable(JsonNode jsonNode, String mainTableName, List<DataConfigDetail> fieldList) {
Map<String, Object> insertMap = new IgnoreCaseHashMap<>();
for (DataConfigDetail fieldDetail : fieldList) {
String fieldName = fieldDetail.getFieldName();
String path = fieldDetail.getPath();
String condition = fieldDetail.getCondition();
JsonNode atNode = jsonNode.at(path);
if (null != atNode) {
String value = atNode.asText();
// 判断是否满足条件
if (StringUtils.isNotBlank(condition) && !value.equals(condition)) {
return -1;
}
insertMap.put(fieldName, value);
}
}
int size = insertMap.size();
if (size == 0) {
return -1;
}
String uuid = UUID.randomUUID().toString();
insertMap.put("modeuuid", uuid);
int formModeId = ModeUtil.getModeIdByTableName(mainTableName);
insertMap.put("formmodeid", formModeId);
// 构建主表数据插入基本字段
// TODO ModeUtil.buildModeInsertFields(insertMap, user.getUID());
// 插入数据
// TODO ModeUtil.insertData(insertMap, mainTableName);
// 数据权限重构,返回数据ID
// TODO return ModeUtil.refreshRight(uuid, mainTableName, formModeId, user.getUID());
System.out.println("insertMainTable: " + JSON.toJSONString(insertMap));
return 1;
}
/**
* 插入明细表数据
*
* @param jsonNode
* @param detailTableName
* @param mainId
* @param fieldList
*/
private void insertDetailTable(JsonNode jsonNode, String detailTableName, int mainId, List<DataConfigDetail> fieldList) {
Map<String, Object> insertMap = new IgnoreCaseHashMap<>();
for (DataConfigDetail fieldDetail : fieldList) {
String fieldName = fieldDetail.getFieldName();
String path = fieldDetail.getPath();
String condition = fieldDetail.getCondition();
JsonNode atNode = jsonNode.at(path);
if (null != atNode) {
String value = atNode.asText();
// 判断是否满足条件
if (StringUtils.isNotBlank(condition) && !value.equals(condition)) {
return;
}
insertMap.put(fieldName, value);
}
}
int size = insertMap.size();
if (size == 0) {
return;
}
insertMap.put("mainId", mainId);
System.out.println("insertDetailTable: " + JSON.toJSONString(insertMap));
// 插入数据
// TODO ModeUtil.insertData(insertMap, detailTableName);
}
/**
* 获取数据配置
*
* @param type
* @return
*/
private List<DataConfig> getDataConfig(String type) {
// 获取离线包的先关配置
List<DataConfig> dataConfigList = new ArrayList<>();
RecordSet rs = new RecordSet();
// TODO 表名字段名待确定
rs.executeQuery("select * from " + CONFIG_TABLE_NAME + " where xrbbm is not null and xrbbm !='' and sjbly = ?", type);
while (rs.next()) {
DataConfig dataConfig = new DataConfig();
dataConfig.setId(rs.getString("id"));
dataConfig.setMainTableName(rs.getString("xrbbm"));
dataConfig.setDetailTableName(rs.getString("xrbmxb"));
dataConfig.setRootPath(rs.getString("gjd"));
// 获取字段对照关系数据
List<DataConfigDetail> detailList = getDetailList(dataConfig.getId());
dataConfig.setDetailList(detailList);
dataConfig.setFileList(getFileList(dataConfig.getId()));
// 获取明细表相关信息
String detailTableName = dataConfig.getDetailTableName();
if (StringUtils.isNotBlank(detailTableName)) {
List<DataConfig> childDataConfig = getChildDataConfig(detailTableName, type);
dataConfig.setChildDataConfig(childDataConfig);
}
dataConfigList.add(dataConfig);
}
return dataConfigList;
}
/**
* 获取关联的明细表配置
*
* @param detailTableName
* @param type
* @return
*/
private List<DataConfig> getChildDataConfig(String detailTableName, String type) {
String[] detailNameArray = detailTableName.split(",");
List<DataConfig> dataConfigList = new ArrayList<>();
for (String dtName : detailNameArray) {
RecordSet rs = new RecordSet();
// TODO 表名字段名待确定
rs.executeQuery("select * from " + CONFIG_TABLE_NAME + " where (xrbbm is null or xrbbm ='') and xrbmxb = ? and sjbly = ?", dtName, type);
while (rs.next()) {
DataConfig dataConfig = new DataConfig();
dataConfig.setId(rs.getString("id"));
dataConfig.setMainTableName(rs.getString("xrbbm"));
dataConfig.setDetailTableName(rs.getString("xrbmxb"));
dataConfig.setRootPath(rs.getString("gjd"));
// 获取字段对照关系数据
List<DataConfigDetail> detailList = getDetailList(dataConfig.getId());
dataConfig.setDetailList(detailList);
dataConfig.setFileList(getFileList(dataConfig.getId()));
dataConfigList.add(dataConfig);
}
}
return dataConfigList;
}
/**
* 获取字段对照关系
*
* @param mainId
* @return
*/
private List<DataConfigDetail> getDetailList(String mainId) {
List<DataConfigDetail> detailList = new ArrayList<>();
RecordSet rs = new RecordSet();
rs.executeQuery("select * from " + CONFIG_DETAIL_TABLE_NAME + " where mainId = ?", mainId);
while (rs.next()) {
// TODO 表名字段名待确定
detailList.add(DataConfigDetail.builder().fieldName(rs.getString("zdm")).path(rs.getString("wjbs")).condition(rs.getString("tj")).build());
}
return detailList;
}
/**
* 获取文件对照关系
*
* @param mainId
* @return
*/
private List<FileConfig> getFileList(String mainId) {
List<FileConfig> fileList = new ArrayList<>();
RecordSet rs = new RecordSet();
rs.executeQuery("select * from " + FILE_DETAIL_TABLE_NAME + " where mainId = ?", mainId);
while (rs.next()) {
// TODO 表名字段名待确定
fileList.add(FileConfig.builder().filedName(rs.getString("zdm")).fileId(rs.getString("wjbs")).isFilled(rs.getString("bzwj")).build());
}
return fileList;
}
/**
* 获取JSON文件内容
*
* @param zipFile
* @param header
* @return
*/
private static String parseJsonContent(ZipFile zipFile, FileHeader header) {
ObjectMapper mapper = new ObjectMapper();
try (InputStream is = zipFile.getInputStream(header)) {
JsonNode rootNode = mapper.readTree(is);
return rootNode.toPrettyString();
} catch (Exception e) {
throw new CustomizeRunTimeException(e);
}
}
}

View File

@ -0,0 +1,324 @@
package com.engine.secret.util;
import com.engine.secret.exception.CustomizeRunTimeException;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.util.IOUtils;
import weaver.common.DateUtil;
import weaver.conn.RecordSet;
import weaver.docs.docs.*;
import weaver.file.ImageFileManager;
import weaver.formmode.IgnoreCaseHashMap;
import weaver.formmode.setup.ModeRightInfo;
import weaver.general.TimeUtil;
import weaver.general.Util;
import weaver.hrm.User;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
* @author:dxfeng
* @createTime: 2025/03/26
* @version: 1.0
*/
public class ModeUtil {
/**
* 生成附件ID
*
* @param inputStream
* @param filename
* @return
*/
public static int generateImageFileId(InputStream inputStream, String filename) {
int imageFileId;
try {
byte[] bytes = IOUtils.toByteArray(inputStream);
ImageFileManager ifm = new ImageFileManager();
ifm.setData(bytes);
ifm.setImagFileName(filename);
imageFileId = ifm.saveImageFile();
} catch (IOException e) {
throw new RuntimeException(e);
}
return imageFileId;
}
/**
* 附件imageFieldId生成docId
*
* @param secCategory
* @param imageFieldId
* @param user
* @return
* @throws Exception
*/
public static int createDocId(int secCategory, int imageFieldId, User user) throws Exception {
ImageFileManager manager = new ImageFileManager();
manager.getImageFileInfoById(imageFieldId);
String filenameqc = manager.getImageFileName();
String filenamebc = filenameqc.substring(0, filenameqc.lastIndexOf("."));
RecordSet rs = new RecordSet();
DocManager dm = new DocManager();
DocImageManager imgManger = new DocImageManager();
imgManger.setDocfiletype("2");
int docId = dm.getNextDocId(rs);
imgManger.setDocid(docId);
imgManger.setImagefileid(imageFieldId);
imgManger.setImagefilename(filenameqc);
imgManger.setIsextfile("1");
imgManger.AddDocImageInfo();
String date = TimeUtil.getCurrentDateString();
String time = TimeUtil.getOnlyCurrentTimeString();
dm.setId(docId);
dm.setMaincategory(0);
dm.setSubcategory(0);
dm.setSeccategory(secCategory);
dm.setLanguageid(user.getLanguage());
dm.setDocstatus("1");
dm.setDocsubject(filenamebc);
dm.setDoccreaterid(user.getUID());
dm.setDocCreaterType(user.getLogintype());
dm.setUsertype(user.getLogintype());
dm.setOwnerid(user.getUID());
dm.setOwnerType(user.getLogintype());
dm.setDoclastmoduserid(user.getUID());
dm.setDocLastModUserType(user.getLogintype());
dm.setDoccreatedate(date);
dm.setDoclastmoddate(date);
dm.setDoccreatetime(time);
dm.setDoclastmodtime(time);
dm.setDoclangurage(user.getLanguage());
dm.setKeyword(filenameqc);
dm.setIsapprover("0");
dm.setIsreply("");
dm.setDocdepartmentid(user.getUserDepartment());
dm.setDocreplyable("1");
dm.setAccessorycount(1);
dm.setParentids("" + docId);
dm.setUserid(user.getUID());
DocCoder docCoder = new DocCoder();
dm.setDocCode(docCoder.getDocCoder("" + secCategory));
dm.setDocEditionId(dm.getNextEditionId(rs));
dm.setDocEdition(1);
dm.AddDocInfo();
dm.AddShareInfo();
DocViewer DocViewer = new DocViewer();
DocViewer.setDocShareByDoc("" + docId);
DocComInfo dc = new DocComInfo();
dc.addDocInfoCache("" + docId);
return docId;
}
/**
* 获取单个记录映射
*
* @param rs RecordSet
* @return
*/
public static IgnoreCaseHashMap<String,Object> getSingleRecordMap(RecordSet rs) {
IgnoreCaseHashMap<String,Object> dataMap = new IgnoreCaseHashMap<>();
if (rs.next()) {
String[] columnNames = rs.getColumnName();
for (String columnName : columnNames) {
dataMap.put(columnName, parseBlankToNull(rs.getString(columnName)));
}
}
return dataMap;
}
public static List<Map<String, Object>> getRecordMapList(RecordSet rs) {
List<Map<String, Object>> list = new ArrayList<>();
while (rs.next()) {
String[] columnNames = rs.getColumnName();
Map<String, Object> dataMap = new IgnoreCaseHashMap<>();
for (String columnName : columnNames) {
dataMap.put(columnName.toLowerCase(), parseBlankToNull(rs.getString(columnName)));
}
list.add(dataMap);
}
return list;
}
/**
* 插入数据
*
* @param dataMap 数据集合
* @param tableName 表名
*/
public static void insertData(Map<String, Object> dataMap, String tableName) {
List<String> fieldList = new ArrayList<>();
List<String> dataList = new ArrayList<>();
List<String> paramList = new ArrayList<>();
dataMap.forEach((key, value) -> {
if (null != value) {
String valueStr = String.valueOf(value);
if(StringUtils.isNotBlank(valueStr)) {
fieldList.add(key);
dataList.add(valueStr);
paramList.add("?");
}
}
});
String insertSql = " insert into " + tableName + "(" + StringUtils.join(fieldList, ",") + ") values (" + StringUtils.join(paramList, ",") + ")";
RecordSet rs = new RecordSet();
rs.executeUpdate(insertSql, dataList);
if (StringUtils.isNotBlank(rs.getExceptionMsg())) {
throw new CustomizeRunTimeException(rs.getExceptionMsg());
}
}
/**
* 根据ID更新数据
*
* @param dataMap
* @param tableName
*/
public static void updateDataById(Map<String, Object> dataMap, String tableName) {
List<String> fieldList = new ArrayList<>();
List<Object> dataList = new ArrayList<>();
String id = Util.null2String(dataMap.get("id"));
dataMap.remove("id");
dataMap.forEach((key, value) -> {
fieldList.add(key + " = ? ");
dataList.add(value);
});
dataList.add(id);
String updateSql = "update " + tableName + " set " + StringUtils.join(fieldList, ",") + " where id = ? ";
RecordSet rs = new RecordSet();
rs.executeUpdate(updateSql, dataList);
if (StringUtils.isNotBlank(rs.getExceptionMsg())) {
throw new CustomizeRunTimeException(rs.getExceptionMsg());
}
}
/**
* 更新数据
*
* @param dataMap
* @param tableName
* @param whereSql
*/
public static void updateData(Map<String, Object> dataMap, String tableName, String whereSql) {
List<String> fieldList = new ArrayList<>();
List<Object> dataList = new ArrayList<>();
dataMap.forEach((key, value) -> {
fieldList.add(key + " = ? ");
dataList.add(value);
});
String updateSql = "update " + tableName + " set " + StringUtils.join(fieldList, ",") + whereSql;
RecordSet rs = new RecordSet();
rs.executeUpdate(updateSql, dataList);
if (StringUtils.isNotBlank(rs.getExceptionMsg())) {
throw new CustomizeRunTimeException(rs.getExceptionMsg());
}
}
/**
* 删除数据
*
* @param deleteSql
*/
public static void deleteData(String deleteSql) {
RecordSet rs = new RecordSet();
rs.executeUpdate(deleteSql);
if (StringUtils.isNotBlank(rs.getExceptionMsg())) {
throw new CustomizeRunTimeException(rs.getExceptionMsg());
}
}
/**
* 构建建模表基本数据
*
* @param mainDataMap 参数集合
*/
public static void buildModeInsertFields(Map<String, Object> mainDataMap, int userId) {
String dateTime = DateUtil.getFullDate();
String[] dateSplit = dateTime.split(" ");
mainDataMap.put("modedatacreater", userId);
mainDataMap.put("modedatacreatedate", dateSplit[0]);
mainDataMap.put("modedatacreatetime", dateSplit[1]);
mainDataMap.put("modedatacreatertype", "0");
}
/**
* 构建建模表基本数据
*
* @param mainDataMap 参数集合
*/
public static void buildModeUpdateFields(Map<String, Object> mainDataMap, int userId) {
String dateTime = DateUtil.getFullDate();
mainDataMap.put("modedatamodifier", userId);
mainDataMap.put("modedatamodifydatetime", dateTime);
}
/**
* 建模表数据权限重构
*
* @param uuid
* @param modeTable
* @param formModeId
*/
public static int refreshRight(String uuid, String modeTable, int formModeId, int creator) {
RecordSet rs = new RecordSet();
rs.executeQuery("select id from " + modeTable + " where modeuuid='" + uuid + "'");
if (rs.next()) {
//建模数据的id
int bid = Util.getIntValue(rs.getString("id"));
ModeRightInfo modeRightInfo = new ModeRightInfo();
modeRightInfo.setNewRight(true);
//新建的时候添加共享
modeRightInfo.editModeDataShare(creator, formModeId, bid);
return bid;
}
return -1;
}
/**
* 转换空字符串为null
*
* @param str 字符串
* @return 转换后的字符串
*/
public static Object parseBlankToNull(String str) {
return StringUtils.isBlank(str) ? null : str;
}
/**
* 转换空字符串为null
*
* @param obj 对象
* @return 转换后的字符串
*/
public static String parseBlankToNull(Object obj) {
return Objects.isNull(obj) ? null : StringUtils.isBlank(obj.toString()) ? null : obj.toString();
}
/**
* 根据建模表名,获取建模ID
*
* @param modeTable
* @return
*/
public static int getModeIdByTableName(String modeTable) {
int formModeId = -1;
RecordSet rs = new RecordSet();
rs.executeQuery("select id from modeinfo where formid =( select id from workflow_bill where tablename = ? ) and isdelete = 0 order by id", modeTable);
if (rs.next()) {
formModeId = rs.getInt("id");
}
return formModeId;
}
}