Browse Source

Merge branch 'dev' of http://192.168.1.220:10080/Amoy2/wlyy2.0 into dev

# Conflicts:
#	common/common-entity/src/main/java/com/yihu/jw/entity/specialist/rehabilitation/PatientRehabilitationPlanDO.java
wangzhinan 5 years ago
parent
commit
62b54f3ceb

+ 2 - 0
business/base-service/src/main/java/com/yihu/jw/doctor/dao/BaseDoctorHospitalDao.java

@ -13,6 +13,8 @@ public interface BaseDoctorHospitalDao extends PagingAndSortingRepository<BaseDo
    List<BaseDoctorHospitalDO> findByOrgCodeAndDoctorCode(String orgCode, String doctorCode);
    List<BaseDoctorHospitalDO> findByDeptCodeAndDoctorCode(String deptCode, String doctorCode);
    @Query("select id from BaseDoctorHospitalDO where doctorCode = ?1")
    Set<Object> findIdListByOrgCodeAndDoctorCode(String doctorCode);

+ 2 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/dict/WlyyChargeDictDao.java

@ -16,4 +16,6 @@ public interface WlyyChargeDictDao extends PagingAndSortingRepository<WlyyCharge
    List<WlyyChargeDictDO>  findByDeptTypeCode(String deptTypeCode);
    WlyyChargeDictDO  findByChargeTypeAndDeptTypeCode(String chargeType,String deptTypeCode);
    WlyyChargeDictDO  findByChargeType(String chargeType);
}

+ 361 - 6
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/entrance/XzzxEntranceService.java

@ -3,21 +3,42 @@ package com.yihu.jw.hospital.prescription.service.entrance;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.dict.dao.BaseDictJobTitleDao;
import com.yihu.jw.dict.dao.DictDoctorDutyDao;
import com.yihu.jw.dict.dao.DictHospitalDeptDao;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao;
import com.yihu.jw.doctor.dao.BaseDoctorRoleDao;
import com.yihu.jw.entity.base.dict.DictDoctorDutyDO;
import com.yihu.jw.entity.base.dict.DictHospitalDeptDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorHospitalDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorRoleDO;
import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
import com.yihu.jw.entity.hospital.dict.WlyyChargeDictDO;
import com.yihu.jw.entity.hospital.mapping.DoctorMappingDO;
import com.yihu.jw.hospital.dict.WlyyChargeDictDao;
import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
import com.yihu.jw.hospital.mapping.dao.DoctorMappingDao;
import com.yihu.jw.rm.base.BaseRequestMapping;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.utils.StringUtil;
import com.yihu.jw.utils.WebserviceUtil;
import com.yihu.utils.security.MD5;
import net.sf.json.xml.XMLSerializer;
import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.lang3.StringUtils;
import org.checkerframework.checker.units.qual.A;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Random;
/**
 * 心脏中心内网his对接服务
@ -34,6 +55,18 @@ public class XzzxEntranceService {
    @Autowired
    private DictHospitalDeptDao dictHospitalDeptDao;
    @Autowired
    private DictDoctorDutyDao dictDoctorDutyDao;
    @Autowired
    private WlyyChargeDictDao chargeDictDao;
    @Autowired
    private BaseDoctorDao doctorDao;
    @Autowired
    private BaseDoctorHospitalDao doctorHospitalDao;
    @Autowired
    private BaseDoctorRoleDao doctorRoleDao;
    @Autowired
    private DoctorMappingDao doctorMappingDao;
    public String getXzzxWebServiceInfo(String api, Map<String,String> params)throws Exception{
@ -56,7 +89,7 @@ public class XzzxEntranceService {
     * 获取部门信息
     * @return
     */
    public String getDeptInfo()throws Exception{
    public String getDeptInfo(String code)throws Exception{
        String api = "GetDeptInfo";
        String key ="bvvsf3JA0mUXMU+mVnMaOQ==";
        String msgHeader ="<?xml version=\"1.0\" encoding=\"utf-8\"?> " +
@ -66,8 +99,12 @@ public class XzzxEntranceService {
                "   <callOperator></callOperator> " +
                "   <certificate>"+key+"</certificate> " +
                "</root>";
        String condition ="";
        if (StringUtils.isNoneBlank(code)){
            condition = "<code>"+code+"</code>";
        }
        String msgBody ="<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                "<root></root>";
                "<root>"+condition+"</root>";
        Map<String,String> params = new HashedMap();
        params.put("msgHeader",msgHeader);
@ -80,27 +117,37 @@ public class XzzxEntranceService {
        String json = xmlSerializer.read(xml).toString();
        logger.info("getDeptInfo json:"+json);
        JSONArray depts = JSON.parseArray(json);
        JSONArray depts = JSONArray.parseArray(json).getJSONArray(0);
        if(depts!=null&&depts.size()>0){
            for(int i=0;i<depts.size();i++){
                JSONObject dept = (JSONObject) depts.get(0);
                JSONObject dept = depts.getJSONObject(i);
                String deptCode = dept.getString("code");
                List<DictHospitalDeptDO> list = dictHospitalDeptDao.findByOrgCodeAndCode(deptCode,"350211A5010");
                String consultDeptFlag=null;
                if (!dept.getString("consultDeptFlag").equalsIgnoreCase("[]")){
                    consultDeptFlag = dept.getString("consultDeptFlag");
                }
                if(list!=null&&list.size()>0){
                    DictHospitalDeptDO deptDO = list.get(0);
                    deptDO.setCode(deptCode);
                    deptDO.setName(dept.getString("name"));
                    deptDO.setConsultDeptFlag(dept.getString("consultDeptFlag"));
                    if (StringUtils.isNoneBlank(consultDeptFlag)){
                        deptDO.setConsultDeptFlag(consultDeptFlag);
                    }
                    deptDO.setCreateTime(new Date());
                    dictHospitalDeptDao.save(deptDO);
                }else {
                    DictHospitalDeptDO deptDO = new DictHospitalDeptDO();
                    deptDO.setCode(deptCode);
                    deptDO.setName(dept.getString("name"));
                    deptDO.setConsultDeptFlag(dept.getString("consultDeptFlag"));
                    if (StringUtils.isNoneBlank(consultDeptFlag)){
                        deptDO.setConsultDeptFlag(consultDeptFlag);
                    }
                    deptDO.setOrgCode("350211A5010");
                    deptDO.setCreateTime(new Date());
                    dictHospitalDeptDao.save(deptDO);
                }
            }
@ -109,4 +156,312 @@ public class XzzxEntranceService {
        return json;
    }
    /**
     * 同步医生信息
     * @return
     */
    public String getDoctorInfo(String idcard)throws Exception{
        String api = "GetDoctorInfo";
        String key ="bvvsf3JA0mUXMU+mVnMaOQ==";
        String msgHeader ="<?xml version=\"1.0\" encoding=\"utf-8\"?> " +
                "<root> " +
                "   <serverName>"+api+"</serverName>  " +
                "   <format>xml</format>" +
                "   <callOperator></callOperator> " +
                "   <certificate>"+key+"</certificate> " +
                "</root>";
        String condition ="";
        if (StringUtils.isNoneBlank(idcard)){
            condition = "<Idcard>"+idcard+"</Idcard>";
        }
        String msgBody ="<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                "<root>"+condition+"</root>";
        Map<String,String> params = new HashedMap();
        params.put("msgHeader",msgHeader);
        params.put("msgBody",msgBody);
        logger.info("getDoctorInfo params:"+params.toString());
        String xml = getXzzxWebServiceInfo("CallInterface",params);
        XMLSerializer xmlSerializer = new XMLSerializer();
        String json = xmlSerializer.read(xml).toString();
        logger.info("getDoctorInfo json:"+json);
        JSONArray doctors = JSONArray.parseArray(json);
        findWlyyDoctor(doctors);
        return json;
    }
    public String findWlyyDoctor(JSONArray doctors)throws Exception{
        logger.info("doctors size:"+doctors.size());
        if(doctors!=null&&doctors.size()>0){
            Integer count = 0;
            for(int i=0;i<doctors.size();i++){
                try {
                    JSONObject doctorJson = doctors.getJSONObject(i);
                    String idcard = doctorJson.getString("idcard");
                    if(StringUtils.isNotBlank(idcard)) {
                        List<BaseDoctorDO> ds = doctorDao.findByIdcard(idcard);
                        if (ds != null && ds.size() > 0) {
                            //已有账号更新
                            BaseDoctorDO doctor = ds.get(0);
                            doctor.setName(doctorJson.getString("name"));
                            doctor.setIdcard(doctorJson.getString("idcard"));
                            doctor.setMobile(doctorJson.getString("mobile"));
                            doctor.setSex(Integer.parseInt(IdCardUtil.getSexForIdcard_new(idcard)));
                            doctor.setBirthday(IdCardUtil.getBirthdayForIdcard(idcard));
                            doctor.setProvinceCode("350000");
                            doctor.setProvinceName("福建省");
                            doctor.setTownCode("350203");
                            doctor.setTownName("思明区");
                            doctor.setCityCode("350200");
                            doctor.setCityName("厦门市");
                            doctor.setExpertise(doctorJson.getString("expertise"));
                            doctor.setIntroduce(doctorJson.getString("introduce"));
                            doctor.setPhoto(doctorJson.getString("photo"));
                            doctor.setIscertified(doctorJson.getString("iscertified"));
                            doctor.setSpell(doctorJson.getString("spell"));
//                                String salt = randomString(5);
//                                String pw = idcard.substring(idcard.length() - 6);
//                                doctor.setPassword(MD5.md5Hex(pw + "{" + salt + "}"));
//                                doctor.setSalt(salt);
                            doctor.setJobTitleCode(doctorJson.getString("jobTitleCode"));
                            doctor.setJobTitleName(doctorJson.getString("jobTitleName"));
                            doctor.setChargeType(doctorJson.getString("chargeType"));
                            doctorDao.save(doctor);
                            //更新机构科室信息
                            String dept =doctorJson.getString("dept");
                            if(StringUtils.isNotBlank(dept)){
                                List<BaseDoctorHospitalDO> hospitalDOs = doctorHospitalDao.findByDeptCodeAndDoctorCode(dept,doctor.getId());
                                if(hospitalDOs!=null&&hospitalDOs.size()>0){
                                    BaseDoctorHospitalDO hospitalDO = hospitalDOs.get(0);
                                    hospitalDO.setOrgCode("350211A5010");
                                    hospitalDO.setOrgName("厦门大学附属心血管病医院");
                                    hospitalDO.setDeptCode(doctorJson.getString("dept"));
                                    hospitalDO.setDeptName(doctorJson.getString("deptName"));
                                    doctorHospitalDao.save(hospitalDO);
                                }
                            }
                            List<DoctorMappingDO> doctorMappingDOS = doctorMappingDao.findByOrgCodeAndMappingCode("350211A5010",doctorJson.getString("code"));
                            if (doctorMappingDOS!=null&&doctorMappingDOS.size()!=0){
                                DoctorMappingDO doctorMappingDO = doctorMappingDOS.get(0);
                                doctorMappingDO.setIdcard(idcard);
                                doctorMappingDO.setDoctor(doctor.getId());
                                doctorMappingDO.setOrgCode("350211A5010");
                                doctorMappingDO.setOrgName("厦门大学附属心血管病医院");
                                doctorMappingDO.setMappingCode(doctorJson.getString("code"));
                                doctorMappingDO.setMappingName(doctorJson.getString("name"));
                                doctorMappingDO.setDoctorName(doctor.getName());
                                doctorMappingDO.setMappingDeptName(doctorJson.getString("deptName"));
                                doctorMappingDO.setMappingDept(doctorJson.getString("dept"));
                                doctorMappingDO.setMappingJob(doctorJson.getString("jobTitleCode"));
                                doctorMappingDO.setMappingJobName(doctorJson.getString("jobTitleName"));
                                doctorMappingDO.setCreateTime(new Date());
                                doctorMappingDao.save(doctorMappingDO);
                            }
                        } else {
                            BaseDoctorDO doctor = new BaseDoctorDO();
                            doctor.setName(doctorJson.getString("name"));
                            doctor.setIdcard(doctorJson.getString("idcard"));
                            doctor.setMobile(doctorJson.getString("mobile"));
                            doctor.setSex(Integer.parseInt(IdCardUtil.getSexForIdcard_new(idcard)));
                            doctor.setBirthday(IdCardUtil.getBirthdayForIdcard(idcard));
                            doctor.setProvinceCode("350000");
                            doctor.setProvinceName("福建省");
                            doctor.setTownCode("350203");
                            doctor.setTownName("思明区");
                            doctor.setCityCode("350200");
                            doctor.setCityName("厦门市");
                            doctor.setExpertise(doctorJson.getString("expertise"));
                            doctor.setIntroduce(doctorJson.getString("introduce"));
                            doctor.setPhoto(doctorJson.getString("photo"));
                            doctor.setIscertified(doctorJson.getString("iscertified"));
                            doctor.setSpell(doctorJson.getString("spell"));
                            doctor.setOutpatientType("zj");
                            //认证信息设置
                            String salt = randomString(5);
                            String pw = idcard.substring(idcard.length() - 6);
                            doctor.setPassword(MD5.md5Hex(pw + "{" + salt + "}"));
                            doctor.setSalt(salt);
                            doctor.setDel("1");
                            doctor.setEnabled(1);
                            doctor.setLocked(0);
                            doctor.setCreateTime(new Date());
                            doctor.setJobTitleCode(doctorJson.getString("jobTitleCode"));
                            doctor.setJobTitleName(doctorJson.getString("jobTitleName"));
                            BaseDoctorDO temp = doctorDao.save(doctor);
                            //机构信息部门信息
                            BaseDoctorHospitalDO hospitalDO = new BaseDoctorHospitalDO();
                            hospitalDO.setDoctorCode(temp.getId());
                            hospitalDO.setOrgCode("350211A5010");
                            hospitalDO.setOrgName("厦门大学附属心血管病医院");
                            hospitalDO.setDeptCode(doctorJson.getString("dept"));
                            hospitalDO.setDeptName(doctorJson.getString("deptName"));
                            hospitalDO.setDel("1");
                            doctorHospitalDao.save(hospitalDO);
                            BaseDoctorRoleDO role = new BaseDoctorRoleDO();
                            role.setDoctorCode(temp.getId());
                            role.setRoleCode("specialist");
                            doctorRoleDao.save(role);
                            DoctorMappingDO mappingDO = new DoctorMappingDO();
                            mappingDO.setIdcard(idcard);
                            mappingDO.setDoctor(temp.getId());
                            mappingDO.setOrgCode("350211A5010");
                            mappingDO.setOrgName("厦门大学附属心血管病医院");
                            mappingDO.setMappingCode(doctorJson.getString("code"));
                            mappingDO.setMappingName(doctorJson.getString("name"));
                            mappingDO.setDoctorName(temp.getName());
                            mappingDO.setMappingDeptName(doctorJson.getString("deptName"));
                            mappingDO.setMappingDept(doctorJson.getString("dept"));
                            mappingDO.setMappingJob(doctorJson.getString("jobTitleCode"));
                            mappingDO.setMappingJobName(doctorJson.getString("jobTitleName"));
                            mappingDO.setCreateTime(new Date());
                            doctorMappingDao.save(mappingDO);
                            count++;
                        }
                    }
                }catch (Exception e){
                    logger.info("data error");
                }
            }
            logger.info("add count:"+count);
        }
        return "ok";
    }
    public String randomString(int length) {
        String str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        StringBuffer buffer = new StringBuffer();
        Random random = new Random();
        for(int i = 0; i < length; ++i) {
            int pos = random.nextInt(str.length());
            buffer.append(str.charAt(pos));
        }
        return buffer.toString();
    }
    /**
     * 获取职称字典
     * @return
     */
    public String getJobTitle()throws Exception{
        String api = "GetTitleInfo";
        String key ="bvvsf3JA0mUXMU+mVnMaOQ==";
        String msgHeader ="<?xml version=\"1.0\" encoding=\"utf-8\"?> " +
                "<root> " +
                "   <serverName>"+api+"</serverName>  " +
                "   <format>xml</format>" +
                "   <callOperator></callOperator> " +
                "   <certificate>"+key+"</certificate> " +
                "</root>";
        String msgBody ="<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                "<root></root>";
        Map<String,String> params = new HashedMap();
        params.put("msgHeader",msgHeader);
        params.put("msgBody",msgBody);
        logger.info("getJobTitleInfo params:"+params.toString());
        String xml = getXzzxWebServiceInfo("CallInterface",params);
        XMLSerializer xmlSerializer = new XMLSerializer();
        String json = xmlSerializer.read(xml).toString();
        logger.info("getJobTitleInfo json:"+json);
        JSONArray list = JSONArray.parseArray(json).getJSONArray(0);
        if(list!=null&&list.size()>0){
            for(int i=0;i<list.size();i++){
                JSONObject object = list.getJSONObject(i);
                logger.info("getJobTitleInfo object:"+object.toJSONString());
                String code = object.getString("code");
                String name = object.getString("name");
                DictDoctorDutyDO dictDoctorDutyDO = dictDoctorDutyDao.findByCode(code);
                if (dictDoctorDutyDO!=null){
                    dictDoctorDutyDO.setName(name);
                    dictDoctorDutyDao.save(dictDoctorDutyDO);
                }else {
                    DictDoctorDutyDO dictDoctorDutyDO1 = new DictDoctorDutyDO();
                    dictDoctorDutyDO1.setCode(code);
                    dictDoctorDutyDO1.setName(name);
                    dictDoctorDutyDO1.setCreateTime(new Date());
                    dictDoctorDutyDao.save(dictDoctorDutyDO1);
                }
            }
        }
        return json;
    }
    /**
     * 获取号别字典
     * @return
     */
    public String getChargeDict()throws Exception{
        String api = "GetScheduleType";
        String key ="bvvsf3JA0mUXMU+mVnMaOQ==";
        String msgHeader ="<?xml version=\"1.0\" encoding=\"utf-8\"?> " +
                "<root> " +
                "   <serverName>"+api+"</serverName>  " +
                "   <format>xml</format>" +
                "   <callOperator></callOperator> " +
                "   <certificate>"+key+"</certificate> " +
                "</root>";
        String msgBody ="<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                "<root></root>";
        Map<String,String> params = new HashedMap();
        params.put("msgHeader",msgHeader);
        params.put("msgBody",msgBody);
        logger.info("getChargeDictInfo params:"+params.toString());
        String xml = getXzzxWebServiceInfo("CallInterface",params);
        XMLSerializer xmlSerializer = new XMLSerializer();
        String json = xmlSerializer.read(xml).toString();
        logger.info("getChargeDictInfo json:"+json);
        JSONArray list = JSONArray.parseArray(json).getJSONArray(0);
        if(list!=null&&list.size()>0){
            for(int i=0;i<list.size();i++){
                JSONObject object = list.getJSONObject(i);
                logger.info("getJobTitleInfo object:"+object.toJSONString());
                String code = object.getString("chargeType");
                String name = object.getString("chargeTypeName");
                String reqFee = object.getString("reqFee");
                Double reqFees = 0.0;
                if (StringUtils.isNoneBlank(reqFee)&&!reqFee.equalsIgnoreCase("[]")){
                    reqFees= Double.parseDouble(reqFee);
                }
                WlyyChargeDictDO chargeDictDO = chargeDictDao.findByChargeType(code);
                if (chargeDictDO!=null){
                    chargeDictDO.setChargeType(code);
                    chargeDictDO.setChargeName(name);
                    chargeDictDO.setReqFee(reqFees);
                    chargeDictDao.save(chargeDictDO);
                }else {
                    WlyyChargeDictDO chargeDictDO1 = new WlyyChargeDictDO();
                    chargeDictDO1.setChargeType(code);
                    chargeDictDO1.setChargeName(name);
                    chargeDictDO1.setReqFee(reqFees);
                    chargeDictDO1.setCreateTime(new Date());
                    chargeDictDao.save(chargeDictDO1);
                }
            }
        }
        return json;
    }
}

+ 4 - 4
common/common-entity/src/main/java/com/yihu/jw/entity/IntegerIdentityEntity.java

@ -19,13 +19,13 @@ public abstract class IntegerIdentityEntity implements Serializable {
    @Id
//==========mysql 环境 id策略======================================================
//    @GeneratedValue(generator = "generator")
//    @GenericGenerator(name = "generator", strategy = "identity")
//    @Column(name = "id", unique = true, nullable = false)
    @GeneratedValue(generator = "generator")
    @GenericGenerator(name = "generator", strategy = "identity")
    @Column(name = "id", unique = true, nullable = false)
//==========mysql 环境 id策略 end======================================================
//==========Oracle 环境id策略 =========================================================
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="id_generated")
   /* @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="id_generated")*/
//==========Oracle 环境id策略 =========================================================
    public Integer getId() {
        return id;

+ 2 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/dict/DictDoctorDutyDO.java

@ -23,11 +23,13 @@ public class DictDoctorDutyDO extends IntegerIdentityEntity {
    /**
	 * 职务标识
	 */
    @Column(name = "code")
	private String code;
    /**
	 * 职务名称(院长/科室主任等等)
	 */
    @Column(name = "name")
	private String name;
    /**

+ 21 - 2
svr/svr-internet-hospital-entrance/src/main/java/com/yihu/jw/entrance/controller/XzzxCotroller.java

@ -24,7 +24,26 @@ public class XzzxCotroller extends EnvelopRestEndpoint {
    @GetMapping(value = "/getDeptInfo")
    @ApiOperation(value = "获取部门信息", notes = "获取部门信息")
    public ObjEnvelop getDeptInfo()throws Exception{
        return ObjEnvelop.getSuccess("ok",xzzxEntranceService.getDeptInfo());
    public ObjEnvelop getDeptInfo(String code)throws Exception{
        return ObjEnvelop.getSuccess("ok",xzzxEntranceService.getDeptInfo(code));
    }
    @GetMapping(value = "/getDoctorInfo")
    @ApiOperation(value = "获取医生信息", notes = "获取医生信息")
    public ObjEnvelop getDoctorInfo(String idcard)throws Exception{
        return ObjEnvelop.getSuccess("ok",xzzxEntranceService.getDoctorInfo(idcard));
    }
    @GetMapping(value = "/getJobTitle")
    @ApiOperation(value = "同步职称", notes = "同步职称")
    public ObjEnvelop getJobTitle()throws Exception{
        return ObjEnvelop.getSuccess("ok",xzzxEntranceService.getJobTitle());
    }
    @GetMapping(value = "/getChargeDict")
    @ApiOperation(value = "同步号别", notes = "同步号别")
    public ObjEnvelop getChargeDict()throws Exception{
        return ObjEnvelop.getSuccess("ok",xzzxEntranceService.getChargeDict());
    }
}