From 3212d131b28e5f4b09bb1222861370310a00ffc9 Mon Sep 17 00:00:00 2001 From: 许鹏程 <1821349743@qq.com> Date: 星期三, 15 五月 2024 19:04:06 +0800 Subject: [PATCH] 更改采集提取日志表归档删除逻辑 --- product-server-data-center/src/main/java/com/product/data/center/service/CommonService.java | 265 +++++++++++++++++++++++++++++++++++++++++++++------- product-server-data-center/src/main/java/com/product/data/center/service/DataExtractService.java | 2 product-server-data-center/src/main/java/com/product/data/center/service/DataCollectService.java | 2 3 files changed, 229 insertions(+), 40 deletions(-) diff --git a/product-server-data-center/src/main/java/com/product/data/center/service/CommonService.java b/product-server-data-center/src/main/java/com/product/data/center/service/CommonService.java index 1eccf84..f5b4632 100644 --- a/product-server-data-center/src/main/java/com/product/data/center/service/CommonService.java +++ b/product-server-data-center/src/main/java/com/product/data/center/service/CommonService.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.LocalDateTimeUtil; +import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.IdUtil; import com.product.admin.service.PublicService; import com.product.common.lang.StringUtils; @@ -21,17 +22,13 @@ import com.product.datasource.entity.DataBaseEntity; import com.product.quartz.service.impl.SysJobService; import com.product.util.BaseUtil; -import io.swagger.models.auth.In; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.text.DecimalFormat; import java.time.LocalDate; -import java.util.Collections; -import java.util.Date; -import java.util.List; -import java.util.Set; +import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -59,8 +56,172 @@ @Value("${data.system.name}") private String dataSystemName; - @Transactional + + public void deleteCenterLogV2() { + try { + + StringBuilder querySql = new StringBuilder(64); + + //select min(created_utc_datetime) as minTime,max(created_utc_datetime) as maxTime,min(id) min_id,max(id) max_id, date_format(created_utc_datetime,'%Y-%m') current_month from product_sys_data_center_log where created_utc_datetime <now() + interval -7 day and (result = 1 or ( deal_flag = 1 AND deal_result = 1 ) ) group by date_format(created_utc_datetime,'%Y-%m') + querySql.append(" select min(id) min_id,max(id) max_id, date_format(created_utc_datetime,'%Y%m') current_month "); + querySql.append(" from product_sys_data_center_log "); + querySql.append(" where created_utc_datetime <now() + interval -7 day and (result = 1 or ( deal_flag = 1 AND deal_result = 1 ) ) "); + querySql.append(" group by date_format(created_utc_datetime,'%Y%m') "); + + DataTableEntity dt = getBaseDao().listTable(querySql.toString(), new Object[]{}); + + if (DataTableEntity.isEmpty(dt)) { + return; + } + //鍦╩ysql鐨刬nformation_schema 琛ㄤ腑鏌ヨ鎸囧畾琛ㄦ槸鍚﹀瓨鍦� + String tableName = "da_product_sys_data_center_log"; + + //灏佽鎵�鏈夎〃鍚� + Set<String> allTableName = dt.getData().stream().map(e -> tableName + "_" + e.getString("current_month")).collect(Collectors.toSet()); + + //鍦╩ysql鐨刬nformation_schema 琛ㄤ腑鏌ヨ鎵�鏈夌殑琛� + querySql.setLength(0); + querySql.append(" select TABLE_NAME table_name from information_schema.tables where table_schema = ? and " + BaseUtil.buildQuestionMarkFilter("TABLE_NAME", allTableName.size(), true)); + String dataBaseName = getBaseDao().getDataBaseName(); + Object[] params = new Object[allTableName.size() + 1]; + params[0] = dataBaseName; + int index = 1; + for (String tableNameStr : allTableName) { + params[index] = tableNameStr; + index++; + } + DataTableEntity dataTableEntity = getBaseDao().listTable(querySql.toString(), params); + + Set<String> existsTable = dataTableEntity.getData().stream().map(e -> e.getString("table_name")).collect(Collectors.toSet()); + + //瀵规瘮琛ㄥ悕锛屽垱寤轰笉瀛樺湪鐨勮〃 + allTableName.removeAll(existsTable); + for (String tableNameStr : allTableName) { + String createTableSql = "create table " + tableNameStr + " like product_sys_data_center_log"; + getBaseDao().executeUpdate(createTableSql, new Object[]{}); + } + + querySql.setLength(0); + //鏌ヨdata_center_log琛ㄧ殑uuid瀛楁 created_utc_datetime鏈�鏂扮殑鏁版嵁鏍规嵁 config_uuid 鍜� type杩涜鍒嗙粍 涓� result = 1 or ( deal_flag = 1 AND deal_result = 1 ) 姣忕粍鍙彇鏈�鏂扮殑涓�鏉℃暟鎹� + querySql.append(" SELECT uuid,row_num,(select uuid from product_sys_data_center_log where pre_step_uuid = uuid and type=2) as pre_step_uuid "); + querySql.append(" FROM ( "); + querySql.append(" SELECT "); + querySql.append(" uuid, "); + querySql.append(" ROW_NUMBER() OVER (PARTITION BY config_uuid, type ORDER BY created_utc_datetime DESC) AS row_num "); + querySql.append(" FROM product_sys_data_center_log "); + querySql.append(" WHERE result = 1 OR (deal_flag = 1 AND deal_result = 1) "); + querySql.append(" ) AS subquery "); + querySql.append(" WHERE row_num = 1 "); + + + //鏌ヨ闇�瑕佷繚鐣欑殑鏁版嵁uuid + DataTableEntity retainData = getBaseDao().listTable(querySql.toString(), new Object[]{}); + String[] retainUuids = DataTableEntity.isEmpty(retainData) ? null : new String[retainData.getRows() * 2]; + if (!DataTableEntity.isEmpty(retainData)) { + for (int i = 0; i < retainData.getRows(); i++) { + retainUuids[i] = retainData.getString(i, "uuid"); + retainUuids[i + retainData.getRows()] = retainData.getString(i, "pre_step_uuid"); + } + } + + + for (int i = 0; i < dt.getRows(); i++) { + Integer minId = dt.getInt(i, "min_id"); + Integer maxId = dt.getInt(i, "max_id"); + + String currentMonth = dt.getString(i, "current_month"); + + //鏌ヨmysql涓槸鍚﹀瓨鍦ㄨ〃 + + querySql.setLength(0); + int pageSize = 500; + //鍒嗛〉鏌ヨ閲囬泦鏃ュ織鏁版嵁7澶╁墠鐨勬渶澶у拰鏈�灏廼d + querySql.append(" select a.uuid as log_collect_uuid,b.uuid as log_extract_uuid from product_sys_data_center_log a"); + querySql.append(" join product_sys_data_center_log b "); + querySql.append(" on a.uuid=b.pre_step_uuid "); + querySql.append(" where a.id >= ? and a.id <= ? and a.type=1 and (a.result = 1 or ( a.deal_flag = 1 AND a.deal_result = 1 ) ) and a.type=1 and b.type=2 limit ").append(pageSize); + + while (true) { + DataTableEntity queryDt = getBaseDao().listTable(querySql.toString(), new Object[]{minId, maxId}); + if (DataTableEntity.isEmpty(queryDt)) { + break; + } + + //灏嗘煡璇㈠嚭鐨刲og_collect_uuid鍜宭og_extract_uuid鍒嗗埆瀛樺叆涓や釜list涓� + List<String> logCollectUuidList = new ArrayList<>(); + List<String> logExtractUuidList = new ArrayList<>(); + for (int j = 0; j < queryDt.getRows(); j++) { + logCollectUuidList.add(queryDt.getString(j, "log_collect_uuid")); + logExtractUuidList.add(queryDt.getString(j, "log_extract_uuid")); + } + //鏍规嵁鏌ヨ鍑虹殑uuid灏嗘暟鎹彃鍏ュ埌瀵瑰簲鐨勮〃涓紝浣跨敤insert into select鐨勬柟寮� 鏉′欢鏄� uuid in logCollectUuidList 鍜� logExtractUuidList 鐨勬暟鎹� + StringBuilder insertSql = new StringBuilder(64); + insertSql.append(" insert into ").append(tableName).append("_").append(currentMonth); + + //灏唋ogCollectUuidList鍜宭ogExtractUuidList鍚堝苟涓轰竴涓暟缁勪笖鏁扮粍涓鏋滄湁rangeUuids涓殑鏁版嵁鍒欐帓闄� + Set<String> uuidSet = new HashSet<>(); + uuidSet.addAll(logCollectUuidList); + uuidSet.addAll(logExtractUuidList); + uuidSet.removeAll(Arrays.asList(retainUuids)); + + String[] uuids = uuidSet.toArray(new String[0]); + + insertSql.append(" select * from product_sys_data_center_log").append(" where (").append(BaseUtil.buildQuestionMarkFilter("uuid", uuids.length, true)).append(")"); + getBaseDao().executeUpdate(insertSql.toString(), uuids); + + //鍒犻櫎閲囬泦銆佹彁鍙栨棩蹇楁暟鎹� + StringBuilder deleteSql = new StringBuilder(64); + deleteSql.append(" delete a from product_sys_data_center_log a "); + deleteSql.append(" where (").append(BaseUtil.buildQuestionMarkFilter("a.uuid", uuids.length, true)).append(")"); + getBaseDao().executeUpdate(deleteSql.toString(), uuids); + if (pageSize != queryDt.getRows()) { + break; + } + } + + //鍒嗛〉鍒犻櫎type>2鐨勬暟鎹� + querySql.setLength(0); + querySql.append(" select uuid from product_sys_data_center_log a"); + querySql.append(" where id >= ? and id <= ? and type>2 and (result = 1 or ( deal_flag = 1 AND deal_result = 1 ) ) limit ").append(pageSize * 2); + while (true) { + DataTableEntity queryDt = getBaseDao().listTable(querySql.toString(), new Object[]{minId, maxId}); + if (DataTableEntity.isEmpty(queryDt)) { + break; + } + //灏嗘煡璇㈠嚭鐨剈uid瀛樺叆list涓� + List<String> uuidList = queryDt.getData().stream().map(e -> e.getString("uuid")).collect(Collectors.toList()); + //鎺掗櫎rangeUuids涓殑鏁版嵁 + uuidList.removeAll(Arrays.asList(retainUuids)); + //鏍规嵁鏌ヨ鍑虹殑uuid灏嗘暟鎹彃鍏ュ埌瀵瑰簲鐨勮〃涓紝浣跨敤insert into select鐨勬柟寮� 鏉′欢鏄� uuid in uuidList 鐨勬暟鎹� + StringBuilder insertSql = new StringBuilder(64); + insertSql.append(" insert into ").append(tableName).append("_").append(currentMonth); + insertSql.append(" select * from product_sys_data_center_log").append(" where (").append(BaseUtil.buildQuestionMarkFilter("uuid", uuidList.size(), true)).append(")"); + getBaseDao().executeUpdate(insertSql.toString(), uuidList.toArray()); + //鍒犻櫎鍏朵粬鏃ュ織鏁版嵁 + StringBuilder deleteSql = new StringBuilder(64); + deleteSql.append(" delete a from product_sys_data_center_log a "); + deleteSql.append(" where (").append(BaseUtil.buildQuestionMarkFilter("a.uuid", uuidList.size(), true)).append(")"); + getBaseDao().executeUpdate(deleteSql.toString(), uuidList.toArray()); + if (pageSize * 2 != queryDt.getRows()) { + break; + } + } + } + + + } catch (Exception e) { + SpringMVCContextHolder.getSystemLogger().error("deleteCenterLogV2 error"); + SpringMVCContextHolder.getSystemLogger().error(e); + e.printStackTrace(); + throw e; + } + } + public void deleteCenterLog() { + this.deleteCenterLogV2(); + } + + public void deleteCenterLogBak() { try { //鍦╩ysql鐨刬nformation_schema 琛ㄤ腑鏌ヨ鎸囧畾琛ㄦ槸鍚﹀瓨鍦� String tableName = "da_product_sys_data_center_log"; @@ -73,7 +234,7 @@ String endTimeStr = DateUtil.format(endTime, "yyyy-MM-dd"); //鏍规嵁鎴鏃ユ湡鏌ヨ琛ㄤ腑鏈�澶с�佹渶灏忕殑鍒涘缓鏃堕棿鏍规嵁鍒涘缓鏃堕棿杩涜鍒嗚〃鎸夋湀鍒嗚〃 - String sql = "select min(created_utc_datetime) as minTime,max(created_utc_datetime) as maxTime from product_sys_data_center_log where created_utc_datetime <now() + interval -7 day and (result = 1 or ( deal_flag = 1 AND deal_result = 1 ) )"; + String sql = "select min(created_utc_datetime) as minTime,max(created_utc_datetime) as maxTime from product_sys_data_center_log where created_utc_datetime <now() + interval -7 day and (result = 1 or ( deal_flag = 1 AND deal_result = 1 ) ) group by date_format(created_utc_datetime,'%Y-%m') "; FieldSetEntity fs = getBaseDao().getFieldSetEntityBySQL(sql, new Object[]{}, false); @@ -169,29 +330,67 @@ ")) ddd"; //鎻掑叆鏁版嵁鏍规嵁鍒涘缓鏃堕棿鐨勫勾鏈堝垎鍒彃鍏ュ埌瀵瑰簲鐨勮〃涓� for (DateTime dateTime : tableSuffixList) { - String insertSql = "insert into " + tableName + "_" + DateUtil.format(dateTime, "yyyyMM") + " select * from product_sys_data_center_log where created_utc_datetime >= str_to_date(concat(?, '-01 00:00:00'), '%Y-%m-%d %H:%i:%s') and created_utc_datetime < str_to_date(concat(?, '-01 00:00:00'), '%Y-%m-%d %H:%i:%s') + interval 1 month" + + + String selectSql = "select * from product_sys_data_center_log where created_utc_datetime >= str_to_date(concat(?, '-01 00:00:00'), '%Y-%m-%d %H:%i:%s') and created_utc_datetime < str_to_date(concat(?, '-01 00:00:00'), '%Y-%m-%d %H:%i:%s') + interval 1 month" + " and id >(select ifnull(max(id),0) from " + tableName + "_" + DateUtil.format(dateTime, "yyyyMM") + " ) and (result = 1 or ( deal_flag = 1 AND deal_result = 1 ) ) and created_utc_datetime <now() + interval -7 day"; - getBaseDao().executeUpdate(insertSql, new Object[]{DateUtil.format(dateTime, "yyyy-MM"), DateUtil.format(dateTime, "yyyy-MM")}); + + + //鑾峰彇datetime鎵�鍦ㄦ湀浠界殑绗竴澶�0鐐�0鍒�0绉� 鍜屾渶鍚庝竴澶�23鐐�59鍒�59绉� + DateTime beginOfMonth = DateUtil.beginOfMonth(dateTime); + DateTime endOfMonth = DateUtil.endOfMonth(dateTime); + + + int currentPage = 1; + + int totalPage; + do { + //鍒嗛〉鏌ヨ鏁版嵁 + DataTableEntity dt = getBaseDao().listTable(selectSql, new Object[]{DateUtil.format(dateTime, "yyyy-MM"), DateUtil.format(dateTime, "yyyy-MM")}, currentPage, 2000); + if (DataTableEntity.isEmpty(dt)) { + break; + } + totalPage = dt.getSqle().getTotalpage(); + //鏇存敼dt鐨勮〃鍚嶈繘琛屾彃鍏� + dt.getMeta().setTableName(new Object[]{tableName + "_" + DateUtil.format(dateTime, "yyyyMM")}); + getBaseDao().add(dt); + } while (totalPage > currentPage); +// String insertSql = "insert into " + tableName + "_" + DateUtil.format(dateTime, "yyyyMM") + " select * from product_sys_data_center_log where created_utc_datetime >= str_to_date(concat(?, '-01 00:00:00'), '%Y-%m-%d %H:%i:%s') and created_utc_datetime < str_to_date(concat(?, '-01 00:00:00'), '%Y-%m-%d %H:%i:%s') + interval 1 month" + +// " and id >(select ifnull(max(id),0) from " + tableName + "_" + DateUtil.format(dateTime, "yyyyMM") + " ) and (result = 1 or ( deal_flag = 1 AND deal_result = 1 ) ) and created_utc_datetime <now() + interval -7 day"; +// getBaseDao().executeUpdate(insertSql, new Object[]{DateUtil.format(dateTime, "yyyy-MM"), DateUtil.format(dateTime, "yyyy-MM")}); // //鍒犻櫎鏁版嵁宸叉彃鍏ョ殑鏁版嵁 StringBuilder deleteSql = new StringBuilder(); - deleteSql.append(" select a.id FROM product_sys_data_center_log a INNER JOIN "); - deleteSql.append(" product_sys_data_center_log b on a.uuid=b.pre_step_uuid and a.type=1 and b.type=2 "); - deleteSql.append(" where "); - deleteSql.append(" a.id>= (select ifnull(min(id),0) from " + tableName + "_" + DateUtil.format(dateTime, "yyyyMM") + " ) "); - deleteSql.append(" and a.id <= (select ifnull(max(id),0) from " + tableName + "_" + DateUtil.format(dateTime, "yyyyMM") + " ) "); - deleteSql.append(" and (a.result = 1 or ( a.deal_flag = 1 AND a.deal_result = 1 ) ) "); - deleteSql.append(" and a.type=1 "); - deleteSql.append(" and a.uuid not in (").append(sqlFilter).append(") "); - //鍏堝垹闄ら噰闆嗘棩蹇楁暟鎹� +// deleteSql.append(" DELETE a FROM product_sys_data_center_log a INNER JOIN "); +// deleteSql.append(" product_sys_data_center_log b on a.uuid=b.pre_step_uuid and a.type=1 and b.type=2 "); +// deleteSql.append(" where "); +// deleteSql.append(" a.id>= (select ifnull(min(id),0) from " + tableName + "_" + DateUtil.format(dateTime, "yyyyMM") + " ) "); +// deleteSql.append(" and a.id <= (select ifnull(max(id),0) from " + tableName + "_" + DateUtil.format(dateTime, "yyyyMM") + " ) "); +// deleteSql.append(" and (a.result = 1 or ( a.deal_flag = 1 AND a.deal_result = 1 ) ) "); +// deleteSql.append(" and a.type=1 "); +// deleteSql.append(" and a.uuid not in (").append(sqlFilter).append(") "); +// //鍏堝垹闄ら噰闆嗘棩蹇楁暟鎹� // getBaseDao().executeUpdate(deleteSql.toString(), new Object[]{}); - DataTableEntity dt = getBaseDao().listTable(deleteSql.toString(), new Object[]{}); - if (!DataTableEntity.isEmpty(dt)) { - List<Integer> ids = dt.getData().stream().map(row -> row.getInteger("id")).collect(Collectors.toList()); - getBaseDao().delete("product_sys_data_center_log", BaseUtil.buildQuestionMarkFilter("id", ids.size(), true), ids.toArray()); - } + + + //鍒犻櫎鏁版嵁宸叉彃鍏ョ殑鏁版嵁 + + //鏌ヨdata_center_log琛ㄤ腑鐨勫垱寤烘椂闂存槸7澶╁墠鐨勬暟鎹� 涓斿紑濮嬫椂闂存槸dateTime鐨勬暟鎹� + + + StringBuilder querySql = new StringBuilder(64); + + + querySql.append("select max(id) max_id,min(id) min_id from product_sys_data_center_log "); + querySql.append(" where created_utc_datetime >= str_to_date(concat(?, '-01 00:00:00'), '%Y-%m-%d %H:%i:%s') and created_utc_datetime < str_to_date(concat(?, '-01 00:00:00'), '%Y-%m-%d %H:%i:%s')"); + + + querySql.append("select id from "); + querySql.append(tableName).append("_").append(DateUtil.format(dateTime, "yyyyMM")); + querySql.append(" where type=1 and (result=1 or (deal_flag=1 and deal_result=1))"); + + deleteSql.setLength(0); //鍐嶅垹闄ゆ彁鍙栨棩蹇楁暟鎹� - deleteSql.append(" select a.id FROM product_sys_data_center_log a LEFT JOIN "); + deleteSql.append(" DELETE a FROM product_sys_data_center_log a LEFT JOIN "); deleteSql.append(" product_sys_data_center_log b on b.uuid=a.pre_step_uuid and b.type=1 and a.type=2 "); deleteSql.append(" where "); deleteSql.append(" a.id>= (select ifnull(min(id),0) from " + tableName + "_" + DateUtil.format(dateTime, "yyyyMM") + " ) "); @@ -200,26 +399,18 @@ deleteSql.append(" and a.type=2 and b.id is null "); deleteSql.append(" and a.uuid not in (").append(sqlFilter).append(") "); -// getBaseDao().executeUpdate(deleteSql.toString(), new Object[]{}); - dt = getBaseDao().listTable(deleteSql.toString(), new Object[]{}); - if (!DataTableEntity.isEmpty(dt)) { - List<Integer> ids = dt.getData().stream().map(row -> row.getInteger("id")).collect(Collectors.toList()); - getBaseDao().delete("product_sys_data_center_log", BaseUtil.buildQuestionMarkFilter("id", ids.size(), true), ids.toArray()); - } + getBaseDao().executeUpdate(deleteSql.toString(), new Object[]{}); + deleteSql.setLength(0); //鍐嶅垹闄ゅ叾浠栨棩蹇楁暟鎹� - deleteSql.append(" select a.id FROM product_sys_data_center_log a "); + deleteSql.append(" DELETE FROM product_sys_data_center_log a "); deleteSql.append(" where "); deleteSql.append(" a.id>= (select ifnull(min(id),0) from " + tableName + "_" + DateUtil.format(dateTime, "yyyyMM") + " ) "); deleteSql.append(" and a.id <= (select ifnull(max(id),0) from " + tableName + "_" + DateUtil.format(dateTime, "yyyyMM") + " ) "); deleteSql.append(" and (a.result = 1 or ( a.deal_flag = 1 AND a.deal_result = 1 ) ) "); deleteSql.append(" and a.type>2 "); deleteSql.append(" and a.uuid not in (").append(sqlFilter).append(") "); - dt = getBaseDao().listTable(deleteSql.toString(), new Object[]{}); - if (!DataTableEntity.isEmpty(dt)) { - List<Integer> ids = dt.getData().stream().map(row -> row.getInteger("id")).collect(Collectors.toList()); - getBaseDao().delete("product_sys_data_center_log", BaseUtil.buildQuestionMarkFilter("id", ids.size(), true), ids.toArray()); - } + getBaseDao().executeUpdate(deleteSql.toString()); } // fs = null; @@ -232,8 +423,6 @@ // } while (fs != null && fs.getInteger("del_count") != null && fs.getInteger("del_count") > 0); } catch (Exception e) { e.printStackTrace(); - SpringMVCContextHolder.getSystemLogger().error("鍒犻櫎閲囬泦鎻愬彇鏃ュ織閿欒锛侊紒锛侊細" + e.getMessage()); - SpringMVCContextHolder.getSystemLogger().error(e); throw e; } } diff --git a/product-server-data-center/src/main/java/com/product/data/center/service/DataCollectService.java b/product-server-data-center/src/main/java/com/product/data/center/service/DataCollectService.java index 6eedeaa..f8a8aa9 100644 --- a/product-server-data-center/src/main/java/com/product/data/center/service/DataCollectService.java +++ b/product-server-data-center/src/main/java/com/product/data/center/service/DataCollectService.java @@ -74,7 +74,7 @@ Calendar calendar = Calendar.getInstance(); int hour = calendar.get(Calendar.HOUR_OF_DAY); int minute = calendar.get(Calendar.MINUTE); - if (hour == 1 && (minute >= 10 || minute<=20)){ + if (hour == 1 && (minute >= 10 && minute <= 20)) { return; } Calendar startCalendar = Calendar.getInstance(); diff --git a/product-server-data-center/src/main/java/com/product/data/center/service/DataExtractService.java b/product-server-data-center/src/main/java/com/product/data/center/service/DataExtractService.java index 1eefe59..148d9ab 100644 --- a/product-server-data-center/src/main/java/com/product/data/center/service/DataExtractService.java +++ b/product-server-data-center/src/main/java/com/product/data/center/service/DataExtractService.java @@ -367,7 +367,7 @@ Calendar calendar = Calendar.getInstance(); int hour = calendar.get(Calendar.HOUR_OF_DAY); int minute = calendar.get(Calendar.MINUTE); - if (hour == 1 && (minute >= 10 || minute <= 20)) { + if (hour == 1 && (minute >= 10 && minute <= 20)) { return; } WriteExtractUtil.append("寮�濮嬫彁鍙栵紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒:::" + uuid); -- Gitblit v1.9.2