|
|
@ -10,6 +10,7 @@ import com.kms.yxgh.common.job.JsonObjProxy; |
|
|
|
import com.shuili.common.core.redis.RedisCache; |
|
|
|
import com.shuili.common.utils.SpringUtils; |
|
|
|
import com.shuili.common.utils.StringUtils; |
|
|
|
import com.shuili.common.utils.password.MD5Util; |
|
|
|
import lombok.Getter; |
|
|
|
|
|
|
|
import java.util.*; |
|
|
@ -32,54 +33,41 @@ public enum DataSyncBasicEnum { |
|
|
|
ATT_DIKE_BASE("堤防基础信息", Constants.DF_MAP), |
|
|
|
ATT_DIKE_BSFST("堤防水文特征", Constants.DF_SWTZ_MAP), |
|
|
|
ATT_DISC_BASE("堤段基本信息", Constants.DF_DISC_MAP), |
|
|
|
ATT_DIKE_DBIABT("堤防工程效益", Constants.DF_ID_MAP), |
|
|
|
ATT_DIKE_DKHOS("堤防决溢记录", Constants.DF_DKHOS_MAP), |
|
|
|
ATT_WAGA_BASE("水闸基础信息", Constants.SZ_MAP), |
|
|
|
ATT_WAGA_CODE("水闸工程代码", Constants.SZ_MAP), |
|
|
|
ATT_WAGA_SLHYPR("水闸水文特征", Constants.SZ_ID_MAP), |
|
|
|
ATT_WAGA_SLIGVL("水闸工程结构", Constants.SZ_ID_MAP), |
|
|
|
ATT_WAGA_SLDNNT("水闸出险记录", Constants.SZ_DAWST_MAP), |
|
|
|
ATT_RV_BASE("河流基础信息", Constants.RV_MAP), |
|
|
|
ATT_DPDS_BASE("险工险峻信息", Constants.DPDS_MAP), |
|
|
|
ATT_BAS_BASE("流域基础信息", Constants.BAS_MAP), |
|
|
|
ATT_ST_BASE("水文水工程监测站基础信息", Constants.ST_MAP, records -> { |
|
|
|
Map<String, List<BsSgcStMon>> monMap = records.stream().map(JSONObject.class::cast) |
|
|
|
.map(JsonObjProxy::new) |
|
|
|
.collect(Collectors.toMap(obj -> obj.getString("stcd"), obj -> { |
|
|
|
String monProj = obj.getString("monProj"); |
|
|
|
if (StringUtils.isEmpty(monProj)) { |
|
|
|
return Collections.emptyList(); |
|
|
|
} |
|
|
|
String stcd = obj.getString("stcd"); |
|
|
|
return Arrays.stream(monProj.split(",")) |
|
|
|
.map(proj -> { |
|
|
|
BsSgcStMon monProjObj = new BsSgcStMon(); |
|
|
|
monProjObj.setStcd(stcd); |
|
|
|
monProjObj.setMonProj(proj); |
|
|
|
return monProjObj; |
|
|
|
}).collect(Collectors.toList()); |
|
|
|
}, (a, b) -> a)); |
|
|
|
BsSgcStMonService monMapper = SpringUtils.getBean(BsSgcStMonService.class); |
|
|
|
monMapper.removeByIds(monMap.keySet()); |
|
|
|
monMapper.saveBatch(monMap.values().stream().flatMap(Collection::stream) |
|
|
|
.filter(Objects::nonNull) |
|
|
|
.collect(Collectors.toList()), 1000); |
|
|
|
}), |
|
|
|
ATT_ST_MP("水工程监测测点信息", Constants.ST_MP_MAP), |
|
|
|
ATT_ST_BASE("水文水工程监测站基础信息", Constants.ST_MAP, AfterHandler.ST_BASE), |
|
|
|
SYS_XZQH("行政区划基础信息", Constants.XZQH_MAP), |
|
|
|
; |
|
|
|
|
|
|
|
private final String name; |
|
|
|
//中文名称
|
|
|
|
private final String zhName; |
|
|
|
//字段映射处理器,默认自动映射,如:wageCode匹配waga_code、wagaCode、WAGA_CODE
|
|
|
|
private final Map<String, Function<JsonObjProxy, Object>> valueHandler; |
|
|
|
//数据同步后处理器 默认空实现
|
|
|
|
private final Consumer<JSONArray> afterHandler; |
|
|
|
|
|
|
|
|
|
|
|
DataSyncBasicEnum(String name, Map<String, Function<JsonObjProxy, Object>> valueHandler) { |
|
|
|
this(name, valueHandler, a -> { |
|
|
|
DataSyncBasicEnum(String zhName, Map<String, Function<JsonObjProxy, Object>> valueHandler) { |
|
|
|
this(zhName, valueHandler, a -> { |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
DataSyncBasicEnum(String name, Map<String, Function<JsonObjProxy, Object>> valueHandler, Consumer<JSONArray> afterHandler) { |
|
|
|
this.name = name; |
|
|
|
DataSyncBasicEnum(String zhName, Map<String, Function<JsonObjProxy, Object>> valueHandler, Consumer<JSONArray> afterHandler) { |
|
|
|
this.zhName = zhName; |
|
|
|
this.valueHandler = valueHandler; |
|
|
|
this.afterHandler = afterHandler; |
|
|
|
} |
|
|
|
|
|
|
|
public TableInfo getTableInfo() { |
|
|
|
return TableInfoHelper.getTableInfo(this.name().toLowerCase()); |
|
|
|
return TableInfoHelper.getTableInfo(this.getTableName()); |
|
|
|
} |
|
|
|
|
|
|
|
public String getTableName() { |
|
|
@ -88,10 +76,43 @@ public enum DataSyncBasicEnum { |
|
|
|
|
|
|
|
@Override |
|
|
|
public String toString() { |
|
|
|
return "表[" + this.getName() + "](" + this.name + ")"; |
|
|
|
return "表[" + this.getZhName() + "](" + this.zhName + ")"; |
|
|
|
} |
|
|
|
|
|
|
|
public static class AfterHandler { |
|
|
|
public static final Consumer<JSONArray> ST_BASE = (records) -> { |
|
|
|
Map<String, List<BsSgcStMon>> monMap = records.stream().map(JSONObject.class::cast) |
|
|
|
.map(JsonObjProxy::new) |
|
|
|
.collect(Collectors.toMap(obj -> obj.getString("stcd"), obj -> { |
|
|
|
String monProj = obj.getString("monProj"); |
|
|
|
if (StringUtils.isEmpty(monProj)) { |
|
|
|
return Collections.emptyList(); |
|
|
|
} |
|
|
|
String stcd = obj.getString("stcd"); |
|
|
|
return Arrays.stream(monProj.split(",")) |
|
|
|
.map(proj -> { |
|
|
|
BsSgcStMon monProjObj = new BsSgcStMon(); |
|
|
|
monProjObj.setStcd(stcd); |
|
|
|
monProjObj.setMonProj(proj); |
|
|
|
return monProjObj; |
|
|
|
}).collect(Collectors.toList()); |
|
|
|
}, (a, b) -> a)); |
|
|
|
BsSgcStMonService monMapper = SpringUtils.getBean(BsSgcStMonService.class); |
|
|
|
monMapper.removeByIds(monMap.keySet()); |
|
|
|
monMapper.saveBatch(monMap.values().stream().flatMap(Collection::stream) |
|
|
|
.filter(Objects::nonNull) |
|
|
|
.collect(Collectors.toList()), 1000); |
|
|
|
}; |
|
|
|
} |
|
|
|
|
|
|
|
public static class Constants { |
|
|
|
public static final Map<String, Function<JsonObjProxy, Object>> XZQH_MAP = new HashMap<String, Function<JsonObjProxy, Object>>() {{ |
|
|
|
put("id", obj -> obj.getString("adcd")); |
|
|
|
put("xzqhdm", obj -> obj.getString("adcd")); |
|
|
|
put("parentid", obj -> obj.getString("adupcd")); |
|
|
|
put("name", obj -> obj.getString("adnm")); |
|
|
|
put("layer", obj -> obj.getInteger("adlevel")); |
|
|
|
}}; |
|
|
|
|
|
|
|
public static final Map<String, Function<JsonObjProxy, Object>> SK_MAP = new HashMap<String, Function<JsonObjProxy, Object>>() {{ |
|
|
|
put("id", obj -> obj.getString("resCode")); |
|
|
@ -109,6 +130,24 @@ public enum DataSyncBasicEnum { |
|
|
|
} |
|
|
|
}); |
|
|
|
}}; |
|
|
|
public static final Map<String, Function<JsonObjProxy, Object>> DF_ID_MAP = new HashMap<String, Function<JsonObjProxy, Object>>() {{ |
|
|
|
put("id", obj -> obj.getString("dikeCode")); |
|
|
|
}}; |
|
|
|
public static final Map<String, Function<JsonObjProxy, Object>> DF_DKHOS_MAP = new HashMap<String, Function<JsonObjProxy, Object>>() { |
|
|
|
{ |
|
|
|
put("id", obj -> { |
|
|
|
String wagaCode = obj.getString("dikeCode"); |
|
|
|
Date fntm = obj.getDate("brspDateTime"); |
|
|
|
String u; |
|
|
|
if (fntm == null) { |
|
|
|
u = wagaCode; |
|
|
|
} else { |
|
|
|
u = wagaCode + fntm.getTime(); |
|
|
|
} |
|
|
|
return MD5Util.MD5Encode(u, "utf-8"); |
|
|
|
}); |
|
|
|
} |
|
|
|
}; |
|
|
|
public static final Map<String, Function<JsonObjProxy, Object>> DF_MAP = new HashMap<String, Function<JsonObjProxy, Object>>() {{ |
|
|
|
put("id", obj -> obj.getString("dikeCode")); |
|
|
|
put("adcd", obj -> { |
|
|
@ -135,6 +174,27 @@ public enum DataSyncBasicEnum { |
|
|
|
put("dsflLev", obj -> obj.getString("dsfllv")); |
|
|
|
put("alwtLev", obj -> obj.getString("wrwl")); |
|
|
|
}}; |
|
|
|
|
|
|
|
public static final Map<String, Function<JsonObjProxy, Object>> SZ_ID_MAP = new HashMap<String, Function<JsonObjProxy, Object>>() { |
|
|
|
{ |
|
|
|
put("id", obj -> obj.getString("wagaCode")); |
|
|
|
} |
|
|
|
}; |
|
|
|
public static final Map<String, Function<JsonObjProxy, Object>> SZ_DAWST_MAP = new HashMap<String, Function<JsonObjProxy, Object>>() { |
|
|
|
{ |
|
|
|
put("id", obj -> { |
|
|
|
String wagaCode = obj.getString("wagaCode"); |
|
|
|
Date fntm = obj.getDate("DNTM"); |
|
|
|
String u; |
|
|
|
if (fntm == null) { |
|
|
|
u = wagaCode; |
|
|
|
} else { |
|
|
|
u = wagaCode + fntm.getTime(); |
|
|
|
} |
|
|
|
return MD5Util.MD5Encode(u, "utf-8"); |
|
|
|
}); |
|
|
|
} |
|
|
|
}; |
|
|
|
public static final Map<String, Function<JsonObjProxy, Object>> SZ_MAP = new HashMap<String, Function<JsonObjProxy, Object>>() { |
|
|
|
{ |
|
|
|
String cacheKey = RelCacheEnum.DWS_REL_WAGA_AD.getCacheKey(); |
|
|
|