|
|
@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
package com.docus.server.collect.report.noview;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.serializer.SerializerFeature;
|
|
|
|
|
|
|
|
import com.docus.core.util.Func;
|
|
|
|
|
|
|
|
import com.docus.log.context.TrackHelper;
|
|
|
|
|
|
|
|
import com.docus.server.archivefile.pojo.entity.CollectsysDictionary;
|
|
|
|
|
|
|
|
import com.docus.server.archivefile.service.IAfCollectSysDictionary;
|
|
|
|
|
|
|
|
import com.docus.server.collect.web.common.DocusProperties;
|
|
|
|
|
|
|
|
import com.docus.server.collect.web.common.NoViewChNewbornProperties;
|
|
|
|
|
|
|
|
import com.docus.server.collect.web.common.NoViewProperties;
|
|
|
|
|
|
|
|
import com.docus.server.collect.web.common.dto.NoViewConfig;
|
|
|
|
|
|
|
|
import com.docus.server.collect.web.common.dto.ViewReportTwoDto;
|
|
|
|
|
|
|
|
import com.docus.server.collect.web.common.entity.TaskConfig;
|
|
|
|
|
|
|
|
import com.docus.server.collect.web.enums.DisposeModeEnum;
|
|
|
|
|
|
|
|
import com.docus.server.collect.web.enums.HospitalEnum;
|
|
|
|
|
|
|
|
import com.docus.server.collect.web.enums.RedisKeyEnum;
|
|
|
|
|
|
|
|
import com.docus.server.collect.web.utils.MqQueueUtils;
|
|
|
|
|
|
|
|
import com.docus.server.collect.web.utils.RedisMq;
|
|
|
|
|
|
|
|
import com.docus.server.common.message.MqMessage;
|
|
|
|
|
|
|
|
import com.docus.server.common.util.MapObjUtil;
|
|
|
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
|
|
|
import org.springframework.amqp.core.AmqpTemplate;
|
|
|
|
|
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
|
|
|
import java.util.Arrays;
|
|
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 无视图
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
@Component("defNoViewJobResultImpl")
|
|
|
|
|
|
|
|
@Slf4j
|
|
|
|
|
|
|
|
public class DefNoViewJobResultImpl
|
|
|
|
|
|
|
|
extends AbstractNoViewJobResultImpl<List<Map<String, Object>>> {
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
|
|
|
private NoViewProperties noViewProperties;
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
|
|
|
private NoViewChNewbornProperties noViewChNewbornProperties;
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
|
|
|
private DocusProperties docusProperties;
|
|
|
|
|
|
|
|
@Resource(name = "defRedis")
|
|
|
|
|
|
|
|
private RedisMq redisMq;
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
|
|
|
private IAfCollectSysDictionary afCollectSysDictionary;
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
|
|
|
private AmqpTemplate amqpTemplate;
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
|
|
|
MqQueueUtils mqQueueUtils;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void handle(List<Map<String, Object>> results, String dsKey) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void handle(List<Map<String, Object>> results, Map<String, Object> param) {
|
|
|
|
|
|
|
|
Map<String, Object> params = TrackHelper.getParams();
|
|
|
|
|
|
|
|
if (Func.isNull(params)) {
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
TaskConfig taskConfig = (TaskConfig) params.get("taskConfig");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<ViewReportTwoDto> list = new ArrayList<>();
|
|
|
|
|
|
|
|
for (Map<String, Object> map : results) {
|
|
|
|
|
|
|
|
ViewReportTwoDto viewReportTwoDto = MapObjUtil.map2ObjectUnderlined(map, ViewReportTwoDto.class);
|
|
|
|
|
|
|
|
viewReportTwoDto.setIspriority(taskConfig.getPriority());
|
|
|
|
|
|
|
|
list.add(viewReportTwoDto);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
GenerateQueue(list, taskConfig.getSyscodes());
|
|
|
|
|
|
|
|
} catch (Exception ex) {
|
|
|
|
|
|
|
|
log.error("发送队列信息失败,错误信息:" + ex.getMessage() + "." + JSON.toJSONString(dto));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TrackHelper.clear();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void GenerateQueue(List<ViewReportTwoDto> list, String syscodes) {
|
|
|
|
|
|
|
|
// List<NoViewConfig> configs = initNoviewConfig();
|
|
|
|
|
|
|
|
List<CollectsysDictionary> collectsysDictionaries = afCollectSysDictionary.findAll();
|
|
|
|
|
|
|
|
if (!StringUtils.isEmpty(syscodes)) {
|
|
|
|
|
|
|
|
List<String> collectids = Arrays.asList(syscodes.split(","));
|
|
|
|
|
|
|
|
collectsysDictionaries = collectsysDictionaries.stream().filter(t -> collectids.contains(t.getSysCode())).collect(Collectors.toList());
|
|
|
|
|
|
|
|
if (null == collectsysDictionaries) {
|
|
|
|
|
|
|
|
log.error("无可用采集器");
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
for (CollectsysDictionary o : collectsysDictionaries) {
|
|
|
|
|
|
|
|
List<ViewReportTwoDto> disposedata = chDispose(list, o.getSysCode());
|
|
|
|
|
|
|
|
disposedata = Dispose(disposedata, o.getSysCode(), configs);
|
|
|
|
|
|
|
|
if (null == disposedata || disposedata.size() <= 0) {
|
|
|
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
disposedata.forEach(k -> {
|
|
|
|
|
|
|
|
k.setCollectorId(o.getSysCode());
|
|
|
|
|
|
|
|
if (docusProperties.getMode().equals(DisposeModeEnum.mq)) {
|
|
|
|
|
|
|
|
MqMessage mqMessage = new MqMessage();
|
|
|
|
|
|
|
|
String mqKey = String.format("topic_task_%s_queue", getQueueKey(o.getSysCode()));
|
|
|
|
|
|
|
|
mqQueueUtils.DeclareQueue(mqKey);
|
|
|
|
|
|
|
|
mqMessage.setMessageBody(JSON.toJSONString(k, SerializerFeature.WriteDateUseDateFormat, SerializerFeature.WriteMapNullValue));
|
|
|
|
|
|
|
|
amqpTemplate.convertAndSend("", mqKey, mqMessage);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (docusProperties.getMode().equals(DisposeModeEnum.redis)) {
|
|
|
|
|
|
|
|
redisMq.push(RedisKeyEnum.QUEUEREDISKEY, JSON.toJSONString(k, SerializerFeature.WriteDateUseDateFormat, SerializerFeature.WriteMapNullValue));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static String getQueueKey(String sysCode) {
|
|
|
|
|
|
|
|
TableJsonRead tableJsonRead = new TableJsonRead();
|
|
|
|
|
|
|
|
JSONObject read = tableJsonRead.Read("docus", "queuemerge", JSONObject.class);
|
|
|
|
|
|
|
|
if (read == null || read.size() <= 0) {
|
|
|
|
|
|
|
|
return sysCode;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
for (Map.Entry<String, Object> merge : read.entrySet()) {
|
|
|
|
|
|
|
|
if (Arrays.asList(String.valueOf(merge.getKey()).split(StrUtil.COMMA)).contains(sysCode)) {
|
|
|
|
|
|
|
|
if (StrUtil.isBlank(String.valueOf(merge.getValue())) || "null".equals(String.valueOf(merge.getValue()))) {
|
|
|
|
|
|
|
|
return sysCode;
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
return String.valueOf(merge.getValue());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// 合并 主键包含 sysCode,则返回对应的 QueueCode
|
|
|
|
|
|
|
|
return sysCode;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 澄海数据处理
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param list
|
|
|
|
|
|
|
|
* @param syscode
|
|
|
|
|
|
|
|
* @return
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
private List<ViewReportTwoDto> chDispose(List<ViewReportTwoDto> list, String syscode) {
|
|
|
|
|
|
|
|
List<ViewReportTwoDto> datas = new ArrayList<>();
|
|
|
|
|
|
|
|
if (!(HospitalEnum.ch.value() == noViewProperties.getHospital() && syscode.equals(noViewChNewbornProperties.getSyscode()))) {
|
|
|
|
|
|
|
|
return list;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
datas = list.stream().filter(t -> t.getDisDeptName().equals(noViewChNewbornProperties.getDisdeptname())).collect(Collectors.toList());
|
|
|
|
|
|
|
|
return datas;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 指定队列,指定科室数据处理
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param list
|
|
|
|
|
|
|
|
* @param syscode
|
|
|
|
|
|
|
|
* @return
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
private List<ViewReportTwoDto> Dispose(List<ViewReportTwoDto> list, String syscode, List<NoViewConfig> configs) {
|
|
|
|
|
|
|
|
List<ViewReportTwoDto> datas = new ArrayList<>();
|
|
|
|
|
|
|
|
if (null == configs || configs.size() == 0) {
|
|
|
|
|
|
|
|
return list;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
NoViewConfig config = configs.stream().filter(t -> t.getSyscode().equals(syscode)).findFirst().orElse(null);
|
|
|
|
|
|
|
|
if (null == config) {
|
|
|
|
|
|
|
|
return list;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
datas = list.stream().filter(t -> t.getDisDeptName().equals(config.getDeptname())).collect(Collectors.toList());
|
|
|
|
|
|
|
|
return datas;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|