From 1c1c564691a49219246decac97f8a0e59c5caaf6 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Fri, 21 Feb 2025 15:42:43 +0800 Subject: [PATCH 1/5] =?UTF-8?q?fix:=20=E5=85=BC=E5=AE=B93G=E7=9A=84SGWC?= =?UTF-8?q?=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/modules/network_data/service/cdr_event_sgwc.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/modules/network_data/service/cdr_event_sgwc.go b/src/modules/network_data/service/cdr_event_sgwc.go index a0ecb6c7..d07c8fea 100644 --- a/src/modules/network_data/service/cdr_event_sgwc.go +++ b/src/modules/network_data/service/cdr_event_sgwc.go @@ -58,8 +58,8 @@ func (r CDREventSGWC) ExportXlsx(rows []model.CDREventSGWC, fileName string) (st "H1": "GPRS Downlink", "I1": "Duration", "J1": "Invocation Time", - "K1": "GGSN Address", - "L1": "SGSN Address", + "K1": "PGW Address", + "L1": "SGW Address", "M1": "RAT Type", "N1": "PDPPDN Type", "O1": "PDPPDN Address", @@ -102,17 +102,21 @@ func (r CDREventSGWC) ExportXlsx(rows []model.CDREventSGWC, fileName string) (st pGWAddressUsed := "" if v, ok := cdrJSON["pGWAddressUsed"]; ok && v != nil { pGWAddressUsed = fmt.Sprint(v) + headerCells["K1"] = "PGW Address" } if v, ok := cdrJSON["GGSNAddress"]; ok && v != nil { pGWAddressUsed = fmt.Sprint(v) + headerCells["K1"] = "GGSN Address" } // sGWAddress sGWAddress := "" if v, ok := cdrJSON["sGWAddress"]; ok && v != nil { sGWAddress = fmt.Sprint(v) + headerCells["L1"] = "SGW Address" } if v, ok := cdrJSON["SGSNAddress"]; ok && v != nil { sGWAddress = fmt.Sprint(v) + headerCells["L1"] = "SGSN Address" } // recordType recordType := "" From 12f5330f85cb9fb3d14929ec12d4d2867204b207 Mon Sep 17 00:00:00 2001 From: lai <10633968+laiyujun1@user.noreply.gitee.com> Date: Fri, 21 Feb 2025 16:44:18 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E8=A1=A5=E5=85=85SGW-C=E5=AE=9A=E6=97=B6?= =?UTF-8?q?=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- database/install/sys_dict_data1_i18n_zh.sql | 1 + database/install/sys_dict_data2_i18n_en.sql | 1 + database/install/sys_job.sql | 1 + database/upgrade/upg_sys_dict_data1_i18n_zh.sql | 1 + database/upgrade/upg_sys_dict_data2_i18n_en.sql | 1 + database/upgrade/upg_sys_job.sql | 1 + 6 files changed, 6 insertions(+) diff --git a/database/install/sys_dict_data1_i18n_zh.sql b/database/install/sys_dict_data1_i18n_zh.sql index 11edfedd..6a774ed4 100644 --- a/database/install/sys_dict_data1_i18n_zh.sql +++ b/database/install/sys_dict_data1_i18n_zh.sql @@ -695,5 +695,6 @@ INSERT INTO `sys_dict_data` VALUES (2184, 2184, 'config.sys.homePage', '自定 INSERT INTO `sys_dict_data` VALUES (2185, 2185, 'config.sys.homePageRemark', '选择列表中的任一页面作为主页路径', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); INSERT INTO `sys_dict_data` VALUES (2186, 2186, 'menu.config.neOverview', '网元概览', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); INSERT INTO `sys_dict_data` VALUES (2187, 2187, 'menu.config.neOverviewRemark', '显示所有网元状态配置和license等概览信息', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); +INSERT INTO `sys_dict_data` VALUES (2188, 2188, 'job.exportSGWCCDR', '定期从漫游数据话单表导出文件至指定目录', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); SET FOREIGN_KEY_CHECKS = 1; diff --git a/database/install/sys_dict_data2_i18n_en.sql b/database/install/sys_dict_data2_i18n_en.sql index 03c87710..d1beb8bf 100644 --- a/database/install/sys_dict_data2_i18n_en.sql +++ b/database/install/sys_dict_data2_i18n_en.sql @@ -695,5 +695,6 @@ INSERT INTO `sys_dict_data` VALUES (4184, 4184, 'config.sys.homePage', 'Custom H INSERT INTO `sys_dict_data` VALUES (4185, 4185, 'config.sys.homePageRemark', 'Select any page in the list as the homepage', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); INSERT INTO `sys_dict_data` VALUES (4186, 4186, 'menu.config.neOverview', 'NE Overview', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); INSERT INTO `sys_dict_data` VALUES (4187, 4187, 'menu.config.neOverviewRemark', 'Displays overview information such as status, configuration and license of all network elements', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); +INSERT INTO `sys_dict_data` VALUES (4188, 4188, 'job.exportSGWCCDR', 'Export regularly from Roaming Data CDR table', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); SET FOREIGN_KEY_CHECKS = 1; diff --git a/database/install/sys_job.sql b/database/install/sys_job.sql index 5b5c2a78..f9482d24 100644 --- a/database/install/sys_job.sql +++ b/database/install/sys_job.sql @@ -43,5 +43,6 @@ INSERT INTO `sys_job` VALUES (12, 'job.exportIMSCDR', 'SYSTEM', 'exportTable', ' INSERT INTO `sys_job` VALUES (13, 'job.exportSMFCDR', 'SYSTEM', 'exportTable', '{\"duration\":1,\"tableName\":\"cdr_event_smf\",\"columns\":\"id,ne_type,ne_name,rm_uid,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.recordType\')) AS record_type,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.chargingID\')) AS charging_id,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.subscriberIdentifier.subscriptionIDType\')) AS subscriber_id_type,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.subscriberIdentifier.subscriptionIDData\')) AS subscriber_id_data,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.duration\')) AS duration,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.invocationTimestamp\')) as invocationTimestamp,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.listOfMultipleUnitUsage[*].usedUnitContainer[*].dataVolumeUplink\')) AS data_volume_uplink,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.listOfMultipleUnitUsage[*].usedUnitContainer[*].dataVolumeDownlink\')) AS data_volume_downlink,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.listOfMultipleUnitUsage[*].usedUnitContainer[*].dataTotalVolume\')) AS data_total_volume,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.pDUSessionChargingInformation.pDUAddress.pDUIPv4Address\')) AS pdu_ipv4_address,timestamp\",\"timeCol\":\"timestamp\",\"timeUnit\":\"second\",\"extras\":\"\",\"filePath\":\"/usr/local/omc/backup/smf_cdr\"}', '0 0 0/1 * * ?', '3', '0', '1', '1', 'supervisor', 1698478134842, 'admin', 1724309047797, ''); INSERT INTO `sys_job` VALUES (14, 'job.exportSMSCCDR', 'SYSTEM', 'exportTable', '{\"duration\":1,\"tableName\":\"cdr_event_smsc\",\"columns\":\"id,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.recordType\')) as record_type,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.serviceType\')) as service_type,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.callerParty\')) as caller_party,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.calledParty\')) as called_party,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.result\')) as result,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.updateTime\')) as update_time\",\"timeCol\":\"timestamp\",\"timeUnit\":\"second\",\"extras\":\"\",\"filePath\":\"/usr/local/omc/backup/smsc_cdr\"}', '0 0 0/1 * * ?', '3', '0', '1', '1', 'supervisor', 1698478134842, 'admin', 1724309047797, ''); INSERT INTO `sys_job` VALUES (15, 'job.removeExportedFiles', 'SYSTEM', 'removeFile', '[{\"filePath\":\"/usr/local/omc/backup/operate_log\",\"maxDays\":30},{\"filePath\":\"/usr/local/omc/backup/ims_cdr\",\"maxDays\":30},{\"filePath\":\"/usr/local/omc/backup/smf_cdr\",\"maxDays\":30},{\"filePath\":\"/usr/local/omc/backup/smsc_cdr\",\"maxDays\":30}]', '0 10 0 * * ?', '3', '0', '1', '1', 'supervisor', 1698478134842, 'admin', 1728634085631, ''); +INSERT INTO `sys_job` VALUES (16, 'job.exportSGWCCDR', 'SYSTEM', 'exportTable', '{\"duration\":1,\"tableName\":\"cdr_event_sgwc\",\"columns\":\"id,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.recordType\')) as recordType,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.accessPointNameNI\')) as accessPointNameNI,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.servedIMSI\')) as IMSI,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.servedMSISDN\')) as MSISDN,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.servedPDPPDNAddress\')) as PdpAddress,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.duration\')) as duration,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.recordOpeningTime\')) as recordOpeningTime,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.chargingID\')) as chargingID,JSON_UNQUOTE(JSON_EXTRACT(cdr_json, \'$.listOfTrafficVolumes[0].dataVolumeGPRSDownlink\')) AS dataVolumeGPRSDownlink,JSON_UNQUOTE(JSON_EXTRACT(cdr_json, \'$.listOfTrafficVolumes[0].dataVolumeGPRsUplink\')) as dataVolumeGPRsUplink,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.userLocationInformation.tai.tac\')) as tac,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.userLocationInformation.ecgi.eutraCellId\')) as cellID\",\"timeCol\":\"timestamp\",\"timeUnit\":\"second\",\"extras\":\"\",\"filePath\":\"/usr/local/omc/backup/sgwc_cdr\"}', '0 0 0/1 * * ?', '3', '0', '1', '1', 'supervisor', 1698478134842, 'admin', 1724309047797, ''); SET FOREIGN_KEY_CHECKS = 1; diff --git a/database/upgrade/upg_sys_dict_data1_i18n_zh.sql b/database/upgrade/upg_sys_dict_data1_i18n_zh.sql index 93c8677b..ed2b9f0e 100644 --- a/database/upgrade/upg_sys_dict_data1_i18n_zh.sql +++ b/database/upgrade/upg_sys_dict_data1_i18n_zh.sql @@ -702,5 +702,6 @@ REPLACE INTO `sys_dict_data` VALUES (2184, 2184, 'config.sys.homePage', '自定 REPLACE INTO `sys_dict_data` VALUES (2185, 2185, 'config.sys.homePageRemark', '选择列表中的任一页面作为主页路径', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); REPLACE INTO `sys_dict_data` VALUES (2186, 2186, 'menu.config.neOverview', '网元概览', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); REPLACE INTO `sys_dict_data` VALUES (2187, 2187, 'menu.config.neOverviewRemark', '显示所有网元状态配置和license等概览信息', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); +REPLACE INTO `sys_dict_data` VALUES (2188, 2188, 'job.exportSGWCCDR', '定期从漫游数据话单表导出文件至指定目录', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); SET FOREIGN_KEY_CHECKS = 1; diff --git a/database/upgrade/upg_sys_dict_data2_i18n_en.sql b/database/upgrade/upg_sys_dict_data2_i18n_en.sql index 265716f7..86ac7b15 100644 --- a/database/upgrade/upg_sys_dict_data2_i18n_en.sql +++ b/database/upgrade/upg_sys_dict_data2_i18n_en.sql @@ -701,5 +701,6 @@ REPLACE INTO `sys_dict_data` VALUES (4184, 4184, 'config.sys.homePage', 'Custom REPLACE INTO `sys_dict_data` VALUES (4185, 4185, 'config.sys.homePageRemark', 'Select any page in the list as the homepage', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); REPLACE INTO `sys_dict_data` VALUES (4186, 4186, 'menu.config.neOverview', 'NE Overview', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); REPLACE INTO `sys_dict_data` VALUES (4187, 4187, 'menu.config.neOverviewRemark', 'Displays overview information such as status, configuration and license of all network elements', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); +REPLACE INTO `sys_dict_data` VALUES (4188, 4188, 'job.exportSGWCCDR', 'Export regularly from Roaming Data CDR table', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); SET FOREIGN_KEY_CHECKS = 1; diff --git a/database/upgrade/upg_sys_job.sql b/database/upgrade/upg_sys_job.sql index 431fb512..c4b43865 100644 --- a/database/upgrade/upg_sys_job.sql +++ b/database/upgrade/upg_sys_job.sql @@ -47,5 +47,6 @@ REPLACE INTO `sys_job` VALUES (12, 'job.exportIMSCDR', 'SYSTEM', 'exportTable', REPLACE INTO `sys_job` VALUES (13, 'job.exportSMFCDR', 'SYSTEM', 'exportTable', '{\"duration\":1,\"tableName\":\"cdr_event_smf\",\"columns\":\"id,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.recordType\')) AS record_type,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.chargingID\')) AS charging_id,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.subscriberIdentifier.subscriptionIDType\')) AS subscriber_id_type,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.subscriberIdentifier.subscriptionIDData\')) AS subscriber_id_data,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.duration\')) AS duration,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.invocationTimestamp\')) as invocationTimestamp,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.listOfMultipleUnitUsage[*].usedUnitContainer[*].dataVolumeUplink\')) AS data_volume_uplink,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.listOfMultipleUnitUsage[*].usedUnitContainer[*].dataVolumeDownlink\')) AS data_volume_downlink,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.listOfMultipleUnitUsage[*].usedUnitContainer[*].dataTotalVolume\')) AS data_total_volume,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.pDUSessionChargingInformation.pDUAddress.pDUIPv4Address\')) AS pdu_ipv4_address,timestamp\",\"timeCol\":\"timestamp\",\"timeUnit\":\"second\",\"extras\":\"\",\"filePath\":\"/usr/local/omc/backup/smf_cdr\"}', '0 0 0/1 * * ?', '3', '0', '1', '1', 'supervisor', 1698478134842, 'admin', 1724309047797, ''); REPLACE INTO `sys_job` VALUES (14, 'job.exportSMSCCDR', 'SYSTEM', 'exportTable', '{\"duration\":1,\"tableName\":\"cdr_event_smsc\",\"columns\":\"id,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.recordType\')) as record_type,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.serviceType\')) as service_type,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.callerParty\')) as caller_party,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.calledParty\')) as called_party,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.result\')) as result,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.updateTime\')) as update_time\",\"timeCol\":\"timestamp\",\"timeUnit\":\"second\",\"extras\":\"\",\"filePath\":\"/usr/local/omc/backup/smsc_cdr\"}', '0 0 0/1 * * ?', '3', '0', '1', '1', 'supervisor', 1698478134842, 'admin', 1724309047797, ''); REPLACE INTO `sys_job` VALUES (15, 'job.removeExportedFiles', 'SYSTEM', 'removeFile', '[{\"filePath\":\"/usr/local/omc/backup/operate_log\",\"maxDays\":30},{\"filePath\":\"/usr/local/omc/backup/ims_cdr\",\"maxDays\":30},{\"filePath\":\"/usr/local/omc/backup/smf_cdr\",\"maxDays\":30},{\"filePath\":\"/usr/local/omc/backup/smsc_cdr\",\"maxDays\":30}]', '0 10 0 * * ?', '3', '0', '1', '1', 'supervisor', 1698478134842, 'admin', 1728634085631, ''); +REPLACE INTO `sys_job` VALUES (16, 'job.exportSGWCCDR', 'SYSTEM', 'exportTable', '{\"duration\":1,\"tableName\":\"cdr_event_sgwc\",\"columns\":\"id,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.recordType\')) as recordType,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.accessPointNameNI\')) as accessPointNameNI,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.servedIMSI\')) as IMSI,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.servedMSISDN\')) as MSISDN,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.servedPDPPDNAddress\')) as PdpAddress,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.duration\')) as duration,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.recordOpeningTime\')) as recordOpeningTime,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.chargingID\')) as chargingID,JSON_UNQUOTE(JSON_EXTRACT(cdr_json, \'$.listOfTrafficVolumes[0].dataVolumeGPRSDownlink\')) AS dataVolumeGPRSDownlink,JSON_UNQUOTE(JSON_EXTRACT(cdr_json, \'$.listOfTrafficVolumes[0].dataVolumeGPRsUplink\')) as dataVolumeGPRsUplink,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.userLocationInformation.tai.tac\')) as tac,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.userLocationInformation.ecgi.eutraCellId\')) as cellID\",\"timeCol\":\"timestamp\",\"timeUnit\":\"second\",\"extras\":\"\",\"filePath\":\"/usr/local/omc/backup/sgwc_cdr\"}', '0 0 0/1 * * ?', '3', '0', '1', '1', 'supervisor', 1698478134842, 'admin', 1724309047797, ''); SET FOREIGN_KEY_CHECKS = 1; \ No newline at end of file From 4fd359add4fffaeb5c7d7e4f461ce387e134f045 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Fri, 21 Feb 2025 21:06:54 +0800 Subject: [PATCH 3/5] =?UTF-8?q?chore:=20=E6=9B=B4=E6=96=B0=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=8F=B7=202.2502.3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 5 +++++ makefile | 2 +- mkpkg.sh | 2 +- restagent/makefile | 2 +- sshsvc/makefile | 2 +- 5 files changed, 9 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 32ec652e..01c3665b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # 版本发布日志 +## 2.2502.3-20250221 + +- 修复 网元授权序号查询 +- 更新 SGWC导出表格数据字段修改/兼容3G的SGWC字段 + ## 2.2502.2-20250214 - 修复 修改调度任务导出SMSC-CDR时间格式错误 diff --git a/makefile b/makefile index 059003f9..da45b9ee 100644 --- a/makefile +++ b/makefile @@ -3,7 +3,7 @@ ProjectL = omc ProjectU = OMC PROJECT = $(ProjectL) -VERSION = 2.2502.2 +VERSION = 2.2502.3 RelDate = `date +%Y%m%d` Release = $(RelDate) RelVer = $(VERSION)-$(RelDate) diff --git a/mkpkg.sh b/mkpkg.sh index 83449f26..6ffb2d3d 100755 --- a/mkpkg.sh +++ b/mkpkg.sh @@ -2,7 +2,7 @@ ProcList="restagent sshsvc" ProjectL=omc -VERSION=2.2502.2 +VERSION=2.2502.3 RelDate=`date +%Y%m%d` Release=${RelDate} RelVer=${VERSION}-${RelDate} diff --git a/restagent/makefile b/restagent/makefile index f969d6d6..6685169a 100644 --- a/restagent/makefile +++ b/restagent/makefile @@ -1,7 +1,7 @@ # Makefile for rest agent project PROJECT = OMC -VERSION = 2.2502.2 +VERSION = 2.2502.3 PLATFORM = amd64 ARMPLATFORM = aarch64 BUILDDIR = ../../build diff --git a/sshsvc/makefile b/sshsvc/makefile index 4243beea..13d215cf 100644 --- a/sshsvc/makefile +++ b/sshsvc/makefile @@ -1,7 +1,7 @@ # Makefile for OMC-OMC-crontask project PROJECT = OMC -VERSION = 2.2502.2 +VERSION = 2.2502.3 LIBDIR = be.ems/lib BINNAME = sshsvc From 88d6f36a18e93f779aa161fdd02b5b9e796bfa60 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Tue, 25 Feb 2025 14:41:56 +0800 Subject: [PATCH 4/5] =?UTF-8?q?fix:=20CDR/Event=20=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E6=A0=BC=E5=BC=8F=E7=BB=9F=E4=B8=80=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E6=88=B3int64?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/modules/network_data/model/cdr_event_ims.go | 4 ++-- src/modules/network_data/model/cdr_event_sgwc.go | 4 ++-- src/modules/network_data/model/cdr_event_smf.go | 4 ++-- src/modules/network_data/model/cdr_event_smsc.go | 4 ++-- src/modules/network_data/model/ue_event_amf.go | 4 ++-- src/modules/network_data/model/ue_event_mme.go | 4 ++-- src/modules/network_data/repository/cdr_event_ims.go | 8 ++++---- src/modules/network_data/repository/cdr_event_sgwc.go | 10 ++++++---- src/modules/network_data/repository/cdr_event_smf.go | 10 ++++++---- src/modules/network_data/repository/cdr_event_smsc.go | 8 ++++---- src/modules/network_data/repository/ue_event_amf.go | 9 +++++---- src/modules/network_data/repository/ue_event_mme.go | 9 +++++---- 12 files changed, 42 insertions(+), 36 deletions(-) diff --git a/src/modules/network_data/model/cdr_event_ims.go b/src/modules/network_data/model/cdr_event_ims.go index e6f9e77d..351305a9 100644 --- a/src/modules/network_data/model/cdr_event_ims.go +++ b/src/modules/network_data/model/cdr_event_ims.go @@ -26,8 +26,8 @@ type CDREventIMSQuery struct { RecordType string `json:"recordType" form:"recordType"` // 记录行为 MOC MTC CallerParty string `json:"callerParty" form:"callerParty"` // 主叫号码 CalledParty string `json:"calledParty" form:"calledParty"` // 被叫号码 - StartTime string `json:"startTime" form:"startTime"` - EndTime string `json:"endTime" form:"endTime"` + StartTime int64 `json:"startTime" form:"startTime"` + EndTime int64 `json:"endTime" form:"endTime"` SortField string `json:"sortField" form:"sortField" binding:"omitempty,oneof=timestamp"` // 排序字段,填写结果字段 SortOrder string `json:"sortOrder" form:"sortOrder" binding:"omitempty,oneof=asc desc"` // 排序升降序,asc desc PageNum int64 `json:"pageNum" form:"pageNum" binding:"required"` diff --git a/src/modules/network_data/model/cdr_event_sgwc.go b/src/modules/network_data/model/cdr_event_sgwc.go index fedf6a4d..5fa35498 100644 --- a/src/modules/network_data/model/cdr_event_sgwc.go +++ b/src/modules/network_data/model/cdr_event_sgwc.go @@ -27,8 +27,8 @@ type CDREventSGWCQuery struct { RmUID string `json:"rmUID" form:"rmUID"` IMSI string `json:"imsi" form:"imsi"` MSISDN string `json:"msisdn" form:"msisdn"` - StartTime string `json:"startTime" form:"startTime"` - EndTime string `json:"endTime" form:"endTime"` + StartTime int64 `json:"startTime" form:"startTime"` + EndTime int64 `json:"endTime" form:"endTime"` SortField string `json:"sortField" form:"sortField" binding:"omitempty,oneof=timestamp"` // 排序字段,填写结果字段 SortOrder string `json:"sortOrder" form:"sortOrder" binding:"omitempty,oneof=asc desc"` // 排序升降序,asc desc PageNum int64 `json:"pageNum" form:"pageNum" binding:"required"` diff --git a/src/modules/network_data/model/cdr_event_smf.go b/src/modules/network_data/model/cdr_event_smf.go index b5926b25..64ec57fb 100644 --- a/src/modules/network_data/model/cdr_event_smf.go +++ b/src/modules/network_data/model/cdr_event_smf.go @@ -28,8 +28,8 @@ type CDREventSMFQuery struct { RecordType string `json:"recordType" form:"recordType"` // 暂时没用到 SubscriberID string `json:"subscriberID" form:"subscriberID"` DNN string `json:"dnn" form:"dnn"` - StartTime string `json:"startTime" form:"startTime"` - EndTime string `json:"endTime" form:"endTime"` + StartTime int64 `json:"startTime" form:"startTime"` + EndTime int64 `json:"endTime" form:"endTime"` SortField string `json:"sortField" form:"sortField" binding:"omitempty,oneof=timestamp"` // 排序字段,填写结果字段 SortOrder string `json:"sortOrder" form:"sortOrder" binding:"omitempty,oneof=asc desc"` // 排序升降序,asc desc PageNum int64 `json:"pageNum" form:"pageNum" binding:"required"` diff --git a/src/modules/network_data/model/cdr_event_smsc.go b/src/modules/network_data/model/cdr_event_smsc.go index a27074f1..29888710 100644 --- a/src/modules/network_data/model/cdr_event_smsc.go +++ b/src/modules/network_data/model/cdr_event_smsc.go @@ -26,8 +26,8 @@ type CDREventSMSCQuery struct { RecordType string `json:"recordType" form:"recordType"` // 记录行为 MOSM MTSM CallerParty string `json:"callerParty" form:"callerParty"` // 主叫号码 CalledParty string `json:"calledParty" form:"calledParty"` // 被叫号码 - StartTime string `json:"startTime" form:"startTime"` - EndTime string `json:"endTime" form:"endTime"` + StartTime int64 `json:"startTime" form:"startTime"` + EndTime int64 `json:"endTime" form:"endTime"` SortField string `json:"sortField" form:"sortField" binding:"omitempty,oneof=timestamp"` // 排序字段,填写结果字段 SortOrder string `json:"sortOrder" form:"sortOrder" binding:"omitempty,oneof=asc desc"` // 排序升降序,asc desc PageNum int64 `json:"pageNum" form:"pageNum" binding:"required"` diff --git a/src/modules/network_data/model/ue_event_amf.go b/src/modules/network_data/model/ue_event_amf.go index 7ba8944f..aa9a65f2 100644 --- a/src/modules/network_data/model/ue_event_amf.go +++ b/src/modules/network_data/model/ue_event_amf.go @@ -26,8 +26,8 @@ type UEEventAMFQuery struct { RmUID string `json:"rmUID" form:"rmUID"` EventType string `json:"eventType" form:"eventType"` // 事件类型 auth-result detach cm-state IMSI string `json:"imsi" form:"imsi"` // imsi - StartTime string `json:"startTime" form:"startTime"` - EndTime string `json:"endTime" form:"endTime"` + StartTime int64 `json:"startTime" form:"startTime"` + EndTime int64 `json:"endTime" form:"endTime"` SortField string `json:"sortField" form:"sortField" binding:"omitempty,oneof=timestamp"` // 排序字段,填写结果字段 SortOrder string `json:"sortOrder" form:"sortOrder" binding:"omitempty,oneof=asc desc"` // 排序升降序,asc desc PageNum int64 `json:"pageNum" form:"pageNum" binding:"required"` diff --git a/src/modules/network_data/model/ue_event_mme.go b/src/modules/network_data/model/ue_event_mme.go index 28100786..b08157f2 100644 --- a/src/modules/network_data/model/ue_event_mme.go +++ b/src/modules/network_data/model/ue_event_mme.go @@ -26,8 +26,8 @@ type UEEventMMEQuery struct { RmUID string `json:"rmUID" form:"rmUID"` EventType string `json:"eventType" form:"eventType"` // 事件类型 auth-result detach cm-state IMSI string `json:"imsi" form:"imsi"` // imsi - StartTime string `json:"startTime" form:"startTime"` - EndTime string `json:"endTime" form:"endTime"` + StartTime int64 `json:"startTime" form:"startTime"` + EndTime int64 `json:"endTime" form:"endTime"` SortField string `json:"sortField" form:"sortField" binding:"omitempty,oneof=timestamp"` // 排序字段,填写结果字段 SortOrder string `json:"sortOrder" form:"sortOrder" binding:"omitempty,oneof=asc desc"` // 排序升降序,asc desc PageNum int64 `json:"pageNum" form:"pageNum" binding:"required"` diff --git a/src/modules/network_data/repository/cdr_event_ims.go b/src/modules/network_data/repository/cdr_event_ims.go index 31dc7293..6f86f6db 100644 --- a/src/modules/network_data/repository/cdr_event_ims.go +++ b/src/modules/network_data/repository/cdr_event_ims.go @@ -25,15 +25,15 @@ func (r CDREventIMS) SelectByPage(querys model.CDREventIMSQuery) ([]model.CDREve if querys.RmUID != "" { tx = tx.Where("rm_uid = ?", querys.RmUID) } - if querys.StartTime != "" { - startTime := querys.StartTime + if querys.StartTime != 0 { + startTime := fmt.Sprintf("%d", querys.StartTime) if len(startTime) == 13 { startTime = startTime[:10] } tx = tx.Where("timestamp >= ?", startTime) } - if querys.EndTime != "" { - endTime := querys.EndTime + if querys.EndTime != 0 { + endTime := fmt.Sprintf("%d", querys.EndTime) if len(endTime) == 13 { endTime = endTime[:10] } diff --git a/src/modules/network_data/repository/cdr_event_sgwc.go b/src/modules/network_data/repository/cdr_event_sgwc.go index cf87e9db..783a2cbb 100644 --- a/src/modules/network_data/repository/cdr_event_sgwc.go +++ b/src/modules/network_data/repository/cdr_event_sgwc.go @@ -1,6 +1,8 @@ package repository import ( + "fmt" + "be.ems/src/framework/datasource" "be.ems/src/framework/logger" "be.ems/src/modules/network_data/model" @@ -22,15 +24,15 @@ func (r CDREventSGWC) SelectByPage(querys model.CDREventSGWCQuery) ([]model.CDRE if querys.RmUID != "" { tx = tx.Where("rm_uid = ?", querys.RmUID) } - if querys.StartTime != "" { - startTime := querys.StartTime + if querys.StartTime != 0 { + startTime := fmt.Sprintf("%d", querys.StartTime) if len(startTime) == 13 { startTime = startTime[:10] } tx = tx.Where("timestamp >= ?", startTime) } - if querys.EndTime != "" { - endTime := querys.EndTime + if querys.EndTime != 0 { + endTime := fmt.Sprintf("%d", querys.EndTime) if len(endTime) == 13 { endTime = endTime[:10] } diff --git a/src/modules/network_data/repository/cdr_event_smf.go b/src/modules/network_data/repository/cdr_event_smf.go index 5b46e5ff..bf16939b 100644 --- a/src/modules/network_data/repository/cdr_event_smf.go +++ b/src/modules/network_data/repository/cdr_event_smf.go @@ -1,6 +1,8 @@ package repository import ( + "fmt" + "be.ems/src/framework/datasource" "be.ems/src/framework/logger" "be.ems/src/modules/network_data/model" @@ -22,15 +24,15 @@ func (r CDREventSMF) SelectByPage(querys model.CDREventSMFQuery) ([]model.CDREve if querys.RmUID != "" { tx = tx.Where("rm_uid = ?", querys.RmUID) } - if querys.StartTime != "" { - startTime := querys.StartTime + if querys.StartTime != 0 { + startTime := fmt.Sprintf("%d", querys.StartTime) if len(startTime) == 13 { startTime = startTime[:10] } tx = tx.Where("timestamp >= ?", startTime) } - if querys.EndTime != "" { - endTime := querys.EndTime + if querys.EndTime != 0 { + endTime := fmt.Sprintf("%d", querys.EndTime) if len(endTime) == 13 { endTime = endTime[:10] } diff --git a/src/modules/network_data/repository/cdr_event_smsc.go b/src/modules/network_data/repository/cdr_event_smsc.go index 3b6542ce..2379ac8e 100644 --- a/src/modules/network_data/repository/cdr_event_smsc.go +++ b/src/modules/network_data/repository/cdr_event_smsc.go @@ -25,15 +25,15 @@ func (r CDREventSMSC) SelectByPage(querys model.CDREventSMSCQuery) ([]model.CDRE if querys.RmUID != "" { tx = tx.Where("rm_uid = ?", querys.RmUID) } - if querys.StartTime != "" { - startTime := querys.StartTime + if querys.StartTime != 0 { + startTime := fmt.Sprintf("%d", querys.StartTime) if len(startTime) == 13 { startTime = startTime[:10] } tx = tx.Where("timestamp >= ?", startTime) } - if querys.EndTime != "" { - endTime := querys.EndTime + if querys.EndTime != 0 { + endTime := fmt.Sprintf("%d", querys.EndTime) if len(endTime) == 13 { endTime = endTime[:10] } diff --git a/src/modules/network_data/repository/ue_event_amf.go b/src/modules/network_data/repository/ue_event_amf.go index 9542a6c7..1d878554 100644 --- a/src/modules/network_data/repository/ue_event_amf.go +++ b/src/modules/network_data/repository/ue_event_amf.go @@ -1,6 +1,7 @@ package repository import ( + "fmt" "strings" "be.ems/src/framework/datasource" @@ -24,15 +25,15 @@ func (r UEEventAMF) SelectByPage(querys model.UEEventAMFQuery) ([]model.UEEventA if querys.RmUID != "" { tx = tx.Where("rm_uid = ?", querys.RmUID) } - if querys.StartTime != "" { - startTime := querys.StartTime + if querys.StartTime != 0 { + startTime := fmt.Sprintf("%d", querys.StartTime) if len(startTime) == 13 { startTime = startTime[:10] } tx = tx.Where("timestamp >= ?", startTime) } - if querys.EndTime != "" { - endTime := querys.EndTime + if querys.EndTime != 0 { + endTime := fmt.Sprintf("%d", querys.EndTime) if len(endTime) == 13 { endTime = endTime[:10] } diff --git a/src/modules/network_data/repository/ue_event_mme.go b/src/modules/network_data/repository/ue_event_mme.go index 7da121d6..6b33319b 100644 --- a/src/modules/network_data/repository/ue_event_mme.go +++ b/src/modules/network_data/repository/ue_event_mme.go @@ -1,6 +1,7 @@ package repository import ( + "fmt" "strings" "be.ems/src/framework/datasource" @@ -24,15 +25,15 @@ func (r UEEventMME) SelectByPage(querys model.UEEventMMEQuery) ([]model.UEEventM if querys.RmUID != "" { tx = tx.Where("rm_uid = ?", querys.RmUID) } - if querys.StartTime != "" { - startTime := querys.StartTime + if querys.StartTime != 0 { + startTime := fmt.Sprintf("%d", querys.StartTime) if len(startTime) == 13 { startTime = startTime[:10] } tx = tx.Where("timestamp >= ?", startTime) } - if querys.EndTime != "" { - endTime := querys.EndTime + if querys.EndTime != 0 { + endTime := fmt.Sprintf("%d", querys.EndTime) if len(endTime) == 13 { endTime = endTime[:10] } From dcf513bcfd0756406f9f8386634583d1348a8776 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Tue, 25 Feb 2025 14:52:53 +0800 Subject: [PATCH 5/5] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E7=BD=91?= =?UTF-8?q?=E5=85=83=E7=8A=B6=E6=80=81=E5=91=8A=E8=AD=A6=E5=A4=84=E7=90=86?= =?UTF-8?q?=E9=80=BB=E8=BE=91=EF=BC=8C=E5=A2=9E=E5=8A=A0=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=97=B6=E9=97=B4=E6=88=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../genNeStateAlarm/genNeStateAlarm.go | 100 +++++++++--------- .../network_element/repository/ne_info.go | 4 +- 2 files changed, 53 insertions(+), 51 deletions(-) diff --git a/src/modules/crontask/processor/genNeStateAlarm/genNeStateAlarm.go b/src/modules/crontask/processor/genNeStateAlarm/genNeStateAlarm.go index c24bcd94..e217c271 100644 --- a/src/modules/crontask/processor/genNeStateAlarm/genNeStateAlarm.go +++ b/src/modules/crontask/processor/genNeStateAlarm/genNeStateAlarm.go @@ -10,20 +10,28 @@ import ( "be.ems/features/fm" "be.ems/lib/config" - "be.ems/lib/dborm" - "be.ems/lib/global" "be.ems/lib/log" "be.ems/src/framework/cron" + "be.ems/src/framework/datasource" + "be.ems/src/framework/utils/date" + "be.ems/src/framework/utils/parse" "github.com/go-resty/resty/v2" + + neModel "be.ems/src/modules/network_element/model" + neService "be.ems/src/modules/network_element/service" ) var NewProcessor = &BarProcessor{ - progress: 0, - count: 0, + neConfigBackupService: neService.NewNeConfigBackup, + neInfoService: neService.NewNeInfo, + progress: 0, + count: 0, } // bar 队列任务处理 type BarProcessor struct { + neConfigBackupService *neService.NeConfigBackup // 网元配置文件备份记录服务 + neInfoService *neService.NeInfo // 网元信息服务 // 任务进度 progress int // 执行次数 @@ -97,32 +105,26 @@ func (s *BarProcessor) Execute(data any) (any, error) { return nil, err } - var nes []dborm.NeInfo - _, err = dborm.XormGetAllNeInfo(&nes) - if err != nil { - log.Error("Failed to get all ne info:", err) - return nil, err - } - succActiveAlarmNum := 0 failActiveAlarmNum := 0 succClearAlarmNum := 0 failClearAlarmNum := 0 - for _, ne := range nes { + neList := s.neInfoService.SelectList(neModel.NeInfo{}, true, false) + for _, ne := range neList { //log.Debug("ne:", ne) - sql := fmt.Sprintf("select * from ne_state where ne_type='%s' and ne_id='%s' order by `timestamp` desc limit 1", ne.NeType, ne.NeId) - log.Debug("SQL:", sql) - neState, err := dborm.XormGetDataBySQL(sql) - if err != nil { - log.Error("Failed to get ne_state:", err) - continue - } - if len(*neState) == 0 { - log.Warn("Not found record in ne_state:") - //continue - } + // sql := fmt.Sprintf("select * from ne_state where ne_type='%s' and ne_id='%s' order by `timestamp` desc limit 1", ne.NeType, ne.NeId) + // log.Debug("SQL:", sql) + // neState, err := dborm.XormGetDataBySQL(sql) + // if err != nil { + // log.Error("Failed to get ne_state:", err) + // continue + // } + // if len(*neState) == 0 { + // log.Warn("Not found record in ne_state:") + // //continue + // } //log.Debug("neState:", *neState) // params := "10000" @@ -138,33 +140,31 @@ func (s *BarProcessor) Execute(data any) (any, error) { // log.Debug("alarmDefine:", alarmDefine) - sql = fmt.Sprintf("select * from alarm where alarm_id = '%s' and ne_type='%s' and ne_id = '%s' order by event_time desc limit 1", + // 是否存在告警 + sql := fmt.Sprintf("select * from alarm where alarm_id = '%s' and ne_type='%s' and ne_id = '%s' order by event_time desc limit 1", alarmDefine.AlarmID, ne.NeType, ne.RmUID) - alarm, err := dborm.XormGetDataBySQL(sql) + alarm, err := datasource.RawDB("", sql, nil) if err != nil { - log.Error("Failed to get alarm:", err) continue } - //log.Debug("alarm:", *alarm) - - var timestamp string - if len(*neState) == 0 { - log.Infof("Not found ne_state neType:%s, neId:%s", ne.NeType, ne.NeId) - timestamp = ne.UpdateTime.Format(time.DateTime) - } else { - timestamp = (*neState)[0]["timestamp"] + alarmStatus := "0" + if len(alarm) > 0 { + alarmStatus = fmt.Sprint(alarm[0]["alarm_status"]) } - // 解析日期时间字符串为时间对象 - seconds, err := global.GetSecondsSinceDatetime(timestamp) - if err != nil { - log.Error("Failed to GetSecondsSinceDatetime:", err) - continue + changeTime := time.UnixMilli(ne.UpdateTime) + // 检查状态 + isOnline := false + if ne.ServerState != nil { + isOnline = parse.Boolean(ne.ServerState["online"]) } - log.Debugf("timestamp:%s seconds:%d", timestamp, seconds) - if seconds <= alarmDefine.Threshold { - if len(*alarm) == 0 || (*alarm)[0]["alarm_status"] == fm.AlarmStatusClearString { + // 在线且状态为活动告警 + if isOnline && alarmStatus == "1" { + if len(alarm) == 0 { + continue + } + if alarmStatus == "0" { continue } @@ -172,7 +172,8 @@ func (s *BarProcessor) Execute(data any) (any, error) { var alarmSeq int = 1 threshold := strconv.FormatInt(alarmDefine.Threshold, 10) SpecificProblem := strings.ReplaceAll(alarmDefine.SpecificProblem, "{threshold}", threshold) - locationInfo := fmt.Sprintf("SystemManagement.State: NE heartbeat timestamp=%s,threshold=%v", timestamp, alarmDefine.Threshold) + timeStr := date.ParseDateToStr(changeTime, date.YYYY_MM_DDTHH_MM_SSZ) + locationInfo := fmt.Sprintf("SystemManagement.State: NE heartbeat timestamp=%s,threshold=%v", timeStr, alarmDefine.Threshold) alarmData := &Alarm{ AlarmSeq: alarmSeq, AlarmId: alarmDefine.AlarmID, @@ -232,16 +233,15 @@ func (s *BarProcessor) Execute(data any) (any, error) { _ = json.Unmarshal(response.Body(), &body) failClearAlarmNum++ } - } else { - var alarmSeq int = 1 - if len(*alarm) > 0 && (*alarm)[0]["alarm_status"] == fm.AlarmStatusActiveString { - log.Info("System state alarm has exist") - continue - } + } + // 不在线且状态为清除告警 + if !isOnline && alarmStatus == "0" { + var alarmSeq int = 1 threshold := strconv.FormatInt(alarmDefine.Threshold, 10) SpecificProblem := strings.ReplaceAll(alarmDefine.SpecificProblem, "{threshold}", threshold) - locationInfo := fmt.Sprintf("SystemManagement.State: NE heartbeat timestamp=%s,threshold=%v", timestamp, alarmDefine.Threshold) + timeStr := date.ParseDateToStr(changeTime, date.YYYY_MM_DDTHH_MM_SSZ) + locationInfo := fmt.Sprintf("SystemManagement.State: NE heartbeat timestamp=%s threshold=%v", timeStr, alarmDefine.Threshold) alarmData := &Alarm{ AlarmSeq: alarmSeq, AlarmId: alarmDefine.AlarmID, diff --git a/src/modules/network_element/repository/ne_info.go b/src/modules/network_element/repository/ne_info.go index 97588aa6..4ab54e3a 100644 --- a/src/modules/network_element/repository/ne_info.go +++ b/src/modules/network_element/repository/ne_info.go @@ -208,8 +208,10 @@ func (r *NeInfo) UpdateState(id, status string) int64 { tx := datasource.DB("").Model(&model.NeInfo{}) // 构建查询条件 tx = tx.Where("id = ?", id) + tx.UpdateColumn("status", status) + tx.UpdateColumn("update_time", time.Now().UnixMilli()) // 执行更新 - if err := tx.UpdateColumn("status", status).Error; err != nil { + if err := tx.Error; err != nil { logger.Errorf("update err => %v", err.Error()) return 0 }