|
@@ -7,6 +7,7 @@ import com.xxl.job.core.handler.annotation.XxlJob;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.csv.CSVFormat;
|
|
|
import org.apache.commons.csv.CSVPrinter;
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
@@ -25,6 +26,9 @@ import java.util.Map;
|
|
|
@Component
|
|
|
@Slf4j
|
|
|
public class UpdateTask {
|
|
|
+ @Value("${gpload.shell.path}")
|
|
|
+ private String gploadShellPath;
|
|
|
+
|
|
|
private final JdbcTemplate inputJdbcTemplate;
|
|
|
private final JdbcTemplate outputJdbcTemplate;
|
|
|
|
|
@@ -37,11 +41,12 @@ public class UpdateTask {
|
|
|
@XxlJob("siteInfoJobHandler")
|
|
|
public void siteInfoJobHandler() {
|
|
|
try {
|
|
|
+ Map<Object, Object> siteLevelMap = getSiteLevelMap();
|
|
|
Map<String, Map<String, Object>> four = new HashMap<>();
|
|
|
Map<String, Map<String, Object>> five = new HashMap<>();
|
|
|
update4g(four);
|
|
|
update5g(five);
|
|
|
- writeCsvs(four, five);
|
|
|
+ writeCsvs(four, five, siteLevelMap);
|
|
|
backup("customer_service.cfg_p_netconf_std");
|
|
|
gpload("customer_service.cfg_p_netconf_std");
|
|
|
backup("customer_service.cfg_cell_info");
|
|
@@ -53,6 +58,20 @@ public class UpdateTask {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private Map<Object, Object> getSiteLevelMap() {
|
|
|
+ Map<Object, Object> siteLevelMap = new HashMap<>();
|
|
|
+ String sql = "select * from cfm.cfg_0_4g_sitelevel";
|
|
|
+ List<Map<String, Object>> l1 = outputJdbcTemplate.queryForList(sql);
|
|
|
+ log.info("cfg_0_4g_sitelevel: {}", l1.size());
|
|
|
+ l1.forEach(t -> siteLevelMap.put(t.get("site_id"), t.get("area3")));
|
|
|
+ sql = "select * from cfm.cfg_0_5g_sitelevel";
|
|
|
+ List<Map<String, Object>> l2 = outputJdbcTemplate.queryForList(sql);
|
|
|
+ log.info("cfg_0_5g_sitelevel: {}", l2.size());
|
|
|
+ l2.forEach(t -> siteLevelMap.put(t.get("site_id"), t.get("area3")));
|
|
|
+ log.info("siteLevelMap: {}", siteLevelMap.size());
|
|
|
+ return siteLevelMap;
|
|
|
+ }
|
|
|
+
|
|
|
private void update4g(Map<String, Map<String, Object>> map) throws IOException {
|
|
|
// 查询o2p.cfg_0_4g_siteinfo
|
|
|
String sql = "select * from o2p.cfg_0_4g_siteinfo";
|
|
@@ -100,7 +119,8 @@ public class UpdateTask {
|
|
|
/**
|
|
|
* 将cfg_0_4g_siteinfo、cfg_0_5g_siteinfo转成cfg_p_netconf_std、cfg_cell_info写入csv文件
|
|
|
*/
|
|
|
- private void writeCsvs(Map<String, Map<String, Object>> four, Map<String, Map<String, Object>> five) throws IOException {
|
|
|
+ private void writeCsvs(Map<String, Map<String, Object>> four, Map<String, Map<String, Object>> five,
|
|
|
+ Map<Object, Object> siteLevelMap) throws IOException {
|
|
|
try (OutputStreamWriter osw1 = new OutputStreamWriter(
|
|
|
Files.newOutputStream(Paths.get("customer_service.cfg_p_netconf_std.csv")),
|
|
|
StandardCharsets.UTF_8);
|
|
@@ -110,8 +130,8 @@ public class UpdateTask {
|
|
|
StandardCharsets.UTF_8);
|
|
|
CSVPrinter printer2 = new CSVPrinter(osw2, CSVFormat.DEFAULT);) {
|
|
|
Map<Object, Map<String, Object>> map = new HashMap<>();
|
|
|
- fourGCfgPNetconfStd(four, map);
|
|
|
- fiveGCfgPNetconfStd(five, map);
|
|
|
+ fourGCfgPNetconfStd(four, map, siteLevelMap);
|
|
|
+ fiveGCfgPNetconfStd(five, map, siteLevelMap);
|
|
|
log.info("cfg_p_netconf_std: {}", map.size());
|
|
|
XxlJobHelper.log("cfg_p_netconf_std: {}", map.size());
|
|
|
printCfgPNetconfStd(printer1, map);
|
|
@@ -122,7 +142,7 @@ public class UpdateTask {
|
|
|
/**
|
|
|
* cfg_0_5g_siteinfo -> cfg_p_netconf_std
|
|
|
*/
|
|
|
- private void fiveGCfgPNetconfStd(Map<String, Map<String, Object>> five, Map<Object, Map<String, Object>> map) {
|
|
|
+ private void fiveGCfgPNetconfStd(Map<String, Map<String, Object>> five, Map<Object, Map<String, Object>> map, Map<Object, Object> siteLevelMap) {
|
|
|
for (Map<String, Object> t : five.values()) {
|
|
|
Map<String, Object> m = new HashMap<>();
|
|
|
BigDecimal gnbid = (BigDecimal) t.get("gnbid");
|
|
@@ -133,8 +153,8 @@ public class UpdateTask {
|
|
|
m.put("city_id", t.get("city_code"));
|
|
|
m.put("city_name", t.get("city_name"));
|
|
|
m.put("area_id", t.get("district_name"));
|
|
|
- m.put("core_ne_name", t.get(""));
|
|
|
- m.put("radio_ne_name", t.get(""));
|
|
|
+ m.put("core_ne_name", "");
|
|
|
+ m.put("radio_ne_name", "");
|
|
|
m.put("site_name", t.get("station_name"));
|
|
|
m.put("site_id", gnbid);
|
|
|
m.put("cell_no", cell_id);
|
|
@@ -144,7 +164,7 @@ public class UpdateTask {
|
|
|
m.put("gnb_cu_id", "");
|
|
|
m.put("gnb_du_id", "");
|
|
|
m.put("gsm_cell_id", "");
|
|
|
- m.put("network_type", 4);
|
|
|
+ m.put("network_type", 5);
|
|
|
m.put("type_5g", "");
|
|
|
m.put("tac", "");
|
|
|
m.put("cover_type", "宏站".equals(t.get("station_type")) ? "室外" : "室内");
|
|
@@ -154,7 +174,7 @@ public class UpdateTask {
|
|
|
m.put("grid", "");
|
|
|
m.put("areatype", t.get("scene"));
|
|
|
m.put("sub_areatype", "");
|
|
|
- m.put("area3", "");
|
|
|
+ m.put("area3", siteLevelMap.get(gnbid.toString()));
|
|
|
m.put("longitude", t.get("lon"));
|
|
|
m.put("latitude", t.get("lat"));
|
|
|
m.put("vendor", t.get("vender"));
|
|
@@ -162,11 +182,11 @@ public class UpdateTask {
|
|
|
m.put("downtilt", ((BigDecimal) t.get("m_downtilt")).add((BigDecimal) t.get("e_downtilt")));
|
|
|
m.put("azimuth", t.get("direction"));
|
|
|
m.put("fr", t.get("down_freq"));
|
|
|
- m.put("scramber", t.get(""));
|
|
|
+ m.put("scramber", "");
|
|
|
m.put("province_id", t.get("河北省"));
|
|
|
- m.put("bsbusip", t.get(""));
|
|
|
- m.put("bsbusip_1", t.get(""));
|
|
|
- m.put("isanchor", t.get(""));
|
|
|
+ m.put("bsbusip", "");
|
|
|
+ m.put("bsbusip_1", "");
|
|
|
+ m.put("isanchor", "");
|
|
|
m.put("operator", t.get("construction"));
|
|
|
m.put("isshare", "");
|
|
|
m.put("slice_type", "");
|
|
@@ -177,7 +197,7 @@ public class UpdateTask {
|
|
|
/**
|
|
|
* cfg_0_4g_siteinfo -> cfg_p_netconf_std
|
|
|
*/
|
|
|
- private void fourGCfgPNetconfStd(Map<String, Map<String, Object>> four, Map<Object, Map<String, Object>> map) {
|
|
|
+ private void fourGCfgPNetconfStd(Map<String, Map<String, Object>> four, Map<Object, Map<String, Object>> map, Map<Object, Object> siteLevelMap) {
|
|
|
for (Map<String, Object> t : four.values()) {
|
|
|
Map<String, Object> m = new HashMap<>();
|
|
|
BigDecimal enbid = (BigDecimal) t.get("enbid");
|
|
@@ -188,8 +208,8 @@ public class UpdateTask {
|
|
|
m.put("city_id", t.get("city_code"));
|
|
|
m.put("city_name", t.get("city_name"));
|
|
|
m.put("area_id", t.get("district_name"));
|
|
|
- m.put("core_ne_name", t.get(""));
|
|
|
- m.put("radio_ne_name", t.get(""));
|
|
|
+ m.put("core_ne_name", "");
|
|
|
+ m.put("radio_ne_name", "");
|
|
|
m.put("site_name", t.get("bbu_name"));
|
|
|
m.put("site_id", enbid);
|
|
|
m.put("cell_no", cell_id);
|
|
@@ -209,7 +229,7 @@ public class UpdateTask {
|
|
|
m.put("grid", "");
|
|
|
m.put("areatype", t.get("scene"));
|
|
|
m.put("sub_areatype", "");
|
|
|
- m.put("area3", "");
|
|
|
+ m.put("area3", siteLevelMap.get(enbid.toString()));
|
|
|
m.put("longitude", t.get("lon"));
|
|
|
m.put("latitude", t.get("lat"));
|
|
|
m.put("vendor", t.get("vender"));
|
|
@@ -217,11 +237,11 @@ public class UpdateTask {
|
|
|
m.put("downtilt", ((BigDecimal) t.get("m_downtilt")).add((BigDecimal) t.get("e_downtilt")));
|
|
|
m.put("azimuth", t.get("direction"));
|
|
|
m.put("fr", t.get("down_freq"));
|
|
|
- m.put("scramber", t.get(""));
|
|
|
+ m.put("scramber", "");
|
|
|
m.put("province_id", t.get("河北省"));
|
|
|
- m.put("bsbusip", t.get(""));
|
|
|
- m.put("bsbusip_1", t.get(""));
|
|
|
- m.put("isanchor", t.get(""));
|
|
|
+ m.put("bsbusip", "");
|
|
|
+ m.put("bsbusip_1", "");
|
|
|
+ m.put("isanchor", "");
|
|
|
m.put("operator", t.get("construction"));
|
|
|
m.put("isshare", "");
|
|
|
m.put("slice_type", "");
|
|
@@ -282,7 +302,7 @@ public class UpdateTask {
|
|
|
}
|
|
|
|
|
|
private void gpload(String table) throws IOException {
|
|
|
- String gploadCommand = "sh /data1/site_info/gpload/gpload.sh " + table;
|
|
|
+ String gploadCommand = "sh " + gploadShellPath + " " + table;
|
|
|
GploadResult gpload = GploadUtil.gpload(gploadCommand);
|
|
|
if (Boolean.TRUE.equals(gpload.getTaskStatus())) {
|
|
|
log.info("gpload {} 完成: {}", table, gpload);
|
|
@@ -290,8 +310,7 @@ public class UpdateTask {
|
|
|
// 删除文件
|
|
|
Files.deleteIfExists(Paths.get(table + ".csv"));
|
|
|
} else {
|
|
|
- log.error("gpload {} 失败: {}", table, gpload.getMessage());
|
|
|
- XxlJobHelper.log("gpload {} 失败: {}", table, gpload.getMessage());
|
|
|
+ throw new RuntimeException("gpload " + table + " 失败: " + gpload.getMessage());
|
|
|
}
|
|
|
}
|
|
|
|