From 62aef79f0efa90e5770dd5b49183b931e96b9c14 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Tue, 15 Apr 2025 13:41:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E8=A7=A3=E6=9E=90=20?= =?UTF-8?q?=E8=A1=A8=E5=8D=95=E5=AD=97=E6=AE=B5=E5=8F=8D=E5=86=99=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E4=B8=BA=E5=AD=97=E6=AE=B5=E8=81=94=E5=8A=A8=E6=96=B9?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/OfflineZipUnpackServiceImpl.java | 90 ++++--------------- 1 file changed, 15 insertions(+), 75 deletions(-) diff --git a/src/com/engine/secret/service/impl/OfflineZipUnpackServiceImpl.java b/src/com/engine/secret/service/impl/OfflineZipUnpackServiceImpl.java index 6bc1989..805f241 100644 --- a/src/com/engine/secret/service/impl/OfflineZipUnpackServiceImpl.java +++ b/src/com/engine/secret/service/impl/OfflineZipUnpackServiceImpl.java @@ -4,10 +4,6 @@ import cn.hutool.core.convert.Convert; import com.alibaba.fastjson.JSON; import com.engine.core.impl.Service; import com.engine.secret.entity.unpack.*; -import com.engine.secret.enums.ApplicationCategory; -import com.engine.secret.enums.CategoryValue; -import com.engine.secret.enums.IntegrateCategory; -import com.engine.secret.enums.PrintCategory; import com.engine.secret.exception.CustomizeRunTimeException; import com.engine.secret.service.UnpackZipService; import com.engine.secret.util.ConfigUtil; @@ -25,7 +21,7 @@ import weaver.general.BaseBean; import java.io.InputStream; import java.util.*; -import java.util.function.Function; +import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; /** @@ -54,18 +50,20 @@ public class OfflineZipUnpackServiceImpl extends Service implements UnpackZipSer private final Map returnMap = new HashMap<>(); private ZipFile zipFile; + private final Map> insertTableMap = new ConcurrentHashMap<>(); + private final BaseBean baseBean = new BaseBean(); @Override public Map registerAcceptance(ZipFile zipFile, String requestId, JsonNode rootNode, Map imageFileMap) { try { initializeResources(zipFile, requestId, imageFileMap); - buildFormFields(rootNode); insertDataAndFiles(rootNode); } catch (Exception e) { baseBean.writeLog(e); throw new CustomizeRunTimeException(e); } + returnMap.put("data", insertTableMap); return returnMap; } @@ -424,13 +422,13 @@ public class OfflineZipUnpackServiceImpl extends Service implements UnpackZipSer if (!jsonNode.isArray()) { throw new CustomizeRunTimeException("数据解析失败,未找到对应字段集合:[" + path + "]"); } - + Set tableIdList = getTableIdList(mainTableName); for (JsonNode node : jsonNode) { int billId = insertMainTable(node, mainTableName, relatedField, fieldDetailList, mainTableFieldMap); if (billId < 0) { continue; } - + tableIdList.add(billId); dealDetailData(rootNode, billId, childDataConfigList, formFieldList); dealFileList(billId, fileList, mainTableName, false); } @@ -459,7 +457,7 @@ public class OfflineZipUnpackServiceImpl extends Service implements UnpackZipSer if (billId < 0) { return; } - + getTableIdList(mainTableName).add(billId); dealDetailData(rootNode, billId, childDataConfigList, formFieldList); dealFileList(billId, fileList, mainTableName, false); } @@ -481,11 +479,12 @@ public class OfflineZipUnpackServiceImpl extends Service implements UnpackZipSer List fieldDetailList, Map mainTableFieldMap, List childDataConfigList, List formFieldList, List fileList) throws Exception { + int billId = insertMainTable(rootNode, mainTableName, relatedField, fieldDetailList, mainTableFieldMap); if (billId < 0) { return; } - + getTableIdList(mainTableName).add(billId); dealDetailData(rootNode, billId, childDataConfigList, formFieldList); dealFileList(billId, fileList, mainTableName, false); } @@ -648,7 +647,7 @@ public class OfflineZipUnpackServiceImpl extends Service implements UnpackZipSer * @throws Exception */ private boolean processFieldForInsert(JsonNode jsonNode, Map insertMap, - DataConfigDetail fieldDetail, Map fieldMap) throws Exception { + DataConfigDetail fieldDetail, Map fieldMap) throws Exception { String fieldName = fieldDetail.getFieldName(); JsonNode atNode = jsonNode.at(fieldDetail.getPath()); @@ -701,7 +700,7 @@ public class OfflineZipUnpackServiceImpl extends Service implements UnpackZipSer for (DataConfigDetail fieldDetail : fieldList) { boolean isReturn = processFieldForInsert(jsonNode, insertMap, fieldDetail, detailTableFieldMap); - if(isReturn){ + if (isReturn) { return; } } @@ -984,74 +983,15 @@ public class OfflineZipUnpackServiceImpl extends Service implements UnpackZipSer } } - /** - * 构建表单反填字段信息 - * - * @param rootNode - */ - private void buildFormFields(JsonNode rootNode) { - Map data = new HashMap<>(); - processQualification(rootNode, "typeIntegrateList", - ApplicationCategory.CLASSIFIED_INFO_SYSTEM_INTEGRATION_QUALIFICATION, data, IntegrateCategory::getValue); - - processQualification(rootNode, "typePrintList", - ApplicationCategory.NATIONAL_SECRET_CARRIER_PRINTING_QUALIFICATION, data, PrintCategory::getValue); - } /** - * 解析配置文件,构建表单数据 + * 获取主表的ID集合 * - * @param rootNode - * @param nodeName - * @param category - * @param data - * @param resolver - */ - private void processQualification(JsonNode rootNode, String nodeName, - ApplicationCategory category, Map data, - Function> resolver) { - JsonNode typeList = rootNode.get(nodeName); - if (!isValidArrayNode(typeList)) { - return; - } - - data.put("category_name", category.getName()); - data.put("category_value", category.getValue()); - - JsonNode applicationInfo = rootNode.get("applicationInfo"); - data.put("level", applicationInfo.get("applicationLevel").asInt()); - data.put("companyName", applicationInfo.get("companyName").asText()); - - JsonNode applicationQualification = applicationInfo.get("applicationQualification"); - String values = extractQualificationValues(applicationQualification, resolver); - data.put("types", values); - returnMap.put("data", data); - } - - /** - * 判断是否为数组节点且不为空 - * - * @param node + * @param mainTableName * @return */ - private boolean isValidArrayNode(JsonNode node) { - return !node.isMissingNode() && node.isArray() && !node.isEmpty(); - } + private Set getTableIdList(String mainTableName) { + return insertTableMap.computeIfAbsent(mainTableName, k -> ConcurrentHashMap.newKeySet()); - /** - * 根据文本,提取枚举类中对应的value值 - * - * @param applicationQualification - * @param resolver - * @return - */ - private String extractQualificationValues(JsonNode applicationQualification, - Function> resolver) { - return Arrays.stream(applicationQualification.asText().split("、")) - .map(resolver) - .filter(Objects::nonNull) - .map(category -> ((CategoryValue) category).getSelectValue()) - .map(String::valueOf) - .collect(Collectors.joining(",")); } } \ No newline at end of file