liusheng
2025-04-15 ba69dcfe19d7718449f45b3aba8e9fc75ed93025
smartor/src/main/java/com/smartor/service/impl/SvyTaskSingleServiceImpl.java
@@ -1,15 +1,14 @@
package com.smartor.service.impl;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson2.JSON;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.enums.HospTypeEnum;
import com.ruoyi.common.enums.ServiceTaskTypeEnum;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.*;
import com.ruoyi.common.utils.http.HttpEntity;
import com.ruoyi.common.utils.http.HttpUtils;
import com.smartor.common.LyraTokenUtil;
import com.smartor.domain.*;
import com.smartor.mapper.BaseOrganizationMapper;
@@ -17,9 +16,6 @@
import com.smartor.service.IServiceTaskService;
import com.smartor.service.ISvyTaskSingleService;
import lombok.extern.slf4j.Slf4j;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -47,6 +43,9 @@
    @Autowired
    private BaseOrganizationMapper baseOrganizationMapper;
    @Autowired
    private RedisCache redisCache;
    @Override
@@ -93,9 +92,35 @@
                serviceTask.setSendTimeSlot(JSON.toJSONString(serviceTaskVO.getSendTimeslot()));
            //修改操作,需要将stopState状态+1
            ServiceTask serviceTask2 = iServiceTaskService.selectServiceTaskByTaskid(serviceTaskVO.getTaskid());
            serviceTask2.setStopState(serviceTask.getStopState() + 1);
//            serviceTask2.setStopState(serviceTask.getStopState() + 1);
            serviceTask2.setTemplateid(Long.valueOf(serviceTaskVO.getLibtemplateid()));
            iServiceTaskService.updateServiceTask(serviceTask2);
            //获取到该任务所有的服务,并从队列里删除
            ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
            serviceSubtaskVO.setTaskid(serviceTask2.getTaskid());
            serviceSubtaskVO.setSendstate(2L);
            List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
            serviceSubtaskVO.setSendstate(1L);
            List<ServiceSubtask> serviceSubtaskList1 = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
            if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {
                if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList.addAll(serviceSubtaskList1);
            } else {
                if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList = serviceSubtaskList1;
            }
            if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {
                for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
                    log.error("insertOrUpdateSvyTask需要移除的subId为:{}", serviceSubtask.getId().toString());
                    serviceSubtaskMapper.deleteServiceSubtaskById(serviceSubtask.getId());
                    redisCache.removeElementFromList("cache-exist", serviceSubtask.getId().toString());
                    redisCache.removeElementFromList("cache-0", serviceSubtask.getId().toString());
                    redisCache.removeElementFromList("cache-1", serviceSubtask.getId().toString());
                    redisCache.removeElementFromList("cache-2", serviceSubtask.getId().toString());
                    redisCache.removeElementFromList("cache-3", serviceSubtask.getId().toString());
                    redisCache.removeElementFromList("cache-4", serviceSubtask.getId().toString());
                }
            }
            if (CollectionUtils.isNotEmpty(serviceTaskVO.getPatTaskRelevances())) {
                for (PatTaskRelevance patTaskRelevance : serviceTaskVO.getPatTaskRelevances()) {
@@ -168,7 +193,7 @@
                patTaskRelevance.setSfzh(serviceSubtask1.getSfzh());
                patTaskRelevance.setPhone(serviceSubtask1.getPhone());
                patTaskRelevance.setAddr(serviceSubtask1.getAddr());
                patTaskRelevance.setDiagname(serviceSubtask1.getDiagname());
                patTaskRelevance.setDiagname(serviceSubtask1.getLeavediagname());
                patTaskRelevance.setPatid(serviceSubtask1.getPatid());
                patTaskRelevance.setSendStatus(serviceSubtask1.getSendstate());
                patTaskRelevances.add(patTaskRelevance);
@@ -182,7 +207,7 @@
                patTaskRelevance.setAddr(serviceSubtask1.getAddr());
                patTaskRelevance.setDeptName(serviceSubtask1.getDeptname());
                patTaskRelevance.setBedNo(serviceSubtask1.getBedNo());
                patTaskRelevance.setDiagname(serviceSubtask1.getDiagname());
                patTaskRelevance.setDiagname(serviceSubtask1.getLeavediagname());
                patTaskRelevance.setPatid(serviceSubtask1.getPatid());
                patTaskRelevance.setSendStatus(serviceSubtask1.getSendstate());
                patTaskRelevances.add(patTaskRelevance);
@@ -201,69 +226,26 @@
        else if (isoperation == 3) serviceSubtaskMapper.deleteServiceSubtaskByCondition(taskId, patid);
    }
    @Override
    public int insertTaskInfo(ServiceTaskInfo serviceTaskVO) {
        if (ObjectUtils.isEmpty(serviceTaskVO)) {
            log.info("新增任务入参为空,请检查入参");
            throw new BaseException("新增任务入参为空,请检查入参");
        }
        Integer integer = 1;
        //ServiceSubtask serviceTask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceSubtask.class);
        //serviceTask.setTextParam(JSON.toJSONString(serviceTaskVO.getTextParam()));
        //将任务信息放到服务表中
        ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceSubtask.class);
        serviceSubtask.setTaskid(serviceTaskVO.getTaskguid());
        ServiceSubtask serviceSubtask = new ServiceSubtask();
        serviceSubtask.setTaskGuid(serviceTaskVO.getTaskguid());
        String type = "0";
        if (serviceTaskVO.getServicetype().equals("监测评估")) {
            type = "1";
        } else if (serviceTaskVO.getServicetype().equals("出院随访")) {
            type = "2";
        } else if (serviceTaskVO.getServicetype().equals("门诊随访")) {
            type = "3";
        } else if (serviceTaskVO.getServicetype().equals("宣教关怀")) {
            type = "4";
        } else if (serviceTaskVO.getServicetype().equals("复诊通知")) {
            type = "5";
        } else if (serviceTaskVO.getServicetype().equals("满意度调查")) {
            type = "6";
        } else if (serviceTaskVO.getServicetype().equals("患者报告")) {
            type = "7";
        } else if (serviceTaskVO.getServicetype().equals("其他通知")) {
            type = "8";
        }
        if (type.equals("0")) {
            type = serviceTaskVO.getServicetype();
        }
        if (StringUtils.isNotEmpty(serviceTaskVO.getServicetype()))
            type = ServiceTaskTypeEnum.getDescByCode(serviceTaskVO.getServicetype());
        serviceSubtask.setServiceType(type);
        //0、1宣教、2门诊、3出院、4复诊、5体检、6问卷、7医技
        String tasktype = "-1";
        if (serviceTaskVO.getTasktype().equals("通知")) {
            tasktype = "0";
        } else if (serviceTaskVO.getTasktype().equals("宣教")) {
            tasktype = "1";
        } else if (serviceTaskVO.getTasktype().equals("门诊")) {
            tasktype = "2";
        } else if (serviceTaskVO.getTasktype().equals("出院")) {
            tasktype = "3";
        } else if (serviceTaskVO.getTasktype().equals("复诊")) {
            tasktype = "4";
        } else if (serviceTaskVO.getTasktype().equals("体检")) {
            tasktype = "5";
        } else if (serviceTaskVO.getTasktype().equals("问卷")) {
            tasktype = "6";
        } else if (serviceTaskVO.getTasktype().equals("医技")) {
            tasktype = "7";
        }
        if (tasktype.equals("-1")) {
            tasktype = serviceTaskVO.getTasktype();
        }
        serviceSubtask.setType(tasktype);
        //第三方传过来的,直接统一定为问卷
        serviceSubtask.setType("2");
        serviceSubtask.setLabelstatus(serviceTaskVO.getTaskstate());
        serviceSubtask.setTaskName(serviceTaskVO.getTaskname());
        serviceSubtask.setTaskDesc(serviceTaskVO.getTaskdesc());
        serviceSubtask.setPreachform(serviceTaskVO.getExemode());
        //serviceSubtask.setUploadTime(serviceTaskVO.setUploadTime());
        //第三方传过来的,直接统一定为"人工"
        serviceSubtask.setPreachform("1");
        serviceSubtask.setCreateBy(serviceTaskVO.getCreateBy());
        serviceSubtask.setCreateTime(serviceTaskVO.getCreateTime());
        serviceSubtask.setOperatorNo(serviceTaskVO.getOperatorno());
@@ -272,8 +254,9 @@
        serviceSubtask.setEndtime(serviceTaskVO.getFinishtime());
        serviceSubtask.setResult(serviceTaskVO.getResult());
        serviceSubtask.setSuggest(serviceTaskVO.getSuggest());
        serviceSubtask.setDelFlag(serviceTaskVO.getDelflag());
        serviceSubtask.setOrgid(serviceTaskVO.getOrgguid());
        serviceSubtask.setPatid(serviceTaskVO.getPatguid());
        serviceSubtask.setPatguid(serviceTaskVO.getPatguid());
        serviceSubtask.setSendname(serviceTaskVO.getPatname());
        if (StringUtils.isNotEmpty(serviceTaskVO.getPatsex()) && serviceTaskVO.getPatsex().equals("男"))
            serviceSubtask.setSex(1L);
@@ -286,31 +269,29 @@
        serviceSubtask.setWechat(serviceTaskVO.getPatopenid());
        serviceSubtask.setInhospno(serviceTaskVO.getInhosno());
        String hosptype = "-1";
        if (serviceTaskVO.getVisittype().equals("门诊")) {
            hosptype = "1";
        } else if (serviceTaskVO.getVisittype().equals("出院")) {
            hosptype = "2";
        } else if (serviceTaskVO.getVisittype().equals("专病")) {
            hosptype = "3";
        } else if (serviceTaskVO.getVisittype().equals("外部导入")) {
            hosptype = "4";
        }
        if (hosptype.equals("-1")) {
            hosptype = serviceTaskVO.getVisittype();
        }
        hosptype = HospTypeEnum.getDescByCode(serviceTaskVO.getVisittype());
        serviceSubtask.setHospType(hosptype);
        serviceSubtask.setHospno(serviceTaskVO.getVisitno());
        serviceSubtask.setAdmindate(serviceTaskVO.getVisittime());
        serviceSubtask.setRoomno(serviceTaskVO.getRoomno());
        serviceSubtask.setBedNo(serviceTaskVO.getBedno());
        serviceSubtask.setDeptname(serviceTaskVO.getDeptname());
        //serviceSubtask.setSendname(serviceTaskVO.gets());
        //serviceSubtask.setPatid(serviceTaskVO.getPid());
        serviceSubtask.setDeptcode(serviceTaskVO.getDeptcode());
        serviceSubtask.setSendstate(1L);
        //serviceSubtask.setHospType(serviceTask.getHospType());
        serviceSubtask.setCreateTime(new Date());
        serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
        integer = serviceSubtask.getId().intValue();
        serviceSubtask.setLeavehospitaldistrictcode(serviceTaskVO.getDistrictcode());
        //先查询一遍,该taskGuid是否存在
        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
        serviceSubtaskVO.setTaskGuid(serviceTaskVO.getTaskguid());
        List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
        if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {
            serviceSubtask.setId(serviceSubtaskList.get(0).getId());
            serviceSubtask.setUpdateTime(new Date());
            serviceSubtaskMapper.updateServiceSubtaskByTaskGuid(serviceSubtask);
        } else {
            serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
        }
        Integer integer = serviceSubtask.getId().intValue();
        log.error("插入的ID是:{}", integer);
        return integer;
    }
@@ -339,7 +320,6 @@
        List<BaseOrganization> baseOrganizations = baseOrganizationMapper.selectBaseOrganizationList(baseOrganization);
        if (CollectionUtils.isNotEmpty(baseOrganizations)) {
            YongHuXX yongHuXX = serviceQueryInfo.getYeWuXX().getYongHuXX();
            yongHuXX.setYongHuID(baseOrganizations.get(0).getOrgid());
            yongHuXX.setZuZhiJGID(baseOrganizations.get(0).getGuid());
            yongHuXX.setZuZhiJGMC(baseOrganizations.get(0).getOrganizationName());
            serviceQueryInfo.getYeWuXX().setYongHuXX(yongHuXX);
@@ -357,11 +337,15 @@
        try {
            String jsonString = objectMapper.writeValueAsString(serviceQueryInfo);
            log.error("token的值为:{}", token);
            result = OkHttpExample.sendPostRequest("https://9.0.124.84:13021/mediinfo-grus-fuwuzxwg/api/esb/lyraSyncRun", jsonString, token);
            result = OkHttpExample.sendPostRequest("https://9.0.124.104:13021/mediinfo-grus-fuwuzxwg/api/esb/lyraSyncRun", jsonString, token);
            map = objectMapper.readValue(result, Map.class);
        } catch (Exception e) {
            e.printStackTrace();
        }
        Integer code = (Integer) map.get("code");
        if (code != null && code == 0) {
            map.put("code", 200);
        }
        return map;
    }