|  | @@ -12,10 +12,12 @@ import org.jetbrains.annotations.NotNull;
 | 
	
		
			
				|  |  |  import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  |  import org.springframework.transaction.annotation.Transactional;
 | 
	
		
			
				|  |  |  import org.springframework.web.client.RestTemplate;
 | 
	
		
			
				|  |  | +import org.yaml.snakeyaml.events.Event;
 | 
	
		
			
				|  |  |  import thyyxxk.webserver.config.exception.ExceptionEnum;
 | 
	
		
			
				|  |  |  import thyyxxk.webserver.constants.Capacity;
 | 
	
		
			
				|  |  |  import thyyxxk.webserver.constants.EmrType;
 | 
	
		
			
				|  |  |  import thyyxxk.webserver.dao.his.LoginDao;
 | 
	
		
			
				|  |  | +import thyyxxk.webserver.dao.his.zhuyuanyisheng.emr.EmrFolderDao;
 | 
	
		
			
				|  |  |  import thyyxxk.webserver.dao.his.zhuyuanyisheng.emr.EmrPatientDao;
 | 
	
		
			
				|  |  |  import thyyxxk.webserver.entity.ResultVo;
 | 
	
		
			
				|  |  |  import thyyxxk.webserver.entity.datamodify.YzTemperature;
 | 
	
	
		
			
				|  | @@ -31,12 +33,14 @@ import thyyxxk.webserver.entity.zhuyuanyisheng.emr.*;
 | 
	
		
			
				|  |  |  import thyyxxk.webserver.entity.zhuyuanyisheng.jianyanjiancha.YshYjReq;
 | 
	
		
			
				|  |  |  import thyyxxk.webserver.entity.zhuyuanyisheng.shoushu.OpRecord;
 | 
	
		
			
				|  |  |  import thyyxxk.webserver.service.PublicServer;
 | 
	
		
			
				|  |  | +import thyyxxk.webserver.service.RedisServer;
 | 
	
		
			
				|  |  |  import thyyxxk.webserver.service.externalhttp.WebSocketService;
 | 
	
		
			
				|  |  |  import thyyxxk.webserver.service.externalhttp.emr.EmrEditor;
 | 
	
		
			
				|  |  |  import thyyxxk.webserver.service.redislike.RedisLikeService;
 | 
	
		
			
				|  |  |  import thyyxxk.webserver.utils.*;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import java.util.*;
 | 
	
		
			
				|  |  | +import java.util.stream.Collector;
 | 
	
		
			
				|  |  |  import java.util.stream.Collectors;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -45,6 +49,9 @@ import java.util.stream.Collectors;
 | 
	
		
			
				|  |  |  public class EmrServer {
 | 
	
		
			
				|  |  |      private final EmrPatientDao dao;
 | 
	
		
			
				|  |  |      private final EmrEditor emr;
 | 
	
		
			
				|  |  | +    private final EmrFolderDao folderDao;
 | 
	
		
			
				|  |  | +    private final RedisServer redisServer;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      private final PublicServer publicServer;
 | 
	
		
			
				|  |  |      private final LoginDao loginDao;
 | 
	
		
			
				|  |  |      private final RedisLikeService redisLikeService;
 | 
	
	
		
			
				|  | @@ -53,9 +60,11 @@ public class EmrServer {
 | 
	
		
			
				|  |  |      private static final Map<String, String> GROUP_MAP = new HashMap<>();
 | 
	
		
			
				|  |  |      private final String HOSPITAL_WIDE_FOLDER = "3b1655a006ff11edbc820dada413ba28";
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    public EmrServer(EmrPatientDao dao, EmrEditor emr, PublicServer publicServer, LoginDao loginDao, RedisLikeService redisLikeService, WebSocketService socketService) {
 | 
	
		
			
				|  |  | +    public EmrServer(EmrPatientDao dao, EmrEditor emr, EmrFolderDao folderDao, RedisServer redisServer, PublicServer publicServer, LoginDao loginDao, RedisLikeService redisLikeService, WebSocketService socketService) {
 | 
	
		
			
				|  |  |          this.dao = dao;
 | 
	
		
			
				|  |  |          this.emr = emr;
 | 
	
		
			
				|  |  | +        this.folderDao = folderDao;
 | 
	
		
			
				|  |  | +        this.redisServer = redisServer;
 | 
	
		
			
				|  |  |          this.publicServer = publicServer;
 | 
	
		
			
				|  |  |          this.loginDao = loginDao;
 | 
	
		
			
				|  |  |          this.redisLikeService = redisLikeService;
 | 
	
	
		
			
				|  | @@ -69,40 +78,39 @@ public class EmrServer {
 | 
	
		
			
				|  |  |       * @param times 住院次数
 | 
	
		
			
				|  |  |       * @return 数据
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  | -    public ResultVo<List<JSONObject>> getPatientDataTree(String patNo, Integer times) {
 | 
	
		
			
				|  |  | +    public ResultVo<List<EmrFolder>> getPatientDataTree(String patNo, Integer times) {
 | 
	
		
			
				|  |  |          List<EmrPatientData> list = dao.getPatientData(patNo, times);
 | 
	
		
			
				|  |  | -        List<JSONObject> tree = new ArrayList<>(list.size());
 | 
	
		
			
				|  |  | +        List<EmrFolder> folder = redisServer.getData("emrFolder", () -> folderDao.selectList(null));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          if (ListUtil.isBlank(list)) {
 | 
	
		
			
				|  |  | -            return ResultVoUtil.success(tree);
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        if (TEMPLATE_DATA.isEmpty()) {
 | 
	
		
			
				|  |  | -            tree();
 | 
	
		
			
				|  |  | +            return ResultVoUtil.success(folder);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        Map<String, JSONObject> temp = JSON.parseObject(JSON.toJSONString(TEMPLATE_DATA),
 | 
	
		
			
				|  |  | -                new TypeReference<LinkedHashMap<String, JSONObject>>() {
 | 
	
		
			
				|  |  | -                });
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +        Map<String, EmrFolder> folderMap = folder.stream().collect(
 | 
	
		
			
				|  |  | +                Collectors.toMap(EmrFolder::getId, a -> a, (k1, k2) -> k1)
 | 
	
		
			
				|  |  | +        );
 | 
	
		
			
				|  |  | +        List<EmrPatientData> noFolder = new ArrayList<>();
 | 
	
		
			
				|  |  |          list.forEach(item -> {
 | 
	
		
			
				|  |  | -            JSONObject js = temp.get(item.getParent());
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            if (js == null) {
 | 
	
		
			
				|  |  | -                js = temp.get(HOSPITAL_WIDE_FOLDER);
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            if (js.getJSONArray("children") == null) {
 | 
	
		
			
				|  |  | -                js.put("children", new ArrayList<>());
 | 
	
		
			
				|  |  | +            String parent = item.getParent();
 | 
	
		
			
				|  |  | +            EmrFolder emrFolder = folderMap.get(parent);
 | 
	
		
			
				|  |  | +            if (null != emrFolder) {
 | 
	
		
			
				|  |  | +                if (emrFolder.getChildren() == null) {
 | 
	
		
			
				|  |  | +                    emrFolder.setChildren(new ArrayList<>());
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                emrFolder.getChildren().add(item);
 | 
	
		
			
				|  |  | +            } else {
 | 
	
		
			
				|  |  | +                noFolder.add(item);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            js.getJSONArray("children").add(item);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  | +        folder.add(EmrFolder.builder()
 | 
	
		
			
				|  |  | +                .id("WEIFENLEI")
 | 
	
		
			
				|  |  | +                .name("可拖动病历调整到合适文件夹,右键确认排序")
 | 
	
		
			
				|  |  | +                .children(new ArrayList<>(noFolder))
 | 
	
		
			
				|  |  | +                .sort(0)
 | 
	
		
			
				|  |  | +                .build());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        tree.addAll(temp.values());
 | 
	
		
			
				|  |  | -        return ResultVoUtil.success(tree);
 | 
	
		
			
				|  |  | +        folder.sort(Comparator.comparing((o) -> o.getSort() == null ? 0 : o.getSort()));
 | 
	
		
			
				|  |  | +        return ResultVoUtil.success(folder);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -863,7 +871,6 @@ public class EmrServer {
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              GROUP_MAP.put(item.getString("code"), item.getString("parent"));
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -//        log.info("获取所有的父节点:{}", JSON.toJSONString(TEMPLATE_DATA));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      private void 重置父级节点() {
 |