Browse Source

机构管理修改

LiTaohong 6 years ago
parent
commit
210b13c1fb
35 changed files with 1407 additions and 217 deletions
  1. 54 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/dict/DictDoctorDutyDO.java
  2. 32 39
      common/common-entity/src/main/java/com/yihu/jw/entity/base/doctor/BaseDoctorHospitalDO.java
  3. 57 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/doctor/BaseDoctorRoleDO.java
  4. 49 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/org/BaseOrgSaasDO.java
  5. 49 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/org/BaseOrgUserDO.java
  6. 19 1
      common/common-request-mapping/src/main/java/com/yihu/jw/rm/base/BaseRequestMapping.java
  7. 58 0
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/dict/DictDoctorDutyVO.java
  8. 0 26
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/doctor/BaseDoctorHospitalVO.java
  9. 63 0
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/doctor/BaseDoctorRoleVO.java
  10. 51 10
      sql/init.sql
  11. 21 0
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/dict/DictDoctorDutyDao.java
  12. 36 12
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/doctor/BaseDoctorDao.java
  13. 13 0
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/doctor/BaseDoctorHospitalDao.java
  14. 26 0
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/doctor/BaseDoctorRoleDao.java
  15. 7 0
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/doctor/BaseDoctorRoleDictDao.java
  16. 1 0
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/org/BaseOrgDao.java
  17. 21 0
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/org/BaseOrgSaasDao.java
  18. 25 0
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/org/BaseOrgUserDao.java
  19. 3 0
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/org/OrgTreeDao.java
  20. 3 3
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/patient/BasePatientDao.java
  21. 104 0
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/dict/DictDoctorDutyEndpoint.java
  22. 67 23
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/doctor/BaseDoctorEndpoint.java
  23. 104 0
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/doctor/BaseDoctorRoleEndpoint.java
  24. 25 22
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/org/BaseOrgEndpoint.java
  25. 1 1
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/user/UserEndpoint.java
  26. 22 0
      svr/svr-base/src/main/java/com/yihu/jw/base/service/dict/DictDoctorDutyService.java
  27. 54 4
      svr/svr-base/src/main/java/com/yihu/jw/base/service/doctor/BaseDoctorHospitalService.java
  28. 42 0
      svr/svr-base/src/main/java/com/yihu/jw/base/service/doctor/BaseDoctorRoleService.java
  29. 215 46
      svr/svr-base/src/main/java/com/yihu/jw/base/service/doctor/BaseDoctorService.java
  30. 22 0
      svr/svr-base/src/main/java/com/yihu/jw/base/service/org/BaseOrgSaasService.java
  31. 87 24
      svr/svr-base/src/main/java/com/yihu/jw/base/service/org/BaseOrgService.java
  32. 35 0
      svr/svr-base/src/main/java/com/yihu/jw/base/service/org/BaseOrgUserService.java
  33. 16 0
      svr/svr-base/src/main/java/com/yihu/jw/base/service/org/OrgTreeService.java
  34. 19 1
      svr/svr-base/src/main/java/com/yihu/jw/base/service/user/UserService.java
  35. 6 5
      svr/svr-base/src/main/java/com/yihu/jw/base/util/JavaBeanUtils.java

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

@ -0,0 +1,54 @@
package com.yihu.jw.entity.base.dict;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.IntegerIdentityEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
 * 医生职务字典实体
 * 
 * @author litaohong on  2018年10月19日
 *
 */
@Entity
@Table(name = "dict_doctor_duty")
public class DictDoctorDutyDO extends IntegerIdentityEntity {
    /**
	 * 职务标识
	 */
	private String code;
    /**
	 * 职务名称(院长/科室主任等等)
	 */
	private String name;
    /**
	 * 创建时间
	 */
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
	private Date createTime;
	@Column(name = "code")
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
	@Column(name = "name")
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

+ 32 - 39
common/common-entity/src/main/java/com/yihu/jw/entity/base/doctor/BaseDoctorHospitalDO.java

@ -33,16 +33,6 @@ public class BaseDoctorHospitalDO extends IntegerIdentityEntity {
     */
	private String doctorCode;
    /**
	 * 医生角色标识
	 */
	private String roleCode;
    /**
	 * 医院角色名称
	 */
	private String roleName;
    /**
	 * 职称代码
	 */
@ -58,18 +48,29 @@ public class BaseDoctorHospitalDO extends IntegerIdentityEntity {
     */
    private String deptCode;
    /**
     * 职务代码
     */
    private String doctorDutyCode;
    /**
     * 职务名称
     */
    private String doctorDutyName;
    /**
	 * 作废标识,1正常,0作废
	 */
	private String del;
    /**
	 * 
	 */
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
	private Date createTime;
	public BaseDoctorHospitalDO(){}
	public BaseDoctorHospitalDO(String hospCode,String hospName,String doctorDutyCode,String doctorDutyName){
	    this.hospCode = hospCode;
	    this.hospName = hospName;
	    this.doctorDutyCode = doctorDutyCode;
	    this.doctorDutyName = doctorDutyName;
    }
	@Column(name = "hosp_code")
    public String getHospCode() {
@ -96,22 +97,6 @@ public class BaseDoctorHospitalDO extends IntegerIdentityEntity {
        this.doctorCode = doctorCode;
    }
    @Column(name = "role_code")
    public String getRoleCode() {
        return roleCode;
    }
    public void setRoleCode(String roleCode) {
        this.roleCode = roleCode;
    }
	@Column(name = "role_name")
    public String getRoleName() {
        return roleName;
    }
    public void setRoleName(String roleName) {
        this.roleName = roleName;
    }
	@Column(name = "job_title_code")
    public String getJobTitleCode() {
        return jobTitleCode;
@ -136,14 +121,6 @@ public class BaseDoctorHospitalDO extends IntegerIdentityEntity {
        this.del = del;
    }
	@Column(name = "create_time")
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public String getDeptCode() {
        return deptCode;
    }
@ -151,4 +128,20 @@ public class BaseDoctorHospitalDO extends IntegerIdentityEntity {
    public void setDeptCode(String deptCode) {
        this.deptCode = deptCode;
    }
    public String getDoctorDutyCode() {
        return doctorDutyCode;
    }
    public void setDoctorDutyCode(String doctorDutyCode) {
        this.doctorDutyCode = doctorDutyCode;
    }
    public String getDoctorDutyName() {
        return doctorDutyName;
    }
    public void setDoctorDutyName(String doctorDutyName) {
        this.doctorDutyName = doctorDutyName;
    }
}

+ 57 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/doctor/BaseDoctorRoleDO.java

@ -0,0 +1,57 @@
package com.yihu.jw.entity.base.doctor;
import com.yihu.jw.entity.IntegerIdentityEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * 医生角色关联信息实体
 * 
 * @author litaohong on  2018年10月19日
 *
 */
@Entity
@Table(name = "base_doctor_role")
public class BaseDoctorRoleDO extends IntegerIdentityEntity {
    /**
	 * 医生code
	 */
	private String doctorCode;
    /**
	 * 医生角色code
	 */
	private String roleCode;
    /**
	 * 作废标识,1正常,0作废
	 */
	private String del;
	@Column(name = "doctor_code")
    public String getDoctorCode() {
        return doctorCode;
    }
    public void setDoctorCode(String doctorCode) {
        this.doctorCode = doctorCode;
    }
	@Column(name = "role_code")
    public String getRoleCode() {
        return roleCode;
    }
    public void setRoleCode(String roleCode) {
        this.roleCode = roleCode;
    }
	@Column(name = "del")
    public String getDel() {
        return del;
    }
    public void setDel(String del) {
        this.del = del;
    }
}

+ 49 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/org/BaseOrgSaasDO.java

@ -0,0 +1,49 @@
package com.yihu.jw.entity.base.org;
import com.yihu.jw.entity.IntegerIdentityEntity;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
* 机构与Saas关联信息实体
*
* @author litaohong on  2018年10月20日
*
*/
@Entity
@Table(name = "base_org_saas")
public class BaseOrgSaasDO extends IntegerIdentityEntity {
    /**
	 * saas化配置
	 */
	private String saasid;
    /**
	 * 机构标识
	 */
	private String orgCode;
	@Column(name = "saasid")
    public String getSaasid() {
        return saasid;
    }
    public void setSaasid(String saasid) {
        this.saasid = saasid;
    }
	@Column(name = "org_code")
    public String getOrgCode() {
        return orgCode;
    }
    public void setOrgCode(String orgCode) {
        this.orgCode = orgCode;
    }
}

+ 49 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/org/BaseOrgUserDO.java

@ -0,0 +1,49 @@
package com.yihu.jw.entity.base.org;
import com.yihu.jw.entity.IntegerIdentityEntity;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
* 机构与机构管理员关联信息实体
*
* @author litaohong on  2018年10月20日
*
*/
@Entity
@Table(name = "base_org_user")
public class BaseOrgUserDO extends IntegerIdentityEntity {
    /**
	 * 机构标识,base_org里的code
	 */
	private String orgCode;
    /**
	 * 用户账号,base_user表里的username
	 */
	private String userAccount;
	@Column(name = "org_code")
    public String getOrgCode() {
        return orgCode;
    }
    public void setOrgCode(String orgCode) {
        this.orgCode = orgCode;
    }
	@Column(name = "user_account")
    public String getUserAccount() {
        return userAccount;
    }
    public void setUserAccount(String userAccount) {
        this.userAccount = userAccount;
    }
}

+ 19 - 1
common/common-request-mapping/src/main/java/com/yihu/jw/rm/base/BaseRequestMapping.java

@ -377,6 +377,8 @@ public class BaseRequestMapping {
    public static class BaseDoctor extends Basic {
        public static final String PREFIX  = "/baseDoctor";
        public static final String DOCINFO  = "/docInfo";
        public static final String getOrgListByTown  = "/getOrgListByTown";
        public static final String enableOrDis  = "/enableOrDis";
        public static final String docFullInfo  = "/docFullInfo";
        public static final String docOrgTreeInfo  = "/docOrgTreeInfo";
    }
@ -397,6 +399,13 @@ public class BaseRequestMapping {
        public static final String PREFIX  = "/baseDoctorRoleDict";
    }
 /**
     * 医生角色关联关系
     */
    public static class BaseDoctorRole extends Basic {
        public static final String PREFIX  = "/baseDoctorRole";
    }
    /**
     * 机构信息
@ -406,6 +415,7 @@ public class BaseRequestMapping {
        public static final String baseInfoList  = "/baseInfoList";
        public static final String check_code  = "/check_code";
        public static final String getOrgAreaTree  = "/getOrgAreaTree";
        public static final String queryOneById  = "/queryOneById";
    }
@ -517,13 +527,21 @@ public class BaseRequestMapping {
    /**
     * 职称字典
     * 医生职称字典
     */
    public static class DictJobTitle extends Basic {
        public static final String PREFIX  = "/dictJobTitle";
    }
    /**
     * 医生职务字典
     */
    public static class DictDoctorDuty extends Basic {
        public static final String PREFIX  = "/dictDoctorDuty";
    }
    /**
     * 药品字典
     */

+ 58 - 0
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/dict/DictDoctorDutyVO.java

@ -0,0 +1,58 @@
package com.yihu.jw.restmodel.base.dict;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.restmodel.IntegerIdentityVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
/**
 * 
 * 医生职务字典vo
 * 
 * @version 
 * <pre>
 * Author	Version		Date		Changes
 * litaohong 	1.0  2018年10月19日 Created
 *
 * </pre>
 * @since 1.
 */
@ApiModel(value = "DictDoctorDutyVO", description = "医生职务字典")
public class DictDoctorDutyVO extends IntegerIdentityVO{
    /**
	 * 职务标识
	 */
	@ApiModelProperty(value = "职务标识", example = "模块1")
    private String code;
    /**
	 * 职务名称(院长/科室主任等等)
	 */
	@ApiModelProperty(value = "职务名称(院长/科室主任等等)", example = "模块1")
    private String name;
    /**
	 * 创建时间
	 */
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
	@ApiModelProperty(value = "创建时间", example = "模块1")
    private Date createTime;
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

+ 0 - 26
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/doctor/BaseDoctorHospitalVO.java

@ -34,18 +34,6 @@ public class BaseDoctorHospitalVO extends IntegerIdentityVO{
	@ApiModelProperty(value = "医院名称", example = "厦门市中医院")
    private String hospName;
    /**
	 * 医生角色标识
	 */
	@ApiModelProperty(value = "医生角色标识", example = "专科医生")
    private String roleCode;
    /**
	 * 医院角色名称
	 */
	@ApiModelProperty(value = "医生角色名称", example = "")
    private String roleName;
    /**
	 * 职称代码
	 */
@ -98,20 +86,6 @@ public class BaseDoctorHospitalVO extends IntegerIdentityVO{
        this.hospName = hospName;
    }
    public String getRoleCode() {
        return roleCode;
    }
    public void setRoleCode(String roleCode) {
        this.roleCode = roleCode;
    }
    public String getRoleName() {
        return roleName;
    }
    public void setRoleName(String roleName) {
        this.roleName = roleName;
    }
    public String getJobTitleCode() {
        return jobTitleCode;
    }

+ 63 - 0
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/doctor/BaseDoctorRoleVO.java

@ -0,0 +1,63 @@
package com.yihu.jw.restmodel.base.doctor;
import com.yihu.jw.restmodel.IntegerIdentityVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
/**
 * 
 * 医生角色关联信息vo
 * 
 * @version 
 * <pre>
 * Author	Version		Date		Changes
 * litaohong 	1.0  2018年10月19日 Created
 *
 * </pre>
 * @since 1.
 */
@ApiModel(value = "BaseDoctorRoleVO", description = "医生角色关联信息")
public class BaseDoctorRoleVO extends IntegerIdentityVO{
    /**
	 * 医生code
	 */
	@ApiModelProperty(value = "医生code", example = "456345tf45225654g")
    private String doctorCode;
    /**
	 * 医生角色code
	 */
	@ApiModelProperty(value = "医生角色id", example = "")
    private String roleCode;
    /**
	 * 作废标识,1正常,0作废
	 */
	@ApiModelProperty(value = "作废标识,1正常,0作废", example = "")
    private String del;
    public String getDoctorCode() {
        return doctorCode;
    }
    public void setDoctorCode(String doctorCode) {
        this.doctorCode = doctorCode;
    }
    public String getRoleCode() {
        return roleCode;
    }
    public void setRoleCode(String roleCode) {
        this.roleCode = roleCode;
    }
    public String getDel() {
        return del;
    }
    public void setDel(String del) {
        this.del = del;
    }
}

+ 51 - 10
sql/init.sql

@ -37,11 +37,31 @@ CREATE TABLE `base_org` (
  KEY `idx_id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='机构信息(医院)';
-- 机构Saas关联表
drop table IF EXISTS `base_org_saas`;
CREATE TABLE `base_org_saas` (
  `id` int(11) NOT NULL AUTO_INCREMENT  COMMENT 'id,自增长',
  `saasid` varchar(50) NOT NULL COMMENT 'saas化配置',
  `org_code` varchar(50) NOT NULL COMMENT '机构标识',
  PRIMARY KEY (`id`),
  KEY `idx_id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='机构与Saas关联信息';
-- 机构管理员关联表
drop table IF EXISTS `base_org_user`;
CREATE TABLE `base_org_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT  COMMENT 'id,自增长',
  `org_code` varchar(50) NOT NULL COMMENT '机构标识,base_org里的code',
  `user_account` varchar(50) NOT NULL COMMENT '用户账号,base_user表里的username',
  PRIMARY KEY (`id`),
  KEY `idx_id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='机构与机构管理员关联信息';
-- 医生信息表
drop table IF EXISTS `base_doctor`;
CREATE TABLE `base_doctor` (
  `id` varchar(50) NOT NULL COMMENT 'uuid,uuid唯一标识',
  `org_id` varchar(100) DEFAULT NULL COMMENT '机构id',
  `org_code` varchar(100) DEFAULT NULL COMMENT '机构id',
  `password` varchar(50) NOT NULL COMMENT '密码',
  `salt` varchar(50) DEFAULT NULL,
  `name` varchar(50) DEFAULT NULL COMMENT '姓名',
@ -61,7 +81,7 @@ CREATE TABLE `base_doctor` (
  `town_name` varchar(50) DEFAULT NULL COMMENT '区县名称',
  `street_code` varchar(50) DEFAULT NULL COMMENT '街道代码',
  `street_name` varchar(50) DEFAULT NULL COMMENT '街道名称',
  `iscertified` varchar(1) NOT NULL DEFAULT '0' COMMENT '资格是否认证通过,1是,0否',
  `iscertified` varchar(1) DEFAULT NULL DEFAULT '0' COMMENT '资格是否认证通过,1是,0否',
  `is_famous` varchar(1) NOT NULL DEFAULT '0' COMMENT '是否是名医,1是,0否',
  `is_password_prompt` char(1) DEFAULT NULL COMMENT '是否提示设置密码  1 提示过 0未提示',
  `spell` varchar(10) DEFAULT NULL COMMENT '名称拼音首字母',
@ -98,23 +118,23 @@ CREATE TABLE `base_doctor_role_dict` (
-- 医生角色关联表
drop table IF EXISTS `base_doctor_role`;
/*CREATE TABLE `base_doctor_role` (
CREATE TABLE `base_doctor_role` (
  `id` int(11) NOT NULL AUTO_INCREMENT  COMMENT '表id,自增长,关联表',
  `doctor_code` varchar(50) NOT NULL COMMENT '医生code',
  `role_code` varchar(50) NOT NULL COMMENT '医生角色id',
  `doctor_id` varchar(50) NOT NULL COMMENT '医生code',
  `del` varchar(1) DEFAULT '1' COMMENT '作废标识,1正常,0作废',
  `create_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='医生角色关联信息';
*/
-- 医生执业表(一个医生可在多个医院供职,角色等)
drop table IF EXISTS `base_doctor_hospital`;
CREATE TABLE `base_doctor_hospital` (
  `id` int(11) NOT NULL AUTO_INCREMENT  COMMENT '表id,自增长,字典型',
  `hosp_code` varchar(50) NOT NULL COMMENT '医院标识',
  `hosp_name` varchar(50) NOT NULL COMMENT '医院名称',
  `role_code` varchar(50) NOT NULL COMMENT '医生角色标识',
  `role_name` varchar(50) NOT NULL COMMENT '医院角色名称',
  `doctor_duty_code` varchar(50) NOT NULL COMMENT '医生职务标识',
  `doctor_duty_name` varchar(50) NOT NULL COMMENT '医院职务名称',
  `job_title_code` varchar(50) NOT NULL COMMENT '职称代码',
  `job_title_name` varchar(50) NOT NULL COMMENT '职称名称',
  `del` varchar(1) DEFAULT '1' COMMENT '作废标识,1正常,0作废',
@ -145,8 +165,16 @@ CREATE TABLE `base_patient` (
  `town_name` varchar(50) DEFAULT NULL COMMENT '区县名称',
  `street_code` varchar(50) DEFAULT NULL COMMENT '街道代码',
  `street_name` varchar(50) DEFAULT NULL COMMENT '街道名称',
  `committee_code` varchar(50) DEFAULT NULL COMMENT '居委会代码',
  `committee_name` varchar(50) DEFAULT NULL COMMENT '居委会名称',
  `live_province_code` varchar(50) DEFAULT NULL COMMENT '居住省代码',
  `live_province_name` varchar(50) DEFAULT NULL COMMENT '居住省名称',
  `live_city_code` varchar(50) DEFAULT NULL COMMENT '居住市代码',
  `live_city_name` varchar(50) DEFAULT NULL COMMENT '居住市名称',
  `live_town_code` varchar(50) DEFAULT NULL COMMENT '居住区县代码',
  `live_town_name` varchar(50) DEFAULT NULL COMMENT '居住区县名称',
  `live_street_code` varchar(50) DEFAULT NULL COMMENT '居住街道代码',
  `live_street_name` varchar(50) DEFAULT NULL COMMENT '居住街道名称',
  `committee_code` varchar(50) DEFAULT NULL COMMENT '居住居委会代码',
  `committee_name` varchar(50) DEFAULT NULL COMMENT '居住居委会名称',
  `disease` varchar(100) DEFAULT NULL COMMENT '疾病类型,0健康,1高血压,2糖尿病,3高血压+糖尿病',
  `disease_condition` varchar(100) DEFAULT NULL COMMENT '病情:0绿标,1黄标,2红标,3重点关注,',
  `points` varchar(100) DEFAULT NULL COMMENT '总积分',
@ -305,19 +333,31 @@ CREATE TABLE `base_committee` (
-- 行政区划数据  5个表 ---end----
-- 医生职称字典表
drop table IF EXISTS `dict_job_title`;
create table `dict_job_title`(
`id` int(11) NOT NULL AUTO_INCREMENT  COMMENT '表id,自增长,字典型',
`saas_id` varchar(100) DEFAULT NULL COMMENT 'saas配置id,null标识公共字典',
`code` varchar(50) default NULL COMMENT '职称标识',
`name` varchar(20) default NULL COMMENT '职称名',
`name` varchar(20) default NULL COMMENT '职称名(主任医师/副主任医师)',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
 KEY `idx_job_title_code` (`code`),
primary key (id)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='职称字典';
-- 医生职务字典表
drop table IF EXISTS `dict_doctor_duty`;
create table `dict_doctor_duty`(
  `id` int(11) NOT NULL AUTO_INCREMENT  COMMENT '表id,自增长,字典型',
  `code` varchar(50) default NULL COMMENT '职务标识',
  `name` varchar(20) default NULL COMMENT '职务名称(院长/科室主任等等)',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
  KEY `idx_job_title_code` (`code`),
  primary key (id)
)
  ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='医生职务字典';
-- 机构药品分发
drop table IF EXISTS `dict_medicine_distribute_org`;
CREATE TABLE `dict_medicine_distribute_org` (

+ 21 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/dao/dict/DictDoctorDutyDao.java

@ -0,0 +1,21 @@
package com.yihu.jw.base.dao.dict;
import com.yihu.jw.entity.base.dict.DictDoctorDutyDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * 
 * 医生职务字典 数据库访问层
 * 
 * @version 
 * <pre>
 * Author	Version		Date		Changes
 * litaohong 	1.0  		2018年10月19日 	Created
 *
 * </pre>
 * @since 1.
 */
public interface DictDoctorDutyDao extends PagingAndSortingRepository<DictDoctorDutyDO, Integer>, JpaSpecificationExecutor<DictDoctorDutyDO>  {
}

File diff suppressed because it is too large
+ 36 - 12
svr/svr-base/src/main/java/com/yihu/jw/base/dao/doctor/BaseDoctorDao.java


+ 13 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/dao/doctor/BaseDoctorHospitalDao.java

@ -1,10 +1,16 @@
package com.yihu.jw.base.dao.doctor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import com.yihu.jw.entity.base.doctor.BaseDoctorHospitalDO;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
 * 
 * 医生职业信息 数据库访问层
@ -19,4 +25,11 @@ import com.yihu.jw.entity.base.doctor.BaseDoctorHospitalDO;
 */
public interface BaseDoctorHospitalDao extends PagingAndSortingRepository<BaseDoctorHospitalDO, Integer>, JpaSpecificationExecutor<BaseDoctorHospitalDO>  {
    List<BaseDoctorHospitalDO> findByHospCodeAndDoctorCode(String hospCode,String doctorCode);
    @Query("select id from BaseDoctorHospitalDO where doctorCode = ?1")
    Set<Object> findIdListByHospCodeAndDoctorCode(String doctorCode);
    @Query("select new BaseDoctorHospitalDO(hospCode,hospName,doctorDutyCode,doctorDutyName) from BaseDoctorHospitalDO where doctorCode = ?1")
    List<BaseDoctorHospitalDO> getOrgAndDutyByDoctorCode(String doctorCode);
}

+ 26 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/dao/doctor/BaseDoctorRoleDao.java

@ -0,0 +1,26 @@
package com.yihu.jw.base.dao.doctor;
import com.yihu.jw.entity.base.doctor.BaseDoctorRoleDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.Set;
/**
 * 
 * 医生角色关联信息 数据库访问层
 * 
 * @version 
 * <pre>
 * Author	Version		Date		Changes
 * litaohong 	1.0  		2018年10月19日 	Created
 *
 * </pre>
 * @since 1.
 */
public interface BaseDoctorRoleDao extends PagingAndSortingRepository<BaseDoctorRoleDO, Integer>, JpaSpecificationExecutor<BaseDoctorRoleDO>  {
    @Query("select id from BaseDoctorRoleDO where doctorCode = ?1")
    Set<Object> findIdListByDoctorCode(String doctorCode);
}

+ 7 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/dao/doctor/BaseDoctorRoleDictDao.java

@ -1,10 +1,13 @@
package com.yihu.jw.base.dao.doctor;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import com.yihu.jw.entity.base.doctor.BaseDoctorRoleDictDO;
import java.util.Set;
/**
 * 
 * 医生角色字典 数据库访问层
@ -18,4 +21,8 @@ import com.yihu.jw.entity.base.doctor.BaseDoctorRoleDictDO;
 * @since 1.
 */
public interface BaseDoctorRoleDictDao extends PagingAndSortingRepository<BaseDoctorRoleDictDO, Integer>, JpaSpecificationExecutor<BaseDoctorRoleDictDO>  {
    @Query("select id from BaseDoctorHospitalDO where doctorCode = ?1")
    Set<Object> findIdListByHospCodeAndDoctorCode(String doctorCode);
}

+ 1 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/dao/org/BaseOrgDao.java

@ -56,4 +56,5 @@ public interface BaseOrgDao extends PagingAndSortingRepository<BaseOrgDO, String
    @Query("select id from BaseOrgDO where saasid = ?1")
    List findOrgCodeBySaasId(String saasId);
}

+ 21 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/dao/org/BaseOrgSaasDao.java

@ -0,0 +1,21 @@
package com.yihu.jw.base.dao.org;
import com.yihu.jw.entity.base.org.BaseOrgSaasDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * 
 * 机构与Saas关联信息 数据库访问层
 * 
 * @version 
 * <pre>
 * Author	Version		Date		Changes
 * litaohong 	1.0  		2018年10月20日 	Created
 *
 * </pre>
 * @since 1.
 */
public interface BaseOrgSaasDao extends PagingAndSortingRepository<BaseOrgSaasDO, String>, JpaSpecificationExecutor<BaseOrgSaasDO>  {
}

+ 25 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/dao/org/BaseOrgUserDao.java

@ -0,0 +1,25 @@
package com.yihu.jw.base.dao.org;
import com.yihu.jw.entity.base.org.BaseOrgUserDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * 
 * 机构与机构管理员关联信息 数据库访问层
 * 
 * @version 
 * <pre>
 * Author	Version		Date		Changes
 * litaohong 	1.0  		2018年10月20日 	Created
 *
 * </pre>
 * @since 1.
 */
public interface BaseOrgUserDao extends PagingAndSortingRepository<BaseOrgUserDO, String>, JpaSpecificationExecutor<BaseOrgUserDO>  {
    List<BaseOrgUserDO> findAllByOrgCode(String orgCode);
}

+ 3 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/dao/org/OrgTreeDao.java

@ -36,4 +36,7 @@ public interface OrgTreeDao extends PagingAndSortingRepository<OrgTree, Integer>
    OrgTree findByCode(String code);
    boolean existsByCode(String code);
    @Query("select tree.code as code,tree.name as name from OrgTree tree where parentCode = ?1 and level = 3")
    List<Map<String,Object>> findOrgListByParentCode(String parent);
}

+ 3 - 3
svr/svr-base/src/main/java/com/yihu/jw/base/dao/patient/BasePatientDao.java

@ -20,13 +20,13 @@ public interface BasePatientDao extends PagingAndSortingRepository<BasePatientDO
    BasePatientDO findByIdAndDel(String id,String del);
    @Query("select id as id,idcard as idcard,name as name,case sex when 1 then '男' when 2 then '女' else '未知' end as sex,phone as phone,concat(liveProvinceName,liveCityName,liveTownName,liveStreetName,committeeName) as committeeName,concat(provinceName,cityName,townName,streetName) as address from BasePatientDO where idcard like ?1")
    @Query("select id as id,idcard as idcard,name as name,case sex when 1 then '男' when 2 then '女' else '未知' end as sex,phone as phone,committeeName as committeeName,concat(provinceName,cityName,townName,streetName) as address from BasePatientDO where idcard like ?1")
    List<Map<String,Object>> findByIdcard(String idcard, Pageable pageable);
    @Query("select id as id,idcard as idcard,name as name,case sex when 1 then '男' when 2 then '女' else '未知' end as sex,phone as phone,concat(liveProvinceName,liveCityName,liveTownName,liveStreetName,committeeName) as committeeName,concat(provinceName,cityName,townName,streetName) as address from BasePatientDO where name like ?1")
    @Query("select id as id,idcard as idcard,name as name,case sex when 1 then '男' when 2 then '女' else '未知' end as sex,phone as phone,committeeName as committeeName,concat(provinceName,cityName,townName,streetName) as address from BasePatientDO where name like ?1")
    List<Map<String,Object>> findByName(String name, Pageable pageable);
    @Query("select id as id,idcard as idcard,name as name,case sex when 1 then '男' when 2 then '女' else '未知' end as sex,phone as phone,concat(liveProvinceName,liveCityName,liveTownName,liveStreetName,committeeName) as committeeName,concat(provinceName,cityName,townName,streetName) as address from BasePatientDO")
    @Query("select id as id,idcard as idcard,name as name,case sex when 1 then '男' when 2 then '女' else '未知' end as sex,phone as phone,committeeName as committeeName,concat(provinceName,cityName,townName,streetName) as address from BasePatientDO")
    List<Map<String,Object>> findBaseInfo(Pageable pageable);
}

+ 104 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/dict/DictDoctorDutyEndpoint.java

@ -0,0 +1,104 @@
package com.yihu.jw.base.endpoint.dict;
import com.yihu.jw.base.service.dict.DictDoctorDutyService;
import com.yihu.jw.entity.base.dict.DictDoctorDutyDO;
import com.yihu.jw.restmodel.base.dict.DictDoctorDutyVO;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.base.BaseRequestMapping;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
*
* 医生职务字典控制器
*
* @version
* <pre>
 * Author	Version		Date		Changes
 * litaohong 	1.0  		2018年10月19日 	Created
 *
 * </pre>
* @since 1.
*/
@RestController
@RequestMapping(value = BaseRequestMapping.DictDoctorDuty.PREFIX)
@Api(value = "医生职务字典管理", description = "医生职务字典管理服务接口", tags = {"wlyy基础服务 - 医生职务字典管理服务接口"})
public class DictDoctorDutyEndpoint extends EnvelopRestEndpoint {
@Autowired
private DictDoctorDutyService dictDoctorDutyService;
@PostMapping(value = BaseRequestMapping.DictDoctorDuty.CREATE, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
@ApiOperation(value = "创建")
public ObjEnvelop<DictDoctorDutyVO> create (
    @ApiParam(name = "json_data", value = "Json数据", required = true)
    @RequestBody String jsonData) throws Exception {
    DictDoctorDutyDO dictDoctorDuty = toEntity(jsonData, DictDoctorDutyDO.class);
    dictDoctorDuty = dictDoctorDutyService.save(dictDoctorDuty);
    return success(dictDoctorDuty, DictDoctorDutyVO.class);
    }
    @PostMapping(value = BaseRequestMapping.DictDoctorDuty.DELETE)
    @ApiOperation(value = "删除")
    public Envelop delete(
    @ApiParam(name = "ids", value = "id串,中间用,分隔", required = true)
    @RequestParam(value = "ids") String ids) {
    dictDoctorDutyService.delete(ids.split(","));
    return success("删除成功");
    }
    @PostMapping(value = BaseRequestMapping.DictDoctorDuty.UPDATE, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "更新")
    public ObjEnvelop<DictDoctorDutyVO> update (
        @ApiParam(name = "json_data", value = "Json数据", required = true)
        @RequestBody String jsonData) throws Exception {
        DictDoctorDutyDO dictDoctorDuty = toEntity(jsonData, DictDoctorDutyDO.class);
        if (null == dictDoctorDuty.getId()) {
        return failed("ID不能为空", ObjEnvelop.class);
        }
        dictDoctorDuty = dictDoctorDutyService.save(dictDoctorDuty);
        return success(dictDoctorDuty, DictDoctorDutyVO.class);
        }
        @GetMapping(value = BaseRequestMapping.DictDoctorDuty.PAGE)
        @ApiOperation(value = "获取分页")
        public PageEnvelop<DictDoctorDutyVO> page (
            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段")
            @RequestParam(value = "fields", required = false) String fields,
            @ApiParam(name = "filters", value = "过滤器,为空检索所有条件")
            @RequestParam(value = "filters", required = false) String filters,
            @ApiParam(name = "sorts", value = "排序,规则参见说明文档")
            @RequestParam(value = "sorts", required = false) String sorts,
            @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "1")
            @RequestParam(value = "page") int page,
            @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15")
            @RequestParam(value = "size") int size) throws Exception {
            List<DictDoctorDutyDO> dictDoctorDutys = dictDoctorDutyService.search(fields, filters, sorts, page, size);
                int count = (int)dictDoctorDutyService.getCount(filters);
                return success(dictDoctorDutys, count, page, size, DictDoctorDutyVO.class);
         }
         @GetMapping(value = BaseRequestMapping.DictDoctorDuty.LIST)
         @ApiOperation(value = "获取列表")
         public ListEnvelop<DictDoctorDutyVO> list (
             @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段")
             @RequestParam(value = "fields", required = false) String fields,
             @ApiParam(name = "filters", value = "过滤器,为空检索所有条件")
             @RequestParam(value = "filters", required = false) String filters,
             @ApiParam(name = "sorts", value = "排序,规则参见说明文档")
             @RequestParam(value = "sorts", required = false) String sorts) throws Exception {
             List<DictDoctorDutyDO> dictDoctorDutys = dictDoctorDutyService.search(fields, filters, sorts);
                  return success(dictDoctorDutys, DictDoctorDutyVO.class);
         }
 }

+ 67 - 23
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/doctor/BaseDoctorEndpoint.java

@ -2,7 +2,9 @@ package com.yihu.jw.base.endpoint.doctor;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.base.service.doctor.BaseDoctorService;
import com.yihu.jw.base.service.org.OrgTreeService;
import com.yihu.jw.base.util.ConstantUtils;
import com.yihu.jw.base.util.JavaBeanUtils;
import com.yihu.jw.restmodel.base.doctor.BaseDoctorVO;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ListEnvelop;
@ -15,6 +17,7 @@ import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@ -40,6 +43,9 @@ public class BaseDoctorEndpoint extends EnvelopRestEndpoint {
    @Autowired
    private BaseDoctorService baseDoctorService;
    @Autowired
    private OrgTreeService orgTreeService;
    @PostMapping(value = BaseRequestMapping.BaseDoctor.CREATE, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "新增医生")
    public Envelop create(
@ -64,16 +70,16 @@ public class BaseDoctorEndpoint extends EnvelopRestEndpoint {
    }
    @PostMapping(value = BaseRequestMapping.BaseDoctor.UPDATE, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "更新")
    public ObjEnvelop<BaseDoctorVO> update(
    @ApiOperation(value = "更新医生")
    public Envelop update(
            @ApiParam(name = "jsonData", value = "Json数据", required = true)
            @RequestParam String jsonData) throws Exception {
        BaseDoctorDO baseDoctor = toEntity(jsonData, BaseDoctorDO.class);
        if (null == baseDoctor.getId()) {
            return failed("ID不能为空", ObjEnvelop.class);
        String str = baseDoctorService.updateDoctor(jsonData);
        JSONObject jsonObject = JSONObject.parseObject(str);
        if (jsonObject.getString("response").equalsIgnoreCase(ConstantUtils.FAIL)) {
            return failed(jsonObject.getString("msg"));
        }
        baseDoctor = baseDoctorService.save(baseDoctor);
        return success(baseDoctor, BaseDoctorVO.class);
        return success(jsonObject.getString("response"));
    }
    @GetMapping(value = BaseRequestMapping.BaseDoctor.PAGE)
@ -109,6 +115,7 @@ public class BaseDoctorEndpoint extends EnvelopRestEndpoint {
    /**
     * 单个医生信息(基本信息 + 医院执业信息)
     *
     * @param orgId
     * @param doctorId
     * @return
@ -121,10 +128,33 @@ public class BaseDoctorEndpoint extends EnvelopRestEndpoint {
            @RequestParam(value = "orgId", required = true) String orgId,
            @ApiParam(name = "doctorId", value = "医生id")
            @RequestParam(value = "doctorId", required = true) String doctorId) throws Exception {
        Map<String,Object> map = baseDoctorService.getDoctorInfo(orgId, doctorId);
        Map<String, Object> map = baseDoctorService.getDoctorInfo(orgId, doctorId);
        return success(map.toString());
    }
    /**
     * 生效或失效单个医生
     *
     * @param doctorCode
     * @param del
     * @return
     * @throws Exception
     */
    @PostMapping(value = BaseRequestMapping.BaseDoctor.enableOrDis)
    @ApiOperation(value = "生效或失效单个医生")
    public Envelop enableOrDisableDoctor(
            @ApiParam(name = "doctorCode", value = "医生标识")
            @RequestParam(value = "doctorCode", required = true) String doctorCode,
            @ApiParam(name = "del", value = "生效或失效标识")
            @RequestParam(value = "del", required = true) String del) throws Exception {
        String str = baseDoctorService.enableOrDisableDoctor(doctorCode, del);
        JSONObject jsonObject = JSONObject.parseObject(str);
        if (jsonObject.getString("response").equalsIgnoreCase(ConstantUtils.FAIL)) {
            return failed(jsonObject.getString("msg"));
        }
        return success(jsonObject.getString("response"));
    }
    /*
     * 医生信息(基本信息 + 医院执业信息)列表
     * @param name
@ -137,11 +167,8 @@ public class BaseDoctorEndpoint extends EnvelopRestEndpoint {
    @PostMapping(value = BaseRequestMapping.BaseDoctor.docFullInfo)
    @ApiOperation(value = "获取医生基础信息列表")
    public Envelop getDoctorFullInfolist(
            @ApiParam(name = "name", value = "医生姓名")
            @RequestParam(value = "name", required = false) String name,
            @ApiParam(name = "idcard", value = "医生身份证号")
            @RequestParam(value = "idcard", required = false) String idcard,
            @ApiParam(name = "orgCode", value = "医院代码")
            @ApiParam(name = "nameOrIdcard", value = "医生姓名或医生身份证号")
            @RequestParam(value = "nameOrIdcard", required = false) String nameOrIdcard,
            @RequestParam(value = "orgCode", required = false) String orgCode,
            @ApiParam(name = "doctorStatus", value = "医生是否生效")
            @RequestParam(value = "doctorStatus", required = false) String doctorStatus,
@ -151,22 +178,39 @@ public class BaseDoctorEndpoint extends EnvelopRestEndpoint {
            @RequestParam(value = "page") int page,
            @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15")
            @RequestParam(value = "size") int size) throws Exception {
        List<Map<String,Object>> map = baseDoctorService.getDoctorFullInfo(name, idcard,orgCode,doctorStatus);
        return success(map.toString());
        return success(baseDoctorService.getDoctorFullInfo(nameOrIdcard, orgCode, doctorStatus,page,size,sorts));
    }
   /* *//**
     * 获取医生 所属机构/部门/职称/职务 树形结构数据
    /**
     * 获取医生新增时选择的机构列表
     *
     * @param townCode
     * @return
     * @throws Exception
     *//*
    @PostMapping(value = BaseRequestMapping.BaseDoctor.docOrgTreeInfo)
     */
    @GetMapping(value = BaseRequestMapping.BaseDoctor.getOrgListByTown)
    @ApiOperation(value = "根据区域获取机构列表")
    public Envelop enableOrDisableDoctor(
            @ApiParam(name = "townCode", value = "townCode")
            @RequestParam(value = "townCode", required = true) String townCode) throws Exception {
        List<Map<String, Object>> result = orgTreeService.findOrgListByParentCode(townCode);
        return success(JavaBeanUtils.getInstance().mapListJson(result));
    }
    /**
     * 获取医生 机构/职务 树形结构数据
     *
     * @param doctorCode
     * @return
     * @throws Exception
     */
    @GetMapping(value = BaseRequestMapping.BaseDoctor.docOrgTreeInfo)
    @ApiOperation(value = "获取医生所属机构树形结构数据")
    public Envelop getDoctorOrgTree() throws Exception {
        String data = baseDoctorService.getOrgTree();
        return success(data);
    public Envelop getOrgAreaTree(
            @ApiParam(name = "doctorCode", value = "doctorCode")
            @RequestParam(value = "doctorCode", required = true) String doctorCode) throws Exception {
        return success(baseDoctorService.getDoctorDutyTree(doctorCode));
    }
*/
}

+ 104 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/doctor/BaseDoctorRoleEndpoint.java

@ -0,0 +1,104 @@
package com.yihu.jw.base.endpoint.doctor;
import com.yihu.jw.base.service.doctor.BaseDoctorRoleService;
import com.yihu.jw.entity.base.doctor.BaseDoctorRoleDO;
import com.yihu.jw.restmodel.base.doctor.BaseDoctorRoleVO;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.base.BaseRequestMapping;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
*
* 医生角色关联信息控制器
*
* @version
* <pre>
 * Author	Version		Date		Changes
 * litaohong 	1.0  		2018年10月19日 	Created
 *
 * </pre>
* @since 1.
*/
@RestController
@RequestMapping(value = BaseRequestMapping.BaseDoctorRole.PREFIX)
@Api(value = "医生角色关联信息管理", description = "医生角色关联信息管理服务接口", tags = {"wlyy基础服务 - 医生角色关联信息管理服务接口"})
public class BaseDoctorRoleEndpoint extends EnvelopRestEndpoint {
@Autowired
private BaseDoctorRoleService baseDoctorRoleService;
@PostMapping(value = BaseRequestMapping.BaseDoctorRole.CREATE, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
@ApiOperation(value = "创建")
public ObjEnvelop<BaseDoctorRoleVO> create (
    @ApiParam(name = "json_data", value = "Json数据", required = true)
    @RequestBody String jsonData) throws Exception {
    BaseDoctorRoleDO baseDoctorRole = toEntity(jsonData, BaseDoctorRoleDO.class);
    baseDoctorRole = baseDoctorRoleService.save(baseDoctorRole);
    return success(baseDoctorRole, BaseDoctorRoleVO.class);
    }
    @PostMapping(value = BaseRequestMapping.BaseDoctorRole.DELETE)
    @ApiOperation(value = "删除")
    public Envelop delete(
    @ApiParam(name = "ids", value = "id串,中间用,分隔", required = true)
    @RequestParam(value = "ids") String ids) {
    baseDoctorRoleService.delete(ids.split(","));
    return success("删除成功");
    }
    @PostMapping(value = BaseRequestMapping.BaseDoctorRole.UPDATE, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "更新")
    public ObjEnvelop<BaseDoctorRoleVO> update (
        @ApiParam(name = "json_data", value = "Json数据", required = true)
        @RequestBody String jsonData) throws Exception {
        BaseDoctorRoleDO baseDoctorRole = toEntity(jsonData, BaseDoctorRoleDO.class);
        if (null == baseDoctorRole.getId()) {
        return failed("ID不能为空", ObjEnvelop.class);
        }
        baseDoctorRole = baseDoctorRoleService.save(baseDoctorRole);
        return success(baseDoctorRole, BaseDoctorRoleVO.class);
        }
        @GetMapping(value = BaseRequestMapping.BaseDoctorRole.PAGE)
        @ApiOperation(value = "获取分页")
        public PageEnvelop<BaseDoctorRoleVO> page (
            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段")
            @RequestParam(value = "fields", required = false) String fields,
            @ApiParam(name = "filters", value = "过滤器,为空检索所有条件")
            @RequestParam(value = "filters", required = false) String filters,
            @ApiParam(name = "sorts", value = "排序,规则参见说明文档")
            @RequestParam(value = "sorts", required = false) String sorts,
            @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "1")
            @RequestParam(value = "page") int page,
            @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15")
            @RequestParam(value = "size") int size) throws Exception {
            List<BaseDoctorRoleDO> baseDoctorRoles = baseDoctorRoleService.search(fields, filters, sorts, page, size);
                int count = (int)baseDoctorRoleService.getCount(filters);
                return success(baseDoctorRoles, count, page, size, BaseDoctorRoleVO.class);
         }
         @GetMapping(value = BaseRequestMapping.BaseDoctorRole.LIST)
         @ApiOperation(value = "获取列表")
         public ListEnvelop<BaseDoctorRoleVO> list (
             @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段")
             @RequestParam(value = "fields", required = false) String fields,
             @ApiParam(name = "filters", value = "过滤器,为空检索所有条件")
             @RequestParam(value = "filters", required = false) String filters,
             @ApiParam(name = "sorts", value = "排序,规则参见说明文档")
             @RequestParam(value = "sorts", required = false) String sorts) throws Exception {
             List<BaseDoctorRoleDO> baseDoctorRoles = baseDoctorRoleService.search(fields, filters, sorts);
                  return success(baseDoctorRoles, BaseDoctorRoleVO.class);
         }
 }

+ 25 - 22
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/org/BaseOrgEndpoint.java

@ -40,10 +40,10 @@ public class BaseOrgEndpoint extends EnvelopRestEndpoint {
    @Autowired
    private BaseOrgService baseOrgService;
    @PostMapping(value = BaseRequestMapping.BaseOrg.CREATE, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @PostMapping(value = BaseRequestMapping.BaseOrg.CREATE )
    @ApiOperation(value = "创建")
    public Envelop create(
            @ApiParam(name = "json_data", value = "Json数据", required = true)
            @ApiParam(name = "jsonData", value = "Json数据", required = true)
            @RequestParam String jsonData) throws Exception {
        JSONObject jsonObject = JSONObject.parseObject(jsonData);
        BaseOrgDO baseOrg = toEntity(jsonObject.getJSONObject("org").toJSONString(), BaseOrgDO.class);
@ -63,17 +63,18 @@ public class BaseOrgEndpoint extends EnvelopRestEndpoint {
        return success("删除成功");
    }
    @PostMapping(value = BaseRequestMapping.BaseOrg.UPDATE, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @PostMapping(value = BaseRequestMapping.BaseOrg.UPDATE )
    @ApiOperation(value = "更新")
    public ObjEnvelop<BaseOrgVO> update(
            @ApiParam(name = "json_data", value = "Json数据", required = true)
    public Envelop update(
            @ApiParam(name = "jsonData", value = "Json数据", required = true)
            @RequestParam String jsonData) throws Exception {
        BaseOrgDO baseOrg = toEntity(jsonData, BaseOrgDO.class);
        if (null == baseOrg.getId()) {
            return failed("ID不能为空", ObjEnvelop.class);
        JSONObject jsonObject = JSONObject.parseObject(jsonData);
        BaseOrgDO baseOrg = toEntity(jsonObject.getJSONObject("org").toJSONString(), BaseOrgDO.class);
        String  msg = baseOrgService.createOrUpdateOrg(baseOrg,jsonObject.getJSONObject("admin"));
        if(StringUtils.endsWithIgnoreCase(msg, ConstantUtils.SUCCESS)){
            return success(msg);
        }
        baseOrg = baseOrgService.save(baseOrg);
        return success(baseOrg, BaseOrgVO.class);
        return failed(msg);
    }
    @GetMapping(value = BaseRequestMapping.BaseOrg.PAGE)
@ -118,25 +119,27 @@ public class BaseOrgEndpoint extends EnvelopRestEndpoint {
           return success(baseOrgService.getOrgAreaTree(saasId));
       }
    }
    @GetMapping(value = BaseRequestMapping.BaseOrg.queryOneById)
    @ApiOperation(value = "根据机构id查询机构")
    public Envelop queryOne (
            @ApiParam(name = "id", value = "id")
            @RequestParam(value = "id", required = true) String id) throws Exception {
      return success(baseOrgService.queryOneById(id));
    }
    @PostMapping(value = BaseRequestMapping.BaseOrg.baseInfoList)
    @ApiOperation(value = "获取机构基础信息列表")
    public ListEnvelop queryBaseOrgInfolist(
            @ApiParam(name = "orgCode", value = "返回的字段,为空返回全部字段")
            @RequestParam(value = "orgCode", required = false) String orgCode,
            @ApiParam(name = "orgName", value = "过滤器,为空检索所有条件")
            @RequestParam(value = "orgName", required = false) String orgName,
            @ApiParam(name = "orgStatus", value = "排序,规则参见说明文档")
    public Envelop queryBaseOrgInfolist(
            @ApiParam(name = "orgCode", value = "机构名称或机构代码")
            @RequestParam(value = "orgCode", required = false) String codeOrName,
            @ApiParam(name = "orgStatus", value = "机构状态")
            @RequestParam(value = "orgStatus", required = false) String orgStatus,
            @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "0")
            @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "1")
            @RequestParam(value = "page") int page,
            @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15")
            @RequestParam(value = "size") int size,
            @ApiParam(name = "sorts", value = "排序,规则参见说明文档")
            @RequestParam(value = "sorts", required = false) String sorts) throws Exception {
        List<Map<String, Object>> list = baseOrgService.queryOrgBaseInfoList(orgCode, orgName, orgStatus,page,size,sorts);
        return success(list);
            @RequestParam(value = "size") int size) throws Exception {
        return success(baseOrgService.queryOrgBaseInfoList(codeOrName, orgStatus,page,size));
    }
    @GetMapping(value = BaseRequestMapping.BaseOrg.check_code)

+ 1 - 1
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/user/UserEndpoint.java

@ -36,7 +36,7 @@ public class UserEndpoint extends EnvelopRestEndpoint {
            @ApiParam(name = "json_data", value = "Json数据", required = true)
            @RequestBody String jsonData) throws Exception {
        UserDO userDO = toEntity(jsonData, UserDO.class);
        userDO = userService.register(userDO);
        userDO = userService.registerWithIdcard(userDO);
        return success(userDO, UserVO.class);
    }

+ 22 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/service/dict/DictDoctorDutyService.java

@ -0,0 +1,22 @@
package com.yihu.jw.base.service.dict;
import com.yihu.jw.base.dao.dict.DictDoctorDutyDao;
import com.yihu.jw.entity.base.dict.DictDoctorDutyDO;
import com.yihu.mysql.query.BaseJpaService;
import org.springframework.stereotype.Service;
/**
 * 
 * 医生职务字典服务service
 * 
 * @version 
 * <pre>
 * Author	Version		Date		Changes
 * litaohong    1.0  2018年10月19日 Created
 *
 * </pre>
 * @since 1.
 */
@Service
public class DictDoctorDutyService extends BaseJpaService<DictDoctorDutyDO, DictDoctorDutyDao> {
}

+ 54 - 4
svr/svr-base/src/main/java/com/yihu/jw/base/service/doctor/BaseDoctorHospitalService.java

@ -2,15 +2,20 @@ package com.yihu.jw.base.service.doctor;
import com.yihu.jw.base.dao.doctor.BaseDoctorHospitalDao;
import com.yihu.mysql.query.BaseJpaService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.yihu.jw.entity.base.doctor.BaseDoctorHospitalDO;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
 * 
 * 医生职业信息服务service
 * 
 * @version 
 * <pre>
 *
 * @version <pre>
 * Author	Version		Date		Changes
 * litaohong    1.0  2018年08月31日 Created
 *
@ -19,4 +24,49 @@ import com.yihu.jw.entity.base.doctor.BaseDoctorHospitalDO;
 */
@Service
public class BaseDoctorHospitalService extends BaseJpaService<BaseDoctorHospitalDO, BaseDoctorHospitalDao> {
    @Autowired
    private BaseDoctorHospitalDao baseDoctorHospitalDao;
    /**
     * 根据机构标识和医生标识获取医生相关联的部门职务职称等
     *
     * @param hospCode
     * @param doctorCode
     * @return
     */
    List<BaseDoctorHospitalDO> getDoctorHospitalListInfo(String hospCode, String doctorCode) {
        List<BaseDoctorHospitalDO> result = new ArrayList<>();
        if (StringUtils.isEmpty(hospCode) || StringUtils.isEmpty(doctorCode)) {
            return result;
        }
        return baseDoctorHospitalDao.findByHospCodeAndDoctorCode(hospCode, doctorCode);
    }
    /**
     * 根据医院标识和医生标识获取医生相关关联的部门职务职称Id列表
     *
     * @param doctorCode
     * @return
     */
    Set<Object> findDocHospIdList(String doctorCode) {
        Set<Object> result = new HashSet<>();
        if (StringUtils.isEmpty(doctorCode)) {
            return result;
        }
        return baseDoctorHospitalDao.findIdListByHospCodeAndDoctorCode(doctorCode);
    }
    /**
     * 根据医生标识获取医生已经选择的机构和职务信息
     * @param doctorCode
     * @return
     */
    List<BaseDoctorHospitalDO> getOrgAndDutyListByDoctorCode(String doctorCode){
        List<BaseDoctorHospitalDO> result = new ArrayList<>();
        if(StringUtils.isEmpty(doctorCode)) {
            return result;
        }
        return baseDoctorHospitalDao.getOrgAndDutyByDoctorCode(doctorCode);
    }
}

+ 42 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/service/doctor/BaseDoctorRoleService.java

@ -0,0 +1,42 @@
package com.yihu.jw.base.service.doctor;
import com.yihu.jw.base.dao.doctor.BaseDoctorRoleDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorRoleDO;
import com.yihu.mysql.query.BaseJpaService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashSet;
import java.util.Set;
/**
 * 医生角色关联信息服务service
 *
 * @version <pre>
 * Author	Version		Date		Changes
 * litaohong    1.0  2018年10月19日 Created
 *
 * </pre>
 * @since 1.
 */
@Service
public class BaseDoctorRoleService extends BaseJpaService<BaseDoctorRoleDO, BaseDoctorRoleDao> {
    @Autowired
    private BaseDoctorRoleDao baseDoctorRoleDao;
    /**
     * 根据医生标识获取医生相关联的角色Id列表
     *
     * @param doctorCode
     * @return
     */
    public Set<Object> findRoleIdList(String doctorCode) {
        Set<Object> result = new HashSet<>();
        if (StringUtils.isEmpty(doctorCode)) {
            return result;
        }
        return baseDoctorRoleDao.findIdListByDoctorCode(doctorCode);
    }
}

+ 215 - 46
svr/svr-base/src/main/java/com/yihu/jw/base/service/doctor/BaseDoctorService.java

@ -1,5 +1,6 @@
package com.yihu.jw.base.service.doctor;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SimplePropertyPreFilter;
import com.fasterxml.jackson.databind.ObjectMapper;
@ -12,8 +13,7 @@ import com.yihu.jw.base.service.org.tree.TreeNode;
import com.yihu.jw.base.util.ConstantUtils;
import com.yihu.jw.base.util.JavaBeanUtils;
import com.yihu.jw.entity.base.doctor.BaseDoctorHospitalDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.base.patient.PatientMedicareCardDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorRoleDO;
import com.yihu.mysql.query.BaseJpaService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
@ -24,10 +24,8 @@ import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.regex.Pattern;
/**
 * 
@ -44,11 +42,14 @@ import java.util.Map;
@Service
public class BaseDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDao> {
    @Autowired
    private BaseDoctorDao baseDoctorDao;
    @Autowired
    private BaseDoctorHospitalService baseDoctorHospitalService;
    @Autowired
    private BaseDoctorRoleDictService baseDoctorRoleDictService;
    private BaseDoctorRoleService baseDoctorRoleService;
    @Autowired
    private JdbcTemplate jdbcTemplate;
@ -94,41 +95,47 @@ public class BaseDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDa
    /**
     * 获取医生信息(包括医生任职的医院相关信息)
     * @param name
     * @param idcard
     * @param nameOrIdcard
     * @param orgCode
     * @param docStatus
     * @return
     */
    public List<Map<String,Object>> getDoctorFullInfo(String name,String idcard,String orgCode,String docStatus){
        List<Map<String,Object>> result = new ArrayList<>();
        StringBuilder sql = new StringBuilder();
        sql.append("select doc.id,doc.name,doc.idcard,case doc.sex when 1 then '男' when 2 then '女' else '未知' end as sex,doc.del as status,hos.hosp_name as hosptialName,dept.name as deptName,hos.role_name as roleName,hos.job_title_name jobTitleName from base_doctor doc,base_doctor_hospital hos,dict_hospital_dept dept where doc.id = hos.doctor_code and hos.dept_code = dept.code and hos.del = 1");
        if(StringUtils.isEmpty(name) && StringUtils.isEmpty(idcard) && StringUtils.isEmpty(orgCode) && StringUtils.isEmpty(docStatus)){
           result = jdbcTemplate.queryForList(sql.toString());
        }else if(StringUtils.isEmpty(name) || StringUtils.isEmpty(idcard)){
            if (!StringUtils.isEmpty(name)) {
                sql.append(" and doc.name = '").append(idcard).append("'");
            }else{
                sql.append(" and doc.idcard = '").append(name).append("'");
            }
            if(StringUtils.isEmpty(orgCode) && !StringUtils.isEmpty(docStatus)){
                sql.append(" and doc.del = '").append(docStatus).append("'");
            }else if(!StringUtils.isEmpty(orgCode) && StringUtils.isEmpty(docStatus)){
                sql.append(" and hos.hosp_code = '").append(orgCode).append("'");
    public String getDoctorFullInfo(String nameOrIdcard,String orgCode,String docStatus,int page,int size,String sort) throws Exception {
        List<Map<String, Object>> result = new ArrayList<>();
        String pattern = "^\\d+";
        if(StringUtils.isEmpty(nameOrIdcard) && StringUtils.isEmpty(orgCode) && StringUtils.isEmpty(docStatus)){
            result = baseDoctorDao.queryDoctorFullInfo();
        }else if(!StringUtils.isEmpty(nameOrIdcard)){
            boolean isIdcard = Pattern.matches(pattern, nameOrIdcard);
            if(isIdcard){
                if(StringUtils.isEmpty(orgCode) && StringUtils.isEmpty(docStatus) ){
                    result = baseDoctorDao.queryDoctorFullInfoByIdcard("%" + nameOrIdcard + "%");
                }else if(!StringUtils.isEmpty(orgCode)){
                    result = baseDoctorDao.queryDoctorFullInfoByIdcardAndOrg("%" + nameOrIdcard + "%",orgCode);
                }else if(!StringUtils.isEmpty(docStatus)){
                    result = baseDoctorDao.queryDoctorFullInfoByIdcardAndDocDel("%" + nameOrIdcard + "%",docStatus);
                }else{
                    result = baseDoctorDao.queryDoctorFullInfoByIdcardAndOrgAndDocDel("%" + nameOrIdcard + "%",orgCode,docStatus);
                }
            }else{
                sql.append(" and hos.hosp_code = '").append(orgCode).append("'");
                sql.append(" and doc.del = '").append(docStatus).append("'");
                if(StringUtils.isEmpty(orgCode) && StringUtils.isEmpty(docStatus) ){
                    result = baseDoctorDao.queryDoctorFullInfoByName("%" + nameOrIdcard + "%");
                }else if(!StringUtils.isEmpty(orgCode)){
                    result = baseDoctorDao.queryDoctorFullInfoByNameAndOrg("%" + nameOrIdcard + "%",orgCode);
                }else if(!StringUtils.isEmpty(docStatus)){
                    result = baseDoctorDao.queryDoctorFullInfoByNameAndDocDel("%" + nameOrIdcard + "%",docStatus);
                }else{
                    result = baseDoctorDao.queryDoctorFullInfoByNameAndOrgAndDocDel("%" + nameOrIdcard + "%",orgCode,docStatus);
                }
            }
            result = jdbcTemplate.queryForList(sql.toString());
        }else if(StringUtils.isEmpty(orgCode)){
            sql.append(" and doc.hosp_code = '").append(orgCode).append("'");
            result = jdbcTemplate.queryForList(sql.toString());
        }else{
            sql.append(" and doc.del = '").append(docStatus).append("'");
            result = jdbcTemplate.queryForList(sql.toString());
        }
        return result;
        }else if(StringUtils.isEmpty(orgCode) && !StringUtils.isEmpty(docStatus) ){
            result = baseDoctorDao.queryDoctorFullInfoByDocDel(docStatus);
        }else if(!StringUtils.isEmpty(orgCode) && StringUtils.isEmpty(docStatus)){
            result = baseDoctorDao.queryDoctorFullInfoByOrg(orgCode);
        }else {
            result = baseDoctorDao.queryDoctorFullInfoByOrgAndDocDel(orgCode,docStatus);
        }
        return JavaBeanUtils.getInstance().mapListJson(result);
    }
    /**
@ -146,14 +153,15 @@ public class BaseDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDa
        }
        JSONObject jsonObject = JSONObject.parseObject(jsonData);
        JSONObject doctor = jsonObject.getJSONObject("doctor");
        JSONObject hospital = jsonObject.getJSONObject("hospital");
        if(null == doctor || null == hospital){
        JSONArray role = jsonObject.getJSONArray("role");
        JSONArray hospital = jsonObject.getJSONArray("hospital");
        if(null == doctor || CollectionUtils.isEmpty(role) || CollectionUtils.isEmpty(hospital)){
            result.put("msg","parameter doctor or hospital of jsonData is null");
            result.put("response", ConstantUtils.FAIL);
            return result.toJSONString();
        }
        //组装医生信息
        BaseDoctorDO baseDoctorDO = null;
        BaseDoctorHospitalDO baseDoctorHospitalDO = null;
        try {
            baseDoctorDO = objectMapper.readValue(doctor.toJSONString(),BaseDoctorDO.class);
        } catch (IOException e) {
@ -161,34 +169,195 @@ public class BaseDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDa
           result.put("response",ConstantUtils.FAIL);
           return result.toJSONString();
        }
        baseDoctorDO.setPassword(baseDoctorDO.getIdcard().substring(11,17));
        this.save(baseDoctorDO);
        //组装医生角色关联关系
        BaseDoctorRoleDO baseDoctorRoleDO = null;
        List<BaseDoctorRoleDO> baseDoctorRoleDOList = new ArrayList<>();
        try {
            for(Object object : role){
                baseDoctorRoleDO = objectMapper.readValue(object.toString(),BaseDoctorRoleDO.class);
                baseDoctorRoleDO.setDoctorCode(baseDoctorDO.getId());
                baseDoctorRoleDOList.add(baseDoctorRoleDO);
            }
        } catch (IOException e) {
            result.put("msg","convert hospital jsonObject to baseDoctorHospitalDO failed," + e.getCause());
            result.put("response",ConstantUtils.FAIL);
            // 如果异常,将保存的医生信息删除
            this.delete(baseDoctorDO);
            return result.toJSONString();
        }
        baseDoctorRoleService.batchInsert(baseDoctorRoleDOList);
        // 组装医生任职机构及职业信息
        BaseDoctorHospitalDO baseDoctorHospitalDO = null;
        List<BaseDoctorHospitalDO> hospitalDOList = new ArrayList<>();
        try {
            baseDoctorHospitalDO = objectMapper.readValue(hospital.toJSONString(),BaseDoctorHospitalDO.class);
            baseDoctorHospitalDO.setDoctorCode(baseDoctorDO.getId());
            for(Object object : hospital){
                baseDoctorHospitalDO = objectMapper.readValue(object.toString(),BaseDoctorHospitalDO.class);
                baseDoctorHospitalDO.setDoctorCode(baseDoctorDO.getId());
                hospitalDOList.add(baseDoctorHospitalDO);
            }
        } catch (IOException e) {
            result.put("msg","convert hospital jsonObject to baseDoctorHospitalDO failed," + e.getCause());
            result.put("response",ConstantUtils.FAIL);
            // 如果异常,将保存的医生信息,角色关联关系删除
            this.delete(baseDoctorDO);
            baseDoctorRoleService.delete(baseDoctorRoleDOList);
            return result.toJSONString();
        }
        baseDoctorHospitalService.save(baseDoctorHospitalDO);
        baseDoctorHospitalService.batchInsert(hospitalDOList);
        result.put("response",ConstantUtils.SUCCESS);
        result.put("msg",baseDoctorDO);
        return result.toJSONString();
    }
    /**
     * 修改医生
     * @param jsonData
     * @return
     */
    @Transactional(rollbackFor = Exception.class)
    public String updateDoctor(String jsonData){
        JSONObject result = new JSONObject();
        if(StringUtils.isEmpty(jsonData)){
            result.put("msg","jsonData is null");
            result.put("response", ConstantUtils.FAIL);
            return result.toJSONString();
        }
        JSONObject jsonObject = JSONObject.parseObject(jsonData);
        JSONObject doctor = jsonObject.getJSONObject("doctor");
        JSONArray role = jsonObject.getJSONArray("role");
        JSONArray hospital = jsonObject.getJSONArray("hospital");
        if(null == doctor || CollectionUtils.isEmpty(role) || CollectionUtils.isEmpty(hospital)){
            result.put("msg","parameter doctor or hospital of jsonData is null");
            result.put("response", ConstantUtils.FAIL);
            return result.toJSONString();
        }
        //判断医生id是否存在
        if(StringUtils.isEmpty(doctor.getString("id"))){
            result.put("msg","parameter id for doctor is null when update doctor");
            result.put("response", ConstantUtils.FAIL);
            return result.toJSONString();
        }
        // 修改医生信息
        BaseDoctorDO baseDoctorDO = null;
        try {
            baseDoctorDO = objectMapper.readValue(doctor.toJSONString(),BaseDoctorDO.class);
        } catch (IOException e) {
            result.put("msg","convert doctor jsonObject to BaseDoctorDO failed," + e.getCause());
            result.put("response",ConstantUtils.FAIL);
            return result.toJSONString();
        }
        this.save(baseDoctorDO);
        //修改医生角色关联关系
        BaseDoctorRoleDO baseDoctorRoleDO = null;
        Set<Object> roleIdList = baseDoctorRoleService.findRoleIdList(baseDoctorDO.getId());
        try {
            for(Object object : hospital){
                baseDoctorRoleDO = objectMapper.readValue(object.toString(),BaseDoctorRoleDO.class);
                if(roleIdList.contains(baseDoctorRoleDO.getId())){
                    roleIdList.remove(baseDoctorRoleDO.getId());
                }
                baseDoctorRoleDO.setDoctorCode(baseDoctorDO.getId());
                baseDoctorRoleService.save(baseDoctorRoleDO);
            }
        } catch (IOException e) {
            result.put("msg","convert hospital jsonObject to baseDoctorHospitalDO failed," + e.getCause());
            result.put("response",ConstantUtils.FAIL);
        }
        baseDoctorHospitalService.delete(roleIdList.toArray());
        // 修改医生任职机构及职业信息
        BaseDoctorHospitalDO baseDoctorHospitalDO = null;
        Set<Object> hospitalIdList = baseDoctorHospitalService.findDocHospIdList(baseDoctorDO.getId());
        try {
            for(Object object : hospital){
                baseDoctorHospitalDO = objectMapper.readValue(object.toString(),BaseDoctorHospitalDO.class);
                if(hospitalIdList.contains(baseDoctorHospitalDO.getId())){
                    hospitalIdList.remove(baseDoctorHospitalDO.getId());
                }
                baseDoctorHospitalDO.setDoctorCode(baseDoctorDO.getId());
                baseDoctorHospitalService.save(baseDoctorHospitalDO);
            }
        } catch (IOException e) {
            result.put("msg","convert hospital jsonObject to baseDoctorHospitalDO failed," + e.getCause());
            result.put("response",ConstantUtils.FAIL);
        }
        baseDoctorHospitalService.delete(hospitalIdList.toArray());
        result.put("response",ConstantUtils.SUCCESS);
        result.put("msg",baseDoctorDO);
        return result.toJSONString();
    }
    /**
     * 构建区域树形结构()
     * @Param level 参考OrgTree的Level枚举类型
     * 生效或失效单个医生
     * @param doctorCode
     * @param del
     * @return
     */
    public String enableOrDisableDoctor(String doctorCode,String del){
        JSONObject result = new JSONObject();
        if(StringUtils.isEmpty(doctorCode) || StringUtils.isEmpty(del)){
            result.put("msg","parameter doctorCode or del is null");
            result.put("response",ConstantUtils.FAIL);
            return result.toJSONString();
        }
        BaseDoctorDO baseDoctorDO = baseDoctorDao.findOne(doctorCode);
        if( null == baseDoctorDO ){
            result.put("msg","doctor not exist for id:" + doctorCode);
            result.put("response",ConstantUtils.FAIL);
            return result.toJSONString();
        }
        baseDoctorDO.setDel(del);
        this.save(baseDoctorDO);
        result.put("response",ConstantUtils.SUCCESS);
        return result.toJSONString();
    }
    /**
     * 获取医生已选中的机构职务树形结构
     * @param doctorCode
     * @return
     */
    public String getDoctorDutyTree(String doctorCode){
        if(StringUtils.isEmpty(doctorCode)){
            return "";
        }
        List<BaseDoctorHospitalDO> list = baseDoctorHospitalService.getOrgAndDutyListByDoctorCode(doctorCode);
        List<OrgTree> orgTreeList = new ArrayList<>();
        for(BaseDoctorHospitalDO one : list){
            OrgTree orgTreeParent = new OrgTree();
            orgTreeParent.setParentCode("");
            orgTreeParent.setCode(one.getHospCode());
            orgTreeParent.setName(one.getHospName());
            orgTreeList.add(orgTreeParent);
            OrgTree orgTreeChild = new OrgTree();
            orgTreeChild.setParentCode(one.getHospCode());
            orgTreeChild.setCode(one.getDoctorDutyCode());
            orgTreeChild.setName(one.getDoctorDutyName());
            orgTreeList.add(orgTreeChild);
        }
        return getOrgTree(orgTreeList);
    }
    /**
     * 构建树形结构
     * @return
     */
    public String getOrgTree(OrgTree.Level level){
    public String getOrgTree(List<OrgTree> orgTreeList ){
        List<TreeNode> treeNodes = new ArrayList<>();
        treeNodes.addAll(orgTreeService.findListByLevel(level.getLevelValue()));
        treeNodes.addAll(orgTreeList);
        SimpleTree tree = new SimpleTree(treeNodes);
        List<SimpleTreeNode> treeNode = tree.getRoot();
        SimplePropertyPreFilter filter = new SimplePropertyPreFilter();
        filter.getExcludes().add("parent");
        filter.getExcludes().add("allChildren");
        filter.getExcludes().add("parentNodeId");
        filter.getExcludes().add("orderNum");
        filter.getExcludes().add("level");
        return JSONObject.toJSONString(treeNode, filter);
    }
}

+ 22 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/service/org/BaseOrgSaasService.java

@ -0,0 +1,22 @@
package com.yihu.jw.base.service.org;
import com.yihu.jw.base.dao.org.BaseOrgSaasDao;
import com.yihu.jw.entity.base.org.BaseOrgSaasDO;
import com.yihu.mysql.query.BaseJpaService;
import org.springframework.stereotype.Service;
/**
 * 
 * 机构与Saas关联信息服务service
 * 
 * @version 
 * <pre>
 * Author	Version		Date		Changes
 * litaohong    1.0  2018年10月20日 Created
 *
 * </pre>
 * @since 1.
 */
@Service
public class BaseOrgSaasService extends BaseJpaService<BaseOrgSaasDO, BaseOrgSaasDao> {
}

+ 87 - 24
svr/svr-base/src/main/java/com/yihu/jw/base/service/org/BaseOrgService.java

@ -4,8 +4,11 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SimplePropertyPreFilter;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.JsonObject;
import com.yihu.jw.base.dao.org.BaseOrgDao;
import com.yihu.jw.base.dao.org.BaseOrgUserDao;
import com.yihu.jw.base.dao.org.OrgTreeDao;
import com.yihu.jw.base.dao.user.UserDao;
import com.yihu.jw.base.dao.user.UserRoleDao;
@ -16,6 +19,8 @@ import com.yihu.jw.base.service.org.tree.TreeNode;
import com.yihu.jw.base.service.user.UserRoleService;
import com.yihu.jw.base.service.user.UserService;
import com.yihu.jw.base.util.ConstantUtils;
import com.yihu.jw.base.util.JavaBeanUtils;
import com.yihu.jw.entity.base.org.BaseOrgUserDO;
import com.yihu.jw.entity.base.user.UserDO;
import com.yihu.jw.entity.base.user.UserRoleDO;
import com.yihu.jw.rm.base.BaseRequestMapping;
@ -56,37 +61,63 @@ public class BaseOrgService extends BaseJpaService<BaseOrgDO, BaseOrgDao> {
    @Autowired
    private UserRoleService userRoleService;
    @Autowired
    private  BaseOrgUserService baseOrgUserService;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private ObjectMapper objectMapper;
    /**
     * 机构基础信息列表
     * @param orgCode
     * @param orgName
     * @param codeOrName
     * @param orgStatus
     * @return
     */
    public List<Map<String,Object>> queryOrgBaseInfoList(String orgCode,String orgName,String orgStatus,int page,int size,String sorts){
    public String queryOrgBaseInfoList(String codeOrName,String orgStatus,int page,int size) throws Exception {
        List<Map<String,Object>> result = new ArrayList<>();
        if(StringUtils.endsWithIgnoreCase("1",orgStatus)){
            if(!StringUtils.isEmpty(orgCode) ){
                result = baseOrgDao.findByCodeAndDel(orgCode,orgStatus,createPage(page,size,sorts));
            }else if(!StringUtils.isEmpty(orgCode)){
                result = baseOrgDao.findByNameAndDel(orgName,orgStatus,createPage(page,size,sorts));
            }else{
                result = baseOrgDao.findBaseInfoByDel(orgStatus,createPage(page,size,sorts));
            }
        }else{
            if(!StringUtils.isEmpty(orgCode) ){
                result = baseOrgDao.findByCode(orgCode,createPage(page,size,sorts));
            }else if(!StringUtils.isEmpty(orgCode)){
                result = baseOrgDao.findByName(orgName,createPage(page,size,sorts));
            }else{
                result = baseOrgDao.findBaseInfo(createPage(page,size,sorts));
            }
        int start = 0 == page ? page++ : (page - 1) * size;
        int end = 0 == size ? size = 10 : page  * size;
        String code = null == codeOrName ? "": codeOrName;
        String name = null == codeOrName ? "": codeOrName;
        String sql = "select id,code,name,case del when 1 then '有效' else '失效' end as status,concat(province_name,city_name,town_name,address) as address " +
                "from base_org " +
                " where " +
                " (code like '{code}' or ''='{code}')" +
                " or " +
                " (name like '{name}' or ''='{name}') " +
                " and" +
                " (del = '{orgStatus}' or ''='{orgStatus}')" +
                " limit {start},{end}";
        String finalSql = sql.replace("{code}", "%" + code + "%")
                .replace("{name}", "%" + name + "%")
                .replace("{orgStatus}", null == orgStatus ? "": orgStatus).replace("{start}", String.valueOf(start))
                .replace("{end}", String.valueOf(end));
        result = jdbcTemplate.queryForList(finalSql);
        return JavaBeanUtils.getInstance().mapListJson(result);
    }
    /**
     * 根据id查询机构
     * @param id
     * @return
     */
    public String queryOneById(String id) throws JsonProcessingException {
        if(StringUtils.isEmpty(id)){
            return "org not exist for id:"+id;
        }
        return result;
        BaseOrgDO baseOrgDO = baseOrgDao.findOne(id);
        if(null == baseOrgDO){
            return "";
        }
        List<BaseOrgUserDO> adminList = baseOrgUserService.findAllByOrgCode(baseOrgDO.getCode());
        JSONObject jsonObject = JSONObject.parseObject(objectMapper.writeValueAsString(baseOrgDO));
        jsonObject.put("admin",adminList);
        return jsonObject.toJSONString();
    }
    /**
@ -103,18 +134,26 @@ public class BaseOrgService extends BaseJpaService<BaseOrgDO, BaseOrgDao> {
        }
        //id为空表示新增
        if(StringUtils.isEmpty(baseOrgDO.getId())){
            baseOrgDO.setOrgAdmin(adminName);
            baseOrgDao.save(baseOrgDO);
            //新增机构与管理员关联关系
            BaseOrgUserDO baseOrgUserDO = new BaseOrgUserDO();
            baseOrgUserDO.setOrgCode(baseOrgDO.getCode());
            baseOrgUserDO.setUserAccount(mobile);
            baseOrgUserService.save(baseOrgUserDO);
            //新增用户(管理员)
            userDO = new UserDO();
            userDO.setUsername(adminName);
            userDO.setUsername(mobile);
            userDO.setName(adminName);
            userDO.setMobile(mobile);
            userService.register(userDO);
            userService.registerWithMobile(userDO);
            // 新增用户角色关联关系
            UserRoleDO userRoleDO = new UserRoleDO();
            userRoleDO.setRoleId("");
            userRoleDO.setUserId("");
            userRoleDO.setUserId(userDO.getId());
            userRoleService.save(userRoleDO);
        }else{
            String adminId = orgAdminJson.getString("id");
@ -125,6 +164,7 @@ public class BaseOrgService extends BaseJpaService<BaseOrgDO, BaseOrgDao> {
            if(null == oldBaseOrgDO){
                return "no exist this org";
            }
            baseOrgDO.setOrgAdmin(adminName);
            baseOrgDao.save(baseOrgDO);
            if(!baseOrgDO.getTownCode().equalsIgnoreCase(oldBaseOrgDO.getTownCode())){
                orgTreeService.updateOrgTreeNode(oldBaseOrgDO,baseOrgDO,OrgTree.Level.town.getLevelValue());
@ -140,7 +180,7 @@ public class BaseOrgService extends BaseJpaService<BaseOrgDO, BaseOrgDao> {
            if(StringUtils.endsWithIgnoreCase(adminName,userDO.getUsername()) && StringUtils.endsWithIgnoreCase(mobile,userDO.getMobile())){
                return ConstantUtils.SUCCESS;
            }
            userDO.setUsername(adminName);
            userDO.setName(adminName);
            userDO.setMobile(mobile);
            userService.save(userDO);
        }
@ -211,4 +251,27 @@ public class BaseOrgService extends BaseJpaService<BaseOrgDO, BaseOrgDao> {
        }
        return baseOrgDao.findOrgCodeBySaasId(saasId);
    }
    public static void main(String[] args) {
        String codeOrName = "aa";
        String orgStatus = "";
        int page = 1;
        int size = 10;
        int start = (page - 1) * size;
        int end = page  * size;
        String sql = "select id,code,name,case del when 1 then '有效' else '失效' end as status,concat(province_name,city_name,town_name,street_name) as address " +
                "from base_org " +
                " where " +
                " (code like '{code}' or ''='{code}')" +
                " or " +
                " (name like '{name}' or ''='{name}') " +
                " and" +
                " (del = '{orgStatus}' or ''='{orgStatus}')" +
                " limit {start},{end}";
        String finalSql = sql.replace("{code}", "%" + codeOrName + "%")
                .replace("{name}", "%" + codeOrName + "%")
                .replace("{orgStatus}", orgStatus).replace("{start}", String.valueOf(start))
                .replace("{end}", String.valueOf(end));
        System.out.println(finalSql);
    }
}

+ 35 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/service/org/BaseOrgUserService.java

@ -0,0 +1,35 @@
package com.yihu.jw.base.service.org;
import com.yihu.jw.base.dao.org.BaseOrgUserDao;
import com.yihu.jw.entity.base.org.BaseOrgUserDO;
import com.yihu.mysql.query.BaseJpaService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
 * 
 * 机构与机构管理员关联信息服务service
 * 
 * @version 
 * <pre>
 * Author	Version		Date		Changes
 * litaohong    1.0  2018年10月20日 Created
 *
 * </pre>
 * @since 1.
 */
@Service
public class BaseOrgUserService extends BaseJpaService<BaseOrgUserDO, BaseOrgUserDao> {
    @Autowired
    private BaseOrgUserDao baseOrgUserDao;
    public List<BaseOrgUserDO> findAllByOrgCode(String orgCode){
        List<BaseOrgUserDO> result = new ArrayList<>();
        return StringUtils.isEmpty(orgCode) ? result : baseOrgUserDao.findAllByOrgCode(orgCode);
    }
}

+ 16 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/service/org/OrgTreeService.java

@ -9,11 +9,13 @@ import com.yihu.jw.base.service.org.tree.TreeNode;
import com.yihu.jw.entity.base.org.BaseOrgDO;
import com.yihu.jw.rm.base.BaseRequestMapping;
import com.yihu.mysql.query.BaseJpaService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * 
@ -152,4 +154,18 @@ public class OrgTreeService extends BaseJpaService<OrgTree, OrgTreeDao> {
        }
        return orgTreeDao.findByLevelLessThanEqual(level);
    }
    /**
     * 根据区下面的机构列表
     *
     * @param townCode
     * @return
     */
    public List<Map<String, Object>> findOrgListByParentCode(String townCode) {
        List<Map<String, Object>> result = new ArrayList<>();
        if (StringUtils.isEmpty(townCode)) {
            return result;
        }
        return orgTreeDao.findOrgListByParentCode(townCode);
    }
}

+ 19 - 1
svr/svr-base/src/main/java/com/yihu/jw/base/service/user/UserService.java

@ -22,7 +22,7 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
    @Autowired
    private UserDao userDao;
    public UserDO register(UserDO userDO) {
    public UserDO registerWithIdcard(UserDO userDO) {
        userDO.setSalt(randomString(5));
        userDO.setEnabled(true);
        userDO.setLocked(false);
@ -35,6 +35,24 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
        return userDao.save(userDO);
    }
    /**
     * 手机号作为账号,初始密码为手机号后6位
     * @param userDO
     * @return
     */
    public UserDO registerWithMobile(UserDO userDO) {
        userDO.setSalt(randomString(5));
        userDO.setEnabled(true);
        userDO.setLocked(false);
        userDO.setLoginFailureCount(0);
        String password = userDO.getPassword();
        if (StringUtils.isEmpty(password)) {
            password =  userDO.getMobile().substring(0, 5);
        }
        userDO.setPassword(MD5.md5Hex(password + "{" + userDO.getSalt() + "}"));
        return userDao.save(userDO);
    }
    /**
     * 根据用户手机号查找(手机号为登录账号)

+ 6 - 5
svr/svr-base/src/main/java/com/yihu/jw/base/util/JavaBeanUtils.java

@ -34,13 +34,15 @@ public class JavaBeanUtils {
                if (javaBeanUtils == null) {
                    javaBeanUtils = new JavaBeanUtils();
                }
                if (objectMapper == null) {
                    objectMapper = new ObjectMapper();
                }
            }
        }
        return javaBeanUtils;
    }
    @Autowired
    private ObjectMapper objectMapper;
    private static ObjectMapper objectMapper = null;
    /**
     * 将一个 Map 对象转化为一个 JavaBean
     *
@ -245,11 +247,10 @@ public class JavaBeanUtils {
     * @return
     */
    public String mapListJson(List<Map<String, Object>> mapList) throws Exception {
        JSONArray jsonArray = new JSONArray();
        if (CollectionUtils.isEmpty(mapList)) {
            return "paramter is null";
            return jsonArray.toJSONString();
        }
        List<Map<String, Object>> result = new ArrayList<>();
        JSONArray jsonArray = new JSONArray();
        for(Map<String, Object> map : mapList){
            JSONObject jsonObject = JSONObject.parseObject(objectMapper.writeValueAsString(map));
            jsonArray.add(jsonObject);