382 lines
19 KiB
Java
382 lines
19 KiB
Java
package com.adc.da.mq;
|
|
|
|
import com.adc.da.slrs.otSvpps.service.IOtSvppsService;
|
|
import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfo;
|
|
import com.adc.da.slrs.sarStandardsInfo.service.ISarStandardsInfoService;
|
|
import com.adc.da.slrs.sysInfo.service.SysInfoEOService;
|
|
import com.adc.da.sys.dao.DicTypeEODao;
|
|
import com.adc.da.sys.entity.DicTypeEO;
|
|
import com.adc.da.utils.util.InitStandAttrUtil;
|
|
import com.adc.da.utils.util.Utils;
|
|
import com.rabbitmq.client.Channel;
|
|
import net.sf.json.JSONObject;
|
|
import org.apache.commons.lang.StringUtils;
|
|
import org.json.JSONTokener;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.springframework.amqp.rabbit.annotation.Exchange;
|
|
import org.springframework.amqp.rabbit.annotation.Queue;
|
|
import org.springframework.amqp.rabbit.annotation.QueueBinding;
|
|
import org.springframework.amqp.rabbit.annotation.RabbitListener;
|
|
import org.springframework.amqp.support.AmqpHeaders;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.messaging.Message;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import java.text.ParseException;
|
|
import java.text.SimpleDateFormat;
|
|
import java.util.*;
|
|
import java.util.stream.Collectors;
|
|
|
|
@Component
|
|
public class SendStandMQService {
|
|
|
|
@Autowired
|
|
private ISarStandardsInfoService sarStandardsInfoService;
|
|
|
|
@Autowired
|
|
private SysInfoEOService sysInfoEOService;
|
|
|
|
@Autowired
|
|
private DicTypeEODao dicTypeEODao;
|
|
|
|
|
|
@Autowired
|
|
private IOtSvppsService otSvppsEOService;
|
|
|
|
|
|
private static final Logger logger = LoggerFactory.getLogger(SendStandMQService.class);
|
|
|
|
@RabbitListener(bindings = @QueueBinding(
|
|
value = @Queue(value = "createStandMQ_SQ_GSAR_RELEASE", durable = "true"),
|
|
exchange = @Exchange(value = "stand-exchange_SQ_GSAR_RELEASE", ignoreDeclarationExceptions = "true"),
|
|
key = "stand-key_SQ_GSAR_RELEASE"))
|
|
public void createMQ(Map<String,Object> standMap, Message message, Channel channel) throws Exception{
|
|
try{
|
|
try{
|
|
Thread.sleep(5000);
|
|
insertOrUpdateStandInfo(standMap);
|
|
}catch(InterruptedException e){
|
|
logger.error(e.toString());
|
|
Thread.currentThread().interrupt();
|
|
}
|
|
} catch (Exception e) {
|
|
logger.error("搜索中心标准消息队列进入添加数据方法前失败!");
|
|
logger.error(e.getMessage(),e);
|
|
}finally {
|
|
Long tag = (Long) message.getHeaders().get(AmqpHeaders.DELIVERY_TAG);
|
|
channel.basicAck(tag,false);
|
|
logger.debug("消息确认成功!!!!!!!!!");
|
|
}
|
|
|
|
}
|
|
|
|
public void insertOrUpdateStandInfo(Map<String,Object> standMap){
|
|
String addOrUpdate = standMap.get("addOrUpdate").toString();
|
|
String sarStandards = standMap.get("sarStandards").toString();
|
|
JSONObject jsonobject = JSONObject.fromObject(sarStandards);
|
|
SarStandardsInfo infoEO = (SarStandardsInfo) JSONObject.toBean(jsonobject,SarStandardsInfo.class);
|
|
if(infoEO.getMapItems() == null || infoEO.getMapItems().isEmpty()){
|
|
if(jsonobject.get("mapItems") != null){
|
|
infoEO.setMapItems(net.sf.json.JSONObject.fromObject(jsonobject.get("mapItems")));
|
|
}
|
|
}
|
|
String sarStandAttrEOStr = infoEO.getSarStandAttrEOStr();
|
|
Map<String,Object> attrInfoMap = new TreeMap<>();
|
|
Map<String,Object> attrInfoMapForAuth = new TreeMap<>();
|
|
if(StringUtils.isNotBlank(sarStandAttrEOStr)){
|
|
attrInfoMap = JSONObject.fromObject(sarStandAttrEOStr);
|
|
attrInfoMapForAuth.putAll(attrInfoMap);
|
|
}
|
|
Map<String,Object> infoMap = infoEO.getAttrInfoMap();
|
|
Map<String,String> infoEOMapItems = infoEO.getMapItems();
|
|
|
|
//查询字典表,形成Hash映射提升速度
|
|
List<DicTypeEO> dicInfo = dicTypeEODao.getDicInfo("dic_id","dic_type_code", "dic_type_name","show_index");
|
|
dicInfo = dicInfo.stream().filter(dicTypeEO -> {
|
|
if(org.apache.commons.lang3.StringUtils.isNotBlank(dicTypeEO.getDicTypeCode())){
|
|
dicTypeEO.setDicTypeCode(dicTypeEO.getDicTypeCode().replace(" ",""));
|
|
return true;
|
|
}
|
|
return false;
|
|
}).collect(Collectors.toList());
|
|
Map<String, Integer> dicMap = dicInfo.stream()
|
|
.filter(item-> ("2klxdk7fo3tvpvin70dk".equals(item.getDicId()) || "18mg1g4x0rwubcto7fdd".equals(item.getDicId()) || "08rerbsn8ucjfk13z2ci".equals(item.getDicId()) || "pnv0ik979yqogocqujwo".equals(item.getDicId())) && !item.getDicTypeCode().isEmpty())
|
|
.collect(Collectors.toMap(DicTypeEO::getDicTypeCode,DicTypeEO::getShowIndex,(value1, value2 )->value2));
|
|
|
|
|
|
// 往索引表中插入数据
|
|
String getCodeName = "";
|
|
Map<String,Object> saveMap = new HashMap<>();
|
|
String baseSearchContent = "";
|
|
// 开始存放数据 -------- 国内外标准 -----------
|
|
saveMap.put("id",infoEO.getId());
|
|
saveMap.put("BYYBJ", attrInfoMap.getOrDefault("BYYBJ", ""));
|
|
saveMap.put("BDTBH", attrInfoMap.getOrDefault("BDTBH", ""));
|
|
saveMap.put("country",infoEO.getCountry());
|
|
|
|
if (StringUtils.isNotEmpty(infoEO.getCountry())) {
|
|
String codeName = sysInfoEOService.getDicNamesByCodes(infoEO.getCountry(),"RFRFRFSCXVB");
|
|
saveMap.put("countryShow",codeName);
|
|
}
|
|
saveMap.put("standSortOrder",esStateOrder(String.valueOf(infoEO.getStandSort()),dicMap));
|
|
saveMap.put("standSort",infoEO.getStandSort());
|
|
saveMap.put("stand_sort",infoEO.getStandSort());
|
|
if (StringUtils.isNotEmpty(infoEO.getStandSort())) {
|
|
String codeName = sysInfoEOService.getDicNamesByCodes(infoEO.getStandSort(),"JKSADFH564S");
|
|
saveMap.put("standSortShow",codeName);
|
|
getCodeName = codeName;
|
|
}
|
|
saveMap.put("standNumber",infoEO.getStandNumber());
|
|
saveMap.put("stand_number",infoEO.getStandNumber());
|
|
saveMap = dealNumberMsg(saveMap,infoEO,infoEO.getStandSort());
|
|
saveMap.put("standYear",infoEO.getStandYear());
|
|
saveMap.put("stand_year",infoEO.getStandYear());
|
|
saveMap.put("nameshow",infoEO.getStandName());
|
|
saveMap.put("stand_name",infoEO.getStandName());
|
|
saveMap.put("standName",infoEO.getStandName());
|
|
saveMap.put("standEnName",infoEO.getStandEnName());
|
|
saveMap.put("stand_en_name",infoEO.getStandEnName());
|
|
|
|
if (StringUtils.isNotEmpty(infoEO.getStandState())) {
|
|
String codeName = sysInfoEOService.getDicNamesByCodes(infoEO.getStandState(),"");
|
|
saveMap.put("standstateshow",codeName);
|
|
}
|
|
saveMap.put("issueTime",dateFormatToStr(infoEO.getIssueTime()));
|
|
Date issue_time_data = null;
|
|
if (StringUtils.isNotBlank(infoEO.getIssueTime())) {
|
|
try {
|
|
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
issue_time_data = format.parse(dateFormatToStr(infoEO.getIssueTime())+" 00:00:00");
|
|
} catch (ParseException ignored) {
|
|
}
|
|
}
|
|
if (issue_time_data != null) {
|
|
saveMap.put("issue_time_data",issue_time_data.getTime());
|
|
}else{
|
|
saveMap.put("issue_time_data",-1000000000000000000L);
|
|
}
|
|
String standNatureName = "";
|
|
if(infoEO.getStandNature() != null && StringUtils.isNotBlank(infoEO.getStandNature())){
|
|
List<String> valArr = Arrays.asList(infoEO.getStandNature().split(","));
|
|
standNatureName = dicTypeEODao.getDicNamesByCodes(valArr,"");
|
|
}
|
|
saveMap.put("standNature",infoEO.getStandNature());
|
|
saveMap.put("standNatureName",standNatureName);
|
|
saveMap.put("synopsis",infoEO.getSynopsis());
|
|
saveMap.put("standType",infoEO.getStandType());
|
|
String textStatusName = "";
|
|
if(infoEO.getTextStatus() != null && StringUtils.isNotBlank(infoEO.getTextStatus())){
|
|
List<String> valArr = Arrays.asList(infoEO.getTextStatus().split(","));
|
|
textStatusName = dicTypeEODao.getDicNamesByCodes(valArr,"");
|
|
}
|
|
saveMap.put("textStatus",infoEO.getTextStatus());
|
|
saveMap.put("textStatusName",textStatusName);
|
|
String isRelateAccessName = "";
|
|
if(infoEO.getIsRelateAccess() != null && StringUtils.isNotBlank(infoEO.getIsRelateAccess())){
|
|
if(infoEO.getIsRelateAccess().equals("1")){
|
|
isRelateAccessName = "是";
|
|
}else {
|
|
isRelateAccessName = "否";
|
|
}
|
|
}
|
|
saveMap.put("isRelateAccess",infoEO.getIsRelateAccess());
|
|
saveMap.put("isRelateAccessName",isRelateAccessName);
|
|
saveMap.put("standSystem",infoEO.getStandSystem());
|
|
|
|
// 自定义属性字段
|
|
if (attrInfoMap != null && !attrInfoMap.isEmpty()) {
|
|
attrInfoMap = sysInfoEOService.changeSelectInfo(attrInfoMap, "stand",baseSearchContent);
|
|
saveMap.putAll(attrInfoMap);
|
|
}
|
|
saveMap.put("baseSearchContent",baseSearchContent);
|
|
saveMap.put("type","stand");
|
|
saveMap.put("validFlag","0");
|
|
saveMap.put("content",infoEO.getFileIds());
|
|
saveMap.put("CHJL",infoEO.getCHJL());
|
|
|
|
String fieldInfo = InitStandAttrUtil.queryField;
|
|
List<String> fieldInfoList = Arrays.asList(fieldInfo .split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList());
|
|
|
|
// 动态存储属性字段
|
|
for (String field : fieldInfoList) {
|
|
String fieldValue = "";
|
|
try {
|
|
saveMap.put(field,attrInfoMap.getOrDefault(field,""));
|
|
if(infoMap.get(field) != null && StringUtils.isNotBlank(infoMap.get(field).toString())){
|
|
Object json= new JSONTokener(infoMap.get(field).toString()).nextValue();
|
|
if(json instanceof org.json.JSONArray){
|
|
fieldValue = String.join(",", com.alibaba.fastjson.JSONObject.parseArray(infoMap.get(field).toString(),String.class));
|
|
}else {
|
|
if(!("null").equals(json)){
|
|
fieldValue = infoMap.get(field).toString();
|
|
}
|
|
}
|
|
if(fieldValue.contains("null")){
|
|
fieldValue = fieldValue.replace("null","");
|
|
}
|
|
}
|
|
saveMap.put(field+"Name",fieldValue);
|
|
}catch (Exception e){
|
|
logger.info("国内外标准 消息队列: "+addOrUpdate+", 标准ID:"+infoEO.getId()+",问题字段:"+field);
|
|
logger.error(e.getMessage(),e);
|
|
saveMap.put(field+"Name",fieldValue);
|
|
}
|
|
|
|
}
|
|
|
|
if(infoEOMapItems != null && !infoEOMapItems.isEmpty()){
|
|
saveMap.put("mapItems",infoEOMapItems);
|
|
}
|
|
|
|
|
|
//当建立代替时,产生的没有文件的问题
|
|
if (StringUtils.isBlank(String.valueOf(saveMap.get("content")))) {
|
|
List<String> list = new ArrayList<>();
|
|
|
|
String context = filterStringIsNotBlank(String.valueOf(saveMap.get("FBGBJBD")),true)
|
|
+ filterStringIsNotBlank(String.valueOf(saveMap.get("XXZLXX")),true)
|
|
+ filterStringIsNotBlank(String.valueOf(saveMap.get("ZQYJG")),true)
|
|
+ filterStringIsNotBlank(String.valueOf(saveMap.get("BPG")),true)
|
|
+ filterStringIsNotBlank(String.valueOf(saveMap.get("CA")),true)
|
|
+ filterStringIsNotBlank(String.valueOf(saveMap.get("SSG")),true)
|
|
+ filterStringIsNotBlank(String.valueOf(saveMap.get("JDWJ")),true)
|
|
+ filterStringIsNotBlank(String.valueOf(saveMap.get("XGD")),true)
|
|
+ filterStringIsNotBlank(String.valueOf(saveMap.get("KWJ")),true)
|
|
+ filterStringIsNotBlank(String.valueOf(saveMap.get("ZBJBD")),false);
|
|
context = context.replace(",,", ",");
|
|
saveMap.put("content", context);
|
|
}
|
|
|
|
// 如果出现提示查询报错,而且提示 查询内容无法转换为 日期格式的 情况,原因可能是没有把日期转换为字符串,可以考虑放开下面的代码(目前,域内没有报错,但是,本地有问题)
|
|
// //部分字段没有转为汉字,在此处转为汉字
|
|
// if(StringUtils.isNotBlank(String.valueOf(saveMap.get("XCXSSRQName")))) {
|
|
// saveMap.put("XCXSSRQName"," " + String.valueOf(saveMap.get("XCXSSRQName")));
|
|
// }
|
|
// if(StringUtils.isNotBlank(String.valueOf(saveMap.get("ZCCSSRQName")))) {
|
|
// saveMap.put("ZCCSSRQName"," " + String.valueOf(saveMap.get("ZCCSSRQName")));
|
|
// }
|
|
// if(StringUtils.isNotBlank(String.valueOf(saveMap.get("SSRQName")))) {
|
|
// saveMap.put("SSRQName"," " + String.valueOf(saveMap.get("SSRQName")));
|
|
// }
|
|
// if(StringUtils.isNotBlank(String.valueOf(saveMap.get("issueTime")))) {
|
|
// saveMap.put("issueTime"," " + String.valueOf(saveMap.get("issueTime")));
|
|
// }
|
|
// if(StringUtils.isNotBlank(String.valueOf(saveMap.get("ZCCSSRQ")))) {
|
|
// saveMap.put("ZCCSSRQ"," " + String.valueOf(saveMap.get("ZCCSSRQ")));
|
|
// }
|
|
String numberShow = String.valueOf(saveMap.get("numbershow"));
|
|
if (!"null".equals(numberShow) && StringUtils.isNotBlank(numberShow)) {
|
|
saveMap.put("numberShowBig", numberShow.toUpperCase());
|
|
}
|
|
String nameshow = String.valueOf(saveMap.get("nameshow"));
|
|
if (!"null".equals(nameshow) && StringUtils.isNotBlank(nameshow)) {
|
|
saveMap.put("nameshowBig", nameshow.toUpperCase());
|
|
}
|
|
String standEnName = String.valueOf(saveMap.get("standEnName"));
|
|
if (!"null".equals(standEnName) && StringUtils.isNotBlank(standEnName)) {
|
|
saveMap.put("standEnNameBig", standEnName.toUpperCase());
|
|
}
|
|
if ("1".equals(attrInfoMapForAuth.get("updateAuth"))) {
|
|
Map<String, Object> getAttrMap = new TreeMap<>(attrInfoMapForAuth);
|
|
if (getAttrMap != null && getAttrMap.size() > 0) {
|
|
for (Map.Entry<String, Object> entry : getAttrMap.entrySet()) {
|
|
String name = entry.getKey();
|
|
String value = "";
|
|
List<String> valArr = new ArrayList<>();
|
|
if (entry.getValue() != null && InitStandAttrUtil.selectionFieldList != null && InitStandAttrUtil.selectionFieldList.size() > 0 && InitStandAttrUtil.selectionFieldList.contains(name)) {
|
|
if (StringUtils.isNotBlank(entry.getValue().toString())) {
|
|
Object json = null;
|
|
if (Utils.isJson(entry.getValue().toString())) {
|
|
json = new JSONTokener(entry.getValue().toString()).nextValue();
|
|
}
|
|
if (json instanceof org.json.JSONArray) {
|
|
valArr = com.alibaba.fastjson.JSONObject.parseArray(entry.getValue().toString(), String.class);
|
|
} else {
|
|
value = entry.getValue().toString();
|
|
valArr = Arrays.asList(value.split(","));
|
|
}
|
|
if (!valArr.isEmpty()) {
|
|
value = dicTypeEODao.getDicNamesByCodes(valArr, "");
|
|
}
|
|
}
|
|
saveMap.put(name + "Name",value);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if("add".equals(addOrUpdate)){
|
|
sarStandardsInfoService.insertIntoIndexForMap(saveMap);
|
|
} else {
|
|
sarStandardsInfoService.updateIntoIndexForMap(saveMap);
|
|
}
|
|
}
|
|
|
|
private String esStateOrder(String data, Map<String, Integer> dicMap){
|
|
if(StringUtils.isNotBlank(data)){
|
|
data = data.replace(" ","");
|
|
if(dicMap.get(data.trim().toUpperCase()) != null){
|
|
return String.valueOf(dicMap.get(data.trim().toUpperCase()));
|
|
}else {
|
|
return "99999";
|
|
}
|
|
}else {
|
|
return "99999";
|
|
}
|
|
}
|
|
|
|
private String filterStringIsNotBlank(String str,boolean boo){
|
|
String f = ",";
|
|
return (str == null || str.equals("") || str.equals("null")) ? "" : (boo ? str+f : str);
|
|
}
|
|
|
|
private String dateFormatToStr(String dateStr){
|
|
if(dateStr == null || dateStr.equals("")){
|
|
return "";
|
|
}
|
|
String dateToStr = "";
|
|
try {
|
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
|
dateToStr = dateFormat.format(dateFormat.parse(dateStr.trim().substring(0,10)));
|
|
}catch (Exception e){
|
|
e.getMessage();
|
|
}
|
|
return dateToStr;
|
|
}
|
|
|
|
public Map<String,Object> dealNumberMsg (Map<String,Object> saveMap,SarStandardsInfo infoEO,String getCodeName) {
|
|
if(StringUtils.isNotEmpty(infoEO.getStandYear())){
|
|
String number = getCodeName + " " + infoEO.getStandNumber() + "-" + infoEO.getStandYear();
|
|
saveMap.put("numbershow",number);
|
|
int index = infoEO.getStandNumber().indexOf(".");
|
|
int index1 = infoEO.getStandNumber().indexOf(":");
|
|
String numberExpNull = "";
|
|
if(index > -1){
|
|
numberExpNull = (getCodeName + infoEO.getStandNumber() + "-" + number.replaceAll(" ","")
|
|
+ "-" + getCodeName + infoEO.getStandNumber().substring(0,index) + "-" + infoEO.getStandNumber().substring(0,index));
|
|
} else if (index1 > -1) {
|
|
numberExpNull = getCodeName + infoEO.getStandNumber() + "-" + number.replaceAll(" ","")
|
|
+ "-" + getCodeName + infoEO.getStandNumber().substring(0,index1) + "-" + infoEO.getStandNumber().substring(0,index1);
|
|
} else {
|
|
numberExpNull = getCodeName + infoEO.getStandNumber() + "-" + number.replaceAll(" ","");
|
|
}
|
|
saveMap.put("numberExpNull",numberExpNull);
|
|
} else {
|
|
String num = getCodeName + " " + infoEO.getStandNumber();
|
|
saveMap.put("numbershow",num);
|
|
int index = infoEO.getStandNumber().indexOf(".");
|
|
String numberExpNull = "";
|
|
if(index > -1){
|
|
numberExpNull = getCodeName + infoEO.getStandNumber() + "-" + num.replaceAll(" ","")
|
|
+ "-" + getCodeName + infoEO.getStandNumber().substring(0,index) + "-" + infoEO.getStandNumber().substring(0,index);
|
|
} else {
|
|
numberExpNull = getCodeName + infoEO.getStandNumber() + "-" + num.replaceAll(" ","");
|
|
}
|
|
saveMap.put("numberExpNull",numberExpNull);
|
|
}
|
|
return saveMap;
|
|
}
|
|
|
|
|
|
}
|