|
@@ -11,11 +11,14 @@ import com.diagbot.dto.icss.ResponseData;
|
|
|
import com.diagbot.entity.PreResult;
|
|
|
import com.diagbot.enums.DiseaseTypeEnum;
|
|
|
import com.diagbot.enums.MedicalAdviceEnum;
|
|
|
+import com.diagbot.enums.RedisEnum;
|
|
|
import com.diagbot.enums.StandConvertEnum;
|
|
|
import com.diagbot.facade.CommonFacade;
|
|
|
import com.diagbot.facade.NeoFacade;
|
|
|
import com.diagbot.facade.TranLisConfigIcssFacade;
|
|
|
import com.diagbot.util.ListUtil;
|
|
|
+import com.diagbot.util.RedisUtil;
|
|
|
+import com.diagbot.util.StringUtil;
|
|
|
import com.diagbot.vo.IcssVo;
|
|
|
import com.diagbot.vo.NeoPushVO;
|
|
|
import com.diagbot.vo.PushVO;
|
|
@@ -29,6 +32,7 @@ import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
+import java.lang.reflect.Field;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -48,6 +52,8 @@ public class PushProcess {
|
|
|
TranLisConfigIcssFacade tranLisConfigIcssFacade;
|
|
|
@Autowired
|
|
|
IcssPushServiceClient icssPushServiceClient;
|
|
|
+ @Autowired
|
|
|
+ RedisUtil redisUtil;
|
|
|
|
|
|
|
|
|
public PushDTO processIcss(PushVO pushVo){
|
|
@@ -96,37 +102,78 @@ public class PushProcess {
|
|
|
collect.add(treatDTO);
|
|
|
pushDTO.setTreat(collect);
|
|
|
}
|
|
|
- if (ListUtil.isNotEmpty(pushDiags)) {
|
|
|
- //先把所有疾病推出来
|
|
|
- if (ruleTypeList.contains("7")) {
|
|
|
- List<PushBaseDTO> diseeases = pushDiags.stream().map(x -> {
|
|
|
- PushBaseDTO pushBaseDTO = new PushBaseDTO();
|
|
|
- pushBaseDTO.setName(x);
|
|
|
- return pushBaseDTO;
|
|
|
- }).collect(Collectors.toList());
|
|
|
- diseeases = diseeases.subList(0, diseeases.size() >= length ? length : diseeases.size());
|
|
|
- dis.put(DiseaseTypeEnum.possibleDis.getName(), diseeases);
|
|
|
- pushDTO.setDis(dis);
|
|
|
-
|
|
|
- }
|
|
|
+ if(ListUtil.isNotEmpty(icssVo.getDiagOrder())){
|
|
|
+ List<PreResult> diagOrder = icssVo.getDiagOrder();
|
|
|
//把第一个推送出来的诊断set到diagOrder中,再反推
|
|
|
NeoPushVO pushVO = new NeoPushVO();
|
|
|
DiagVo diagVo = new DiagVo();
|
|
|
- diagVo.setDiags(pushDiags.stream().map(x ->{
|
|
|
+ diagVo.setDiags(diagOrder.stream().map(x ->{
|
|
|
+ String name = x.getName();
|
|
|
Diag diag = new Diag();
|
|
|
- diag.setName(x);
|
|
|
+ String o = (String)redisUtil.get(RedisEnum.diseaseCorrespond.getName() + name);
|
|
|
+ name = StringUtil.isNotBlank(o)?o:name;
|
|
|
+ diag.setName(name);
|
|
|
return diag;
|
|
|
}).collect(Collectors.toList()));
|
|
|
pushVO.setDiagVo(diagVo);
|
|
|
- //调用反推
|
|
|
reversePushPackage(length, pushDTO, ruleTypeList, typeWords, pushVO, dis);
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ boolean allFieldNull = isAllFieldNull(pushDTO);
|
|
|
+ if(allFieldNull){
|
|
|
+ if (ListUtil.isNotEmpty(pushDiags)) {
|
|
|
+ //先把所有疾病推出来
|
|
|
+ if (ruleTypeList.contains("7")) {
|
|
|
+ List<PushBaseDTO> diseeases = pushDiags.stream().map(x -> {
|
|
|
+ PushBaseDTO pushBaseDTO = new PushBaseDTO();
|
|
|
+ pushBaseDTO.setName(x);
|
|
|
+ return pushBaseDTO;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ diseeases = diseeases.subList(0, diseeases.size() >= length ? length : diseeases.size());
|
|
|
+ dis.put(DiseaseTypeEnum.possibleDis.getName(), diseeases);
|
|
|
+ pushDTO.setDis(dis);
|
|
|
|
|
|
+ }
|
|
|
+ //把第一个推送出来的诊断set到diagOrder中,再反推
|
|
|
+ NeoPushVO pushVO = new NeoPushVO();
|
|
|
+ DiagVo diagVo = new DiagVo();
|
|
|
+ diagVo.setDiags(pushDiags.stream().map(x ->{
|
|
|
+ Diag diag = new Diag();
|
|
|
+ diag.setName(x);
|
|
|
+ return diag;
|
|
|
+ }).collect(Collectors.toList()));
|
|
|
+ pushVO.setDiagVo(diagVo);
|
|
|
+ //调用反推
|
|
|
+ reversePushPackage(length, pushDTO, ruleTypeList, typeWords, pushVO, dis);
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
}
|
|
|
|
|
|
|
|
|
+
|
|
|
+
|
|
|
return pushDTO;
|
|
|
}
|
|
|
|
|
|
+ //判断该对象是否: 返回ture表示所有属性为null 返回false表示不是所有属性都是null
|
|
|
+ public static boolean isAllFieldNull(Object obj) throws Exception{
|
|
|
+ Class stuCla = (Class) obj.getClass();// 得到类对象
|
|
|
+ Field[] fs = stuCla.getDeclaredFields();//得到属性集合
|
|
|
+ boolean flag = true;
|
|
|
+ for (Field f : fs) {//遍历属性
|
|
|
+ f.setAccessible(true); // 设置属性是可以访问的(私有的也可以)
|
|
|
+ Object val = f.get(obj);// 得到此属性的值
|
|
|
+ if(val!=null) {//只要有1个属性不为空,那么就不是所有的属性值都为空
|
|
|
+ flag = false;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return flag;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* pushVo转Icss入参
|
|
|
* @param pushVo
|
|
@@ -176,6 +223,7 @@ public class PushProcess {
|
|
|
List<PreResult> diagOrder = pushVo.getDiag().stream().map(x ->{
|
|
|
String name = x.getName();
|
|
|
PreResult preResult = new PreResult();
|
|
|
+ preResult.setName(name);
|
|
|
preResult.setValue(name);
|
|
|
return preResult;
|
|
|
}).collect(Collectors.toList());
|