陈昶聿
5 天以前 d9b1730bab30deb63273f17d4caf9aaf82d3e730
smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
@@ -1,11 +1,13 @@
package com.smartor.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.google.gson.Gson;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.entity.SysUserDept;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import com.smartor.domain.*;
import com.smartor.mapper.*;
@@ -230,11 +232,13 @@
            sysUserDept.setDelFlag(0L);
            sysUserDept.setUserId(sysUser.getUserId());
            sysUserDept.setUserCode(sysUser.getUserCode());
            sysUserDept.setDeptType("2");
            sysUserDept.setDeptType(sysDept.getDeptType());
            sysUserDept.setGuid(externalUserDeptInfo.getZuZhiJGID());
            sysUserDept.setDeptId(sysDept.getDeptId());
            sysUserDept.setDeptCode(sysDept.getDeptCode());
            sysUserDept.setDeptName(sysDept.getDeptName());
            sysUserDept.setOrgid(externalUserDeptInfo.getZuZhiJGID());
            sysUserDept.setCampusid("1");
            sysUserDept.setCreateBy(externalUserDeptInfo.getChuangJianRXM());
            sysUserDept.setCreateTime(externalUserDeptInfo.getChuangJianSJ());
@@ -252,9 +256,9 @@
            sysUserDeptVo.setCampusid("1");
            //根据userName判断一下,是不是之前有新增
            SysUserDept sysUserDeptOld = null;
            List<SysUserDept> SysUserDeptList = sysUserDeptMapper.selectSysUserDeptList(sysUserDeptVo);
            if (CollectionUtils.isNotEmpty(SysUserDeptList)) {
                sysUserDeptOld = SysUserDeptList.get(0);
            List<SysUserDept> sysUserDeptList = sysUserDeptMapper.selectSysUserDeptList(sysUserDeptVo);
            if (CollectionUtils.isNotEmpty(sysUserDeptList)) {
                sysUserDeptOld = sysUserDeptList.get(0);
            }
            if (ObjectUtils.isEmpty(sysUserDeptOld)) {
                int i = sysUserDeptMapper.insertSysUserDept(sysUserDept);
@@ -267,6 +271,26 @@
            //更新sys-user deptId
            if(StringUtils.isNotEmpty(externalUserDeptInfo.getKeShiID())){
                sysUser.setDeptId(Long.valueOf(externalUserDeptInfo.getKeShiID()));
                //查询用户科室关系
                SysUserDept sysUserDeptTemp = new SysUserDept();
                sysUserDeptTemp.setUserId(sysUser.getUserId());
                sysUserDeptTemp.setOrgid(externalUserDeptInfo.getZuZhiJGID());
                List<SysUserDept> sysUserDepts = sysUserDeptMapper.selectSysUserDeptList(sysUserDeptTemp);
                List<String> userDepts = sysUserDepts.stream().map(SysUserDept::getDeptCode).
                        distinct().collect(Collectors.toList());
                //和queryHospUserInfoList采集的数据格式保持一致
                List<List<String>> userDeptsList = new ArrayList<>();
                if(!userDepts.isEmpty()){
                    for(String userDept: userDepts){
                        List<String> uDept = new ArrayList<>();
                        uDept.add(userDept);
                        userDeptsList.add(uDept);
                    }
                }
                //将部门我病区放到指定字段中
                Gson gson = new Gson();
                sysUser.setHospInfo(gson.toJson(userDeptsList));
                sysUserMapper.updateUser(sysUser);
            }
        }
@@ -974,6 +998,48 @@
        return true;
    }
    /**
     * 目前,从急诊抢救后转入住院的患者,其数据采集存在一个问题:有两条入院记录。
     * 第一条(急诊科室的)记录缺少“出院时间”,导致该记录在统计中始终显示为“在院”,
     * 而第二条(转入科室的)记录是完整的。我们需要采集 JZ_ZY_LiQiang接口的数据,
     * 里面的离抢时间来反填第一条记录的“出院时间”,从而修正第一条记录的状态。
     * @param dataMap
     * @return
     */
    @Override
    public Boolean editRescueFinishedOutHospInfo(Map dataMap) {
        log.info("ServiceExternalServiceImpl---editRescueFinishedOutHospInfo的新增的值为:{}", dataMap);
        Map yeWuXX = (Map) dataMap.get("YeWuXX");
        //病人信息
        Map<String, Object> BingRenXX = ObjectUtils.isNotEmpty(yeWuXX) ? (Map<String, Object>) yeWuXX.get("BingRenXX") : null;
        //就诊信息
        Map<String, Object> JiuZhenXX = ObjectUtils.isNotEmpty(yeWuXX) ? (Map<String, Object>) yeWuXX.get("JiuZhenXX") : null;
        ExternalInHospPatientInfo externalInHospPatientInfo = BeanUtil.mapToBean(BingRenXX, ExternalInHospPatientInfo.class, true);
        PatMedInhosp patMedInhosp = new PatMedInhosp();
        patMedInhosp.setInhospno(externalInHospPatientInfo.getBingAnHao());
        patMedInhosp.setSerialnum(externalInHospPatientInfo.getJiuZhenYWID());
        List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
        PatMedInhosp patMedInhosp1 = null;
        if (CollectionUtils.isNotEmpty(patMedInhospList)) patMedInhosp1 = patMedInhospList.get(0);
        if(ObjectUtils.isNotEmpty(patMedInhosp1)){
            if (ObjectUtils.isNotEmpty(JiuZhenXX.get("LiQiangSJ"))) {
                try {
                    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                    patMedInhosp1.setEndtime(simpleDateFormat.parse(JiuZhenXX.get("LiQiangSJ").toString()));
                    patMedInhosp1.setUpdateTime(new Date());
                    int i = patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
                    if (i != 1) return false;
                } catch (ParseException e) {
                    e.printStackTrace();
                }
            }
            return true;
        }else {
            log.error("ServiceExternalServiceImpl---editRescueFinishedOutHospInfo的没有找到对应的出院记录:{}", dataMap);
            return false;
        }
    }
    @Override
    public Boolean addFinshJZInfo(Map dataMap) {
        log.info("ServiceExternalServiceImpl---addFinshJZInfo的新增的值为:{}", dataMap);
@@ -1906,6 +1972,9 @@
            case "JZ_ZY_YuChuYuan":
                log.info("患者预出院入参类型为:{}", type);
                return addPreOutHospInfo(dataMap);
            case "JZ_ZY_LiQiang":
                log.info("患者离抢入参类型为:{}", type);
                return editRescueFinishedOutHospInfo(dataMap);
            case "JG_ZZ_BingQu":
                log.info("病区信息入参类型为:{}", type);
                return addWardAreaInfo(dataMap);