package com.fzzy.api.service;
|
|
|
import com.bstek.dorado.annotation.DataProvider;
|
import com.bstek.dorado.annotation.Expose;
|
import com.fzzy.api.Constant;
|
import com.fzzy.api.data.PushProtocol;
|
import com.fzzy.api.data.SyncProtocol;
|
import com.fzzy.api.entity.ApiTrigger;
|
import com.fzzy.api.utils.RedisConst;
|
import com.fzzy.api.utils.RedisUtil;
|
import com.fzzy.api.view.repository.ApiTriggerRep;
|
import org.apache.commons.lang.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* 公共接口服务-字典表
|
*/
|
@Component
|
public class ApiTriggerService {
|
|
|
/**
|
* 用于存放字典与对接系统的编码映射
|
*/
|
public static Map<String, Map<String, String>> contextMap = new HashMap<>();
|
|
|
private String DEFAULT_MAP_KEY = "DEFAULT";
|
|
@Autowired
|
private RedisUtil redisUtil;
|
|
@Autowired
|
private ApiTriggerRep apiTriggerRep;
|
|
|
/**
|
* apiTriggerService#flushCache
|
* 刷新缓存
|
*/
|
@Expose
|
public void flushCache() {
|
|
List<ApiTrigger> listParent = apiTriggerRep.findParent();
|
if (null == listParent || listParent.isEmpty()) return;
|
|
List<ApiTrigger> nodes;
|
for (ApiTrigger trigger : listParent) {
|
nodes = apiTriggerRep.findByParent(trigger.getCode(), Constant.YN_Y);
|
trigger.setNodes(nodes);
|
|
add2Cache(trigger);
|
}
|
|
}
|
|
public ApiTrigger findNameByCode(String code, String parentCode) {
|
|
List<ApiTrigger> listParent = apiTriggerRep.findNameByCode(code, parentCode);
|
if (null == listParent || listParent.isEmpty()) return null;
|
return listParent.get(0);
|
}
|
|
private void add2Cache(ApiTrigger trigger) {
|
|
String key = RedisConst.buildKey(RedisConst.KYE_LIST_TRIGGER, trigger.getCode());
|
redisUtil.set(key, trigger.getNodes());
|
|
//添加映射
|
Map<String, String> parentMap = contextMap.get(trigger.getCode());
|
if (null == parentMap) {
|
parentMap = new HashMap<>();
|
}
|
//如果没有子节点直接设置一个空MAP
|
if (null == trigger.getNodes() || trigger.getNodes().isEmpty()) {
|
contextMap.put(trigger.getCode(), parentMap);
|
return;
|
}
|
|
//如果有子节点,则添加映射
|
for (ApiTrigger item : trigger.getNodes()) {
|
|
//添加默认值
|
if (Constant.YN_Y.equals(item.getDefaultTag())) {
|
parentMap.put(DEFAULT_MAP_KEY, item.getCode());
|
}
|
|
if (StringUtils.isEmpty(item.getBizCode())) continue;
|
parentMap.put(item.getBizCode(), item.getCode());
|
}
|
|
contextMap.put(trigger.getCode(), parentMap);
|
}
|
|
|
@SuppressWarnings("unchecked")
|
public List<ApiTrigger> getTriggerByCache(String parentCode) {
|
String key = RedisConst.buildKey(RedisConst.KYE_LIST_TRIGGER, parentCode);
|
return (List<ApiTrigger>) redisUtil.get(key);
|
}
|
|
|
/**
|
* 根据字典表配置父编码和对接系统中的编码获取接口中的标准编码
|
*
|
* @param parentCode 字典父编码
|
* @param bizCode 对接的到接口系统中的系统中配置编码
|
* @return 标准国标编码
|
*/
|
public String getMappingCode(String parentCode, String bizCode) {
|
|
String result = null;
|
Map<String, String> parentMap = contextMap.get(parentCode);
|
if (null == parentMap || parentMap.isEmpty()) {
|
if (StringUtils.isEmpty(bizCode)) {
|
return bizCode;
|
}
|
if (Constant.TRIGGER_P_LSPZ.equals(parentCode)) {
|
result = Integer.valueOf(bizCode) * 1000000 + "";
|
result = result.substring(0, 7);
|
} else if (Constant.TRIGGER_P_LSXZ.equals(parentCode)) {
|
result = Integer.valueOf(bizCode) * 100 + "";
|
result = result.substring(0, 3);
|
} else {
|
result = bizCode;
|
}
|
return result;
|
}
|
|
result = parentMap.get(bizCode);
|
if (null == result) {
|
result = parentMap.get(DEFAULT_MAP_KEY);
|
}
|
|
if (null == result) {
|
if (StringUtils.isEmpty(bizCode)) {
|
return bizCode;
|
}
|
if (Constant.TRIGGER_P_LSPZ.equals(parentCode)) {
|
result = Integer.valueOf(bizCode) * 1000000 + "";
|
result = result.substring(0, 7);
|
} else if (Constant.TRIGGER_P_LSXZ.equals(parentCode)) {
|
result = Integer.valueOf(bizCode) * 100 + "";
|
result = result.substring(0, 3);
|
} else {
|
result = bizCode;
|
}
|
}
|
return result;
|
}
|
|
|
/**
|
* 页面下拉框使用,根据父编码获取,父编码的定注意在 @See Constant
|
* <p>
|
* ${dorado.getDataProvider("apiTriggerService#trigger").getResult("PARENT_CODE")}
|
*
|
* @return
|
*/
|
@DataProvider
|
public List<ApiTrigger> trigger(String parentCode) {
|
return getTriggerByCache(parentCode);
|
}
|
|
/**
|
* ${dorado.getDataProvider("apiTriggerService#triggerPushProtocol").getResult()}
|
* 推送省平台协议列表
|
*
|
* @return
|
*/
|
@DataProvider
|
public List<ApiTrigger> triggerPushProtocol() {
|
List<ApiTrigger> list = new ArrayList<>();
|
list.add(new ApiTrigger(PushProtocol.GB_DEFAULT.getCode(), PushProtocol.GB_DEFAULT.getName()));
|
list.add(new ApiTrigger(PushProtocol.GB_2022.getCode(), PushProtocol.GB_2022.getName()));
|
list.add(new ApiTrigger(PushProtocol.SB_SH_2021.getCode(), PushProtocol.SB_SH_2021.getName()));
|
list.add(new ApiTrigger(PushProtocol.SB_SC_2021.getCode(), PushProtocol.SB_SC_2021.getName()));
|
list.add(new ApiTrigger(PushProtocol.SB_GD_2022.getCode(), PushProtocol.SB_GD_2022.getName()));
|
list.add(new ApiTrigger(PushProtocol.SB_GD_2023.getCode(), PushProtocol.SB_GD_2023.getName()));
|
list.add(new ApiTrigger(PushProtocol.SB_GD_2020.getCode(), PushProtocol.SB_GD_2020.getName()));
|
list.add(new ApiTrigger(PushProtocol.SB_HN_2022.getCode(), PushProtocol.SB_HN_2022.getName()));
|
list.add(new ApiTrigger(PushProtocol.SB_WHJL_2023.getCode(), PushProtocol.SB_WHJL_2023.getName()));
|
list.add(new ApiTrigger(PushProtocol.HB_FZZY_JG_2022.getCode(), PushProtocol.HB_FZZY_JG_2022.getName()));
|
list.add(new ApiTrigger(PushProtocol.SB_SHJdJW_2023.getCode(), PushProtocol.SB_SHJdJW_2023.getName()));
|
list.add(new ApiTrigger(PushProtocol.SB_SH_2023.getCode(), PushProtocol.SB_SH_2023.getName()));
|
list.add(new ApiTrigger(PushProtocol.SB_NX_2023.getCode(), PushProtocol.SB_NX_2023.getName()));
|
list.add(new ApiTrigger(PushProtocol.SB_NX_2024.getCode(), PushProtocol.SB_NX_2024.getName()));
|
list.add(new ApiTrigger(PushProtocol.SB_SX_2023.getCode(), PushProtocol.SB_SX_2023.getName()));
|
list.add(new ApiTrigger(PushProtocol.SB_SX_2024.getCode(), PushProtocol.SB_SX_2024.getName()));
|
return list;
|
}
|
|
/**
|
* ${dorado.getDataProvider("apiTriggerService#triggerSyncProtocol").getResult()}
|
* 推送省平台协议列表
|
*
|
* @return
|
*/
|
@DataProvider
|
public List<ApiTrigger> triggerSyncProtocol() {
|
List<ApiTrigger> list = new ArrayList<>();
|
list.add(new ApiTrigger(SyncProtocol.GB_DEFAULT.getCode(), SyncProtocol.GB_DEFAULT.getName()));
|
list.add(new ApiTrigger(SyncProtocol.FZZY_V30_GB.getCode(), SyncProtocol.FZZY_V30_GB.getName()));
|
list.add(new ApiTrigger(SyncProtocol.FZZY_V35_GB.getCode(), SyncProtocol.FZZY_V35_GB.getName()));
|
list.add(new ApiTrigger(SyncProtocol.FZZY_V40_GB.getCode(), SyncProtocol.FZZY_V40_GB.getName()));
|
list.add(new ApiTrigger(SyncProtocol.FZZY_V40_WHJL.getCode(), SyncProtocol.FZZY_V40_WHJL.getName()));
|
list.add(new ApiTrigger(SyncProtocol.FZZY_V35_SHYZ.getCode(), SyncProtocol.FZZY_V35_SHYZ.getName()));
|
return list;
|
}
|
|
}
|