From 07bd010b2bbd939ade44c7b1a299fa911f8742e8 Mon Sep 17 00:00:00 2001 From: cheng <1821349743@qq.com> Date: 星期三, 25 十月 2023 09:30:11 +0800 Subject: [PATCH] commit --- product-server-data-center/src/main/java/com/product/data/center/service/MesExternalService.java | 1958 +++++++++++++++++++++++++++++----------------------------- 1 files changed, 985 insertions(+), 973 deletions(-) diff --git a/product-server-data-center/src/main/java/com/product/data/center/service/MesExternalService.java b/product-server-data-center/src/main/java/com/product/data/center/service/MesExternalService.java index 19092a8..f6f9462 100644 --- a/product-server-data-center/src/main/java/com/product/data/center/service/MesExternalService.java +++ b/product-server-data-center/src/main/java/com/product/data/center/service/MesExternalService.java @@ -54,1046 +54,1058 @@ @Service public class MesExternalService extends AbstractBaseService implements IMesExternalService, IRemoteService, com.product.data.service.impl.IRemoteService { - @Value("${data.system.name}") - private String dataSystemName; + @Value("${data.system.name}") + private String dataSystemName; - private CommonService commonService = null; + private CommonService commonService = null; - private FieldSetEntity collectLogCache = null; + private FieldSetEntity collectLogCache = null; - public CommonService getCommonService() { - if (this.commonService == null) { - this.commonService = SpringBeanUtil.getBean(CommonService.class); - } - return commonService; - } + public CommonService getCommonService() { + if (this.commonService == null) { + this.commonService = SpringBeanUtil.getBean(CommonService.class); + } + return commonService; + } - public static void main(String[] args) { - Date parse = DateUtil.parse("2023-10-23 18:22:50", "yyyy-MM-dd HH:mm:ss"); - Date parse1 = DateUtil.parse("2023-10-23 18:24:11", "yyyy-MM-dd HH:mm:ss"); - Date parse2 = DateUtil.parse("2023-10-23 18:24:21", "yyyy-MM-dd HH:mm:ss"); + public static void main(String[] args) { + Date parse = DateUtil.parse("2023-10-23 18:22:50", "yyyy-MM-dd HH:mm:ss"); + Date parse1 = DateUtil.parse("2023-10-23 18:24:11", "yyyy-MM-dd HH:mm:ss"); + Date parse2 = DateUtil.parse("2023-10-23 18:24:21", "yyyy-MM-dd HH:mm:ss"); - Set<Date> set = Sets.newHashSet(parse, parse1, parse2); + Set<Date> set = Sets.newHashSet(parse, parse1, parse2); - List<Date> sets = CollectionUtil.toList(set.toArray(new Date[0])); + List<Date> sets = CollectionUtil.toList(set.toArray(new Date[0])); - Optional<Date> max = sets.stream().max(Comparator.comparing((a) -> a.getTime())); - System.out.println(max.get()); + Optional<Date> max = sets.stream().max(Comparator.comparing((a) -> a.getTime())); + System.out.println(max.get()); - } + } - public void splitTableData() { - FieldSetEntity reportDbConfig = getBaseDao().getFieldSetByFilter(CmnConst.PRODUCT_SYS_DATA_SYNC_MANAGER, "SYNC_NAME=?", new Object[]{"鎶ヨ〃鏁版嵁搴�"}, false); - if (FieldSetEntity.isEmpty(reportDbConfig)) { - throw new BaseException(ErrorCode.REPORT_DB_CONFIG_FAIL); - } - DataBaseEntity dbe = new DataBaseEntity(reportDbConfig); - Dao reportDao = dbe.getDao(); - Set<String> trackingTableSet = QuerySqlParseUtil.getAllTableName(reportDao, dbe.getDbName(), "da_t_wip_tracking"); + public void splitTableData() { +// FieldSetEntity reportDbConfig = getBaseDao().getFieldSetByFilter(CmnConst.PRODUCT_SYS_DATA_SYNC_MANAGER, "SYNC_NAME=?", new Object[]{"鎶ヨ〃鏁版嵁搴�"}, false); +// if (FieldSetEntity.isEmpty(reportDbConfig)) { +// throw new BaseException(ErrorCode.REPORT_DB_CONFIG_FAIL); +// } +// DataBaseEntity dbe = new DataBaseEntity(reportDbConfig); +// Dao reportDao = dbe.getDao(); +// Set<String> trackingTableSet = QuerySqlParseUtil.getAllTableName(reportDao, dbe.getDbName(), "da_t_wip_tracking"); +// +// for (String tableName : trackingTableSet) { +// //鑾峰彇骞翠唤浠庤〃鍚嶆渶鍚庝竴涓� 涓嬪垝绾垮紑濮嬫埅鍙� +// String year = tableName.substring(tableName.lastIndexOf("_") + 1); +// if (!StringUtils.equalsAny(year, "2023") || year.length() > 4) { +// continue; +// } +// //鑾峰彇琛ㄥ墠缂� +// String tablePrefix = tableName.substring(0, tableName.lastIndexOf("_")); +// ExecutorService executorService = Executors.newFixedThreadPool(12); +// for (int i = 1; i <= 12; i++) { +// final int finalI = i; +// executorService.submit(() -> { +// Dao currentDao = dbe.newDao(); +// //鑾峰彇褰撳墠鏈堜唤 浠M鏍煎紡鍖� +// String month = String.format("%02d", finalI); +// //妫�鏌ユ湀浠藉搴旂殑琛ㄦ槸鍚﹀瓨鍦� +// String monthTableName = tablePrefix + "_" + year + month; +// Set<String> allTableName = QuerySqlParseUtil.getAllTableName(reportDao, dbe.getDbName(), tablePrefix + "_" + year + month); +// if (allTableName.size() == 0 || !allTableName.contains(monthTableName)) { +// //鏍规嵁鍘熷琛ㄧ粨鏋勫垱寤烘柊琛� +// String sql = "create table " + monthTableName + " like " + tableName; +// currentDao.executeSql(sql); +// SpringMVCContextHolder.getSystemLogger().info("鍒涘缓琛細" + monthTableName); +// } +// String sql = "INSERT INTO " + monthTableName + " SELECT * FROM " + tableName + " WHERE MONTH(update_date)=" + finalI; +// currentDao.executeSql(sql); +// currentDao.closeConnection(); +// }); +// +// } +// executorService.shutdown(); +// while (true) { +// try { +// if (executorService.awaitTermination(5, TimeUnit.SECONDS)) break; +// Thread.sleep(5000); +// SpringMVCContextHolder.getSystemLogger().info("绾跨▼绛夊緟涓�..."); +// } catch (InterruptedException e) { +// e.printStackTrace(); +// } +// +// } +// } +// reportDao.closeConnection(); + } - for (String tableName : trackingTableSet) { - //鑾峰彇骞翠唤浠庤〃鍚嶆渶鍚庝竴涓� 涓嬪垝绾垮紑濮嬫埅鍙� - String year = tableName.substring(tableName.lastIndexOf("_") + 1); - if (StringUtils.equalsAny(year, "2017", "2018") || year.length() > 4) { - continue; - } - //鑾峰彇琛ㄥ墠缂� - String tablePrefix = tableName.substring(0, tableName.lastIndexOf("_")); - ExecutorService executorService = Executors.newFixedThreadPool(12); - for (int i = 1; i <= 12; i++) { - if ("2023".equals(year) && i > 9) { - break; - } - final int finalI = i; - executorService.submit(() -> { - Dao currentDao = dbe.newDao(); - //鑾峰彇褰撳墠鏈堜唤 浠M鏍煎紡鍖� - String month = String.format("%02d", finalI); - //妫�鏌ユ湀浠藉搴旂殑琛ㄦ槸鍚﹀瓨鍦� - String monthTableName = tablePrefix + "_" + year + month; - Set<String> allTableName = QuerySqlParseUtil.getAllTableName(reportDao, dbe.getDbName(), tablePrefix + "_" + year + month); - if (allTableName.size() == 0 || !allTableName.contains(monthTableName)) { - //鏍规嵁鍘熷琛ㄧ粨鏋勫垱寤烘柊琛� - String sql = "create table " + monthTableName + " like " + tableName; - currentDao.executeSql(sql); - SpringMVCContextHolder.getSystemLogger().info("鍒涘缓琛細" + monthTableName); - } - String sql = "INSERT INTO " + monthTableName + " SELECT * FROM " + tableName + " WHERE MONTH(update_date)=" + finalI; - currentDao.executeSql(sql); - currentDao.closeConnection(); - }); + /** + * 鑾峰彇鍘嗗彶鏁版嵁 + */ + public void getHistoryData(FieldSetEntity fse) throws BaseException, ExecutionException, InterruptedException { - } - executorService.shutdown(); - while (true) { - try { - if (executorService.awaitTermination(5, TimeUnit.SECONDS)) break; - Thread.sleep(5000); - SpringMVCContextHolder.getSystemLogger().info("绾跨▼绛夊緟涓�..."); - } catch (InterruptedException e) { - e.printStackTrace(); - } + //鏈哄彿 + String serialNumber = fse.getString("serial_number"); + SpringMVCContextHolder.getSystemLogger().info("鍑嗗鍥炲啓鏈哄彿鏁版嵁锛�" + serialNumber); + if (StringUtils.isEmpty(serialNumber)) { + throw new BaseException(ErrorCode.SERIAL_NUMBER_IS_NULL); + } - } - } - reportDao.closeConnection(); - } + FieldSetEntity fs = getBaseDao().getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_DATA_SYNC_MES, "LENGTH(data_source)>1 limit 1", null, false); + if (FieldSetEntity.isEmpty(fs)) { + throw new BaseException(ErrorCode.MO_NUMBER_SYNC_DATASOURCE_ERROR); + } + FieldSetEntity reportDbConfig = getBaseDao().getFieldSetByFilter(CmnConst.PRODUCT_SYS_DATA_SYNC_MANAGER, "SYNC_NAME=?", new Object[]{"鎶ヨ〃鏁版嵁搴�"}, false); + if (FieldSetEntity.isEmpty(reportDbConfig)) { + throw new BaseException(ErrorCode.REPORT_DB_CONFIG_FAIL); + } + DataTableEntity dt = getBaseDao().listTable(CmnConst.PRODUCT_SYS_DATA_COLLECT, "upper(source_table) in ('T_WIP_TRACKING','T_WIP_PRODUCT_KEYP','T_WIP_DETAIL','T_PM_PRODUCT_SN') and data_source in (select uuid from product_sys_data_sync_manager)", new Object[]{}, new Object[]{"uuid,id,data_source,source_table"}); - /** - * 鑾峰彇鍘嗗彶鏁版嵁 - */ - public void getHistoryData(FieldSetEntity fse) throws BaseException, ExecutionException, InterruptedException { + Map<String, List<FieldSetEntity>> groupByCollectId = dt.getData().stream().collect(Collectors.groupingBy(item -> item.getString("id"))); + Map<String, List<FieldSetEntity>> groupBySourceTable = dt.getData().stream().collect(Collectors.groupingBy(item -> item.getString("source_table"))); - //鏈哄彿 - String serialNumber = fse.getString("serial_number"); - SpringMVCContextHolder.getSystemLogger().info("鍑嗗鍥炲啓鏈哄彿鏁版嵁锛�" + serialNumber); - if (StringUtils.isEmpty(serialNumber)) { - throw new BaseException(ErrorCode.SERIAL_NUMBER_IS_NULL); - } + DataBaseEntity dbe = new DataBaseEntity(reportDbConfig); + Dao reportDao = dbe.getDao(); + String reportDbName = dbe.getDbName(); + Set<String> trackingTableSet = QuerySqlParseUtil.getAllTableName(reportDao, reportDbName, "da_t_wip_tracking"); + HistoryEntity trackingData = historyBeforeDispose(getData(reportDao, trackingTableSet, "serial_number", + serialNumber, new ErrorCode[]{ErrorCode.TRACKING_TABLE_NOT_EXISTS, ErrorCode.NOT_FOUND_SERIAL_NUMBER}), CmnConst.T_WIP_TRACKING); - FieldSetEntity fs = getBaseDao().getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_DATA_SYNC_MES, "LENGTH(data_source)>1 limit 1", null, false); - if (FieldSetEntity.isEmpty(fs)) { - throw new BaseException(ErrorCode.MO_NUMBER_SYNC_DATASOURCE_ERROR); - } - FieldSetEntity reportDbConfig = getBaseDao().getFieldSetByFilter(CmnConst.PRODUCT_SYS_DATA_SYNC_MANAGER, "SYNC_NAME=?", new Object[]{"鎶ヨ〃鏁版嵁搴�"}, false); - if (FieldSetEntity.isEmpty(reportDbConfig)) { - throw new BaseException(ErrorCode.REPORT_DB_CONFIG_FAIL); - } - DataTableEntity dt = getBaseDao().listTable(CmnConst.PRODUCT_SYS_DATA_COLLECT, "upper(source_table) in ('T_WIP_TRACKING','T_WIP_PRODUCT_KEYP','T_WIP_DETAIL','T_PM_PRODUCT_SN') and data_source in (select uuid from product_sys_data_sync_manager)", new Object[]{}, new Object[]{"uuid,id,data_source,source_table"}); + Set<String> keypTableSet = QuerySqlParseUtil.getAllTableName(reportDao, reportDbName, "da_t_wip_product_keyp"); + HistoryEntity keypData = historyBeforeDispose(getData(reportDao, keypTableSet, "pk_product_sn", serialNumber, new ErrorCode[]{ErrorCode.KEYP_TABLE_NOT_EXISTS, ErrorCode.KEYP_DATA_NOT_FOUND}), CmnConst.T_WIP_PRODUCT_KEYP); - Map<String, List<FieldSetEntity>> groupByCollectId = dt.getData().stream().collect(Collectors.groupingBy(item -> item.getString("id"))); - Map<String, List<FieldSetEntity>> groupBySourceTable = dt.getData().stream().collect(Collectors.groupingBy(item -> item.getString("source_table"))); - - DataBaseEntity dbe = new DataBaseEntity(reportDbConfig); - Dao reportDao = dbe.getDao(); - String reportDbName = dbe.getDbName(); - Set<String> trackingTableSet = QuerySqlParseUtil.getAllTableName(reportDao, reportDbName, "da_t_wip_tracking"); - HistoryEntity trackingData = historyBeforeDispose(getData(reportDao, trackingTableSet, "serial_number", - serialNumber, new ErrorCode[]{ErrorCode.TRACKING_TABLE_NOT_EXISTS, ErrorCode.NOT_FOUND_SERIAL_NUMBER}), CmnConst.T_WIP_TRACKING); - - Set<String> keypTableSet = QuerySqlParseUtil.getAllTableName(reportDao, reportDbName, "da_t_wip_product_keyp"); - HistoryEntity keypData = historyBeforeDispose(getData(reportDao, keypTableSet, "pk_product_sn", serialNumber, new ErrorCode[]{ErrorCode.KEYP_TABLE_NOT_EXISTS, ErrorCode.KEYP_DATA_NOT_FOUND}), CmnConst.T_WIP_PRODUCT_KEYP); - - Set<String> detailTableSet = QuerySqlParseUtil.getAllTableName(reportDao, reportDbName, "da_t_wip_detail"); - HistoryEntity detailData = historyBeforeDispose(getData(reportDao, detailTableSet, "serial_number", serialNumber, new ErrorCode[]{ErrorCode.DETAIL_TABLE_NOT_EXISTS, ErrorCode.DETAIL_DATA_NOT_FOUND}), CmnConst.T_WIP_DETAIL); + Set<String> detailTableSet = QuerySqlParseUtil.getAllTableName(reportDao, reportDbName, "da_t_wip_detail"); + HistoryEntity detailData = historyBeforeDispose(getData(reportDao, detailTableSet, "serial_number", serialNumber, new ErrorCode[]{ErrorCode.DETAIL_TABLE_NOT_EXISTS, ErrorCode.DETAIL_DATA_NOT_FOUND}), CmnConst.T_WIP_DETAIL); // Set<String> productSnTableSet = QuerySqlParseUtil.getAllTableName(reportDao, reportDbName, "da_t_pm_product_sn"); // HistoryEntity productSnData = historyBeforeDispose(getData(reportDao, productSnTableSet, "product_sn", serialNumber, new ErrorCode[]{ErrorCode.PRODUCT_SN_TABLE_NOT_EXISTS, ErrorCode.PRODUCT_SN_DATA_NOT_FOUND}), CmnConst.T_PM_PRODUCT_SN); - //涓诲簱鏁版嵁婧愰厤缃� - String masterDataSource = fs.getString("data_source"); - dbe = new DataBaseEntity(masterDataSource); - Map<String, Dao> groupDao = new HashMap<>(); - Dao dao = dbe.getDao(); - boolean success = false; - try { - Connection connection = dao.getConnection(); - connection.setAutoCommit(false); - HistoryEntity[] historyEntities = {trackingData, keypData, detailData}; - insertMasterTableData(dao, historyEntities); - insertSubTableData(groupDao, groupByCollectId, groupBySourceTable, historyEntities); - connection.commit(); - batchCommit(groupDao); - success = true; - SpringMVCContextHolder.getSystemLogger().info("鍥炲啓鏈哄彿锛�" + serialNumber + "鎴愬姛"); - } catch (Exception e) { - e.printStackTrace(); - SpringMVCContextHolder.getSystemLogger().error("鍥炲啓鏈哄彿锛�" + serialNumber + "澶辫触"); - SpringMVCContextHolder.getSystemLogger().error(e); - throw new BaseException(ErrorCode.INSERT_DATA_FAIL); - } finally { - try { - if (!success && !dao.getConnection().getAutoCommit()) { - dao.getConnection().rollback(); - } - dao.closeConnection(); - for (Dao value : groupDao.values()) { - try (Connection connection = value.getConnection()) { - if (!connection.getAutoCommit()) { - connection.rollback(); - } - } - value.closeConnection(); + //涓诲簱鏁版嵁婧愰厤缃� + String masterDataSource = fs.getString("data_source"); + dbe = new DataBaseEntity(masterDataSource); + Map<String, Dao> groupDao = new HashMap<>(); + Dao dao = dbe.getDao(); + boolean success = false; + try { + Connection connection = dao.getConnection(); + connection.setAutoCommit(false); + HistoryEntity[] historyEntities = {trackingData, keypData, detailData}; + insertMasterTableData(dao, historyEntities); + insertSubTableData(groupDao, groupByCollectId, groupBySourceTable, historyEntities); + connection.commit(); + batchCommit(groupDao); + success = true; + SpringMVCContextHolder.getSystemLogger().info("鍥炲啓鏈哄彿锛�" + serialNumber + "鎴愬姛"); + } catch (Exception e) { + e.printStackTrace(); + SpringMVCContextHolder.getSystemLogger().error("鍥炲啓鏈哄彿锛�" + serialNumber + "澶辫触"); + SpringMVCContextHolder.getSystemLogger().error(e); + throw new BaseException(ErrorCode.INSERT_DATA_FAIL); + } finally { + try { + if (!success && !dao.getConnection().getAutoCommit()) { + dao.getConnection().rollback(); + } + dao.closeConnection(); + for (Dao value : groupDao.values()) { + try (Connection connection = value.getConnection()) { + if (!connection.getAutoCommit()) { + connection.rollback(); + } + } + value.closeConnection(); - } - } catch (Exception e) { - e.printStackTrace(); - SpringMVCContextHolder.getSystemLogger().error(e); - } - } - } + } + } catch (Exception e) { + e.printStackTrace(); + SpringMVCContextHolder.getSystemLogger().error(e); + } + } + } - public void batchCommit(Map<String, Dao> groupDao) throws SQLException { - for (Dao value : groupDao.values()) { - value.getConnection().commit(); - } - } + public void batchCommit(Map<String, Dao> groupDao) throws SQLException { + for (Dao value : groupDao.values()) { + value.getConnection().commit(); + } + } - /** - * 鎻掑叆鏁版嵁鍒颁富搴� - * - * @param dao - * @param historyEntities - */ - public void insertMasterTableData(Dao dao, HistoryEntity[] historyEntities) { - for (HistoryEntity historyEntity : historyEntities) { - if (historyEntity == null) { - continue; - } - DataTableEntity masterDataTable = historyEntity.getMasterDataTable(); - if (DataTableEntity.isEmpty(masterDataTable)) { - continue; - } - Object[] objects = masterDataTable.getData().stream().map(item -> { - String primaryValue = item.getString(historyEntity.getPrimaryField()); - //鍒ゆ柇鏄惁涓烘暟鍊间笖鍖呭惈灏忔暟鐐� 灏忔暟鐐瑰悗闈㈡槸鍚﹀叏鏄�0 - if (NumberUtil.isNumber(primaryValue) && primaryValue.contains(".") && primaryValue.substring(primaryValue. - indexOf(".") + 1).matches("^0*$")) { - //杩斿洖鏁存暟瀛楃涓� - return primaryValue.substring(0, primaryValue.indexOf(".")); - } - return primaryValue; - }).toArray(); - //鏌ヨ涓诲簱鏁版嵁鏄惁瀛樺湪 - DataTableEntity list = dao.getList(historyEntity.getTableName(), - BaseUtil.buildQuestionMarkFilter(historyEntity.getPrimaryField(), objects.length, true), - new String[]{historyEntity.getPrimaryField()}, objects); - List<String> existsPrimaryValues = null; - if (!DataTableEntity.isEmpty(list)) { - existsPrimaryValues = list.getData().stream().map(item -> item.getString(historyEntity.getPrimaryField())).collect(Collectors.toList()); - } - for (int i = 0; i < masterDataTable.getRows(); i++) { - String primaryValue = masterDataTable.getString(i, historyEntity.getPrimaryField()); - if (existsPrimaryValues != null && existsPrimaryValues.contains(primaryValue)) { - //鏁版嵁瀛樺湪璺宠繃璇ユ暟鎹� - continue; - } - FieldSetEntity fieldSetEntity = masterDataTable.getFieldSetEntity(i); - fieldSetEntity.getMeta().setTableName(new Object[]{historyEntity.getTableName()}); - fieldSetEntity.remove("~table_name~"); - dao.add(fieldSetEntity); - } - } - } + /** + * 鎻掑叆鏁版嵁鍒颁富搴� + * + * @param dao + * @param historyEntities + */ + public void insertMasterTableData(Dao dao, HistoryEntity[] historyEntities) { + for (HistoryEntity historyEntity : historyEntities) { + if (historyEntity == null) { + continue; + } + DataTableEntity masterDataTable = historyEntity.getMasterDataTable(); + if (DataTableEntity.isEmpty(masterDataTable)) { + continue; + } + Object[] objects = masterDataTable.getData().stream().map(item -> { + String primaryValue = item.getString(historyEntity.getPrimaryField()); + //鍒ゆ柇鏄惁涓烘暟鍊间笖鍖呭惈灏忔暟鐐� 灏忔暟鐐瑰悗闈㈡槸鍚﹀叏鏄�0 + if (NumberUtil.isNumber(primaryValue) && primaryValue.contains(".") && primaryValue.substring(primaryValue. + indexOf(".") + 1).matches("^0*$")) { + //杩斿洖鏁存暟瀛楃涓� + return primaryValue.substring(0, primaryValue.indexOf(".")); + } + return primaryValue; + }).toArray(); + //鏌ヨ涓诲簱鏁版嵁鏄惁瀛樺湪 + DataTableEntity list = dao.getList(historyEntity.getTableName(), + BaseUtil.buildQuestionMarkFilter(historyEntity.getPrimaryField(), objects.length, true), + new String[]{historyEntity.getPrimaryField()}, objects); + List<String> existsPrimaryValues = null; + if (!DataTableEntity.isEmpty(list)) { + existsPrimaryValues = list.getData().stream().map(item -> item.getString(historyEntity.getPrimaryField())).collect(Collectors.toList()); + } + for (int i = 0; i < masterDataTable.getRows(); i++) { + String primaryValue = masterDataTable.getString(i, historyEntity.getPrimaryField()); + if (existsPrimaryValues != null && existsPrimaryValues.contains(primaryValue)) { + //鏁版嵁瀛樺湪璺宠繃璇ユ暟鎹� + continue; + } + FieldSetEntity fieldSetEntity = masterDataTable.getFieldSetEntity(i); + fieldSetEntity.getMeta().setTableName(new Object[]{historyEntity.getTableName()}); + fieldSetEntity.remove("~table_name~"); + dao.add(fieldSetEntity); + } + } + } - /** - * 鎻掑叆瀛愬簱琛ㄦ暟鎹� - * - * @param groupDao 瀛愬簱dao - * @param groupByCollectId 閲囬泦閰嶇疆鎸夐噰闆唅d鍒嗙粍 - * @param groupBySourceTable 閲囬泦閰嶇疆鎸夎〃鍚嶅垎缁� - * @param historyEntities 鍘嗗彶鏁版嵁 - */ - public void insertSubTableData(Map<String, Dao> groupDao, Map<String, List<FieldSetEntity>> groupByCollectId, - Map<String, List<FieldSetEntity>> groupBySourceTable, HistoryEntity[] historyEntities) throws Exception { - for (HistoryEntity historyEntity : historyEntities) { - if (historyEntity == null) { - continue; - } - Map<String, List<FieldSetEntity>> groupData = historyEntity.getGroupData(); - if (groupData == null || groupData.isEmpty()) { - continue; - } - for (Map.Entry<String, List<FieldSetEntity>> entry : groupData.entrySet()) { - List<Dao> daoList = new ArrayList<>(); - if ("ch-kt".equals(entry.getKey())) { - List<FieldSetEntity> fieldSetEntityList = groupBySourceTable.get(historyEntity.getTableName().toLowerCase()); - Set<String> dataSourceSet = fieldSetEntityList.stream().map(item -> item.getString("data_source")).collect(Collectors.toSet()); - for (String sourceUuid : dataSourceSet) { - daoList.add(getDao(groupDao, sourceUuid)); - } - } else { - daoList.add(getDao(groupDao, groupByCollectId.get(entry.getKey()).get(0).getString("data_source"))); - } - for (Dao dao : daoList) { - List<FieldSetEntity> value = entry.getValue(); - //鏌ヨ宸插瓨鍦ㄧ殑鏁版嵁 - DataTableEntity list = dao.getList(historyEntity.getTableName(), - BaseUtil.buildQuestionMarkFilter(historyEntity.getPrimaryField(), value.size(), true), - value.stream().map(item -> { - String primaryValue = item.getString(historyEntity.getPrimaryField()); - //鍒ゆ柇鏄惁涓烘暟鍊间笖鍖呭惈灏忔暟鐐� 灏忔暟鐐瑰悗闈㈡槸鍚﹀叏鏄�0 - if (NumberUtil.isNumber(primaryValue) && primaryValue.contains(".") && primaryValue.substring(primaryValue. - indexOf(".") + 1).matches("^0*$")) { - //杩斿洖鏁存暟瀛楃涓� - return primaryValue.substring(0, primaryValue.indexOf(".")); - } - return primaryValue; - }).toArray()); - List<String> existIds = DataTableEntity.isEmpty(list) ? null : list.getData().stream().map(item -> item.getString(historyEntity.getPrimaryField())).collect(Collectors.toList()); - for (FieldSetEntity fieldSetEntity : value) { - String primaryValue = fieldSetEntity.getString(historyEntity.getPrimaryField()); - if (existIds != null && existIds.contains(NumberUtil.parseNumber(primaryValue).toString())) { - continue; - } - fieldSetEntity.getMeta().setTableName(new Object[]{historyEntity.getTableName()}); - fieldSetEntity.remove("~table_name~"); - dao.add(fieldSetEntity); - } - } - } - } - } + /** + * 鎻掑叆瀛愬簱琛ㄦ暟鎹� + * + * @param groupDao 瀛愬簱dao + * @param groupByCollectId 閲囬泦閰嶇疆鎸夐噰闆唅d鍒嗙粍 + * @param groupBySourceTable 閲囬泦閰嶇疆鎸夎〃鍚嶅垎缁� + * @param historyEntities 鍘嗗彶鏁版嵁 + */ + public void insertSubTableData(Map<String, Dao> groupDao, Map<String, List<FieldSetEntity>> groupByCollectId, + Map<String, List<FieldSetEntity>> groupBySourceTable, HistoryEntity[] historyEntities) throws Exception { + for (HistoryEntity historyEntity : historyEntities) { + if (historyEntity == null) { + continue; + } + Map<String, List<FieldSetEntity>> groupData = historyEntity.getGroupData(); + if (groupData == null || groupData.isEmpty()) { + continue; + } + for (Map.Entry<String, List<FieldSetEntity>> entry : groupData.entrySet()) { + List<Dao> daoList = new ArrayList<>(); + if ("ch-kt".equals(entry.getKey())) { + List<FieldSetEntity> fieldSetEntityList = groupBySourceTable.get(historyEntity.getTableName().toLowerCase()); + Set<String> dataSourceSet = fieldSetEntityList.stream().map(item -> item.getString("data_source")).collect(Collectors.toSet()); + for (String sourceUuid : dataSourceSet) { + daoList.add(getDao(groupDao, sourceUuid)); + } + } else { + daoList.add(getDao(groupDao, groupByCollectId.get(entry.getKey()).get(0).getString("data_source"))); + } + for (Dao dao : daoList) { + List<FieldSetEntity> value = entry.getValue(); + //鏌ヨ宸插瓨鍦ㄧ殑鏁版嵁 + DataTableEntity list = dao.getList(historyEntity.getTableName(), + BaseUtil.buildQuestionMarkFilter(historyEntity.getPrimaryField(), value.size(), true), + value.stream().map(item -> { + String primaryValue = item.getString(historyEntity.getPrimaryField()); + //鍒ゆ柇鏄惁涓烘暟鍊间笖鍖呭惈灏忔暟鐐� 灏忔暟鐐瑰悗闈㈡槸鍚﹀叏鏄�0 + if (NumberUtil.isNumber(primaryValue) && primaryValue.contains(".") && primaryValue.substring(primaryValue. + indexOf(".") + 1).matches("^0*$")) { + //杩斿洖鏁存暟瀛楃涓� + return primaryValue.substring(0, primaryValue.indexOf(".")); + } + return primaryValue; + }).toArray()); + List<String> existIds = DataTableEntity.isEmpty(list) ? null : list.getData().stream().map(item -> item.getString(historyEntity.getPrimaryField())).collect(Collectors.toList()); + for (FieldSetEntity fieldSetEntity : value) { + String primaryValue = fieldSetEntity.getString(historyEntity.getPrimaryField()); + if (existIds != null && existIds.contains(NumberUtil.parseNumber(primaryValue).toString())) { + continue; + } + fieldSetEntity.getMeta().setTableName(new Object[]{historyEntity.getTableName()}); + fieldSetEntity.remove("~table_name~"); + dao.add(fieldSetEntity); + } + } + } + } + } - public Dao getDao(Map<String, Dao> groupDao, String sourceUuid) throws Exception { - Dao dao = groupDao.get(sourceUuid); - if (null == dao) { - DataBaseEntity dbe = new DataBaseEntity(sourceUuid); - dao = dbe.getDao(); - dao.getConnection().setAutoCommit(false); - groupDao.put(sourceUuid, dao); - } - return dao; - } + public Dao getDao(Map<String, Dao> groupDao, String sourceUuid) throws Exception { + Dao dao = groupDao.get(sourceUuid); + if (null == dao) { + DataBaseEntity dbe = new DataBaseEntity(sourceUuid); + dao = dbe.getDao(); + dao.getConnection().setAutoCommit(false); + groupDao.put(sourceUuid, dao); + } + return dao; + } - public HistoryEntity historyBeforeDispose(DataTableEntity dt, String targetTableName) { - if (DataTableEntity.isEmpty(dt)) { - return null; - } - HistoryEntity historyEntity = new HistoryEntity(); - historyEntity.setMoNumberField("mo_number"); - if (CmnConst.T_WIP_TRACKING.equalsIgnoreCase(targetTableName)) { - historyEntity.setPrimaryField("wip_id"); - historyEntity.setTimeField("update_date"); - } else if (CmnConst.T_WIP_PRODUCT_KEYP.equalsIgnoreCase(targetTableName)) { - historyEntity.setPrimaryField("pk_id"); - historyEntity.setTimeField("pk_loadtime"); + public HistoryEntity historyBeforeDispose(DataTableEntity dt, String targetTableName) { + if (DataTableEntity.isEmpty(dt)) { + return null; + } + HistoryEntity historyEntity = new HistoryEntity(); + historyEntity.setMoNumberField("mo_number"); + if (CmnConst.T_WIP_TRACKING.equalsIgnoreCase(targetTableName)) { + historyEntity.setPrimaryField("wip_id"); + historyEntity.setTimeField("update_date"); + } else if (CmnConst.T_WIP_PRODUCT_KEYP.equalsIgnoreCase(targetTableName)) { + historyEntity.setPrimaryField("pk_id"); + historyEntity.setTimeField("pk_loadtime"); - historyEntity.setMoNumberField("pk_mo"); - } else if (CmnConst.T_WIP_DETAIL.equalsIgnoreCase(targetTableName)) { - historyEntity.setPrimaryField("wip_detail_id"); - historyEntity.setTimeField("update_date"); - } else if (CmnConst.T_PM_PRODUCT_SN.equalsIgnoreCase(targetTableName)) { - historyEntity.setPrimaryField("row_id"); - historyEntity.setTimeField("update_date"); - } else { - return null; - } - historyEntity.setTableName(targetTableName.toUpperCase()); - Date now = new Date(); - for (int i = 0; i < dt.getRows(); i++) { - Map<Object, Object> values = dt.getFieldSetEntity(i).getValues(); - //閬嶅巻map涓殑value鏄惁涓烘暟瀛楋紝濡傛灉鏄暟瀛楀垽鏂皬鏁扮偣鍚庨潰鏄惁鏈夊�硷紝濡傛灉娌℃湁鍊煎垯杞崲涓烘暣鏁� - for (Map.Entry<Object, Object> entry : values.entrySet()) { - if (entry.getValue() instanceof Number) { - Number number = (Number) entry.getValue(); - if (number.doubleValue() == number.intValue()) { - entry.setValue(number.intValue()); - } - } - } - } - if (CmnConst.T_WIP_TRACKING.equalsIgnoreCase(targetTableName) && dt.getRows() > 1) { - List<FieldSetEntity> data = dt.getData(); - FieldSetEntity newData = null; - for (int i = 0; i < data.size(); i++) { - FieldSetEntity fieldSetEntity = data.get(i); - if ("ch-kt".equals(fieldSetEntity.getValue("pre_master_key"))) { - data.remove(i); - dt.removeFieldSetEntity(i); - break; - } else if (newData == null) { - newData = fieldSetEntity; - continue; - } + historyEntity.setMoNumberField("pk_mo"); + } else if (CmnConst.T_WIP_DETAIL.equalsIgnoreCase(targetTableName)) { + historyEntity.setPrimaryField("wip_detail_id"); + historyEntity.setTimeField("update_date"); + } else if (CmnConst.T_PM_PRODUCT_SN.equalsIgnoreCase(targetTableName)) { + historyEntity.setPrimaryField("row_id"); + historyEntity.setTimeField("update_date"); + } else { + return null; + } + historyEntity.setTableName(targetTableName.toUpperCase()); + Date now = new Date(); + for (int i = 0; i < dt.getRows(); i++) { + Map<Object, Object> values = dt.getFieldSetEntity(i).getValues(); + //閬嶅巻map涓殑value鏄惁涓烘暟瀛楋紝濡傛灉鏄暟瀛楀垽鏂皬鏁扮偣鍚庨潰鏄惁鏈夊�硷紝濡傛灉娌℃湁鍊煎垯杞崲涓烘暣鏁� + for (Map.Entry<Object, Object> entry : values.entrySet()) { + if (entry.getValue() instanceof Number) { + Number number = (Number) entry.getValue(); + if (number.doubleValue() == number.intValue()) { + entry.setValue(number.intValue()); + } + } + } + } + if (CmnConst.T_WIP_TRACKING.equalsIgnoreCase(targetTableName) && dt.getRows() > 1) { + List<FieldSetEntity> data = dt.getData(); + FieldSetEntity newData = null; + for (int i = 0; i < data.size(); i++) { + FieldSetEntity fieldSetEntity = data.get(i); + if ("ch-kt".equals(fieldSetEntity.getValue("pre_master_key"))) { + data.remove(i); + dt.removeFieldSetEntity(i); + break; + } else if (newData == null) { + newData = fieldSetEntity; + continue; + } - Date date = fieldSetEntity.getDate(historyEntity.getTimeField()); - if (date.getTime() > newData.getDate(historyEntity.getTimeField()).getTime()) { - newData = fieldSetEntity; - } - } - if (newData != null) { - dt = new DataTableEntity(); - dt.addFieldSetEntity(newData); - } - //鍦╨ist涓彇鍑烘椂闂存渶杩戠殑鏁版嵁 - Optional<FieldSetEntity> max = data.stream().max(Comparator.comparing((a) -> a.getDate(historyEntity.getTimeField()).getTime())); + Date date = fieldSetEntity.getDate(historyEntity.getTimeField()); + if (date.getTime() > newData.getDate(historyEntity.getTimeField()).getTime()) { + newData = fieldSetEntity; + } + } + if (newData != null) { + dt = new DataTableEntity(); + dt.addFieldSetEntity(newData); + } + } + DataTableEntity subData = dt.clones(); + DataTableEntity masterData = dt.clones(); + for (int i = 0; i < subData.getRows(); i++) { + FieldSetEntity fs = subData.getFieldSetEntity(i); + String preMasterKey = fs.getString("pre_master_key"); + if (historyEntity.getPrimaryField().equals(preMasterKey)) { + preMasterKey = null; - } - DataTableEntity subData = dt.clones(); - DataTableEntity masterData = dt.clones(); - for (int i = 0; i < subData.getRows(); i++) { - FieldSetEntity fs = subData.getFieldSetEntity(i); - String preMasterKey = fs.getString("pre_master_key"); - if (historyEntity.getPrimaryField().equals(preMasterKey)) { - preMasterKey = null; - } - if ("ch-kt".equals(fs.getString("source_info")) && StringUtils.isEmpty(preMasterKey)) { - preMasterKey = fs.getString(historyEntity.getPrimaryField()); - } - fs.setValue(historyEntity.getPrimaryField(), preMasterKey); - fs.setValue("pre_master_key", preMasterKey); - masterData.setFieldValue(i, historyEntity.getTimeField(), now); - fs.setValue(historyEntity.getTimeField(), now); - fs.remove("~table_name~"); - masterData.getFieldSetEntity(i).remove("~table_name~"); - masterData.setFieldValue(i, "pre_master_key", null); - if (StringUtils.isEmpty(historyEntity.getPrimaryField())) { - subData.removeFieldSetEntity(i); - masterData.removeFieldSetEntity(i); - i--; - } - } - historyEntity.setArchivedDataTable(dt); - historyEntity.setMasterDataTable(masterData); - historyEntity.setSubDataTable(subData); - return historyEntity; - } + } + if ("ch-kt".equals(fs.getString("source_info")) && StringUtils.isEmpty(preMasterKey)) { + preMasterKey = fs.getString(historyEntity.getPrimaryField()); + masterData.setFieldValue(i, "pre_master_key", masterData.getObject(i, historyEntity.getPrimaryField())); + } + fs.setValue(historyEntity.getPrimaryField(), preMasterKey); + fs.setValue("pre_master_key", null); + masterData.setFieldValue(i, historyEntity.getTimeField(), now); + fs.setValue(historyEntity.getTimeField(), now); + fs.remove("~table_name~"); + masterData.getFieldSetEntity(i).remove("~table_name~"); + if (StringUtils.isEmpty(preMasterKey)) { + masterData.setFieldValue(i, "pre_master_key", masterData.getObject(i, historyEntity.getPrimaryField())); + } + if (StringUtils.isEmpty(historyEntity.getPrimaryField())) { + subData.removeFieldSetEntity(i); + masterData.removeFieldSetEntity(i); + i--; + } + } + historyEntity.setArchivedDataTable(dt); + historyEntity.setMasterDataTable(masterData); + historyEntity.setSubDataTable(subData); + return historyEntity; + } - public DataTableEntity getData(Dao dao, Set<String> tableSet, String filterFieldName, String - serialNumber, ErrorCode[] errorCodes) throws InterruptedException, ExecutionException { - if (CollectionUtil.isEmpty(tableSet)) { - throw new BaseException(errorCodes[0]); - } - String[] tableArray = tableSet.toArray(new String[]{}); - CompletionService<DataTableEntity> objectCompletionService = ThreadUtil.newCompletionService(); - //澶氱嚎绋嬫煡璇㈠崟寮犺〃锛岀瓑寰呮墍鏈夌嚎绋嬫煡璇㈠畬姣� - for (String tableName : tableArray) { - objectCompletionService.submit(() -> dao.getList("select a.*,'" + tableName + "' as '~table_name~' from " + tableName + " a where " + filterFieldName + " = ?", new Object[]{serialNumber})); - } - DataTableEntity data = new DataTableEntity(); - for (int i = 0; i < tableArray.length; i++) { - DataTableEntity dataTableEntity = objectCompletionService.take().get(); - BaseUtil.dataTableMerge(data, dataTableEntity); - } - return data; - } + public DataTableEntity getData(Dao dao, Set<String> tableSet, String filterFieldName, String + serialNumber, ErrorCode[] errorCodes) throws InterruptedException, ExecutionException { + if (CollectionUtil.isEmpty(tableSet)) { + throw new BaseException(errorCodes[0]); + } + String[] tableArray = tableSet.toArray(new String[]{}); + StringBuilder sql = new StringBuilder(); + for (String tableName : tableArray) { + if (sql.length() > 0) { + sql.append(" union all "); + } + sql.append("select a.*,'" + tableName + "' as '~table_name~' from " + tableName + " a where " + filterFieldName + " = ?"); + } + DataTableEntity data = dao.getList(sql.toString(), Arrays.stream(tableArray).map((t) -> serialNumber).toArray()); +// CompletionService<DataTableEntity> objectCompletionService = ThreadUtil.newCompletionService(); +// //澶氱嚎绋嬫煡璇㈠崟寮犺〃锛岀瓑寰呮墍鏈夌嚎绋嬫煡璇㈠畬姣� +// for (String tableName : tableArray) { +// objectCompletionService.submit(() -> { +// DataTableEntity list = dao.getList("select a.*,'" + tableName + "' as '~table_name~' from " + tableName + " a where " + filterFieldName + " = ?", new Object[]{serialNumber}); +// return list; +// }); +// } +// DataTableEntity data = new DataTableEntity(); +// for (int i = 0; i < tableArray.length; i++) { +// DataTableEntity dataTableEntity = objectCompletionService.take().get(); +// BaseUtil.dataTableMerge(data, dataTableEntity); +// } + if (DataTableEntity.isEmpty(data) && !"product_sn".equals(filterFieldName)) { + throw new BaseException(errorCodes[1]); + } + return data; + } - /** - * 鍒濆鍖栧埗浠ゅ崟 - * - * @param moNumbers - * @throws BaseException - */ - public void initMoBase(String[] moNumbers) throws BaseException { - FieldSetEntity fs = getBaseDao().getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_DATA_SYNC_MES, "LENGTH(data_source)>1 limit 1", null, false); - if (FieldSetEntity.isEmpty(fs)) { - throw new BaseException(ErrorCode.MO_NUMBER_SYNC_DATASOURCE_ERROR); - } + /** + * 鍒濆鍖栧埗浠ゅ崟 + * + * @param moNumbers + * @throws BaseException + */ + public void initMoBase(String[] moNumbers) throws BaseException { + FieldSetEntity fs = getBaseDao().getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_DATA_SYNC_MES, "LENGTH(data_source)>1 limit 1", null, false); + if (FieldSetEntity.isEmpty(fs)) { + throw new BaseException(ErrorCode.MO_NUMBER_SYNC_DATASOURCE_ERROR); + } - String[] targetDataSource = fs.getString("target_data_source").split(","); + String[] targetDataSource = fs.getString("target_data_source").split(","); - Dao[] targetDao = Arrays.stream(targetDataSource).map(item -> new DataBaseEntity(item).getDao()).toArray(Dao[]::new); - StringBuilder errorMsg = new StringBuilder(); - for (Dao dao : targetDao) { - for (String moNumber : moNumbers) { - synchronized (moNumber.intern()) { - try (Connection connection = dao.getConnection(); - CallableStatement callableStatement = connection.prepareCall( - "{CALL SMT_T_PM_MO_BASE(?,?,?,?,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,?,null,null" + - ",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null)}")) { - callableStatement.setInt(1, 5); - callableStatement.registerOutParameter(2, OracleTypes.SMALLINT); - callableStatement.registerOutParameter(3, OracleTypes.VARCHAR); - callableStatement.setString(4, moNumber); - callableStatement.setString(5, "1"); - callableStatement.execute(); - //鎵ц鍚庤繑鍥炵殑閿欒鐮� - int errorCode = callableStatement.getInt(2); - //鎵ц鍚庤繑鍥炵殑閿欒淇℃伅 - String errorText = callableStatement.getString(3); - if (errorCode != 0) { - //閿欒鐨� - errorMsg.append("鍒朵护鍗曞彿:").append(moNumber); - errorMsg.append("\nerrorCode锛�").append(errorCode); - errorMsg.append("\nerrorText:").append(errorText); - } - } catch (Exception e) { - SpringMVCContextHolder.getSystemLogger().error(e); - e.printStackTrace(); - errorMsg.append("鍒朵护鍗曞彿:").append(moNumber); - errorMsg.append("\n鎵ц鏃舵湭鐭ラ敊璇細").append(e.getMessage()); - } - } - } - } - if (errorMsg.length() > 0) { - throw new BaseException(ErrorCode.SUB_MO_BASE_INI_FAIL.getValue(), ErrorCode.SUB_MO_BASE_INI_FAIL.getText() + "銆俓n" + errorMsg); - } - } + Dao[] targetDao = Arrays.stream(targetDataSource).map(item -> new DataBaseEntity(item).getDao()).toArray(Dao[]::new); + StringBuilder errorMsg = new StringBuilder(); + for (Dao dao : targetDao) { + for (String moNumber : moNumbers) { + synchronized (moNumber.intern()) { + try (Connection connection = dao.getConnection(); + CallableStatement callableStatement = connection.prepareCall( + "{CALL SMT_T_PM_MO_BASE(?,?,?,?,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,?,null,null" + + ",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null)}")) { + callableStatement.setInt(1, 5); + callableStatement.registerOutParameter(2, OracleTypes.SMALLINT); + callableStatement.registerOutParameter(3, OracleTypes.VARCHAR); + callableStatement.setString(4, moNumber); + callableStatement.setString(5, "1"); + callableStatement.execute(); + //鎵ц鍚庤繑鍥炵殑閿欒鐮� + int errorCode = callableStatement.getInt(2); + //鎵ц鍚庤繑鍥炵殑閿欒淇℃伅 + String errorText = callableStatement.getString(3); + if (errorCode != 0) { + //閿欒鐨� + errorMsg.append("鍒朵护鍗曞彿:").append(moNumber); + errorMsg.append("\nerrorCode锛�").append(errorCode); + errorMsg.append("\nerrorText:").append(errorText); + } + } catch (Exception e) { + SpringMVCContextHolder.getSystemLogger().error(e); + e.printStackTrace(); + errorMsg.append("鍒朵护鍗曞彿:").append(moNumber); + errorMsg.append("\n鎵ц鏃舵湭鐭ラ敊璇細").append(e.getMessage()); + } + } + } + } + if (errorMsg.length() > 0) { + throw new BaseException(ErrorCode.SUB_MO_BASE_INI_FAIL.getValue(), ErrorCode.SUB_MO_BASE_INI_FAIL.getText() + "銆俓n" + errorMsg); + } + } - /** - * @param moNumbers 鍒朵护鍗曞彿,澶氫釜閫楀彿鍒嗛殧 - * @param type 鎿嶄綔绫诲瀷 1 鍒涘缓鍒朵护鍗� 2 鏇存柊鍒朵护鍗曚腑鐨勬寚瀹氬瓧娈� - * @throws BaseException - */ - public void updateMoBase(String[] moNumbers, int type) throws BaseException { - FieldSetEntity fs = getBaseDao().getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_DATA_SYNC_MES, "LENGTH(data_source)>1 limit 1", null, false); - if (FieldSetEntity.isEmpty(fs)) { - throw new BaseException(ErrorCode.MO_NUMBER_SYNC_DATASOURCE_ERROR); - } - String dataSource = fs.getString("data_source"); - String[] targetDataSource = fs.getString("target_data_source").split(","); - StringBuilder errorMessage = new StringBuilder(); - DataBaseEntity dbe = new DataBaseEntity(dataSource); - for (int i = 0; i < moNumbers.length; i++) { - String moNumber = moNumbers[i]; - try { - synchronized (moNumber.intern()) { - Dao dao = dbe.getDao(); - FieldSetEntity one = dao.getOne("T_PM_MO_BASE", "MO_NUMBER=?", new Object[]{moNumber}); - if (FieldSetEntity.isEmpty(one)) { - throw new BaseException(ErrorCode.MO_NUMBER_RECORD_SELECT_EMPTY); - } - one.setTableName("T_PM_MO_BASE"); - dao.closeConnection(); - Dao[] targetDao = Arrays.stream(targetDataSource).map(item -> new DataBaseEntity(item).getDao()).toArray(Dao[]::new); - StringBuilder errorMsg = new StringBuilder(); - try { - if (1 == type) { - createMoBase(errorMsg, one, targetDao); - } else if (2 == type) { - updateMoBase(errorMsg, one, targetDao); - } - if (errorMsg.length() > 0) { - //鏈夐敊璇� - throw new BaseException(ErrorCode.SUB_MO_BASE_CREATE_OR_UPDATE_FAIL.getValue(), ErrorCode.SUB_MO_BASE_CREATE_OR_UPDATE_FAIL.getText() + "銆俓n" + errorMsg); - } - } finally { - for (Dao dao1 : targetDao) { - dao1.closeConnection(); - } - } - } - } catch (Exception e) { - e.printStackTrace(); - SpringMVCContextHolder.getSystemLogger().error(e); - errorMessage.append(e.getMessage()).append("\n"); - } + /** + * @param moNumbers 鍒朵护鍗曞彿,澶氫釜閫楀彿鍒嗛殧 + * @param type 鎿嶄綔绫诲瀷 1 鍒涘缓鍒朵护鍗� 2 鏇存柊鍒朵护鍗曚腑鐨勬寚瀹氬瓧娈� + * @throws BaseException + */ + public void updateMoBase(String[] moNumbers, int type) throws BaseException { + FieldSetEntity fs = getBaseDao().getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_DATA_SYNC_MES, "LENGTH(data_source)>1 limit 1", null, false); + if (FieldSetEntity.isEmpty(fs)) { + throw new BaseException(ErrorCode.MO_NUMBER_SYNC_DATASOURCE_ERROR); + } + String dataSource = fs.getString("data_source"); + String[] targetDataSource = fs.getString("target_data_source").split(","); + StringBuilder errorMessage = new StringBuilder(); + DataBaseEntity dbe = new DataBaseEntity(dataSource); + for (int i = 0; i < moNumbers.length; i++) { + String moNumber = moNumbers[i]; + try { + synchronized (moNumber.intern()) { + Dao dao = dbe.getDao(); + FieldSetEntity one = dao.getOne("T_PM_MO_BASE", "MO_NUMBER=?", new Object[]{moNumber}); + if (FieldSetEntity.isEmpty(one)) { + throw new BaseException(ErrorCode.MO_NUMBER_RECORD_SELECT_EMPTY); + } + one.setTableName("T_PM_MO_BASE"); + dao.closeConnection(); + Dao[] targetDao = Arrays.stream(targetDataSource).map(item -> new DataBaseEntity(item).getDao()).toArray(Dao[]::new); + StringBuilder errorMsg = new StringBuilder(); + try { + if (1 == type) { + createMoBase(errorMsg, one, targetDao); + } else if (2 == type) { + updateMoBase(errorMsg, one, targetDao); + } + if (errorMsg.length() > 0) { + //鏈夐敊璇� + throw new BaseException(ErrorCode.SUB_MO_BASE_CREATE_OR_UPDATE_FAIL.getValue(), ErrorCode.SUB_MO_BASE_CREATE_OR_UPDATE_FAIL.getText() + "銆俓n" + errorMsg); + } + } finally { + for (Dao dao1 : targetDao) { + dao1.closeConnection(); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + SpringMVCContextHolder.getSystemLogger().error(e); + errorMessage.append(e.getMessage()).append("\n"); + } - } - if (errorMessage.length() > 0) { - throw new BaseException(ErrorCode.SUB_MO_BASE_CREATE_OR_UPDATE_FAIL.getValue(), ErrorCode.SUB_MO_BASE_CREATE_OR_UPDATE_FAIL.getText() + "銆俓n" + errorMessage); - } - } + } + if (errorMessage.length() > 0) { + throw new BaseException(ErrorCode.SUB_MO_BASE_CREATE_OR_UPDATE_FAIL.getValue(), ErrorCode.SUB_MO_BASE_CREATE_OR_UPDATE_FAIL.getText() + "銆俓n" + errorMessage); + } + } - /** - * 鍒涘缓鍒朵护鍗� - * - * @param errorMsg - * @param moBase - * @param subDao - */ - private void createMoBase(StringBuilder errorMsg, FieldSetEntity moBase, Dao[] subDao) { - String moNumber = moBase.getString("mo_number"); - for (int i = 0; i < subDao.length; i++) { - Dao dao = subDao[i]; - try { - //妫�鏌ュ伐鍗曡〃鏄惁瀛樺湪 - FieldSetEntity projectBase = dao.getOne("T_PM_PROJECT_BASE", "PROJECT_ID = ? ", new Object[]{moNumber}); - if (FieldSetEntity.isEmpty(projectBase)) { - throw new BaseException(ErrorCode.SUB_PROJECT_BASE_CAN_NOT_EMPTY); - } - //妫�鏌ュ埗浠ゅ崟琛ㄦ槸鍚﹀凡瀛樺湪 - FieldSetEntity fs = dao.getOne(moBase.getTableName(), "mo_number = ? ", new Object[]{moNumber}); - if (!FieldSetEntity.isEmpty(fs)) { - //杩涜鏇存柊鎿嶄綔 - updateMoBase(errorMsg, moBase, new Dao[]{dao}); - continue; - } - //灏� T_PM_MO_BASE.PROJECT_ID 鏇存敼涓哄瓙搴撲腑瀵瑰簲 T_PM_PROJECT_BASE.PROJECT_BASE_ID - moBase.setValue("project_id", projectBase.getString("project_base_id")); + /** + * 鍒涘缓鍒朵护鍗� + * + * @param errorMsg + * @param moBase + * @param subDao + */ + private void createMoBase(StringBuilder errorMsg, FieldSetEntity moBase, Dao[] subDao) { + String moNumber = moBase.getString("mo_number"); + for (int i = 0; i < subDao.length; i++) { + Dao dao = subDao[i]; + try { + //妫�鏌ュ伐鍗曡〃鏄惁瀛樺湪 + FieldSetEntity projectBase = dao.getOne("T_PM_PROJECT_BASE", "PROJECT_ID = ? ", new Object[]{moNumber}); + if (FieldSetEntity.isEmpty(projectBase)) { + throw new BaseException(ErrorCode.SUB_PROJECT_BASE_CAN_NOT_EMPTY); + } + //妫�鏌ュ埗浠ゅ崟琛ㄦ槸鍚﹀凡瀛樺湪 + FieldSetEntity fs = dao.getOne(moBase.getTableName(), "mo_number = ? ", new Object[]{moNumber}); + if (!FieldSetEntity.isEmpty(fs)) { + //杩涜鏇存柊鎿嶄綔 + updateMoBase(errorMsg, moBase, new Dao[]{dao}); + continue; + } + //灏� T_PM_MO_BASE.PROJECT_ID 鏇存敼涓哄瓙搴撲腑瀵瑰簲 T_PM_PROJECT_BASE.PROJECT_BASE_ID + moBase.setValue("project_id", projectBase.getString("project_base_id")); // moBase.setValue("row_id", -1); - dao.add(moBase); - } catch (BaseException e) { - errorMsg.append("鍒朵护鍗曞彿锛歔 " + moNumber + " ]IP:[").append(getIp(dao)). - append("]").append(e.getMessageInfo()); - e.printStackTrace(); - SpringMVCContextHolder.getSystemLogger().error(e); - } catch (Exception e) { - errorMsg.append("鍒朵护鍗曞彿锛歔 " + moNumber + " ]IP:[").append(getIp(dao)).append("]").append("鍒涘缓鍒朵护鍗曞け璐ワ紝鏈煡鐨勯敊璇�"); - e.printStackTrace(); - SpringMVCContextHolder.getSystemLogger().error(e); - } - } - } + dao.add(moBase); + } catch (BaseException e) { + errorMsg.append("鍒朵护鍗曞彿锛歔 " + moNumber + " ]IP:[").append(getIp(dao)). + append("]").append(e.getMessageInfo()); + e.printStackTrace(); + SpringMVCContextHolder.getSystemLogger().error(e); + } catch (Exception e) { + errorMsg.append("鍒朵护鍗曞彿锛歔 " + moNumber + " ]IP:[").append(getIp(dao)).append("]").append("鍒涘缓鍒朵护鍗曞け璐ワ紝鏈煡鐨勯敊璇�"); + e.printStackTrace(); + SpringMVCContextHolder.getSystemLogger().error(e); + } + } + } - /** - * 鏇存柊鍒朵护鍗� - * - * @param errorMsg - * @param moBase - * @param subDao - */ - private void updateMoBase(StringBuilder errorMsg, FieldSetEntity moBase, Dao[] subDao) { - String moNumber = moBase.getString("mo_number"); - for (int i = 0; i < subDao.length; i++) { - Dao dao = subDao[i]; - try { - //妫�鏌ュ埗浠ゅ崟琛ㄦ槸鍚﹀凡瀛樺湪 - FieldSetEntity fs = dao.getOne(moBase.getTableName(), "mo_number = ? ", new Object[]{moNumber}); - if (FieldSetEntity.isEmpty(fs)) { - //杩涜鍒涘缓鎿嶄綔 - createMoBase(errorMsg, moBase, new Dao[]{dao}); - continue; - } - // 褰撳瓙搴撲腑鍒朵护鍗� input_qty 瀛楁涓� 0 鎴栬�� 涓� null 鏃� 鏇存柊澶氫釜瀛楁锛屽惁鍒欏彧鏇存柊target_qty 瀛楁 - String[] updateField = StringUtils.isEmpty(fs.getString("input_qty")) || "0".equals(fs.getString("input_qty")) ? - new String[]{"target_qty", "owner", "mo_create_date", "mo_schedule_date", "mo_due_date", "areaid", "technicsid", "close_flag", "default_group", "end_group"} - : new String[]{"target_qty"}; - StringBuilder sql = new StringBuilder(); - sql.append(" UPDATE T_PM_MO_BASE SET "); - Object[] params = new Object[updateField.length + 1]; - for (int k = 0; k < updateField.length; k++) { - if (k > 0) { - sql.append(","); - } - params[k] = moBase.getObject(updateField[k]); - sql.append(updateField[k].toUpperCase()).append(" = ? "); - } - params[updateField.length] = moNumber; - sql.append(" WHERE MO_NUMBER = ? "); - dao.executeSql(sql.toString(), params); - } catch (BaseException e) { - errorMsg.append("鍒朵护鍗曞彿锛歔 " + moNumber + " ]IP:[").append(getIp(dao)). - append("]").append(e.getMessageInfo()); - e.printStackTrace(); - SpringMVCContextHolder.getSystemLogger().error(e); - } catch (Exception e) { - errorMsg.append("鍒朵护鍗曞彿锛歔 " + moNumber + " ]IP:[").append(getIp(dao)).append("]").append("鏇存柊鍒朵护鍗曞け璐ワ紝鏈煡鐨勯敊璇�"); - e.printStackTrace(); - SpringMVCContextHolder.getSystemLogger().error(e); - } - } - } + /** + * 鏇存柊鍒朵护鍗� + * + * @param errorMsg + * @param moBase + * @param subDao + */ + private void updateMoBase(StringBuilder errorMsg, FieldSetEntity moBase, Dao[] subDao) { + String moNumber = moBase.getString("mo_number"); + for (int i = 0; i < subDao.length; i++) { + Dao dao = subDao[i]; + try { + //妫�鏌ュ埗浠ゅ崟琛ㄦ槸鍚﹀凡瀛樺湪 + FieldSetEntity fs = dao.getOne(moBase.getTableName(), "mo_number = ? ", new Object[]{moNumber}); + if (FieldSetEntity.isEmpty(fs)) { + //杩涜鍒涘缓鎿嶄綔 + createMoBase(errorMsg, moBase, new Dao[]{dao}); + continue; + } + // 褰撳瓙搴撲腑鍒朵护鍗� input_qty 瀛楁涓� 0 鎴栬�� 涓� null 鏃� 鏇存柊澶氫釜瀛楁锛屽惁鍒欏彧鏇存柊target_qty 瀛楁 + String[] updateField = StringUtils.isEmpty(fs.getString("input_qty")) || "0".equals(fs.getString("input_qty")) ? + new String[]{"target_qty", "owner", "mo_create_date", "mo_schedule_date", "mo_due_date", "areaid", "technicsid", "close_flag", "default_group", "end_group"} + : new String[]{"target_qty"}; + StringBuilder sql = new StringBuilder(); + sql.append(" UPDATE T_PM_MO_BASE SET "); + Object[] params = new Object[updateField.length + 1]; + for (int k = 0; k < updateField.length; k++) { + if (k > 0) { + sql.append(","); + } + params[k] = moBase.getObject(updateField[k]); + sql.append(updateField[k].toUpperCase()).append(" = ? "); + } + params[updateField.length] = moNumber; + sql.append(" WHERE MO_NUMBER = ? "); + dao.executeSql(sql.toString(), params); + } catch (BaseException e) { + errorMsg.append("鍒朵护鍗曞彿锛歔 " + moNumber + " ]IP:[").append(getIp(dao)). + append("]").append(e.getMessageInfo()); + e.printStackTrace(); + SpringMVCContextHolder.getSystemLogger().error(e); + } catch (Exception e) { + errorMsg.append("鍒朵护鍗曞彿锛歔 " + moNumber + " ]IP:[").append(getIp(dao)).append("]").append("鏇存柊鍒朵护鍗曞け璐ワ紝鏈煡鐨勯敊璇�"); + e.printStackTrace(); + SpringMVCContextHolder.getSystemLogger().error(e); + } + } + } - private String getIp(Dao dao) { - return ((OracleDaoImpl) dao).getDataBaseEntity().getIp(); - } + private String getIp(Dao dao) { + return ((OracleDaoImpl) dao).getDataBaseEntity().getIp(); + } - /** - * 閲囬泦閰嶇疆淇濆瓨 - * - * @param request - * @throws BaseException - */ - @Override - @Transactional - public void saveCollectConfig(HttpServletRequest request) throws BaseException { - //鏈嶅姟鍚嶇О - String serverName = request.getHeader("server-name"); - if (StringUtils.isEmpty(serverName)) { - throw new BaseException(ErrorCode.SERVER_NAME_CAN_NOT_EMPTY); - } - FieldSetEntity fse = BaseUtil.getFieldSetEntity(request, CmnConst.PRODUCT_SYS_DATA_COLLECT); - //閲囬泦鏉ユ簮 - String sourceInfo = fse.getString("id"); - if (StringUtils.isEmpty(sourceInfo) || StringUtils.contains(sourceInfo, dataSystemName)) { - throw new BaseException(ErrorCode.COLLECT_SOURCE_VALUE); - } - commonSave(fse); - } + /** + * 閲囬泦閰嶇疆淇濆瓨 + * + * @param request + * @throws BaseException + */ + @Override + @Transactional + public void saveCollectConfig(HttpServletRequest request) throws BaseException { + //鏈嶅姟鍚嶇О + String serverName = request.getHeader("server-name"); + if (StringUtils.isEmpty(serverName)) { + throw new BaseException(ErrorCode.SERVER_NAME_CAN_NOT_EMPTY); + } + FieldSetEntity fse = BaseUtil.getFieldSetEntity(request, CmnConst.PRODUCT_SYS_DATA_COLLECT); + //閲囬泦鏉ユ簮 + String sourceInfo = fse.getString("id"); + if (StringUtils.isEmpty(sourceInfo) || StringUtils.contains(sourceInfo, dataSystemName)) { + throw new BaseException(ErrorCode.COLLECT_SOURCE_VALUE); + } + commonSave(fse); + } - /** - * 鎻愬彇閰嶇疆淇濆瓨 - * - * @param fse - * @throws BaseException - */ - @Override - @Transactional - public void saveExtractConfig(FieldSetEntity fse) throws BaseException { - String dataSource = fse.getString(CmnConst.TABLE_SYNC_MANAGER); - if (!StringUtils.isEmpty(dataSource)) { - FieldSetEntity fs = JsonUtil.pareseJsonToFieldSetEntity(dataSource); - if (!FieldSetEntity.isEmpty(fs)) { - commonSave(fs); - } - } - commonSave(fse); - getCommonService().saveDelRecordConfig(2, fse.getUUID()); - } + /** + * 鎻愬彇閰嶇疆淇濆瓨 + * + * @param fse + * @throws BaseException + */ + @Override + @Transactional + public void saveExtractConfig(FieldSetEntity fse) throws BaseException { + String dataSource = fse.getString(CmnConst.TABLE_SYNC_MANAGER); + if (!StringUtils.isEmpty(dataSource)) { + FieldSetEntity fs = JsonUtil.pareseJsonToFieldSetEntity(dataSource); + if (!FieldSetEntity.isEmpty(fs)) { + commonSave(fs); + } + } + commonSave(fse); + getCommonService().saveDelRecordConfig(2, fse.getUUID()); + } - /** - * 褰掓。閰嶇疆淇濆瓨 - * - * @param fse - * @throws BaseException - */ - @Override - @Transactional - public void saveArchiveConfig(FieldSetEntity fse) throws BaseException { - commonSave(fse); - } + /** + * 褰掓。閰嶇疆淇濆瓨 + * + * @param fse + * @throws BaseException + */ + @Override + @Transactional + public void saveArchiveConfig(FieldSetEntity fse) throws BaseException { + commonSave(fse); + } - /** - * @param fse - * @throws BaseException - */ - @Override - public void saveCollectLog(FieldSetEntity fse) throws BaseException { - this.commonSave(fse); - } + /** + * @param fse + * @throws BaseException + */ + @Override + public void saveCollectLog(FieldSetEntity fse) throws BaseException { + this.commonSave(fse); + } - /** - * @param fse - * @throws BaseException - */ - @Override - public void saveExtractLog(FieldSetEntity fse) throws BaseException { - this.commonSave(fse); - } + /** + * @param fse + * @throws BaseException + */ + @Override + public void saveExtractLog(FieldSetEntity fse) throws BaseException { + this.commonSave(fse); + } - /** - * 鏁版嵁婧愪繚瀛樹細璋冪敤璇ユ柟娉� - * - * @param fse - * @throws BaseException - */ - @Override - public void saveSyncConnectionConfig(FieldSetEntity fse) throws BaseException { - //瀛愭湇鍔′繚瀛樻暟鎹簱杩炴帴閰嶇疆鍚庤皟鐢ㄨ鏂规硶锛屼紶杈撴暟鎹埌涓绘湇鍔� - //TODO - } + /** + * 鏁版嵁婧愪繚瀛樹細璋冪敤璇ユ柟娉� + * + * @param fse + * @throws BaseException + */ + @Override + public void saveSyncConnectionConfig(FieldSetEntity fse) throws BaseException { + //瀛愭湇鍔′繚瀛樻暟鎹簱杩炴帴閰嶇疆鍚庤皟鐢ㄨ鏂规硶锛屼紶杈撴暟鎹埌涓绘湇鍔� + //TODO + } - /** - * 瀹氭椂浠诲姟鐢熸垚鏃ュ織浼氳皟鐢ㄨ鏂规硶 - * - * @param fse - * @throws BaseException - */ - @Override - public void saveTimeLog(FieldSetEntity fse) throws BaseException { - //涓绘湇鍔℃彁鍙栨棩蹇椾繚瀛樺悗璋冪敤璇ユ柟娉曚紶杈撳埌瀛愭湇鍔� - //TODO + /** + * 瀹氭椂浠诲姟鐢熸垚鏃ュ織浼氳皟鐢ㄨ鏂规硶 + * + * @param fse + * @throws BaseException + */ + @Override + public void saveTimeLog(FieldSetEntity fse) throws BaseException { + //涓绘湇鍔℃彁鍙栨棩蹇椾繚瀛樺悗璋冪敤璇ユ柟娉曚紶杈撳埌瀛愭湇鍔� + //TODO - } + } - private void commonSave(FieldSetEntity fse) throws BaseException { - String uuid = fse.getUUID(); - FieldSetEntity fs = getBaseDao().getFieldSetEntity(fse.getTableName(), new String[]{CmnConst.UUID}, uuid, false); - Map<String, DataTableEntity> subData = fse.getSubData(); - if (!CollectionUtil.isEmpty(subData)) { - DataTableEntity addDt = new DataTableEntity(); - DataTableEntity updateDt = new DataTableEntity(); - for (Map.Entry<String, DataTableEntity> entry : subData.entrySet()) { - String tableName = entry.getKey(); - DataTableEntity value = entry.getValue(); - if (DataTableEntity.isEmpty(value)) { - continue; - } - Object[] uuids = value.getUuids(); - DataTableEntity dt = getBaseDao().listTable(tableName, BaseUtil.buildQuestionMarkFilter(CmnConst.UUID, uuids.length, true), uuids, new String[]{CmnConst.UUID}); - for (int i = 0; i < value.getRows(); i++) { - uuid = value.getString(i, CmnConst.UUID); - List<FieldSetEntity> fieldSetEntity = dt.getFieldSetEntity(uuid); - if (CollectionUtil.isEmpty(fieldSetEntity)) { - addDt.addFieldSetEntity(value.getFieldSetEntity(i)); - value.setFieldValue(i, CoreConst.SYSTEM_DATA_OPERATE_TYPE, "add"); - } else { - addDt.addFieldSetEntity(updateDt.getFieldSetEntity(i)); - value.setFieldValue(i, CoreConst.SYSTEM_DATA_OPERATE_TYPE, "update"); - } - } - if (!DataTableEntity.isEmpty(addDt)) { - getBaseDao().add(addDt); - } - if (!DataTableEntity.isEmpty(updateDt)) { - getBaseDao().update(updateDt); - } - } - } - if (FieldSetEntity.isEmpty(fs)) { - getBaseDao().add(fse, false); - } else { - getBaseDao().update(fse, false); - } - } + private void commonSave(FieldSetEntity fse) throws BaseException { + String uuid = fse.getUUID(); + FieldSetEntity fs = getBaseDao().getFieldSetEntity(fse.getTableName(), new String[]{CmnConst.UUID}, uuid, false); + Map<String, DataTableEntity> subData = fse.getSubData(); + if (!CollectionUtil.isEmpty(subData)) { + DataTableEntity addDt = new DataTableEntity(); + DataTableEntity updateDt = new DataTableEntity(); + for (Map.Entry<String, DataTableEntity> entry : subData.entrySet()) { + String tableName = entry.getKey(); + DataTableEntity value = entry.getValue(); + if (DataTableEntity.isEmpty(value)) { + continue; + } + Object[] uuids = value.getUuids(); + DataTableEntity dt = getBaseDao().listTable(tableName, BaseUtil.buildQuestionMarkFilter(CmnConst.UUID, uuids.length, true), uuids, new String[]{CmnConst.UUID}); + for (int i = 0; i < value.getRows(); i++) { + uuid = value.getString(i, CmnConst.UUID); + List<FieldSetEntity> fieldSetEntity = dt.getFieldSetEntity(uuid); + if (CollectionUtil.isEmpty(fieldSetEntity)) { + addDt.addFieldSetEntity(value.getFieldSetEntity(i)); + value.setFieldValue(i, CoreConst.SYSTEM_DATA_OPERATE_TYPE, "add"); + } else { + addDt.addFieldSetEntity(updateDt.getFieldSetEntity(i)); + value.setFieldValue(i, CoreConst.SYSTEM_DATA_OPERATE_TYPE, "update"); + } + } + if (!DataTableEntity.isEmpty(addDt)) { + getBaseDao().add(addDt); + } + if (!DataTableEntity.isEmpty(updateDt)) { + getBaseDao().update(updateDt); + } + } + } + if (FieldSetEntity.isEmpty(fs)) { + getBaseDao().add(fse, false); + } else { + getBaseDao().update(fse, false); + } + } - /** - * 璋冪敤杩滅▼涓绘湇鍔″櫒閲囬泦淇濆瓨 - * - * @param fse - * @return - * @throws BaseException - */ - public FieldSetEntity remoteSaveCollectConfig(FieldSetEntity fse) throws BaseException { - if ("ch-kt".equals(dataSystemName)) { - return fse; - } - FieldSetEntity fs = getBaseDao().getFieldSetByFilter(CmnConst.PRODUCT_MES_SERVER, "server_type=0", null, false); - if (FieldSetEntity.isEmpty(fs)) { - throw new BaseException(ErrorCode.REMOTE_SERVER_CONFIG_EMPTY); - } - //鏈嶅姟鍩熷悕鐨勭鍙� - String ipPort = fs.getString("server_url"); - String serverName = fs.getString("server_name"); - String serverUrl = ipPort + CmnConst.SAVE_COLLECT_URL; - FieldSetEntity res = doPost(serverUrl, serverName, fse); - return res; - } + /** + * 璋冪敤杩滅▼涓绘湇鍔″櫒閲囬泦淇濆瓨 + * + * @param fse + * @return + * @throws BaseException + */ + public FieldSetEntity remoteSaveCollectConfig(FieldSetEntity fse) throws BaseException { + if ("ch-kt".equals(dataSystemName)) { + return fse; + } + FieldSetEntity fs = getBaseDao().getFieldSetByFilter(CmnConst.PRODUCT_MES_SERVER, "server_type=0", null, false); + if (FieldSetEntity.isEmpty(fs)) { + throw new BaseException(ErrorCode.REMOTE_SERVER_CONFIG_EMPTY); + } + //鏈嶅姟鍩熷悕鐨勭鍙� + String ipPort = fs.getString("server_url"); + String serverName = fs.getString("server_name"); + String serverUrl = ipPort + CmnConst.SAVE_COLLECT_URL; + FieldSetEntity res = doPost(serverUrl, serverName, fse); + return res; + } - /** - * 涓绘湇鍔℃彁鍙栦繚瀛樻棩蹇楀悗璋冪敤璇ユ柟娉曚紶鍏ュ埌瀛愭湇鍔′繚瀛� - * - * @param fse - * @return - * @throws BaseException - */ - public void remoteSaveExtractLog(FieldSetEntity fse) throws BaseException { - try { - if ("ch-kt".equals(dataSystemName)) { - //涓绘湇鍔¢噰闆嗘棩蹇梪uid - String preStepUuid = fse.getString(CmnConst.PRE_STEP_UUID); - StringBuilder sql = new StringBuilder(); - sql.append("\nSELECT "); - sql.append("\nserver.* "); - sql.append("\nFROM ").append(CmnConst.PRODUCT_SYS_DATA_COLLECT).append(" collect "); - sql.append("\nJOIN ").append(CmnConst.PRODUCT_SYS_DATA_CENTER_LOG).append(" log "); - sql.append("\nON log.config_uuid=collect.uuid and log.type=1 "); - sql.append("\nJOIN ").append(CmnConst.PRODUCT_MES_SERVER).append(" server "); - sql.append("\nON collect.id like concat(server.server_name,'%') "); - sql.append("\nWHERE log.uuid=? and collect.id not like concat(?,'%') limit 1"); - FieldSetEntity fs = getBaseDao().getFieldSetBySQL(sql.toString(), new Object[]{preStepUuid, dataSystemName}, false); - if (FieldSetEntity.isEmpty(fs)) { - return; - } - String ipPort = fs.getString("server_url"); - String serverName = fs.getString("server_name"); - String serverUrl = ipPort + CmnConst.SAVE_EXTRACT_LOG_URL; - doPostAsync(serverUrl, serverName, fse); - } - } catch (Exception e) { - //鎹曡幏寮傚父涓轰簡浣块噰闆嗗畾鏃朵换鍔℃甯歌繍琛� - SpringMVCContextHolder.getSystemLogger().error(e); - e.printStackTrace(); - } - } + /** + * 涓绘湇鍔℃彁鍙栦繚瀛樻棩蹇楀悗璋冪敤璇ユ柟娉曚紶鍏ュ埌瀛愭湇鍔′繚瀛� + * + * @param fse + * @return + * @throws BaseException + */ + public void remoteSaveExtractLog(FieldSetEntity fse) throws BaseException { + try { + if ("ch-kt".equals(dataSystemName)) { + //涓绘湇鍔¢噰闆嗘棩蹇梪uid + String preStepUuid = fse.getString(CmnConst.PRE_STEP_UUID); + StringBuilder sql = new StringBuilder(); + sql.append("\nSELECT "); + sql.append("\nserver.* "); + sql.append("\nFROM ").append(CmnConst.PRODUCT_SYS_DATA_COLLECT).append(" collect "); + sql.append("\nJOIN ").append(CmnConst.PRODUCT_SYS_DATA_CENTER_LOG).append(" log "); + sql.append("\nON log.config_uuid=collect.uuid and log.type=1 "); + sql.append("\nJOIN ").append(CmnConst.PRODUCT_MES_SERVER).append(" server "); + sql.append("\nON collect.id like concat(server.server_name,'%') "); + sql.append("\nWHERE log.uuid=? and collect.id not like concat(?,'%') limit 1"); + FieldSetEntity fs = getBaseDao().getFieldSetBySQL(sql.toString(), new Object[]{preStepUuid, dataSystemName}, false); + if (FieldSetEntity.isEmpty(fs)) { + return; + } + String ipPort = fs.getString("server_url"); + String serverName = fs.getString("server_name"); + String serverUrl = ipPort + CmnConst.SAVE_EXTRACT_LOG_URL; + doPostAsync(serverUrl, serverName, fse); + } + } catch (Exception e) { + //鎹曡幏寮傚父涓轰簡浣块噰闆嗗畾鏃朵换鍔℃甯歌繍琛� + SpringMVCContextHolder.getSystemLogger().error(e); + e.printStackTrace(); + } + } - /** - * 璋冪敤杩滅▼涓绘湇鍔″櫒淇濆瓨 - * - * @param fse - * @return - * @throws BaseException - */ - public void remoteSaveExtractConfig(FieldSetEntity fse) throws BaseException { - DataTableEntity dt = getRemoteSubServer(); - if (DataTableEntity.isEmpty(dt)) { - return; - } - FieldSetEntity extractTargetSource = getBaseDao().getFieldSetEntity(CmnConst.TABLE_SYNC_MANAGER, fse.getString("extract_target_source"), false); - if (!FieldSetEntity.isEmpty(extractTargetSource)) { - extractTargetSource.setValue(CoreConst.SYSTEM_TABLE_NAME_LABEL, CmnConst.TABLE_SYNC_MANAGER); - fse.setValue(CmnConst.TABLE_SYNC_MANAGER, BaseUtil.fieldSetEntityToJson(extractTargetSource)); - } - for (int i = 0; i < dt.getRows(); i++) { - FieldSetEntity fs = dt.getFieldSetEntity(i); - //鏈嶅姟鍩熷悕鐨勭鍙� - String ipPort = fs.getString("server_url"); - String serverName = fs.getString("server_name"); - String serverUrl = ipPort + CmnConst.SAVE_EXTRACT_URL; - doPost(serverUrl, serverName, fse); - } - } + /** + * 璋冪敤杩滅▼涓绘湇鍔″櫒淇濆瓨 + * + * @param fse + * @return + * @throws BaseException + */ + public void remoteSaveExtractConfig(FieldSetEntity fse) throws BaseException { + DataTableEntity dt = getRemoteSubServer(); + if (DataTableEntity.isEmpty(dt)) { + return; + } + FieldSetEntity extractTargetSource = getBaseDao().getFieldSetEntity(CmnConst.TABLE_SYNC_MANAGER, fse.getString("extract_target_source"), false); + if (!FieldSetEntity.isEmpty(extractTargetSource)) { + extractTargetSource.setValue(CoreConst.SYSTEM_TABLE_NAME_LABEL, CmnConst.TABLE_SYNC_MANAGER); + fse.setValue(CmnConst.TABLE_SYNC_MANAGER, BaseUtil.fieldSetEntityToJson(extractTargetSource)); + } + for (int i = 0; i < dt.getRows(); i++) { + FieldSetEntity fs = dt.getFieldSetEntity(i); + //鏈嶅姟鍩熷悕鐨勭鍙� + String ipPort = fs.getString("server_url"); + String serverName = fs.getString("server_name"); + String serverUrl = ipPort + CmnConst.SAVE_EXTRACT_URL; + doPost(serverUrl, serverName, fse); + } + } - /** - * 璋冪敤杩滅▼涓绘湇鍔″櫒淇濆瓨 - * - * @param fse - * @return - * @throws BaseException - */ - public void remoteSaveArchiveConfig(FieldSetEntity fse) throws BaseException { - DataTableEntity dt = getRemoteSubServer(); - if (DataTableEntity.isEmpty(dt)) { - return; - } - for (int i = 0; i < dt.getRows(); i++) { - FieldSetEntity fs = dt.getFieldSetEntity(i); - //鏈嶅姟鍩熷悕鐨勭鍙� - String ipPort = fs.getString("server_url"); - String serverName = fs.getString("server_name"); - String serverUrl = ipPort + CmnConst.SAVE_ARCHIVE_URL; - doPost(serverUrl, serverName, fse); - } - } + /** + * 璋冪敤杩滅▼涓绘湇鍔″櫒淇濆瓨 + * + * @param fse + * @return + * @throws BaseException + */ + public void remoteSaveArchiveConfig(FieldSetEntity fse) throws BaseException { + DataTableEntity dt = getRemoteSubServer(); + if (DataTableEntity.isEmpty(dt)) { + return; + } + for (int i = 0; i < dt.getRows(); i++) { + FieldSetEntity fs = dt.getFieldSetEntity(i); + //鏈嶅姟鍩熷悕鐨勭鍙� + String ipPort = fs.getString("server_url"); + String serverName = fs.getString("server_name"); + String serverUrl = ipPort + CmnConst.SAVE_ARCHIVE_URL; + doPost(serverUrl, serverName, fse); + } + } - /** - * 璋冪敤杩滅▼涓绘湇鍔″櫒淇濆瓨 - * - * @param fse - * @return - * @throws BaseException - */ - public void remoteSaveCollectLog(FieldSetEntity fse) throws BaseException { - if ("ch-kt".equals(dataSystemName) || FieldSetEntity.isEmpty(fse)) { - return; - } - FieldSetEntity fs = getBaseDao().getFieldSetByFilter(CmnConst.PRODUCT_MES_SERVER, "server_type=0", null, false); - if (FieldSetEntity.isEmpty(fs)) { - throw new BaseException(ErrorCode.REMOTE_SERVER_CONFIG_EMPTY); - } - //鏈嶅姟鍩熷悕鐨勭鍙� - String ipPort = fs.getString("server_url"); - String serverName = fs.getString("server_name"); - String serverUrl = ipPort + CmnConst.SAVE_COLLECT_LOG_URL; - doPost(serverUrl, serverName, fse); - } + /** + * 璋冪敤杩滅▼涓绘湇鍔″櫒淇濆瓨 + * + * @param fse + * @return + * @throws BaseException + */ + public void remoteSaveCollectLog(FieldSetEntity fse) throws BaseException { + if ("ch-kt".equals(dataSystemName) || FieldSetEntity.isEmpty(fse)) { + return; + } + FieldSetEntity fs = getBaseDao().getFieldSetByFilter(CmnConst.PRODUCT_MES_SERVER, "server_type=0", null, false); + if (FieldSetEntity.isEmpty(fs)) { + throw new BaseException(ErrorCode.REMOTE_SERVER_CONFIG_EMPTY); + } + //鏈嶅姟鍩熷悕鐨勭鍙� + String ipPort = fs.getString("server_url"); + String serverName = fs.getString("server_name"); + String serverUrl = ipPort + CmnConst.SAVE_COLLECT_LOG_URL; + doPost(serverUrl, serverName, fse); + } - /** - * 鑾峰彇瀛愭湇鍔¢厤缃� - * - * @return - * @throws BaseException - */ - private DataTableEntity getRemoteSubServer() throws BaseException { - return getBaseDao().listTable(CmnConst.PRODUCT_MES_SERVER, "server_type!=0"); - } + /** + * 鑾峰彇瀛愭湇鍔¢厤缃� + * + * @return + * @throws BaseException + */ + private DataTableEntity getRemoteSubServer() throws BaseException { + return getBaseDao().listTable(CmnConst.PRODUCT_MES_SERVER, "server_type!=0"); + } - // @Async - void doPostAsync(String url, String serverName, FieldSetEntity fse) throws BaseException { - doPost(url, serverName, fse); - } + // @Async + void doPostAsync(String url, String serverName, FieldSetEntity fse) throws BaseException { + doPost(url, serverName, fse); + } - public String getDataSystemName() { - return dataSystemName; - } + public String getDataSystemName() { + return dataSystemName; + } - public boolean remoteRehandle(FieldSetEntity fse) { - String type = fse.getString(CmnConst.TYPE);//绫诲瀷 - String logUuid; - if ("2".equals(type)) { - logUuid = fse.getString(CmnConst.PRE_STEP_UUID); - } else if ("1".equals(type)) { - logUuid = fse.getUUID(); - } else { - return false; - } - FieldSetEntity fs = getBaseDao().getFieldSetByFilter(CmnConst.PRODUCT_SYS_DATA_COLLECT, "uuid =(select config_uuid FROM product_sys_data_center_log where uuid=?)", new Object[]{logUuid}, false); - if (!FieldSetEntity.isEmpty(fs)) { - //閲囬泦id - String collectId = fs.getString(CmnConst.ID); - if (collectId.indexOf(dataSystemName) == -1) { - fs = getBaseDao().getFieldSetByFilter(CmnConst.PRODUCT_MES_SERVER, "server_type=1 and ? like concat(server_name,'%')", new Object[]{collectId}, false); - if (!FieldSetEntity.isEmpty(fs)) { - //鏈嶅姟鍩熷悕鐨勭鍙� - String ipPort = fs.getString("server_url"); - String serverName = fs.getString("server_name"); - String serverUrl = ipPort + CmnConst.REHANDLE_ERROR_URL; - doPost(serverUrl, serverName, fse); - //鏍囪鏃ュ織鎴愬姛 - JournalManagerService journalManagerService = SpringUtils.getBean(JournalManagerService.class); - journalManagerService.writeBackReDealResult(fse, true); - } - return true; - } - } - return false; - } + public boolean remoteRehandle(FieldSetEntity fse) { + String type = fse.getString(CmnConst.TYPE);//绫诲瀷 + String logUuid; + if ("2".equals(type)) { + logUuid = fse.getString(CmnConst.PRE_STEP_UUID); + } else if ("1".equals(type)) { + logUuid = fse.getUUID(); + } else { + return false; + } + FieldSetEntity fs = getBaseDao().getFieldSetByFilter(CmnConst.PRODUCT_SYS_DATA_COLLECT, "uuid =(select config_uuid FROM product_sys_data_center_log where uuid=?)", new Object[]{logUuid}, false); + if (!FieldSetEntity.isEmpty(fs)) { + //閲囬泦id + String collectId = fs.getString(CmnConst.ID); + if (collectId.indexOf(dataSystemName) == -1) { + fs = getBaseDao().getFieldSetByFilter(CmnConst.PRODUCT_MES_SERVER, "server_type=1 and ? like concat(server_name,'%')", new Object[]{collectId}, false); + if (!FieldSetEntity.isEmpty(fs)) { + //鏈嶅姟鍩熷悕鐨勭鍙� + String ipPort = fs.getString("server_url"); + String serverName = fs.getString("server_name"); + String serverUrl = ipPort + CmnConst.REHANDLE_ERROR_URL; + doPost(serverUrl, serverName, fse); + //鏍囪鏃ュ織鎴愬姛 + JournalManagerService journalManagerService = SpringUtils.getBean(JournalManagerService.class); + journalManagerService.writeBackReDealResult(fse, true); + } + return true; + } + } + return false; + } - /** - * post 璇锋眰 - * - * @param url - * @param serverName - * @param fse - * @throws BaseException - */ - private FieldSetEntity doPost(String url, String serverName, FieldSetEntity fse) throws BaseException { - fse.setValue(CoreConst.SYSTEM_TABLE_NAME_LABEL, fse.getTableName()); - JSONObject requestBody = BaseUtil.fieldSetEntityToJson(fse); - String requestData = requestBody.toJSONString(); - //绛惧悕 - String signature = SignUtil.getHmacSHA1(requestData, Global.getSystemConfig("signature.key", "")); - try (HttpResponse response = HttpRequest.post(url) - .contentType("application/x-www-form-urlencoded") - .header(CoreConst.SYSTEM_LANGUAGE_CODE_, "zh-CN") //璇█缂栫爜 - .header(CoreConst.SYSTEM_CLIENT_TYPE_, "Web") //瀹㈡埛绔被鍨� - .header(CoreConst.SYSTEM_CLIENT_VERSION_, "1.0.0") //瀹㈡埛绔増鏈� - .header("server-name", serverName) //绯荤粺鍚嶇О - .header("signature", signature) //绛惧悕 - .body("formData=" + requestData).execute()) { - if (response.getStatus() == 200) { - //璇锋眰鎴愬姛 - String res = response.body(); - if (!StringUtils.isEmpty(res)) { - JSONObject resBody = JSON.parseObject(res); - if (resBody != null) { - String code = resBody.getString(CoreConst.API_RETURN_KEY_CODE); - if (!CoreConst.API_RETURN_VALUE_CODE_200.equals(code)) { - //鏈嶅姟鍐呴儴鎶涘嚭鐨勯敊璇� - throw new BaseException("璋冪敤鎺ュ彛澶辫触锛�", resBody.getString(CoreConst.API_RETURN_KEY_MSG)); - } - String formData = resBody.getString(CoreConst.API_RETURN_KEY_DATA); - if (StringUtils.isEmpty(formData)) { - return null; - } - FieldSetEntity result = JsonUtil.pareseJsonToFieldSetEntity(formData); - return result; - } - } - } - throw new BaseException(ErrorCode.OPEN_API_REQUEST_FAIL); - } + /** + * post 璇锋眰 + * + * @param url + * @param serverName + * @param fse + * @throws BaseException + */ + private FieldSetEntity doPost(String url, String serverName, FieldSetEntity fse) throws BaseException { + fse.setValue(CoreConst.SYSTEM_TABLE_NAME_LABEL, fse.getTableName()); + JSONObject requestBody = BaseUtil.fieldSetEntityToJson(fse); + String requestData = requestBody.toJSONString(); + //绛惧悕 + String signature = SignUtil.getHmacSHA1(requestData, Global.getSystemConfig("signature.key", "")); + try (HttpResponse response = HttpRequest.post(url) + .contentType("application/x-www-form-urlencoded") + .header(CoreConst.SYSTEM_LANGUAGE_CODE_, "zh-CN") //璇█缂栫爜 + .header(CoreConst.SYSTEM_CLIENT_TYPE_, "Web") //瀹㈡埛绔被鍨� + .header(CoreConst.SYSTEM_CLIENT_VERSION_, "1.0.0") //瀹㈡埛绔増鏈� + .header("server-name", serverName) //绯荤粺鍚嶇О + .header("signature", signature) //绛惧悕 + .body("formData=" + requestData).execute()) { + if (response.getStatus() == 200) { + //璇锋眰鎴愬姛 + String res = response.body(); + if (!StringUtils.isEmpty(res)) { + JSONObject resBody = JSON.parseObject(res); + if (resBody != null) { + String code = resBody.getString(CoreConst.API_RETURN_KEY_CODE); + if (!CoreConst.API_RETURN_VALUE_CODE_200.equals(code)) { + //鏈嶅姟鍐呴儴鎶涘嚭鐨勯敊璇� + throw new BaseException("璋冪敤鎺ュ彛澶辫触锛�", resBody.getString(CoreConst.API_RETURN_KEY_MSG)); + } + String formData = resBody.getString(CoreConst.API_RETURN_KEY_DATA); + if (StringUtils.isEmpty(formData)) { + return null; + } + FieldSetEntity result = JsonUtil.pareseJsonToFieldSetEntity(formData); + return result; + } + } + } + throw new BaseException(ErrorCode.OPEN_API_REQUEST_FAIL); + } - } + } - /** - * 鑾峰彇閲囬泦鏃ュ織 - * - * @return - */ - public FieldSetEntity getCollectLog() { - collectLogCache = null; - if (collectLogCache == null) { - loadCollectLogCache(); - } + /** + * 鑾峰彇閲囬泦鏃ュ織 + * + * @return + */ + public FieldSetEntity getCollectLog() { + collectLogCache = null; + if (collectLogCache == null) { + loadCollectLogCache(); + } - return collectLogCache; - } + return collectLogCache; + } - public void loadCollectLogCache() { - StringBuilder sql = new StringBuilder(); - sql.append("\n with no_extract as ( "); - sql.append("\n SELECT "); - sql.append("\n a.* "); - sql.append("\n FROM "); - sql.append("\n product_sys_data_center_log A "); - sql.append("\n LEFT JOIN product_sys_data_center_log b ON a.uuid = b.pre_step_uuid "); - sql.append("\n WHERE "); - sql.append("\n a.type = 1 "); - sql.append("\n and a.result=1 and (a.deal_flag is null or a.deal_flag =0) "); - sql.append("\n AND ( "); - sql.append("\n b.pre_step_uuid IS NULL "); - sql.append("\n OR "); - sql.append("\n ( "); - sql.append("\n b.pre_step_uuid=a.uuid "); - sql.append("\n AND "); - sql.append("\n (b.result=0 and (b.deal_result = 0 or b.deal_flag is null)) "); - sql.append("\n ) "); - sql.append("\n ) "); - sql.append("\n ), "); - sql.append("\n last_run_log as ( "); - sql.append("\n select max(created_utc_datetime) last_time,config_uuid from product_sys_data_center_log where type=1 and result=1 and deal_flag=0 GROUP BY config_uuid "); - sql.append("\n ) "); - sql.append("\n "); - sql.append("\n SELECT ifnull(COUNT(no_extract.uuid),0) unextracted_batch ,ifnull(sum(no_extract.count),0) unextracted_total_count,b.`name`,(select last_time from last_run_log where b.uuid=last_run_log.config_uuid) last_success_time FROM product_sys_data_collect b "); - sql.append("\n left join no_extract on no_extract.config_uuid=b.uuid "); - sql.append("\n GROUP BY b.uuid "); - sql.append("\n order by b.`name` "); + public void loadCollectLogCache() { + StringBuilder sql = new StringBuilder(); + sql.append("\n with no_extract as ( "); + sql.append("\n SELECT "); + sql.append("\n a.* "); + sql.append("\n FROM "); + sql.append("\n product_sys_data_center_log A "); + sql.append("\n LEFT JOIN product_sys_data_center_log b ON a.uuid = b.pre_step_uuid "); + sql.append("\n WHERE "); + sql.append("\n a.type = 1 "); + sql.append("\n and a.result=1 and (a.deal_flag is null or a.deal_flag =0) "); + sql.append("\n AND ( "); + sql.append("\n b.pre_step_uuid IS NULL "); + sql.append("\n OR "); + sql.append("\n ( "); + sql.append("\n b.pre_step_uuid=a.uuid "); + sql.append("\n AND "); + sql.append("\n (b.result=0 and (b.deal_result = 0 or b.deal_flag is null)) "); + sql.append("\n ) "); + sql.append("\n ) "); + sql.append("\n ), "); + sql.append("\n last_run_log as ( "); + sql.append("\n select max(created_utc_datetime) last_time,config_uuid from product_sys_data_center_log where type=1 and result=1 and deal_flag=0 GROUP BY config_uuid "); + sql.append("\n ) "); + sql.append("\n "); + sql.append("\n SELECT ifnull(COUNT(no_extract.uuid),0) unextracted_batch ,ifnull(sum(no_extract.count),0) unextracted_total_count,b.`name`,(select last_time from last_run_log where b.uuid=last_run_log.config_uuid) last_success_time FROM product_sys_data_collect b "); + sql.append("\n left join no_extract on no_extract.config_uuid=b.uuid "); + sql.append("\n GROUP BY b.uuid "); + sql.append("\n order by b.`name` "); - FieldSetEntity fse = new FieldSetEntity(); - fse.setTableName("temp"); - fse.setValue("load_log_time", DateTime.now().toString()); - DataTableEntity dataTableEntity = getBaseDao().listTable(sql.toString(), new Object[]{}); - if (!DataTableEntity.isEmpty(dataTableEntity)) { - fse.setValue("list", BaseUtil.dataTableEntityToJson(dataTableEntity, f -> { - JSONObject jsonObject = f[0]; - Date lastSuccessTime = jsonObject.getDate("last_success_time"); - if (lastSuccessTime != null) { - jsonObject.put("last_success_time", DateUtil.format(lastSuccessTime, "yyyy-MM-dd HH:mm:ss")); - } - })); - } else { - fse.setValue("list", "[]"); - } - this.collectLogCache = fse; - } + FieldSetEntity fse = new FieldSetEntity(); + fse.setTableName("temp"); + fse.setValue("load_log_time", DateTime.now().toString()); + DataTableEntity dataTableEntity = getBaseDao().listTable(sql.toString(), new Object[]{}); + if (!DataTableEntity.isEmpty(dataTableEntity)) { + fse.setValue("list", BaseUtil.dataTableEntityToJson(dataTableEntity, f -> { + JSONObject jsonObject = f[0]; + Date lastSuccessTime = jsonObject.getDate("last_success_time"); + if (lastSuccessTime != null) { + jsonObject.put("last_success_time", DateUtil.format(lastSuccessTime, "yyyy-MM-dd HH:mm:ss")); + } + })); + } else { + fse.setValue("list", "[]"); + } + this.collectLogCache = fse; + } } -- Gitblit v1.9.2