Sfoglia il codice sorgente

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

liubing 3 anni fa
parent
commit
9c6102f49d
36 ha cambiato i file con 1575 aggiunte e 205 eliminazioni
  1. 14 6
      business/base-service/src/main/java/com/yihu/jw/complaint/BaseComplaintService.java
  2. 10 2
      business/base-service/src/main/java/com/yihu/jw/dict/dao/BaseDictIcd10Dao.java
  3. 11 2
      business/base-service/src/main/java/com/yihu/jw/dict/dao/BaseDrugDictDao.java
  4. 9 2
      business/base-service/src/main/java/com/yihu/jw/dict/dao/BaseDrugUseDictDao.java
  5. 9 2
      business/base-service/src/main/java/com/yihu/jw/dict/dao/BaseFrequencyDictDao.java
  6. 3 0
      business/base-service/src/main/java/com/yihu/jw/dict/dao/BaseTemplateDictDao.java
  7. 1 1
      business/base-service/src/main/java/com/yihu/jw/dict/dao/BaseTemplateOrgDao.java
  8. 72 5
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/PrescriptionService.java
  9. 4 0
      common/common-entity/sql记录
  10. 11 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/complaint/BaseComplaintDO.java
  11. 22 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/login/BaseLoginLogDO.java
  12. 0 1
      server/svr-authentication/pom.xml
  13. 50 12
      server/svr-authentication/src/main/java/com/yihu/jw/security/core/userdetails/jdbc/WlyyUserDetailsService.java
  14. 10 10
      server/svr-authentication/src/main/java/com/yihu/jw/security/oauth2/provider/endpoint/WlyyLoginEndpoint.java
  15. 895 0
      server/svr-authentication/src/main/java/com/yihu/jw/security/utils/ImUtil.java
  16. 63 9
      server/svr-authentication/src/main/resources/application.yml
  17. 6 0
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/dict/DictIcd10Dao.java
  18. 9 0
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/common/excel/AExcelReader.java
  19. 9 4
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/dict/DictIcd10Endpoint.java
  20. 36 17
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/dict/TemplateManageEndpoint.java
  21. 17 2
      svr/svr-base/src/main/java/com/yihu/jw/base/service/dict/BaseDrugDictService.java
  22. 17 4
      svr/svr-base/src/main/java/com/yihu/jw/base/service/dict/BaseDrugUseService.java
  23. 15 2
      svr/svr-base/src/main/java/com/yihu/jw/base/service/dict/BaseFrequencyService.java
  24. 16 2
      svr/svr-base/src/main/java/com/yihu/jw/base/service/dict/DictIcd10Service.java
  25. 118 51
      svr/svr-base/src/main/java/com/yihu/jw/base/service/dict/TemplateManageService.java
  26. 24 6
      svr/svr-base/src/main/java/com/yihu/jw/base/service/dict/importManage/BasDrugExcelDO.java
  27. 14 21
      svr/svr-base/src/main/java/com/yihu/jw/base/service/dict/importManage/BasDrugUseExcelDO.java
  28. 1 6
      svr/svr-base/src/main/java/com/yihu/jw/base/service/dict/importManage/BasFrequencyExcelDO.java
  29. 1 6
      svr/svr-base/src/main/java/com/yihu/jw/base/service/dict/importManage/BasIcd10ExcelDO.java
  30. 18 6
      svr/svr-base/src/main/java/com/yihu/jw/base/service/dict/importManage/BaseDrugExcelDOReader.java
  31. 20 13
      svr/svr-base/src/main/java/com/yihu/jw/base/service/dict/importManage/BaseDrugUseExcelDOReader.java
  32. 13 5
      svr/svr-base/src/main/java/com/yihu/jw/base/service/dict/importManage/BaseFrequencyExcelDOReader.java
  33. 13 5
      svr/svr-base/src/main/java/com/yihu/jw/base/service/dict/importManage/BaseIcd10ExcelDOReader.java
  34. 38 1
      svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/patient/PatientNoLoginEndPoint.java
  35. 2 2
      svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/prescription/PrescriptionEndpoint.java
  36. 4 0
      svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/service/SystemMessage/HospitalSystemMessageService.java

+ 14 - 6
business/base-service/src/main/java/com/yihu/jw/complaint/BaseComplaintService.java

@ -31,6 +31,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.*;
@Service
@ -323,7 +324,7 @@ public class BaseComplaintService {
    //接受投诉
    public BaseComplaintDO doctorAccept(String id,String doctor) throws Exception{
        BaseComplaintDO baseComplaintDO = baseComplaintDao.findOne(id);
        if (baseComplaintDO!=null&&"0".equalsIgnoreCase(baseComplaintDO.getStatus())){
        if (baseComplaintDO!=null){
            baseComplaintDO.setStatus("1");
            BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(doctor);
            if (null != baseDoctorDO) {
@ -339,17 +340,17 @@ public class BaseComplaintService {
            baseComplaintOperateLogDO.setRelationCode(id);
            baseComplaintOperateLogDO.setCreateTime(new Date());
            baseComplaintOperateDao.save(baseComplaintOperateLogDO);
        }else if ("1".equalsIgnoreCase(baseComplaintDO.getStatus())){
        }/*else if ("1".equalsIgnoreCase(baseComplaintDO.getStatus())){
            throw new Exception("该工单已被接受");
        }else {
            throw new Exception("该工单已被处理完成");
        }
        }*/
        return baseComplaintDO;
    }
    //反馈投诉
    public BaseComplaintDO dealComplaint(String id,String operator,String content,String imgUrl ,String deptCode) throws  Exception{
        BaseComplaintDO baseComplaintDO = baseComplaintDao.findOne(id);
        if (baseComplaintDO!=null&&"1".equalsIgnoreCase(baseComplaintDO.getStatus())){
        if (baseComplaintDO!=null){
            baseComplaintDO.setDealTime(new Date());
            baseComplaintDO.setFeedBack(content);
            baseComplaintDO.setFeedImg(imgUrl);
@ -372,11 +373,11 @@ public class BaseComplaintService {
            baseComplaintOperateLogDO.setRelationCode(id);
            baseComplaintOperateLogDO.setCreateTime(new Date());
            baseComplaintOperateDao.save(baseComplaintOperateLogDO);
        }else if ("2".equalsIgnoreCase(baseComplaintDO.getStatus())){
        }/*else if ("2".equalsIgnoreCase(baseComplaintDO.getStatus())){
            throw new Exception("该工单已被处理完成");
        }else if ("0".equalsIgnoreCase(baseComplaintDO.getStatus())){
            throw new Exception("该工单未被接收");
        }
        }*/
        return baseComplaintDO;
    }
@ -510,6 +511,13 @@ public class BaseComplaintService {
        if (null!=basePatientDO){
            baseComplaintDO.setMobile(basePatientDO.getMobile());
        }
        WlyyHospitalSysDictDO wlyyHospitalSysDictDO =wlyyHospitalSysDictDao.findById("latestFeedBackTime");
        Integer timeOut=15;
        if (wlyyHospitalSysDictDO!=null){
            timeOut =Integer.parseInt(wlyyHospitalSysDictDO.getDictValue());
        }
        long latestDate=baseComplaintDO.getCreateTime().getTime()+timeOut*24*60*60*1000;
        baseComplaintDO.setLatestFeedTime( (new Date(latestDate)));
        baseComplaintDO.setVisitTypeName(baseComplaintDO.getVisitType().equalsIgnoreCase("1")?"门诊":"住院");
        return baseComplaintDO;
    }

+ 10 - 2
business/base-service/src/main/java/com/yihu/jw/dict/dao/BaseDictIcd10Dao.java

@ -19,6 +19,14 @@ public interface BaseDictIcd10Dao extends PagingAndSortingRepository<DictIcd10DO
    Integer getconuntByDel();
    @Query("from DictIcd10DO t where t.is_del='1' and t.status ='1' and t.name like %?1% order by t.createTime desc")
    List<DictIcd10DO> findByNameDel(String name,Pageable pageRequest);
    @Query("from DictIcd10DO t where t.is_del='1' and t.status ='1' and t.name like %?1%  and t.code like %?2% order by t.createTime desc")
    List<DictIcd10DO> findByNameDel(String name,String code,Pageable pageRequest);
    @Query("from DictIcd10DO t where t.is_del='1' and t.status='1' and t.code=?1")
    DictIcd10DO findByCode(String code);
    @Query("from DictIcd10DO t where t.code=?1 and t.is_del='1'")
    List<DictIcd10DO>  findByIcdCode(String code);
}

+ 11 - 2
business/base-service/src/main/java/com/yihu/jw/dict/dao/BaseDrugDictDao.java

@ -14,11 +14,20 @@ public interface BaseDrugDictDao  extends PagingAndSortingRepository<BaseDrugDic
    @Query("from BaseDrugDictDO t where t.charge_code=?1 and t.drugname=?2 and t.dosage=?3")
    List<BaseDrugDictDO>  findByCodeAndNameAndDosage(String code,String name,String dosage);
    @Query("from BaseDrugDictDO t where t.charge_code=?1 and t.is_del='1'")
    List<BaseDrugDictDO>  findByChargeCode(String code);
    @Query("from BaseDrugDictDO t where t.is_del='1' and t.status='1' order by  t.create_time desc")
    List<BaseDrugDictDO> findByDel(Pageable pageRequest);
    @Query("select  count(1) from BaseDrugDictDO t where t.is_del='1' and t.status='1'")
    Integer getconuntByDel();
    @Query("from BaseDrugDictDO t where t.is_del='1' and t.status='1' and t.drugname like %?1% order by  t.create_time desc")
    List<BaseDrugDictDO> findByNameDel(String name,Pageable pageRequest);
    @Query("from BaseDrugDictDO t where t.is_del='1' and t.status='1' and t.drugname like %?1%  and t.charge_code like %?2% order by  t.create_time desc")
    List<BaseDrugDictDO> findByNameDel(String name,String code ,Pageable pageRequest);
    @Query("from BaseDrugDictDO t where t.is_del='1' and t.status='1' and t.charge_code=?1")
    BaseDrugDictDO findByCode(String code);
}

+ 9 - 2
business/base-service/src/main/java/com/yihu/jw/dict/dao/BaseDrugUseDictDao.java

@ -19,6 +19,13 @@ public interface BaseDrugUseDictDao extends PagingAndSortingRepository<BaseDrugU
    @Query("select  count(1) from BaseDrugUseDictDO t where t.del_flag='1' and t.status='1'")
    Integer getconuntByDel();
    @Query("from BaseDrugUseDictDO t where t.del_flag='1' and t.status ='1' and t.supply_name like %?1% order by t.createTime desc")
    List<BaseDrugUseDictDO> findByNameDel(String name,Pageable pageRequest);
    @Query("from BaseDrugUseDictDO t where t.del_flag='1' and t.status ='1' and t.supply_name like %?1% and t.sort_code like %?2% order by t.createTime desc")
    List<BaseDrugUseDictDO> findByNameDel(String name,String code,Pageable pageRequest);
    @Query("from BaseDrugUseDictDO t where t.del_flag='1' and t.status='1' and t.supply_code=?1")
    BaseDrugUseDictDO findByCode(String code);
    @Query("from BaseDrugUseDictDO t where t.supply_code=?1 and t.del_flag='1'")
    List<BaseDrugUseDictDO>  findBySupCode(String code);
}

+ 9 - 2
business/base-service/src/main/java/com/yihu/jw/dict/dao/BaseFrequencyDictDao.java

@ -17,6 +17,13 @@ public interface BaseFrequencyDictDao extends PagingAndSortingRepository<BaseFre
    @Query("select  count(1) from BaseFrequencyDictDO t where t.is_del='1' and t.status='1'")
    Integer getconuntByDel();
    @Query("from BaseFrequencyDictDO t where t.is_del='1' and t.status ='1' and t.freq_name like %?1% order by t.createTime desc")
    List<BaseFrequencyDictDO> findByNameDel(String name ,Pageable pageRequest);
    @Query("from BaseFrequencyDictDO t where t.is_del='1' and t.status ='1' and t.freq_name like %?1% and t.freq_code like %?2%  order by t.createTime desc")
    List<BaseFrequencyDictDO> findByNameDel(String name ,String code ,Pageable pageRequest);
    @Query("from BaseFrequencyDictDO t where t.is_del='1' and t.status='1' and t.freq_code=?1")
    BaseFrequencyDictDO findByCode(String code);
    @Query("from BaseFrequencyDictDO t where t.freq_code=?1 and t.is_del='1'")
    List<BaseFrequencyDictDO>  findByFrqCode(String code);
}

+ 3 - 0
business/base-service/src/main/java/com/yihu/jw/dict/dao/BaseTemplateDictDao.java

@ -17,4 +17,7 @@ public interface BaseTemplateDictDao extends PagingAndSortingRepository<BaseTemp
    @Query("from BaseTemplateDictDO t where t.templateId=?1 and t.isDel='1'")
    List<BaseTemplateDictDO> findByTemplateId(String templateId);
    @Query("from BaseTemplateDictDO t where t.dictId=?1 and t.isDel='1'")
    List<BaseTemplateDictDO> findByDictId(String dictId);
}

+ 1 - 1
business/base-service/src/main/java/com/yihu/jw/dict/dao/BaseTemplateOrgDao.java

@ -9,7 +9,7 @@ import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
public interface BaseTemplateOrgDao extends PagingAndSortingRepository<BaseTemplateOrgDO, String>, JpaSpecificationExecutor<BaseTemplateOrgDO> {
    @Query("from BaseTemplateOrgDO t where  t.orgCode =?1 and t.templateType=?2 ")
    @Query("from BaseTemplateOrgDO t where  t.orgCode =?1 and t.templateType=?2  and t.isDel ='1'")
    BaseTemplateOrgDO findByOrgCodeAndtemplateType(String orgCode,String templateType);
    @Query("from BaseTemplateOrgDO t where  t.orgCode =?1 and t.isDel='1' ")

+ 72 - 5
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/PrescriptionService.java

@ -106,6 +106,7 @@ import com.yihu.jw.wechat.dao.BasePatientWechatDao;
import com.yihu.jw.wechat.dao.WechatDao;
import com.yihu.jw.wechat.dao.WxPushLogDao;
import com.yihu.jw.wechat.dao.WxTemplateConfigDao;
import com.yihu.jw.wechat.enterprise.EnterpriseService;
import com.yihu.jw.wechat.service.BaseSensitiveFilterWordsService;
import com.yihu.jw.wechat.service.WxAccessTokenService;
import com.yihu.jw.yx.dao.YxTokenMappingDao;
@ -319,6 +320,8 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
    private BaseOperateLogService baseOperateLogService;
    @Autowired
    private BaseAdviceTreatmentDao baseAdviceTreatmentDao;
    @Autowired
    private EnterpriseService enterpriseService;
    @Value("${demo.flag}")
    private boolean demoFlag;
@ -622,6 +625,32 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
        //复诊信息
        WlyyOutpatientDO outpatientDO = outpatientDao.findOne(outpatientId);
        if("2".equalsIgnoreCase(outpatientDO.getOutpatientType())){
            String generalDept="";
            String generalDeptName="";
            String generalSex="";
            String generalJob="";
            String generalOrgName="";
            List<BaseDoctorHospitalDO> depts = baseDoctorHospitalDao.findByDoctorCode(outpatientDO.getGeneralDoctor());
            if(depts!=null&&depts.size()>0){
                generalDept=depts.get(0).getDeptCode();
                generalDeptName=depts.get(0).getDeptName();
                generalOrgName=depts.get(0).getOrgName();
            }
            BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(outpatientDO.getGeneralDoctor());
            if(baseDoctorDO!=null){
                generalJob=baseDoctorDO.getJobTitleName();
                generalSex= IdCardUtil.getSexForIdcard(baseDoctorDO.getIdcard());
                rs.put("generalName",baseDoctorDO.getName());
                rs.put("generalPhoto",baseDoctorDO.getPhoto());
            }
            rs.put("generalDept",generalDept);
            rs.put("generalDeptName",generalDeptName);
            rs.put("generalSex",generalSex);
            rs.put("generalJob",generalJob);
            rs.put("generalOrgName",generalOrgName);
        }
        rs.put("outpatient", convertToModel(outpatientDO, WlyyOutpatientVO.class));
        rs.put("doctorCancelType", outpatientDO.getDoctorCancelType());
        rs.put("doctorCancelValue", outpatientDO.getDoctorCancelValue());
@ -7604,15 +7633,35 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
        outpatientDO.setOutpatientType("2");
        outpatientDO.setCreateTime(new Date());
        outpatientDO.setPayStatus(1);
        if (outpatientDO.getRegisterDate() == null) {
            outpatientDO.setRegisterDate(new Date());
        }
        String msg = "";
        String name=outpatientDO.getPatientName();
        String sex = "";
        String age="";
        String title = "";
        if (patientDO!=null){
            sex= IdCardUtil.getSexForIdcard(patientDO.getIdcard());
            age = IdCardUtil.getAgeForIdcard(patientDO.getIdcard())+"";
        }
        WlyyOutpatientDO outpatient = outpatientDao.save(outpatientDO);
        if (outpatientDO.getOutpatientType().equalsIgnoreCase("2")) {
            title = "协同复诊";
            msg = name + "(" + sex + " " + age + "岁)向您发起了协同复诊,点击查看";
        }
        if (wechatId.equalsIgnoreCase("xm_zsyy_wx")){
            String url=findDomainUrlInDict()+"/hlwyy/ims-app-web/#/onlineChat/detail?_rs_title="+outpatientDO.getDescription()+"&type=3&id="+outpatientDO.getId();
            enterpriseService.sendTWMesByDoctor("zsyy",outpatientDO.getDoctor(),title,msg,url);
        }else if (wechatId.equalsIgnoreCase("xm_xzzx_wx")){
            String url="https://ih.xmheart.com/hlwyy/ims-app-web/#/onlineChat/detail?_rs_title="+outpatientDO.getDescription()+"&type=3&id="+outpatientDO.getId();
            enterpriseService.sendTWMesByDoctor("xm_xzzx_wx",outpatientDO.getDoctor(),title,msg,url);
        }else if (wechatId.equalsIgnoreCase("xm_ykyy_wx")){
            String url=findDomainUrlInDict()+"/ims-app-web/#/onlineChat/detail?_rs_title="+outpatientDO.getDescription()+"&type=3&id="+outpatientDO.getId();
            enterpriseService.sendTWMesByDoctor("xm_ykyy_wx",outpatientDO.getDoctor(),title,msg,url);
        }
        System.out.println("发送协同复诊企业模板消息成功");
        WlyyPatientRegisterTimeDO registerTimeDO = null;
        try {
            //如果是视频预约咨询
            if (StringUtils.isNotBlank(registerJson)) {
@ -7647,6 +7696,24 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
            if ("2".equals(outpatient.getOutpatientType())) {
                systemMessageDO.setTitle("协同门诊");
                systemMessageDO.setType("3");
                systemMessageDO.setReceiver(outpatient.getDoctor());
                systemMessageDO.setReceiverName(outpatient.getDoctorName());
                systemMessageDO.setRelationCode(outpatient.getId());
                systemMessageDO.setSender(outpatient.getPatient());
                systemMessageDO.setSenderName(outpatient.getPatientName());
                systemMessageDO.setRelationCode(outpatient.getId());
                data.put("name", outpatient.getPatientName());
                data.put("age", IdCardUtil.getAgeForIdcard(outpatient.getIdcard()));
                data.put("gender", IdCardUtil.getSexForIdcard_new(outpatient.getIdcard()));
                data.put("question", outpatient.getDescription());
                data.put("msg", msg);
                systemMessageDO.setData(data.toString());
                logger.info("添加模板消息4");
                systemMessageService.saveMessage(systemMessageDO);
                BasePatientDO patient = basePatientDao.findById(outpatient.getPatient());
                if ("xm_ykyy_wx".equalsIgnoreCase(wechatId)) {
                    ykyyService.pushNotificationToYktPatient(patient.getYktId(), systemMessageDO.getTitle(), data.get("msg").toString());
                }
            } else if ("3".equals(outpatient.getOutpatientType())) {//专家咨询
                //1.图文 2.视频 3家医
                if ("1".equals(outpatient.getType())) {
@ -7692,7 +7759,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                if ("xm_ykyy_wx".equalsIgnoreCase(wechatId)) {
                    ykyyService.pushNotificationToYktPatient(patient.getYktId(), systemMessageDO.getTitle(), data.get("msg").toString());
                }
            } else if ("1".equals(outpatient.getOutpatientType()))  {//在线复诊
            } else if ("1".equals(outpatient.getOutpatientType()))  {        //在线复诊
                //1.图文 2.视频
                if ("1".equals(outpatient.getType())) {
                    systemMessageDO.setTitle("图文复诊");

+ 4 - 0
common/common-entity/sql记录

@ -1159,6 +1159,10 @@ CREATE TABLE `base_getui_client` (
  UNIQUE KEY `index_1` (`user`,`type`,`client_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='个推clientid表';
-- 2021-07-21 ysj
ALTER table base.base_login_log add column name varchar(50) DEFAULT NULL COMMENT '用户姓名';
ALTER table base.base_login_log add column client_type varchar(10) DEFAULT NULL COMMENT '客服端类型app,wx,pad,pc';
-- 2021-7-22 lb
alter table base_life_care_item_dict add column pad_icon_img varchar(255) DEFAULT NULL COMMENT 'pad图标'

+ 11 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/complaint/BaseComplaintDO.java

@ -32,6 +32,17 @@ public class BaseComplaintDO  extends UuidIdentityEntity {
    private String status;
    private String mobile;
    private String visitTypeName;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    private Date latestFeedTime;
    @Transient
    public Date getLatestFeedTime() {
        return latestFeedTime;
    }
    public void setLatestFeedTime(Date latestFeedTime) {
        this.latestFeedTime = latestFeedTime;
    }
    @Transient
    public String getVisitTypeName() {
        return visitTypeName;

+ 22 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/login/BaseLoginLogDO.java

@ -20,6 +20,10 @@ public class BaseLoginLogDO extends UuidIdentityEntity implements java.io.Serial
	private String openid;//微信openid
	private String loginType;
	private Date operateTime;
	private String name;//用户姓名
	private String clientType;//客服端类型app,wx,pad,pc
	@Column(name="operate_time")
	public Date getOperateTime() {
		return operateTime;
@ -74,4 +78,22 @@ public class BaseLoginLogDO extends UuidIdentityEntity implements java.io.Serial
	public void setLoginType(String loginType) {
		this.loginType = loginType;
	}
	@Column(name="name")
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Column(name="client_type")
	public String getClientType() {
		return clientType;
	}
	public void setClientType(String clientType) {
		this.clientType = clientType;
	}
}

+ 0 - 1
server/svr-authentication/pom.xml

@ -164,7 +164,6 @@
            <version>2.0.0</version>
        </dependency>
        <dependency>
            <groupId>axis</groupId>
            <artifactId>axis-jaxrpc</artifactId>

+ 50 - 12
server/svr-authentication/src/main/java/com/yihu/jw/security/core/userdetails/jdbc/WlyyUserDetailsService.java

@ -1,6 +1,7 @@
package com.yihu.jw.security.core.userdetails.jdbc;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.entity.base.login.BaseLoginLogDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.base.patient.BasePatientFamilyMemberDO;
import com.yihu.jw.entity.base.wx.BasePatientWechatDo;
@ -14,6 +15,8 @@ import com.yihu.jw.security.dao.patient.WlyyPatientFamilyMemberDao;
import com.yihu.jw.security.model.WlyyUserDetails;
import com.yihu.jw.security.model.WlyyUserSimple;
import com.yihu.jw.security.utils.IdCardUtil;
import com.yihu.jw.security.utils.ImUtil;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.http.HttpClientUtil;
import com.yihu.utils.security.MD5;
import org.apache.commons.lang.StringUtils;
@ -101,6 +104,10 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail
    private WlyyPatientFamilyMemberDao familyMemberDao;
    @Autowired
    private BaseGetuiClientDao baseGetuiClientDao;
    @Autowired
    private ImUtil imUtil;
    @Value("${kick.eachOther}")
    private String kickEachOther;
    public WlyyUserDetailsService(DataSource dataSource) {
        this.setDataSource(dataSource);
@ -639,14 +646,14 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail
     * @param clientId
     * @param padImei
     * @param loginType
     * @param username
     * @param id
     */
    public void updateInfo(String clientId,String padImei,String loginType,String username){
    public void updateInfo(String clientId,String padImei,String loginType,String id,BaseLoginLogDO baseLoginLogDO){
        int isPateint = isPatient(loginType);
        if(StringUtils.isNotBlank(padImei)){
            try {
                if(isPateint == 1){
                    this.getJdbcTemplate().update("update base_patient p set p.pad_imei = ? where p.mobile = ? or p.idcard = ?", padImei, username, username);
                    this.getJdbcTemplate().update("update base_patient p set p.pad_imei = ? where p.id = ? or p.idcard = ?", padImei, id);
                }
            }catch (Exception e){
                e.printStackTrace();
@ -654,19 +661,12 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail
        }
        if(StringUtils.isNotBlank(clientId)&&isPateint<3){
            try {
                List<WlyyUserDetails> users;
                if(isPateint==1){
                    users = this.getJdbcTemplate().query(DEFAULT_PATIENT_DETAILS_STATEMENT, new BeanPropertyRowMapper(WlyyUserDetails.class), username, username);
                }else{
                    users = this.getJdbcTemplate().query(DEFAULT_DOCTOR_DETAILS_STATEMENT, new BeanPropertyRowMapper(WlyyUserDetails.class), username, username);
                }
                String user = users.get(0).getId();
                List<GetuiClientDO> list = baseGetuiClientDao.findByUser(user,isPateint,clientId);
                List<GetuiClientDO> list = baseGetuiClientDao.findByUser(id,isPateint,clientId);
                if(list.size() == 0){
                    GetuiClientDO getuiClientDO = new GetuiClientDO();
                    getuiClientDO.setClientId(clientId);
                    getuiClientDO.setType(isPateint);
                    getuiClientDO.setUser(user);
                    getuiClientDO.setUser(id);
                    getuiClientDO.setCreateTime(new Date());
                    baseGetuiClientDao.save(getuiClientDO);
                }
@ -674,7 +674,45 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail
                e.printStackTrace();
            }
        }
        if(StringUtils.isNotBlank(baseLoginLogDO.getClientType())&&"0".equals(kickEachOther)){
            try {
                //pc管理端端推送消息
                JSONObject message = new JSONObject();
                //陈XXX登录云照护平台   登录终端:多媒体平板   2021-7-7 16:38:25
                String content = baseLoginLogDO.getName() + "登录云照护平台 登录终端:" + getClientName(baseLoginLogDO.getClientType())
                        + " " + DateUtil.dateToStrLong(baseLoginLogDO.getCreateTime());
                message.put("content",content);
                message.put("content_type",41);
                imUtil.sendPcManageMessageToPc("cloudCare_pcManage",message.toString());
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }
    /**
     * app,wx,pad,pc
     * @param clientType
     * @return
     */
    private String getClientName(String clientType){
        String result = "";
        switch (clientType){
            case "app":
                result = "APP";
                break;
            case "wx":
                result = "微信公众号";
                break;
            case "pad":
                result = "多媒体平板";
                break;
            case "pc":
                result = "脑端";
                break;
        }
        return result;
    }
    /**

+ 10 - 10
server/svr-authentication/src/main/java/com/yihu/jw/security/oauth2/provider/endpoint/WlyyLoginEndpoint.java

@ -264,11 +264,6 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
        //图形验证码验证
        String key = parameters.get("key");
        String text = parameters.get("text");
        String isNeedGeet= "1";
        WlyyHospitalSysDictDO wlyyHospitalSysDictDO= wlyyhospitalSysdictDao.findDictById("isNeedGeet");
        if (wlyyHospitalSysDictDO!=null){
            isNeedGeet=wlyyHospitalSysDictDO.getDictValue();
        }
        if(org.apache.commons.lang3.StringUtils.isNotBlank(key)&& org.apache.commons.lang3.StringUtils.isNotBlank(text)){
            if(!verifyCaptcha(key,text)){
@ -371,19 +366,24 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
            userDetailsService.addFailureCount(username, 0);
        }
        //个推 clientId
        String clientId = parameters.get("getuiClientId");
        String padImei = parameters.get("padImei");
        userDetailsService.updateInfo(clientId,padImei,loginType,username);
        userDetailsService.setRolePhth(loginType, token, wlyyUserSimple.getId(), redisTemplate);
        String clientType = parameters.get("clientType");
        baseLoginLogDO.setUserId(wlyyUserSimple.getId());
        baseLoginLogDO.setCreateTime(new Date());
        String userAgent = JSONObject.toJSONString(wlyyUserSimple);
        baseLoginLogDO.setUserAgent(userAgent);
        baseLoginLogDO.setLoginType(loginType);
        baseLoginLogDO.setName(wlyyUserSimple.getName());
        baseLoginLogDO.setClientType(clientType);
        baseLoginLogService.save(baseLoginLogDO);
        //个推 clientId
        String clientId = parameters.get("getuiClientId");
        String padImei = parameters.get("padImei");
        //客户端类型 app,wx,pad,pc
        userDetailsService.updateInfo(clientId,padImei,loginType,wlyyUserSimple.getId(),baseLoginLogDO);
        return getResponse(wlyyUserSimple);
    }

+ 895 - 0
server/svr-authentication/src/main/java/com/yihu/jw/security/utils/ImUtil.java

@ -0,0 +1,895 @@
package com.yihu.jw.security.utils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.util.http.HttpClientUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
/**
 * IM工具类
 * @author huangwenjie
 */
@Component
public class ImUtil {
	
	@Autowired
	private HttpClientUtil HttpClientUtil;
	
	@Value("${im.im_list_get}")
	private String im_host;
	
	
	public enum ContentType {
		plainText("信息", "1"),
		image("图片信息", "2"),
		audio("创建处方", "3"),
		article("文章信息", "4"),
		goTo("跳转信息,求组其他医生或者邀请其他医生发送的推送消息", "5"),
		topicBegin("议题开始", "6"),
		topicEnd("议题结束", "7"),
		personalCard("个人名片", "18"),
		messageForward("消息转发", "19"),
		topicInto("进入议题", "14"),
		video("视频", "12"),
		system("系统消息", "13"),
		prescriptionCheck("续方审核消息消息", "15"),
		prescriptionBloodStatus("续方咨询血糖血压咨询消息", "16"),
		prescriptionFollowupContent("续方咨询随访问卷消息", "17"),
		Rehabilitation("康复计划发送","20"),
		Reservation("转诊预约发送","21"),
		Know("已知悉","22");
		
		private String name;
		private String value;
		ContentType(String name, String value) {
			this.name = name;
			this.value = value;
		}
		
		public String getName() {
			return name;
		}
		
		public void setName(String name) {
			this.name = name;
		}
		
		public String getValue() {
			return value;
		}
		
		public void setValue(String value) {
			this.value = value;
		}
	}
	public String sendMDTSocketMessageToDoctor(String targetUserId, String message) {
		String imAddr = im_host + "api/v2/message/doctorSystemMessage";
		JSONObject params = new JSONObject();
		params.put("targetUserId", targetUserId);
		params.put("message", message);
		String response = HttpClientUtil.postBody(imAddr,params);
		return response;
	}
	public String sendPcManageMessageToPc(String clientType, String message) {
		String imAddr = im_host + "api/v2/message/cloudCarePcManageMessage";
		JSONObject params = new JSONObject();
		params.put("clientType", clientType);
		params.put("message", message);
		String response = HttpClientUtil.postBody(imAddr,params);
		return response;
	}
	public String sendPatientSystemMessage(String targetUserId, String message) {
		String imAddr = im_host + "api/v2/message/patientSystemMessage";
		JSONObject params = new JSONObject();
		params.put("targetUserId", targetUserId);
		params.put("message", message);
		String response = HttpClientUtil.postBody(imAddr,params);
		return response;
	}
	/**
	 * 发送消息
	 * @param senderId 发送者的code
	 * @param receiverId 接受者code
	 * @param contentType 消息类型 1二维码内容
	 * @param content 消息内容
	 * @return
	 */
	public String sendMessage(String senderId,String receiverId,String contentType,String content){
		String imAddr = im_host + "api/v2/message/send";
		JSONObject params = new JSONObject();
		params.put("sender_id", senderId);
		params.put("sender_name", receiverId);
		params.put("content_type", contentType);
		params.put("content", content);
		String response = HttpClientUtil.postBody(imAddr, params);
		return response;
	}
	
	/**
	 * 获取医生统计数据
	 * status reply 为空值是是该医生总咨询量
	 *
	 * @param user          团队就把团队的医生合并起来用,隔开(医生编码)
	 * @param adminTeamCode
	 * @param status
	 * @param reply
	 * @return
	 */
	public String getConsultData(String user, Integer adminTeamCode, Integer status, Integer reply) {
		String imAddr = im_host + "api/v2/sessions/topics/count/reply";
		imAddr = imAddr + "?user=" + user;
		if (status != null) {
			imAddr += ("&status=" + status);
		}
		if (adminTeamCode != null) {
			imAddr += ("&adminTeamCode=" + adminTeamCode);
		}
		if (reply != null) {
			imAddr += ("&reply=" + reply);
		}
		String response = HttpClientUtil.get(imAddr, "UTF-8");
		return response;
	}
	
	public void updateTopics(String topicId, String jsonValue) {
		String imAddr = im_host + "api/v2/sessions/" + topicId + "/topics";
		JSONObject params = new JSONObject();
		params.put("topic_id", topicId);
		params.put("data", jsonValue);
		HttpClientUtil.putBody(imAddr, params);
	}
	
	/**
	 * 当前医生下当前团队列表接口
	 * 获取团队内医生的健康咨询状况
	 * status = 10 已结束的咨询,status=0,reply = 1 已回复 ,status=0,reply=0未回复
	 *
	 * @param user          团队就把团队的医生合并起来用,隔开(医生编码)
	 * @param adminTeamCode 行政团队code
	 * @param page
	 * @param pagesize
	 * @param status
	 * @param reply
	 * @return
	 */
	public String getTeamConsultByStatus(String user, Integer adminTeamCode, Integer status, Integer reply, int page, int pagesize) {
		String imAddr = im_host + "api/v2/sessions/healthTeamTopics";
		imAddr = imAddr + "?user=" + user + "&page=" + page + "&pagesize=" + pagesize;
		if (adminTeamCode != null) {
			imAddr += ("&adminTeamCode=" + adminTeamCode);
		}
		if (status != null) {
			imAddr += ("&status=" + status);
		}
		if (reply != null) {
			imAddr += ("&reply=" + reply);
		}
		String response = HttpClientUtil.get(imAddr, "UTF-8");
		return response;
	}
	
	/**
	 * 列表接口
	 * 获取团队内医生的健康咨询状况
	 * status = 10 已结束的咨询,status=0,reply = 1 已回复 ,status=0,reply=0未回复
	 *
	 * @param user     团队就把团队的医生合并起来用,隔开(医生编码)
	 * @param page
	 * @param pagesize
	 * @param status
	 * @param reply
	 * @return
	 */
	public String getConsultByStatus(String user, Integer status, Integer reply, int page, int pagesize) {
		String imAddr = im_host + "api/v2/sessions/healthTopics";
		imAddr = imAddr + "?user=" + user + "&page=" + page + "&pagesize=" + pagesize;
		if (status != null) {
			imAddr += ("&status=" + status);
		}
		if (reply != null) {
			imAddr += ("&reply=" + reply);
		}
		String response = HttpClientUtil.get(imAddr, "UTF-8");
		return response;
	}
	
	/**
	 * 咨询列表
	 * @param user
	 * @param status status = 10 已结束的咨询,status=0,reply = 1 已回复 ,status=0,reply=0未回复
	 * @param reply
	 * @param type 1、三师咨询,2、家庭医生咨询,6、患者名医咨询 7医生名医咨询 8续方咨询 10医生发起的求助
	 * @param page
	 * @param pagesize
	 * @return
	 */
	public String getConsultByStatusAndType(String user,Integer status,Integer reply,Integer type,String patientName,String startTime,String endTime,int page,int pagesize){
		String imAddr = im_host + "api/v2/sessions/topicListByType";
		imAddr = imAddr + "?user="+user + "&page=" + page + "&pagesize=" + pagesize;
		if (status != null) {
			imAddr += ("&status=" + status);
		}
		if (reply != null) {
			imAddr += ("&reply=" + reply);
		}
		if (type != null) {
			imAddr += ("&type=" + type);
		}
		if (patientName != null) {
			imAddr += ("&patientName=" + patientName);
		}
		if (startTime != null) {
			imAddr += ("&startTime=" + startTime);
		}
		if (endTime != null) {
			imAddr += ("&endTime=" + endTime);
		}
		String response = HttpClientUtil.get(imAddr, "UTF-8");
		return response;
	}
	
	/**
	 * 咨询列表总数
	 * @param user
	 * @param status status = 10 已结束的咨询,status=0,reply = 1 已回复 ,status=0,reply=0未回复
	 * @param reply
	 * @param type 1、三师咨询,2、家庭医生咨询,6、患者名医咨询 7医生名医咨询 8续方咨询 10医生发起的求助
	 * @return
	 */
	public String getConsultCountByStatusAndType(String user,Integer status,Integer reply,Integer type,String patientName,String startTime,String endTime){
		String imAddr = im_host + "api/v2/sessions/topicListCountByType";
		imAddr = imAddr + "?user="+user;
		if (status != null) {
			imAddr += ("&status=" + status);
		}
		if (reply != null) {
			imAddr += ("&reply=" + reply);
		}
		if (type != null) {
			imAddr += ("&type=" + type);
		}
		if (patientName != null) {
			imAddr += ("&patientName=" + patientName);
		}
		if (startTime != null) {
			imAddr += ("&startTime=" + startTime);
		}
		if (endTime != null) {
			imAddr += ("&endTime=" + endTime);
		}
		String response = HttpClientUtil.get(imAddr, "UTF-8");
		return response;
	}
	
	/**
	 * 发送消息给IM
	 *
	 * @param from        来自
	 * @param contentType 1文字 2图片消息
	 * @param content     内容
	 */
	public String sendImMsg(String from, String fromName, String sessionId, String contentType, String content, String businessType,String extend) {
		String imAddr = im_host + "api/v2/sessions/" + sessionId + "/messages";
		System.out.println("im地址"+imAddr);
		JSONObject params = new JSONObject();
		params.put("sender_id", from);
		params.put("sender_name", fromName);
		params.put("content_type", contentType);
		params.put("content", content);
		params.put("session_id", sessionId);
		params.put("business_type", businessType);
		params.put("extend",extend);
		String response = HttpClientUtil.postBody(imAddr, params);
		return response;
	}
	
	/**
	 * 更新会话状态
	 *
	 * @param sessionId 会话ID
	 * @param status    状态
	 */
	public String updateSessionStatus(String sessionId, String status) {
		String imAddr = im_host + "api/v2/sessions/" + sessionId + "/status?status=" + status + "&sessionId=" + sessionId;
		JSONObject params = new JSONObject();
		String response = HttpClientUtil.postBody(imAddr, params);
		return response;
	}
	
	/**
	 * 更新会话状态
	 *
	 * @param sessionId 会话ID
	 * @param status    状态
	 */
	public String updateTopicEvaluate(String sessionId, String status) {
		String imAddr = im_host + "api/v2/sessions/" + sessionId + "/status?status=" + status + "&sessionId=" + sessionId;
		JSONObject params = new JSONObject();
		String response = HttpClientUtil.postBody(imAddr, params);
		return response;
	}
	/**
	 * 发送消息给IM
	 *
	 * @param from        来自
	 * @param contentType 1文字 2图片消息
	 * @param content     内容
	 */
	public String sendTopicIM(String from, String fromName, String topicId, String contentType, String content, String agent) {
		String url = im_host + "api/v2/sessions/topic/" + topicId + "/messages";
		JSONObject params = new JSONObject();
		params.put("sender_id", from);
		params.put("sender_name", fromName);
		params.put("content_type", contentType);
		params.put("content", content);
		params.put("topic_id", topicId);
		params.put("agent", agent);
		String response = HttpClientUtil.postBody(url, params);
		return response;
	}
	
	/**
	 * 发送消息给IM
	 *
	 * @param from        来自
	 * @param contentType 1文字 2图片消息
	 * @param content     内容
	 */
	public String sendTopicIM(String from, String fromName, String topicId, String contentType, String content, String agent,String patient_name,int patient_sex,int patient_age) {
		String url = im_host + "api/v2/sessions/topic/" + topicId + "/messages";
		JSONObject params = new JSONObject();
		params.put("sender_id", from);
		params.put("sender_name", fromName);
		params.put("patient_name", patient_name);
		params.put("patient_sex", patient_sex);
		params.put("patient_age", patient_age);
		params.put("content_type", contentType);
		params.put("content", content);
		params.put("topic_id", topicId);
		params.put("agent", agent);
		String response = HttpClientUtil.postBody(url, params);
		return response;
	}
	
	/**
	 * 发送进入im消息
	 * IM: ParticipantUpdate:'/:session_id/participant/update'
	 *
	 * @param from
	 * @param sessionId
	 * @param topicId
	 * @return
	 */
	public String sendIntoTopicIM(String from, String sessionId, String topicId, String content, String intoUser, String intoUserName) {
		String url = im_host + "api/v2/sessions/" + sessionId + "/topics/" + topicId + "/into";
		JSONObject params = new JSONObject();
		params.put("sender_id", from);
		params.put("topic_id", topicId);
		params.put("into_user", intoUser);
		params.put("into_user_name", intoUserName);
		params.put("content", content);
		String response = HttpClientUtil.postBody(url, params);
		return response;
	}
	
	
	/**
	 * 更新会话成员(新增或删除)
	 * @param sessionId 会话id
	 * @param user 新增的成员id
	 * @param oldUserId  删除的成员id
	 */
	public String updateParticipant(String sessionId, String user,String oldUserId) {
		String imAddr = im_host + "api/v2/sessions/" + sessionId + "/participant/update";
		JSONObject params = new JSONObject();
		params.put("session_id", sessionId );
		params.put("user_id", user );
		if(!StringUtils.isEmpty(oldUserId)){
			params.put("old_user_id", oldUserId);
		}
		return HttpClientUtil.postBody(imAddr, params);
	}
	/**
	 * 更新会话成员(新增或删除) 活跃成员
	 * @param sessionId 会话id
	 * @param user 新增的成员id
	 * @param oldUserId  删除的成员id
	 */
	public String updateParticipantNew(String sessionId, String user,String oldUserId) {
		String imAddr = im_host + "api/v2/sessions/" + sessionId + "/participant/updateNew";
		JSONObject params = new JSONObject();
		params.put("session_id", sessionId );
		params.put("user_id", user );
		if(!StringUtils.isEmpty(oldUserId)){
			params.put("old_user_id", oldUserId);
		}
		return HttpClientUtil.postBody(imAddr, params);
	}
	
	/**
	 * 更新消息内容
	 * @param sessionId 会话id
	 * @param sessionType 会话类型
	 * @param msgId  消息id
	 * @param content  消息内容
	 */
	public String updateMessage(String sessionId, String sessionType,String msgId,String content) {
		String imAddr = im_host + "api/v2/sessions/" + sessionId + "/messages/"+ msgId +"/update";
		JSONObject params = new JSONObject();
		params.put("session_id", sessionId );
		params.put("session_type", sessionType );
		params.put("message_id", msgId );
		params.put("content", content );
		return HttpClientUtil.postBody(imAddr, params);
	}
	
	/**
	 * 结束议题
	 *
	 * @param topicId     议题ID
	 * @param endUser     结束人
	 * @param endUserName 结束人名字
	 * @param sessionId   会话ID
	 */
	public JSONObject endTopics(String sessionId, String endUser, String endUserName, String topicId) {
		String imAddr = im_host + "api/v2/sessions/" + sessionId + "/topics/" + topicId + "/ended";
		JSONObject params = new JSONObject();
		params.put("session_id", sessionId);
		params.put("end_user", endUser);
		params.put("end_user_name", endUserName);
		params.put("topic_id", topicId);
		String ret = HttpClientUtil.postBody(imAddr, params);
		JSONObject obj = null;
		try {
			obj = JSON.parseObject(ret);
		} catch (Exception e) {
			return null;
		}
		return obj;
	}
	
	
	/**
	 * 议题邀请人员
	 *
	 * @param user      结束人名字
	 * @param sessionId 会话ID
	 */
	public void updateTopicUser(String sessionId, String user) {
		String imAddr = im_host + "api/v2/sessions/" + sessionId + "/participants/" + user;
		JSONObject params = new JSONObject();
		params.put("user", user + ":" + 0);
		HttpClientUtil.putBody(imAddr, params);
	}
	
	/**
	 * 创建议题
	 *
	 * @param topicId      议题ID
	 * @param topicName    议题名称
	 * @param participants 成员
	 */
	public JSONObject createTopics(String sessionId, String topicId, String topicName, JSONObject participants, JSONObject messages, String sessionType) {
		String imAddr = im_host + "api/v2/sessions/" + topicId + "/topics";
		JSONObject params = new JSONObject();
		params.put("topic_id", topicId);
		params.put("topic_name", topicName);
		params.put("participants", participants.toString());
		params.put("messages", messages.toString());
		params.put("session_id", sessionId);
		params.put("session_type", sessionType);
		String ret = HttpClientUtil.postBody(imAddr, params);
		JSONObject obj = null;
		try {
			obj = JSON.parseObject(ret);
		} catch (Exception e) {
			return null;
		}
		return obj;
	}
	
	/**
	 * 判断会话是否存在
	 */
	public Boolean sessionIsExist(String sessionId) {
		Boolean re = false;
		String url = im_host + "api/v2/sessions/isExist?session_id="+sessionId;
		JSONObject params = new JSONObject();
		String ret = HttpClientUtil.get(url, "UTF-8");
		JSONObject obj = null;
		try {
			obj = JSON.parseObject(ret);
			if(obj.getInteger("status") ==200&&sessionId.equals(obj.getString("sessionId"))){
				String sessionStatus = obj.getString("sessionId");
				if (StringUtils.isNoneBlank(sessionStatus)){
					String sessionStatusUrl = im_host + "api/v2/sessions/"+sessionId+"/status?status=0&sessionId="+sessionId;
					JSONObject object = new JSONObject();
					String rs = HttpClientUtil.postBody(sessionStatusUrl, object);
				}
				re = true;
			}
		} catch (Exception e) {
			return null;
		}
		return re;
	}
	
	/**
	 * 创建会话(system)
	 */
	public JSONObject createSession(JSONObject participants, String sessionType, String sessionName, String sessionId) {
		String imAddr = im_host + "api/v2/sessions";
		JSONObject params = new JSONObject();
		params.put("participants", participants.toString());
		params.put("session_name", sessionName);
		params.put("session_type", sessionType);
		params.put("session_id", sessionId);
		String ret = HttpClientUtil.postBody(imAddr, params);
		JSONObject obj = null;
		try {
			obj = JSON.parseObject(ret);
		} catch (Exception e) {
			return null;
		}
		return obj;
	}
	
	/**
	 * 获取会话实例的消息对象
	 *
	 * @param senderId
	 * @param senderName
	 * @param title
	 * @param description
	 * @param images
	 * @param agent
	 * @return
	 */
	public JSONObject getCreateTopicMessage(String senderId, String senderName, String title, String description, String images, String agent) {
		JSONObject messages = new JSONObject();
		messages.put("description", description);
		messages.put("title", title);
		messages.put("img", images);
		messages.put("sender_id", senderId);
		messages.put("sender_name", senderName);
		messages.put("agent", agent);
		return messages;
	}
	
	public JSONObject getTopicMessage(String topicId, String startMsgId, String endMsgId, int page, int pagesize, String uid) {
		String url = im_host
				+ "api/v2/sessions/topic/" + topicId + "/messages?topic_id=" + topicId + "&end=" + startMsgId
				+ "&start=" + (endMsgId == null ? "" : endMsgId) + "&page=" + page + "&pagesize=" + pagesize + "&user=" + uid;
		try {
			String ret = HttpClientUtil.get(url, "UTF-8");
			JSONObject obj = JSON.parseObject(ret);
			if (obj.getInteger("status") == -1) {
				throw new RuntimeException(obj.getString("message"));
			} else {
				return obj.getJSONObject("data");
			}
		} catch (Exception e) {
			return null;
		}
		
	}
	
	public JSONArray getSessionMessage(String sessionId, String startMsgId, String endMsgId, int page, int pagesize, String uid) {
		String url = im_host + "api/v2/sessions/" + sessionId + "/messages?session_id=" + sessionId + "&user=" + uid + "&start_message_id=" + startMsgId + "&end_message_id=" + endMsgId + "&page=" + page + "&pagesize=" + pagesize;
		try {
			String ret = HttpClientUtil.get(url, "UTF-8");
			JSONArray obj = JSON.parseArray(ret);
			return obj;
		} catch (Exception e) {
			return null;
		}
	}
	
	/**
	 * 删除对应的成员信息在MUC模式中
	 *
	 * @param userId
	 * @param oldUserId
	 * @param sessionId
	 * @return
	 */
	public JSONObject deleteMucUser(String userId, String oldUserId, String sessionId) throws Exception {
		String url = im_host + "api/v2/sessions/" + sessionId + "/participant/update";
		try {
			JSONObject params = new JSONObject();
			params.put("user_id", userId);
			params.put("old_user_id", oldUserId);
			params.put("session_id", sessionId);
			String ret = HttpClientUtil.postBody(url, params);
			JSONObject obj = JSON.parseObject(ret);
			if (obj.getInteger("status") == -1) {
				throw new RuntimeException("人员更换失败!");
			} else {
				return obj;
			}
		} catch (Exception e) {
			throw new RuntimeException("人员更换失败!");
		}
	}
	/**
	 * 删除会话人员
	 * @param sessionId
	 * @param participants
	 * @return
	 */
	public JSONObject deleteParticipants(String sessionId,String participants){
		String url  = im_host+"api/v2/sessions/"+sessionId+"/participants/"+participants;
		String rs = HttpClientUtil.doDelete(url,null,null);
		JSONObject obj = JSONObject.parseObject(rs);
		if (obj.getInteger("status")==-1){
			throw new RuntimeException("删除会话人员失败!");
		}else {
			return obj;
		}
	}
	
	
	/**
	 * 获取议题
	 *
	 * @param topicId
	 * @return
	 */
	public JSONObject getTopic(String topicId) throws Exception {
		String url = im_host + "api/v2/sessions/topics/" + topicId + "?topic_id=" + topicId;
		try {
			String ret = HttpClientUtil.get(url, "utf-8");
			JSONObject obj = JSON.parseObject(ret);
			if (obj.getInteger("status") == -1) {
				throw new RuntimeException("获取议题失败!");
			} else {
				return obj;
			}
		} catch (Exception e) {
			throw new RuntimeException("获取议题失败!");
		}
	}
	
	/**
	 * 获取会话成员
	 *
	 * @param sessionId
	 * @return
	 * @throws Exception
	 */
	public JSONArray getParticipants(String sessionId) {
		String url = im_host + "api/v2/sessions/" + sessionId + "/participants?session_id=" + sessionId;
		try {
			String ret = HttpClientUtil.get(url, "utf-8");
			return JSON.parseArray(ret);
		} catch (Exception e) {
			throw new RuntimeException("获取会话成员!sessionId =" + sessionId);
		}
	}
	
	/**
	 * 获取会话成员
	 *
	 * @param sessionId
	 * @return
	 * @throws Exception
	 */
	public JSONArray getSessions(String sessionId) {
		String url = im_host + "api/v2/sessions/" + sessionId + "/participants?session_id=" + sessionId;
		try {
			String ret = HttpClientUtil.get(url, "utf-8");
			return JSON.parseArray(ret);
		} catch (Exception e) {
			throw new RuntimeException("获取议题失败!");
		}
	}
	
	public JSONObject cleanMessageToRedis(String sessionId){
		String url = im_host + "api/v2/message/dataMessage?sessionId="+sessionId;
		try {
			String ret = HttpClientUtil.get(url,"utf-8");
			return JSON.parseObject(ret);
		} catch (Exception e) {
			throw new RuntimeException("操作失败!");
		}
	}
	
	public JSONObject cleanMessageLastFetchTime(String sessionId,String userId){
		String url = im_host + "api/v2/message/cleanMessageLastFetchTimeToRedis?sessionId="+sessionId+"&userId="+userId;
		try {
			String ret = HttpClientUtil.get(url,"utf-8");
			return JSON.parseObject(ret);
		} catch (Exception e) {
			throw new RuntimeException("操作失败!");
		}
	}
	
	
	/**
	 * 根据session和userid获取单个会话
	 * @param sessionId
	 * @param userId
	 * @return
	 */
	public JSONObject getSingleSessionInfo(String sessionId,String userId){
		String url = im_host + "api/v2/sessions/" + sessionId + "/session?user_id=" + userId;
		try {
			String ret = HttpClientUtil.get(url,"utf-8");
			return JSON.parseObject(ret);
		} catch (Exception e) {
			throw new RuntimeException("操作失败!");
		}
	}
	
	/**
	 * 发送消息给IM
	 *
	 * @param from        来自
	 * @param to
	 * @param contentType 1文字 2图片消息
	 * @param content     内容
	 */
	public String sendIM(String from, String to, String contentType, String content) {
		String imAddr = im_host + "api/v1/chats/pm";
		List<NameValuePair> params = new ArrayList<>();
		params.add(new BasicNameValuePair("from", from));
		params.add(new BasicNameValuePair("to", to));
		params.add(new BasicNameValuePair("contentType", contentType));
		params.add(new BasicNameValuePair("content", content));
		String response = HttpClientUtil.post(imAddr, params, "UTF-8");
		return response;
	}
	
	
	public static final String SESSION_TYPE_MUC = "1";
	public static final String SESSION_TYPE_P2P = "2";
	public static final String SESSION_TYPE_GROUP = "3";
	public static final String SESSION_TYPE_SYSTEM = "0";
	public static final String SESSION_TYPE_PRESCRIPTION = "8";//续方
	public static final String SESSION_TYPE_KANGFU = "18";//续方
	public static final String SESSION_TYPE_EXAMINATION = "9";//在线复诊-图文
	public static final String SESSION_TYPE_ONDOOR_NURSING = "11";//上门护理
	public static final String SESSION_TYPE_COLLABORATION_HOSPITAL = "12";///互联网医院协同门诊
	public static final String SESSION_TYPE_GUIDANCE_HOSPITAL = "14";//互联网医院居民导诊聊天
	public static final String SESSION_TYPE_GENERAL_EXPERT = "15";//全科医生发起求助专科医生的专家咨询
	public static final String SESSION_TYPE_EXAMINATION_VIDEO = "16";//在线复诊-视频
	public static final String SESSION_TYPE_MUC_VIDEO = "17";//专家-视频
	public static final String SESSION_TYPE_GUIDANCE_ASSISTANT = "18";//导诊助手
	public static final String SESSION_STATUS_PROCEEDINGS = "0";
	public static final String SESSION_STATUS_END = "1";
	public static final String SESSION_TYPE_EMERGENCY_ASSISTANCE = "20";//紧急救助
	public static final String SESSION_TYPE_DOOR_COACH = "21";//上门辅导(上门预约)
	public static final String SESSION_TYPE_SECURITY_WARN = "22";//安防咨询
	public static final String SESSION_TYPE_ONLINE = "23";//新生儿在线咨询
	public static final String SESSION_TYPE_ONLINEAged = "24";//老人在线咨询
	public static final String CONTENT_TYPE_TEXT = "1";
	
	
	/**
	 *按会话类型获取会话总数
	 * @param userid
	 * @param type
	 * @param status
	 * @return
	 */
	public Integer sessionCountByType(String userid,Integer type,Integer status){
		String url = im_host + "api/v2/sessions/sessionCountByType?user_id="+userid+"&type="+type+"&status="+status;
		String ret = HttpClientUtil.get(url,"utf-8");
		JSONObject obj = JSON.parseObject(ret);
		if(obj.getInteger("status") ==200){
			return obj.getInteger("count");
		}else{
			return 0;
		}
	}
	public Integer SessionsUnreadMessageCountByUserId(String userid){
		String url = im_host + "api/v2/sessions/unread_message_count?user_id="+userid;
//		String url = "http://ehr.yihu.com/api/v2/sessions/unread_message_count?user_id="+userid;
		String ret = HttpClientUtil.get(url,"utf-8");
		JSONObject obj = JSON.parseObject(ret);
//		if(obj.getInteger("count") ==200){
		return obj.getInteger("count");
//		}else{
//			return 0;
//		}
	}
	/**
	 *获取所有会话未读消息数。
	 * @param userid
	 * @param type
	 * @return
	 */
	public Integer SessionsUnreadMessageCount(String userid,String type){
		String url = im_host + "api/v2/sessions/unread_message_count?user_id="+userid+"&type="+type;
		String ret = HttpClientUtil.get(url,"utf-8");
		JSONObject obj = JSON.parseObject(ret);
//		if(obj.getInteger("count") ==200){
		return obj.getInteger("count");
//		}else{
//			return 0;
//		}
	}
	/**
	 *获取某个会话某个对象的未读消息数。
	 * @param
	 * @return
	 */
	public Integer UserSessionsUnreadMessageCount(String session,String userid){
		String url = im_host + "api/v2/sessions/"+session+"/unread_message_count?user_id="+userid;
		String ret = HttpClientUtil.get(url,"utf-8");
		JSONObject obj = JSON.parseObject(ret);
//		if(obj.getInteger("count") ==200){
		return obj.getInteger("count");
//		}else{
//			return 0;
//		}
	}
	/**
	 * 获取会话未读消息数量
	 * @param sessionId
	 * @param userId
	 * @return
	 */
	public JSONObject getSessionUnreadMessageCount(String sessionId, String userId) {
		String url = im_host + "api/v2/sessions/" + sessionId + "/unread_message_count?user_id=" + userId;
		try {
			String ret = HttpClientUtil.get(url, "utf-8");
			return  JSONObject.parseObject(ret);
		} catch (Exception e) {
			throw new RuntimeException("获取会话成员!sessionId =" + sessionId);
		}
	}
	/**
	 * 获取在线人数
	 * helper 助老员,teacher 教师,child 幼儿,olderWx 老人公众号,olderPad 老人平板
	 */
	public String getOnlineCountByType(String type) {
		String url = im_host + "api/v2/sessions/getOnlineCountByType?type="+type;
		String ret = HttpClientUtil.get(url, "UTF-8");
		return ret;
	}
	/**
	 * 获取在线人数列表
	 * helper 助老员,teacher 教师,child 幼儿,olderWx 老人公众号,olderPad 老人平板
	 */
	public String getOnlineListByType(String type) {
		String url = im_host + "api/v2/sessions/getOnlineListByType?type="+type;
		String ret = HttpClientUtil.get(url, "UTF-8");
		return ret;
	}
	/**
	 * 获取在线状态
	 * helper 助老员,teacher 教师,child 幼儿,older 老人
	 * 返回 {"status":200,"data":1} data>0 说明在线 data =0 不在线
	 */
	public String findByUserIdAndType(String userId,String type) {
		String url = im_host + "api/v2/sessions/findByUserIdAndType?userId="+userId+"&type="+type;
		String ret = HttpClientUtil.get(url, "UTF-8");
		return ret;
	}
}

+ 63 - 9
server/svr-authentication/src/main/resources/application.yml

@ -54,9 +54,6 @@ fast-dfs:
    max-size: 20
    wait-time: 500
kick:
    ##互踢 1开通 0关闭
    eachOther: 1
---
spring:
  profiles: jwdev
@ -82,6 +79,11 @@ wlyy:
testPattern:
  sign: 0
  remote_inner_url: 172.16.100.240:10023/open/fileUpload/upload_stream
kick:
    ##互踢 1开通 0关闭
    eachOther: 1
im:
  im_list_get: http://172.26.0.105:3000/
wechat:
  id: xm_zsyy_wx  # base库中,wx_wechat 的id字段
@ -114,6 +116,11 @@ testPattern:
wechat:
  id: xm_zsyy_wx  # base库中,wx_wechat 的id字段
im:
  im_list_get: http://172.26.0.105:3000/
kick:
    ##互踢 1开通 0关闭
    eachOther: 0
---
spring:
  profiles: jwOracleTest
@ -153,7 +160,11 @@ testPattern:
wechat:
  id: xm_ykyy_wx  # base库中,wx_wechat 的id字段
im:
  im_list_get: http://172.26.0.105:3000/
kick:
    ##互踢 1开通 0关闭
    eachOther: 1
---
spring:
  profiles: iottest
@ -182,7 +193,11 @@ testPattern:
wechat:
  id: xm_zsyy_wx  # base库中,wx_wechat 的id字段
im:
  im_list_get: http://172.26.0.105:3000/
kick:
    ##互踢 1开通 0关闭
    eachOther: 1
---
spring:
  profiles: iotyanshi
@ -210,6 +225,11 @@ testPattern:
  remote_inner_url: 172.16.100.240:10023/open/fileUpload/upload_stream
wechat:
  id: xm_zsyy_wx  # base库中,wx_wechat 的id字段
im:
  im_list_get: http://172.26.0.105:3000/
kick:
    ##互踢 1开通 0关闭
    eachOther: 1
---
spring:
  profiles: jwprod
@ -237,6 +257,11 @@ testPattern:
  remote_inner_url: 172.16.100.240:10023/open/fileUpload/upload_stream
wechat:
  id: xm_zsyy_wx  # base库中,wx_wechat 的id字段
im:
  im_list_get: http://172.26.0.105:3000/
kick:
    ##互踢 1开通 0关闭
    eachOther: 1
---
## 心脏中心外网
spring:
@ -265,6 +290,11 @@ testPattern:
  remote_inner_url: 172.16.100.240:10023/open/fileUpload/upload_stream
wechat:
  id: xm_xzzx_wx  # base库中,wx_wechat 的id字段
im:
  im_list_get: http://172.26.0.105:3000/
kick:
    ##互踢 1开通 0关闭
    eachOther: 1
---
## 卫计委
spring:
@ -293,7 +323,11 @@ testPattern:
  remote_inner_url: 172.16.100.240:10023/open/fileUpload/upload_stream
wechat:
  id: xm_ihealth_wx  # base库中,wx_wechat 的id字段
im:
  im_list_get: http://172.26.0.105:3000/
kick:
    ##互踢 1开通 0关闭
    eachOther: 1
---
spring:
  profiles: iotprod
@ -320,7 +354,11 @@ testPattern:
  remote_inner_url: 172.16.100.240:10023/open/fileUpload/upload_stream
wechat:
  id: xm_ykyy_wx  # base库中,wx_wechat 的id字段
im:
  im_list_get: http://172.26.0.105:3000/
kick:
    ##互踢 1开通 0关闭
    eachOther: 1
---
spring:
@ -350,7 +388,11 @@ testPattern:
wechat:
  id: xm_ykyy_wx  # base库中,wx_wechat 的id字段
im:
  im_list_get: http://172.26.0.105:3000/
kick:
    ##互踢 1开通 0关闭
    eachOther: 1
---
spring:
@ -379,7 +421,11 @@ testPattern:
  remote_inner_url: 172.16.100.240:10023/open/fileUpload/upload_stream
wechat:
  id: sd_tnzyy_wx  # base库中,wx_wechat 的id字段
im:
  im_list_get: http://172.26.0.105:3000/
kick:
    ##互踢 1开通 0关闭
    eachOther: 1
---
spring:
  profiles: hzprod
@ -410,6 +456,9 @@ testPattern:
wechat:
  id: hz_yyyzh_wx  # base库中,wx_wechat 的id字段
im:
  im_list_get: http://10.18.43.41:3000/
kick:
    ##互踢 1开通 0关闭
    eachOther: 0
@ -439,3 +488,8 @@ testPattern:
  remote_inner_url: 172.16.100.240:10023/open/fileUpload/upload_stream
wechat:
  id: wjw
im:
  im_list_get: http://172.26.0.105:3000/
kick:
    ##互踢 1开通 0关闭
    eachOther: 1

+ 6 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/dao/dict/DictIcd10Dao.java

@ -41,4 +41,10 @@ public interface DictIcd10Dao extends PagingAndSortingRepository<DictIcd10DO, In
    List<DictIcd10DO> findByDel(Pageable pageRequest);
    @Query("select  count(1) from DictIcd10DO t where t.is_del='1' and t.status='1'")
    Integer getconuntByDel();
    @Query("from DictIcd10DO t where t.is_del='1' and t.status='1' and t.code=?1")
    DictIcd10DO findByCode(String code);
    @Query("from DictIcd10DO t where t.code=?1 and t.is_del='1'")
    List<DictIcd10DO>  findByIcdCode(String code);
}

+ 9 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/common/excel/AExcelReader.java

@ -15,6 +15,15 @@ public abstract class AExcelReader {
    protected List errorLs = new ArrayList<>();
    protected List correctLs = new ArrayList<>();
    protected Map<String, Set> repeat = new HashMap<>();
    protected String templateId ="";
    public String getTemplateId() {
        return templateId;
    }
    public void setTemplateId(String templateId) {
        this.templateId = templateId;
    }
    public abstract void read(Workbook rwb) throws Exception;

+ 9 - 4
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/dict/DictIcd10Endpoint.java

@ -39,10 +39,15 @@ public class DictIcd10Endpoint extends EnvelopRestEndpoint {
    public ObjEnvelop<DictIcd10VO> createOrupdate(
            @ApiParam(name = "jsonData", value = "Json数据", required = true)
            @RequestParam(value = "jsonData") String jsonData) throws Exception {
        System.out.println(jsonData);
        DictIcd10DO dictIcd10 = toEntity(jsonData, DictIcd10DO.class);
        dictIcd10Service.saveIcd10(dictIcd10);
        return success(dictIcd10, DictIcd10VO.class);
        try {
            System.out.println(jsonData);
            DictIcd10DO dictIcd10 = toEntity(jsonData, DictIcd10DO.class);
            dictIcd10Service.saveIcd10(dictIcd10);
            return success(dictIcd10, DictIcd10VO.class);
        }catch (Exception e){
            return failedObjEnvelopException(e);
        }
    }
    @PostMapping(value = BaseRequestMapping.DictIcd10.DELETE)

+ 36 - 17
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/dict/TemplateManageEndpoint.java

@ -72,6 +72,7 @@ public class TemplateManageEndpoint  extends EnvelopRestEndpoint {
//            AExcelReader excelReader = new BaseDoctorExcelDOReader();
            InputStream inputStream = file.getInputStream();
            Workbook workbook = getWorkbook(inputStream,file.getOriginalFilename());
            baseDrugExcelDOReader.setTemplateId(templateId);
            baseDrugExcelDOReader.read(workbook);
            //验证未通过(暂无验证)
            List<BasDrugExcelDO> errorLs = baseDrugExcelDOReader.getErrorLs();
@ -81,10 +82,9 @@ public class TemplateManageEndpoint  extends EnvelopRestEndpoint {
            if(correctLs.size()>0){
                result = baseDrugDictService.batchInsertDrugs(correctLs,templateId);
                result.put("errorLs", errorLs);
                int errors = errorLs.size();
                int corrects = correctLs.size();
                int errors = errorLs==null?0:errorLs.size();
                int corrects = correctLs==null?0:correctLs.size();
                msg = "当前导入成功"+corrects+"条数据"+";失败"+errors+"条数据";
            }
            return success(msg, result);
        }catch (Exception e){
@ -182,6 +182,8 @@ public class TemplateManageEndpoint  extends EnvelopRestEndpoint {
            @RequestParam(value = "templateId", required = false) String templateId,
            @ApiParam(name = "name", value = "模板id")
            @RequestParam(value = "name", required = false) String name,
            @ApiParam(name = "code", value = "")
            @RequestParam(value = "code", required = false) String code,
            @ApiParam(name = "isSelectUse", value = "1查询已添加的2查询未添加")
            @RequestParam(value = "isSelectUse", required = false) String isSelectUse,
            @ApiParam(name = "page", value = "")
@ -190,11 +192,11 @@ public class TemplateManageEndpoint  extends EnvelopRestEndpoint {
            @RequestParam(value = "pageSize", required = false) Integer pageSize) throws Exception {
        try {
            if(StringUtils.isNoneBlank(isSelectUse)&&"1".equalsIgnoreCase(isSelectUse)){
                return templateManageService.findTemlateAddChildList(templateId,page,pageSize);
                return templateManageService.findTemlateAddChildList(templateId,name,code,page,pageSize);
            }else if(StringUtils.isNoneBlank(isSelectUse)&&"2".equalsIgnoreCase(isSelectUse)){
                return templateManageService.findTemlateNotAddChildList(templateId,page,pageSize);
                return templateManageService.findTemlateNotAddChildList(templateId,name,code,page,pageSize);
            } else {
                return templateManageService.findTemlateChildList(templateId,name,page,pageSize);
                return templateManageService.findTemlateChildList(templateId,name,code,page,pageSize);
            }
        }catch (Exception e){
@ -220,7 +222,7 @@ public class TemplateManageEndpoint  extends EnvelopRestEndpoint {
    }
    @GetMapping("/findOrgTemplate")
    @ApiOperation(value = "保存租户模板")
    @ApiOperation(value = "保存机构模板")
    public Envelop saveSaasTemplate (
            @ApiParam(name = "orgCode", value = "orgCode")
            @RequestParam(value = "orgCode", required = false) String orgCode) throws Exception {
@ -248,6 +250,7 @@ public class TemplateManageEndpoint  extends EnvelopRestEndpoint {
//            AExcelReader excelReader = new BaseDoctorExcelDOReader();
            InputStream inputStream = file.getInputStream();
            Workbook workbook = getWorkbook(inputStream,file.getOriginalFilename());
            baseDrugExcelDOReader.setTemplateId(templateId);
            baseDrugUseExcelDOReader.read(workbook);
            //验证未通过(暂无验证)
            List<BasDrugUseExcelDO> errorLs = baseDrugUseExcelDOReader.getErrorLs();
@ -257,8 +260,8 @@ public class TemplateManageEndpoint  extends EnvelopRestEndpoint {
            if(correctLs.size()>0){
                result = baseDrugUseService.batchInsertDrugs(correctLs,templateId);
                result.put("errorLs", errorLs);
                int errors = errorLs.size();
                int corrects = correctLs.size();
                int errors = errorLs==null?0:errorLs.size();
                int corrects = correctLs==null?0:correctLs.size();
                msg = "当前导入成功"+corrects+"条数据"+";失败"+errors+"条数据";
                return success(msg, result);
            }
@ -284,6 +287,7 @@ public class TemplateManageEndpoint  extends EnvelopRestEndpoint {
//            AExcelReader excelReader = new BaseDoctorExcelDOReader();
            InputStream inputStream = file.getInputStream();
            Workbook workbook = getWorkbook(inputStream,file.getOriginalFilename());
            baseDrugExcelDOReader.setTemplateId(templateId);
            baseFrequencyExcelDOReader.read(workbook);
            //验证未通过(暂无验证)
            List<BasFrequencyExcelDO> errorLs = baseFrequencyExcelDOReader.getErrorLs();
@ -293,8 +297,8 @@ public class TemplateManageEndpoint  extends EnvelopRestEndpoint {
            if(correctLs.size()>0){
                 result = baseFrequencyService.batchInsertDrugs(correctLs,templateId);
                result.put("errorLs", errorLs);
                int errors = errorLs.size();
                int corrects = correctLs.size();
                int errors = errorLs==null?0:errorLs.size();
                int corrects = correctLs==null?0:correctLs.size();
                msg = "当前导入成功"+corrects+"条数据"+";失败"+errors+"条数据";
            }
@ -319,6 +323,7 @@ public class TemplateManageEndpoint  extends EnvelopRestEndpoint {
//            AExcelReader excelReader = new BaseDoctorExcelDOReader();
            InputStream inputStream = file.getInputStream();
            Workbook workbook = getWorkbook(inputStream,file.getOriginalFilename());
            baseDrugExcelDOReader.setTemplateId(templateId);
            icd10ExcelDOReader.read(workbook);
            //验证未通过(暂无验证)
            List<BasIcd10ExcelDO> errorLs = icd10ExcelDOReader.getErrorLs();
@ -328,8 +333,8 @@ public class TemplateManageEndpoint  extends EnvelopRestEndpoint {
            if(correctLs.size()>0){
                result = dictIcd10Service.batchInsertDrugs(correctLs,templateId);
                result.put("errorLs", errorLs);
                int errors = errorLs.size();
                int corrects = correctLs.size();
                int errors = errorLs==null?0:errorLs.size();
                int corrects = correctLs==null?0:correctLs.size();
                msg = "当前导入成功"+corrects+"条数据"+";失败"+errors+"条数据";
            }
            return success(msg, result);
@ -340,19 +345,24 @@ public class TemplateManageEndpoint  extends EnvelopRestEndpoint {
    }
    @GetMapping("/excelControl/exportExcel")
    public void exportExcel(HttpServletRequest request, HttpServletResponse response,@ApiParam(name = "templateId", value = "templateId", required = true)
    @RequestPart(value = "templateType") String  templateType) {
    public void exportExcel(HttpServletRequest request, HttpServletResponse response,@ApiParam(name = "templateType", value = "templateType", required = true)
    @RequestParam   (value = "templateType") String  templateType) {
        try {
            String filePath="";
            String fileName="";
            if ("frequencyDict".equalsIgnoreCase(templateType)){
                filePath="/home/频次模板.xls";
                fileName="频次模板.xls";
            }else if ("drugUseDict".equalsIgnoreCase(templateType)){
                filePath="/home/用药类型模板.xls";
                fileName="用药类型模板.xls";
            }else if ("drugListDict".equalsIgnoreCase(templateType)){
                filePath="/home/药品字典模板.xls";
                fileName="药品字典模板.xls";
            }else if ("icd10ListDict".equalsIgnoreCase(templateType)){
                filePath="/home/诊断模板.xls";
                fileName="诊断模板.xls";
            }
            HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(filePath));
@ -401,9 +411,18 @@ public class TemplateManageEndpoint  extends EnvelopRestEndpoint {
            /*response.setHeader("Content-Disposition", "attachment; filename="
                    + new String( "医生模板信息".getBytes("gb2312"), "ISO8859-1" )+".xls");*/
            response.setHeader("Content-Disposition", "attachment; filename="
                    + URLEncoder.encode("医生模板信息.xls","UTF-8"));
            wb.write(output);
                    + URLEncoder.encode(fileName,"UTF-8"));
            wb.write(output);
            /*ByteArrayOutputStream bos = new ByteArrayOutputStream();
            try {
                wb.write(bos);
            } finally {
                bos.close();
            }
            byte[] bytes = bos.toByteArray();
            output.write(bytes);
            output.close();*/
            wb.close();
        } catch (Exception e) {

+ 17 - 2
svr/svr-base/src/main/java/com/yihu/jw/base/service/dict/BaseDrugDictService.java

@ -32,14 +32,23 @@ public class BaseDrugDictService extends BaseJpaService<BaseDrugDictDO, BaseDrug
    @Autowired
    private BaseTemplateDictDao baseTemplateDictDao;
    public BaseDrugDictDO saveNationalDrug(BaseDrugDictDO nationalDrugDictDO) {
    public BaseDrugDictDO saveNationalDrug(BaseDrugDictDO nationalDrugDictDO)  throws  Exception{
        BaseDrugDictDO baseDrugDictDO=baseDrugDictDao.findByCode(nationalDrugDictDO.getCharge_code());
        //判断新增或编辑
        if (!StringUtils.isNoneBlank(nationalDrugDictDO.getId())) {
            if (baseDrugDictDO!=null){
                throw  new Exception("该药品编码已存在");
            }
            nationalDrugDictDO.setCreate_time(new Date());
            nationalDrugDictDO.setUpdate_time(new Date());
            nationalDrugDictDO.setIs_del("1");
            return baseDrugDictDao.save(nationalDrugDictDO);
        }else {
            if (baseDrugDictDO!=null){
                if (!nationalDrugDictDO.getId().equalsIgnoreCase(baseDrugDictDO.getId())){
                    throw  new Exception("该药品编码已被使用");
                }
            }
            System.out.println("===="+nationalDrugDictDO.getId());
            BaseDrugDictDO oldDurgDictDO =  baseDrugDictDao.findOne(nationalDrugDictDO.getId());
            BeanUtils.copyProperties(nationalDrugDictDO, oldDurgDictDO, getNullPropertyNames(nationalDrugDictDO));
@ -153,6 +162,8 @@ public class BaseDrugDictService extends BaseJpaService<BaseDrugDictDO, BaseDrug
            baseDrugDictDO.setVol_unit_name(one.getVol_unit_name());
            baseDrugDictDO.setWeigh_unit(one.getWeigh_unit());
            baseDrugDictDO.setWeigh_unit_name(one.getWeigh_unit_name());
            baseDrugDictDO.setManufactory(one.getWeigh_unit_name());
            baseDrugDictDO.setStatus(one.getStatus());
            baseDrugDictDO=baseDrugDictDao.save(baseDrugDictDO);
            if (StringUtils.isNoneBlank(templateId)){
                BaseTemplateDictDO baseTemplateDictDO = new BaseTemplateDictDO();
@ -167,13 +178,17 @@ public class BaseDrugDictService extends BaseJpaService<BaseDrugDictDO, BaseDrug
        result.put("correctCount", drugs.size());
        return result;
    }
    public void updateDrugStatus(String id,String status,String del){
    public void updateDrugStatus(String id,String status,String del) throws  Exception{
        BaseDrugDictDO baseDrugDictDO = baseDrugDictDao.findOne(id);
        if (baseDrugDictDO!=null){
            if (StringUtils.isNoneBlank(status)){
                baseDrugDictDO.setStatus(status);
            }
            if (StringUtils.isNoneBlank(del)){
                List<BaseTemplateDictDO> baseTemplateDictDO = baseTemplateDictDao.findByDictId(id);
                if (baseTemplateDictDO!=null&&baseTemplateDictDO.size()>0){
                    throw  new Exception("该药品已存在现有模板之中不允许删除");
                }
                baseDrugDictDO.setIs_del(del);
            }
            baseDrugDictDao.save(baseDrugDictDO);

+ 17 - 4
svr/svr-base/src/main/java/com/yihu/jw/base/service/dict/BaseDrugUseService.java

@ -33,12 +33,21 @@ public class BaseDrugUseService extends BaseJpaService<BaseDrugUseDictDO, BaseDr
    @Autowired
    private BaseTemplateDictDao baseTemplateDictDao;
    public void saveBaseDrugUse(BaseDrugUseDictDO baseDrugUseDictDO){
    public void saveBaseDrugUse(BaseDrugUseDictDO baseDrugUseDictDO) throws  Exception{
        BaseDrugUseDictDO baseDrugUseDictDO1=baseDrugUseDictDao.findByCode(baseDrugUseDictDO.getSupply_code());
        if (StringUtils.isNotBlank(baseDrugUseDictDO.getId())){
            if (baseDrugUseDictDO1!=null){
                throw  new Exception("该使用方式code已存在");
            }
            BaseDrugUseDictDO oldDurgDictDO= baseDrugUseDictDao.findOne(baseDrugUseDictDO.getId());
            BeanUtils.copyProperties(baseDrugUseDictDO, oldDurgDictDO, getNullPropertyNames(baseDrugUseDictDO));
            baseDrugUseDictDao.save(oldDurgDictDO);
        }else {
            if (baseDrugUseDictDO1!=null){
                if (!baseDrugUseDictDO1.getId().equalsIgnoreCase(baseDrugUseDictDO.getId())){
                    throw  new Exception("该使用方式code已被使用");
                }
            }
            baseDrugUseDictDO.setCreateTime(new Date());
            baseDrugUseDictDO.setDel_flag("1");
            baseDrugUseDictDao.save(baseDrugUseDictDO);
@ -105,8 +114,8 @@ public class BaseDrugUseService extends BaseJpaService<BaseDrugUseDictDO, BaseDr
        for(BasDrugUseExcelDO one:drugs) {
            baseDrugUseDictDO = new BaseDrugUseDictDO();
            baseDrugUseDictDO.setCreateTime(new Date());
            baseDrugUseDictDO.setStatus("1");
            baseDrugUseDictDO.setDel_flag(one.getDel_flag());
            baseDrugUseDictDO.setStatus(one.getStatus());
            baseDrugUseDictDO.setDel_flag("1");
            baseDrugUseDictDO.setD_code(one.getD_code());
            baseDrugUseDictDO.setPrint_name(one.getPrint_name());
            baseDrugUseDictDO.setPy_code(one.getPy_code());
@ -130,7 +139,7 @@ public class BaseDrugUseService extends BaseJpaService<BaseDrugUseDictDO, BaseDr
        result.put("correctCount", drugs.size());
        return result;
    }
    public void updateDrugUseStatus(String id,String status,String del){
    public void updateDrugUseStatus(String id,String status,String del) throws  Exception{
        BaseDrugUseDictDO baseDrugUseDictDO = baseDrugUseDictDao.findOne(id);
        if (baseDrugUseDictDO!=null){
            if (StringUtils.isNoneBlank(status)){
@ -138,6 +147,10 @@ public class BaseDrugUseService extends BaseJpaService<BaseDrugUseDictDO, BaseDr
            }
            if (StringUtils.isNoneBlank(del)){
                baseDrugUseDictDO.setDel_flag(del);
                List<BaseTemplateDictDO> baseTemplateDictDO = baseTemplateDictDao.findByDictId(id);
                if (baseTemplateDictDO!=null&&baseTemplateDictDO.size()>0){
                    throw  new Exception("该使用方式已存在现有模板之中不允许删除");
                }
            }
            baseDrugUseDictDao.save(baseDrugUseDictDO);
        }

+ 15 - 2
svr/svr-base/src/main/java/com/yihu/jw/base/service/dict/BaseFrequencyService.java

@ -33,12 +33,21 @@ public class BaseFrequencyService extends BaseJpaService<BaseFrequencyDictDO, Ba
    @Autowired
    private BaseTemplateDictDao baseTemplateDictDao;
    public void saveFrequency(BaseFrequencyDictDO baseFrequencyDictDO){
    public void saveFrequency(BaseFrequencyDictDO baseFrequencyDictDO) throws Exception{
        BaseFrequencyDictDO baseFrequencyDictDO1=baseFrequencyDictDao.findByCode(baseFrequencyDictDO.getFreq_code());
        if (StringUtils.isNotBlank(baseFrequencyDictDO.getId())){
            if (baseFrequencyDictDO1!=null){
                throw  new Exception("该频次code已存在");
            }
            BaseFrequencyDictDO oldFrequency= baseFrequencyDictDao.findOne(baseFrequencyDictDO.getId());
            BeanUtils.copyProperties(baseFrequencyDictDO, oldFrequency, getNullPropertyNames(baseFrequencyDictDO));
            baseFrequencyDictDao.save(oldFrequency);
        }else {
            if (baseFrequencyDictDO1!=null){
                if (!baseFrequencyDictDO1.getId().equalsIgnoreCase(baseFrequencyDictDO.getId())){
                    throw  new Exception("该频次code已被使用");
                }
            }
            baseFrequencyDictDO.setCreateTime(new Date());
            baseFrequencyDictDO.setIs_del("1");
            baseFrequencyDictDao.save(baseFrequencyDictDO);
@ -122,7 +131,7 @@ public class BaseFrequencyService extends BaseJpaService<BaseFrequencyDictDO, Ba
        result.put("correctCount", drugs.size());
        return result;
    }
    public void updateFrequencyStatus(String id,String status,String del){
    public void updateFrequencyStatus(String id,String status,String del) throws  Exception{
        BaseFrequencyDictDO baseFrequencyDictDO = baseFrequencyDictDao.findOne(id);
        if (baseFrequencyDictDO!=null){
            if (StringUtils.isNotBlank(status)){
@ -130,6 +139,10 @@ public class BaseFrequencyService extends BaseJpaService<BaseFrequencyDictDO, Ba
            }
            if (StringUtils.isNotBlank(del)){
                baseFrequencyDictDO.setIs_del(del);
                List<BaseTemplateDictDO> baseTemplateDictDO = baseTemplateDictDao.findByDictId(id);
                if (baseTemplateDictDO!=null&&baseTemplateDictDO.size()>0){
                    throw  new Exception("该使频次已存在现有模板之中不允许删除");
                }
            }
            baseFrequencyDictDao.save(baseFrequencyDictDO);
        }

+ 16 - 2
svr/svr-base/src/main/java/com/yihu/jw/base/service/dict/DictIcd10Service.java

@ -7,6 +7,7 @@ import com.yihu.jw.base.service.dict.importManage.BasDrugUseExcelDO;
import com.yihu.jw.base.service.dict.importManage.BasIcd10ExcelDO;
import com.yihu.jw.dict.dao.BaseTemplateDictDao;
import com.yihu.jw.entity.base.dict.BaseDrugUseDictDO;
import com.yihu.jw.entity.base.dict.BaseFrequencyDictDO;
import com.yihu.jw.entity.base.dict.BaseTemplateDictDO;
import com.yihu.jw.exception.business.ManageException;
import com.yihu.jw.restmodel.web.MixEnvelop;
@ -114,12 +115,21 @@ public class DictIcd10Service extends BaseJpaService<DictIcd10DO, DictIcd10Dao>
        mixEnvelop.setTotalCount(count);
        return mixEnvelop;
    }
    public void saveIcd10(DictIcd10DO icd10DO){
    public void saveIcd10(DictIcd10DO icd10DO) throws Exception{
        DictIcd10DO icd10DO2=dictIcd10Dao.findByCode(icd10DO.getCode());
        if (icd10DO.getId()!=null){
            if (icd10DO2!=null){
                if (icd10DO2.getId()!=icd10DO.getId()){
                    throw  new Exception("该诊断已被使用");
                }
            }
            DictIcd10DO icd10DO1= dictIcd10Dao.findOne(icd10DO.getId());
            BeanUtils.copyProperties(icd10DO, icd10DO1, getNullPropertyNames(icd10DO));
            dictIcd10Dao.save(icd10DO1);
        }else {
            if (icd10DO2!=null){
                throw  new Exception("该诊断已存在");
            }
            icd10DO.setCreateTime(new Date());
            icd10DO.setIs_del("1");
            dictIcd10Dao.save(icd10DO);
@ -163,7 +173,7 @@ public class DictIcd10Service extends BaseJpaService<DictIcd10DO, DictIcd10Dao>
        result.put("correctCount", drugs.size());
        return result;
    }
    public void updateIcd10Status(Integer id,String status,String del){
    public void updateIcd10Status(Integer id,String status,String del) throws Exception{
        DictIcd10DO dictIcd10DO = dictIcd10Dao.findOne(id);
        if (dictIcd10DO!=null){
            if (StringUtils.isNoneBlank(status)){
@ -171,6 +181,10 @@ public class DictIcd10Service extends BaseJpaService<DictIcd10DO, DictIcd10Dao>
            }
            if (StringUtils.isNoneBlank(del)){
                dictIcd10DO.setIs_del(del);
                List<BaseTemplateDictDO> baseTemplateDictDO = baseTemplateDictDao.findByDictId(id.toString());
                if (baseTemplateDictDO!=null&&baseTemplateDictDO.size()>0){
                    throw  new Exception("该诊断已存在现有模板之中不允许删除");
                }
            }
            dictIcd10Dao.save(dictIcd10DO);
        }

+ 118 - 51
svr/svr-base/src/main/java/com/yihu/jw/base/service/dict/TemplateManageService.java

@ -38,8 +38,6 @@ public class TemplateManageService {
    @Autowired
    private WlyyHospitalSysDictDao wlyyHospitalSysDictDao;
    @Autowired
    private SaasDao saasDao;
    @Autowired
    private BaseOrgDao baseOrgDao;
@ -91,33 +89,38 @@ public class TemplateManageService {
        mixEnvelop.setTotalCount(count);
        return mixEnvelop;
    }
   public void addOrRemoveChildrenDict(String templateId,String dictId,String isDel){
       BaseTemplateDictDO baseTemplateDictDO = baseTemplateDictDao.findByDictIdAndTemplateId(dictId,templateId);
       if ("1".equalsIgnoreCase(isDel)){
           if (baseTemplateDictDO!=null){
               baseTemplateDictDO.setIsDel("1");
           }else {
               baseTemplateDictDO = new BaseTemplateDictDO();
               baseTemplateDictDO.setTemplateId(templateId);
               baseTemplateDictDO.setDictId(dictId);
               baseTemplateDictDO.setCreateTime(new Date());
               baseTemplateDictDO.setIsDel("1");
           }
   public void addOrRemoveChildrenDict(String templateId,String dictIds,String isDel){
        String[] dictArr=dictIds.split(",");
        for (int i=0;i<dictArr.length;i++){
            String dictId=dictArr[i];
            BaseTemplateDictDO baseTemplateDictDO = baseTemplateDictDao.findByDictIdAndTemplateId(dictId,templateId);
            if ("1".equalsIgnoreCase(isDel)){
                if (baseTemplateDictDO!=null){
                    baseTemplateDictDO.setIsDel("1");
                }else {
                    baseTemplateDictDO = new BaseTemplateDictDO();
                    baseTemplateDictDO.setTemplateId(templateId);
                    baseTemplateDictDO.setDictId(dictId);
                    baseTemplateDictDO.setCreateTime(new Date());
                    baseTemplateDictDO.setIsDel("1");
                }
            }else {
                if (baseTemplateDictDO!=null){
                    baseTemplateDictDO.setIsDel("0");
                }else {
                    return;
                }
            }
            baseTemplateDictDao.save(baseTemplateDictDO);
            BaseTemplateDO baseTemplateDO = baseTemplateDao.findOne(templateId);
            Integer chuildrenCount =  baseTemplateDictDao.getCountByTemplateId(templateId);
            if (baseTemplateDO !=null ){
                baseTemplateDO.setChildrenCount(chuildrenCount.toString());
            }
            baseTemplateDao.save(baseTemplateDO);
        }
       }else {
           if (baseTemplateDictDO!=null){
               baseTemplateDictDO.setIsDel("0");
           }else {
               return;
           }
       }
       baseTemplateDictDao.save(baseTemplateDictDO);
       BaseTemplateDO baseTemplateDO = baseTemplateDao.findOne(templateId);
       Integer chuildrenCount =  baseTemplateDictDao.getCountByTemplateId(templateId);
       if (baseTemplateDO !=null ){
           baseTemplateDO.setChildrenCount(chuildrenCount.toString());
       }
       baseTemplateDao.save(baseTemplateDO);
   }
   public void saveOrUpdateTemplate(String templateId,String code,String name,String user,String userName,String templateType){
       BaseTemplateDO baseTemplateDO = baseTemplateDao.findOne(templateId);
@ -143,7 +146,7 @@ public class TemplateManageService {
       baseTemplateDao.save(baseTemplateDO);
   }
   public MixEnvelop findTemlateChildList(String templateId,String name,Integer page,Integer pageSize){
   public MixEnvelop findTemlateChildList(String templateId,String name,String code,Integer page,Integer pageSize){
        BaseTemplateDO baseTemplateDictDO = baseTemplateDao.findOne(templateId);
        PageRequest pageRequest = new PageRequest(page-1, pageSize);
        List<Map<String,Object>> returnList= new ArrayList<>();
@ -154,7 +157,7 @@ public class TemplateManageService {
            if ("frequencyDict".equalsIgnoreCase(baseTemplateDictDO.getTemplateType())){
                List<BaseFrequencyDictDO> list= new ArrayList<>();
                if (StringUtils.isNoneBlank(name)){
                    list= baseFrequencyDictDao.findByNameDel(name,pageRequest);
                    list= baseFrequencyDictDao.findByNameDel(name,code,pageRequest);
                }else {
                    list= baseFrequencyDictDao.findByDel(pageRequest);
                }
@ -182,7 +185,7 @@ public class TemplateManageService {
            }else if ("drugUseDict".equalsIgnoreCase(baseTemplateDictDO.getTemplateType())){
                List<BaseDrugUseDictDO> list= new ArrayList<>();
                if (StringUtils.isNoneBlank(name)){
                    list= baseDrugUseDictDao.findByNameDel(name,pageRequest);
                    list= baseDrugUseDictDao.findByNameDel(name,code,pageRequest);
                }else {
                    list= baseDrugUseDictDao.findByDel(pageRequest);
                }
@ -208,7 +211,7 @@ public class TemplateManageService {
            }else if ("drugListDict".equalsIgnoreCase(baseTemplateDictDO.getTemplateType())){
                List<BaseDrugDictDO> list= new ArrayList<>();
                if (StringUtils.isNoneBlank(name)){
                    list= baseDrugDictDao.findByNameDel(name,pageRequest);
                    list= baseDrugDictDao.findByNameDel(name,code,pageRequest);
                }else {
                    list= baseDrugDictDao.findByDel(pageRequest);
                }
@ -237,7 +240,7 @@ public class TemplateManageService {
            }else if ("icd10ListDict".equalsIgnoreCase(baseTemplateDictDO.getTemplateType())){
                List<DictIcd10DO> list= new ArrayList<>();
                if (StringUtils.isNoneBlank(name)){
                    list= baseDictIcd10Dao.findByNameDel(name,pageRequest);
                    list= baseDictIcd10Dao.findByNameDel(name,code,pageRequest);
                }else {
                    list= baseDictIcd10Dao.findByDel(pageRequest);
                }
@ -331,7 +334,7 @@ public class TemplateManageService {
    public MixEnvelop findTemlateAddChildList(String templateId,Integer page,Integer pageSize){
    public MixEnvelop findTemlateAddChildList(String templateId,String name,String code,Integer page,Integer pageSize){
        BaseTemplateDO baseTemplateDictDO = baseTemplateDao.findOne(templateId);
        MixEnvelop mixEnvelop = new MixEnvelop();
        mixEnvelop.setPageSize(pageSize);
@ -350,9 +353,17 @@ public class TemplateManageService {
                        " t.status as \"status\"," +
                        " t.create_time as \"create_time\"" +
                        "from base_template_dict b left join  base_frequency_dict t on b.dict_id=t.id" +
                        " where t.is_del='1' and b.is_del='1' ";
                        " where t.is_del='1' and b.is_del='1' and t.status ='1' ";
                String sqlCount =" select count(1) as \"count\" from base_template_dict b left join  base_frequency_dict t on b.dict_id=t.id" +
                        "  where t.is_del='1 and b.is_del='1'";
                        "  where t.is_del='1' and b.is_del='1' and t.status ='1' ";
                if (StringUtils.isNoneBlank(code)){
                    sql+=" and t.freq_code like '%"+code+"%'";
                    sqlCount+=" and t.freq_code like '%"+code+"%'";
                }
                if (StringUtils.isNoneBlank(name)){
                    sql+=" and t.freq_name like '%"+name+"%'";
                    sqlCount+=" and t.freq_name like '%"+name+"%'";
                }
                sql+=" and b.template_id = '"+baseTemplateDictDO.getId()+"'";
                sqlCount+=" and b.template_id = '"+baseTemplateDictDO.getId()+"'";
                List<Map<String,Object>> list=hibenateUtils.createSQLQuery(sql,page,pageSize);
@ -386,9 +397,17 @@ public class TemplateManageService {
                        " t.status as \"status\"," +
                        " t.create_time as \"create_time\" " +
                        "from  base_template_dict b left join base_drug_use_dict t on b.dict_id=t.id" +
                        " where t.del_flag='1' and b.is_del='1'";
                        " where t.del_flag='1' and b.is_del='1' and t.status ='1' ";
                String sqlCount =" select count(1) as \"count\" from  base_template_dict b left join base_drug_use_dict t on b.dict_id=t.id" +
                        " where t.del_flag='1 and b.is_del='1'";
                        " where t.del_flag='1' and b.is_del='1' and t.status ='1' ";
                if (StringUtils.isNoneBlank(code)){
                    sql+=" and t.supply_code like '%"+code+"%'";
                    sqlCount+=" and t.supply_code like '%"+code+"%'";
                }
                if (StringUtils.isNoneBlank(name)){
                    sql+=" and t.supply_name like '%"+name+"%'";
                    sqlCount+=" and t.supply_name like '%"+name+"%'";
                }
                sql+=" and b.template_id = '"+baseTemplateDictDO.getId()+"'";
                sqlCount+=" and b.template_id = '"+baseTemplateDictDO.getId()+"'";
                List<Map<String,Object>> list=hibenateUtils.createSQLQuery(sql,page,pageSize);
@ -441,9 +460,17 @@ public class TemplateManageService {
                        " t.pack_unit as \"pack_unit\"," +
                        " t.is_del as \"is_del\"" +
                        " from base_template_dict b left join base_drug_dict t on b.dict_id = t.id " +
                        " where t.is_del='1' and b.is_del='1'";
                        " where t.is_del='1' and b.is_del='1' and t.status ='1' ";
                String sqlCount = "select count(1) as \"count\" from base_template_dict b left join base_drug_dict t on b.dict_id = t.id " +
                        " where t.is_del='1'and b.is_del='1' ";
                        " where t.is_del='1' and b.is_del='1' and t.status ='1' ";
                if (StringUtils.isNoneBlank(code)){
                    sql+=" and t.charge_code like '%"+code+"%'";
                    sqlCount+=" and t.charge_code like '%"+code+"%'";
                }
                if (StringUtils.isNoneBlank(name)){
                    sql+=" and t.drugname like '%"+name+"%'";
                    sqlCount+=" and t.drugname like '%"+name+"%'";
                }
                sql+=" and b.template_id = '"+baseTemplateDictDO.getId()+"'";
                sqlCount+=" and b.template_id = '"+baseTemplateDictDO.getId()+"'";
                List<Map<String,Object>> list=hibenateUtils.createSQLQuery(sql,page,pageSize);
@ -476,9 +503,17 @@ public class TemplateManageService {
                        " t.is_del as \"is_del\"," +
                        " t.status as \"status\" " +
                        " from base_template_dict b left join dict_icd10 t on b.dict_id=t.id" +
                        " where t.is_del='1' and b.is_del='1'";
                        " where t.is_del='1' and b.is_del='1' and t.status ='1' ";
                String sqlCount =" select count(1) as \"count\" from base_template_dict b left join dict_icd10 t on b.dict_id=t.id" +
                        " where t.is_del='1' and b.is_del='1'";
                        " where t.is_del='1' and b.is_del='1' and t.status ='1' ";
                if (StringUtils.isNoneBlank(code)){
                    sql+=" and t.code like '%"+code+"%'";
                    sqlCount+=" and t.code like '%"+code+"%'";
                }
                if (StringUtils.isNoneBlank(name)){
                    sql+=" and t.name like '%"+name+"%'";
                    sqlCount+=" and t.name like '%"+name+"%'";
                }
                sql+=" and b.template_id = '"+baseTemplateDictDO.getId()+"'";
                sqlCount+=" and b.template_id = '"+baseTemplateDictDO.getId()+"'";
                List<Map<String,Object>> list=hibenateUtils.createSQLQuery(sql,page,pageSize);
@ -506,7 +541,7 @@ public class TemplateManageService {
    }
    public MixEnvelop findTemlateNotAddChildList(String templateId,Integer page,Integer pageSize){
    public MixEnvelop findTemlateNotAddChildList(String templateId,String name,String code,Integer page,Integer pageSize){
        BaseTemplateDO baseTemplateDictDO = baseTemplateDao.findOne(templateId);
        MixEnvelop mixEnvelop = new MixEnvelop();
        mixEnvelop.setPageSize(pageSize);
@ -526,10 +561,18 @@ public class TemplateManageService {
                        " t.create_time as \"create_time\"" +
                        " from  base_frequency_dict t where t.id not in ( SELECT DISTINCT g.id from base_frequency_dict g left join base_template_dict " +
                        "m on g.id = m.dict_id " +
                        "where m.template_id ='"+templateId+"')";
                        "where m.template_id ='"+templateId+"' and m.is_del ='1') and t.is_del='1' and t.status='1' ";
                String sqlCount =" select count(1) as \"count\" from  base_frequency_dict t where t.id not in ( SELECT DISTINCT g.id from base_frequency_dict g left join base_template_dict " +
                        "m on g.id = m.dict_id " +
                        "where m.template_id ='"+templateId+"')";
                        "where m.template_id ='"+templateId+"' and m.is_del ='1') and t.is_del='1' and t.status='1' ";
                if (StringUtils.isNoneBlank(code)){
                    sql+=" and t.freq_code like '%"+code+"%'";
                    sqlCount+=" and t.freq_code like '%"+code+"%'";
                }
                if (StringUtils.isNoneBlank(name)){
                    sql+=" and t.freq_name like '%"+name+"%'";
                    sqlCount+=" and t.freq_name like '%"+name+"%'";
                }
                List<Map<String,Object>> list=hibenateUtils.createSQLQuery(sql,page,pageSize);
                for (Map<String,Object> map:list){
                    if (map.get("status")!=null&&"1".equalsIgnoreCase(map.get("status").toString())){
@ -562,10 +605,18 @@ public class TemplateManageService {
                        " t.create_time as \"create_time\" " +
                        " from  base_drug_use_dict t where t.id not in ( SELECT DISTINCT g.id from base_drug_use_dict g left join base_template_dict " +
                        "m on g.id = m.dict_id " +
                        "where m.template_id ='"+templateId+"')";
                        "where m.template_id ='"+templateId+"' and m.is_del ='1') and t.del_flag='1' and t.status='1'";
                String sqlCount =" select count(1) as \"count\" from  base_drug_use_dict t where t.id not in ( SELECT DISTINCT g.id from base_drug_use_dict g left join base_template_dict " +
                        "m on g.id = m.dict_id " +
                        "where m.template_id ='"+templateId+"')";
                        "where m.template_id ='"+templateId+"' and m.is_del ='1') and t.del_flag='1' and t.status='1'";
                if (StringUtils.isNoneBlank(code)){
                    sql+=" and t.supply_code like '%"+code+"%'";
                    sqlCount+=" and t.supply_code like '%"+code+"%'";
                }
                if (StringUtils.isNoneBlank(name)){
                    sql+=" and t.supply_name like '%"+name+"%'";
                    sqlCount+=" and t.supply_name like '%"+name+"%'";
                }
                List<Map<String,Object>> list=hibenateUtils.createSQLQuery(sql,page,pageSize);
                for (Map<String,Object> map:list){
                    if (map.get("status")!=null&&"1".equalsIgnoreCase(map.get("status").toString())){
@ -617,10 +668,18 @@ public class TemplateManageService {
                        " t.is_del as \"is_del\"" +
                        " from  base_drug_dict t where t.id not in ( SELECT DISTINCT g.id from base_drug_dict g left join base_template_dict " +
                        " m on g.id = m.dict_id " +
                        "where m.template_id ='"+templateId+"')";
                        "where m.template_id ='"+templateId+"' and m.is_del ='1') and t.is_del='1' and t.status='1'";
                String sqlCount = "select count(1) as \"count\"  from  base_drug_dict t where t.id not in ( SELECT DISTINCT g.id from base_drug_dict g left join base_template_dict " +
                        "m on g.id = m.dict_id " +
                        "where m.template_id ='"+templateId+"')";
                        "where m.template_id ='"+templateId+"' and m.is_del ='1') and t.is_del='1' and t.status='1'";
                if (StringUtils.isNoneBlank(code)){
                    sql+=" and t.charge_code like '%"+code+"%'";
                    sqlCount+=" and t.charge_code like '%"+code+"%'";
                }
                if (StringUtils.isNoneBlank(name)){
                    sql+=" and t.drugname like '%"+name+"%'";
                    sqlCount+=" and t.drugname like '%"+name+"%'";
                }
                List<Map<String,Object>> list=hibenateUtils.createSQLQuery(sql,page,pageSize);
                for (Map<String,Object> map:list){
                    if (map.get("status")!=null&&"1".equalsIgnoreCase(map.get("status").toString())){
@ -652,10 +711,18 @@ public class TemplateManageService {
                        " t.status as \"status\" " +
                        " from  dict_icd10 t where t.id not in ( SELECT DISTINCT g.id from dict_icd10 g left join base_template_dict " +
                        "m on g.id = m.dict_id " +
                        "where m.template_id ='"+templateId+"')";
                        "where m.template_id ='"+templateId+"' and m.is_del ='1') and t.is_del='1' and t.status='1'";
                String sqlCount =" select count(1) as \"count\" from  dict_icd10 t where t.id not in ( SELECT DISTINCT g.id from dict_icd10 g left join base_template_dict " +
                        "m on g.id = m.dict_id " +
                        "where m.template_id ='"+templateId+"')";
                        "where m.template_id ='"+templateId+"' and m.is_del ='1') and t.is_del='1' and t.status='1'";
                if (StringUtils.isNoneBlank(code)){
                    sql+=" and t.code like '%"+code+"%'";
                    sqlCount+=" and t.code like '%"+code+"%'";
                }
                if (StringUtils.isNoneBlank(name)){
                    sql+=" and t.name like '%"+name+"%'";
                    sqlCount+=" and t.name like '%"+name+"%'";
                }
                List<Map<String,Object>> list=hibenateUtils.createSQLQuery(sql,page,pageSize);
                for (Map<String,Object> map:list){
                    if (map.get("status")!=null&&"1".equalsIgnoreCase(map.get("status").toString())){

+ 24 - 6
svr/svr-base/src/main/java/com/yihu/jw/base/service/dict/importManage/BasDrugExcelDO.java

@ -13,13 +13,8 @@ import java.util.Date;
import java.util.Map;
import java.util.Set;
/**
 *  医生信息列表-excel实体类
 * @author lith
 * Created at 2018/10/22.
 */
@Row(start = 1)
//@Title(names= "{'姓名', '状态(1生效,0失效)','性别(1男2女)', '身份证号', '联系方式', '机构/部门/职务', '职称','归属业务模块角色','是否名医','专长','简介'}")
public class BasDrugExcelDO extends ExcelUtil implements Validation {
    @Location(x=0)
@ -97,6 +92,29 @@ public class BasDrugExcelDO extends ExcelUtil implements Validation {
    @Location(x=24)
    @ValidRepeat
    String  mini_stock_amount;
    @Location(x=25)
    @ValidRepeat
    String  manufactory;
    @Location(x=26)
    @ValidRepeat
    String  status;
    public String getManufactory() {
        return manufactory;
    }
    public void setManufactory(String manufactory) {
        this.manufactory = manufactory;
    }
    public String getStatus() {
        return status;
    }
    public void setStatus(String status) {
        this.status = status;
    }
    @Override
    public int validate(Map<String, Set> repeatMap) {
        int rs = 1;

+ 14 - 21
svr/svr-base/src/main/java/com/yihu/jw/base/service/dict/importManage/BasDrugUseExcelDO.java

@ -11,13 +11,8 @@ import com.yihu.jw.util.excel.annotation.ValidRepeat;
import java.util.Map;
import java.util.Set;
/**
 *  医生信息列表-excel实体类
 * @author lith
 * Created at 2018/10/22.
 */
@Row(start = 1)
//@Title(names= "{'姓名', '状态(1生效,0失效)','性别(1男2女)', '身份证号', '联系方式', '机构/部门/职务', '职称','归属业务模块角色','是否名医','专长','简介'}")
public class BasDrugUseExcelDO extends ExcelUtil implements Validation {
    @Location(x=0)
@ -31,25 +26,25 @@ public class BasDrugUseExcelDO extends ExcelUtil implements Validation {
    String  supply_occ;//
    @Location(x=3)
    @ValidRepeat
    String del_flag;
    String sort_code;//
    @Location(x=4)
    @ValidRepeat
    String sort_code;//
    String print_name;
    @Location(x=5)
    @ValidRepeat
    String print_name;
    String py_code;
    @Location(x=6)
    @ValidRepeat
    String py_code;
    String d_code;//
    @Location(x=7)
    @ValidRepeat
    String d_code;//
    String yb_name;
    @Location(x=8)
    @ValidRepeat
    String yb_name;
    String yb_code;
    @Location(x=9)
    @ValidRepeat
    String yb_code;
    String status;
    public String getSupply_code() {
        return supply_code;
@ -75,13 +70,6 @@ public class BasDrugUseExcelDO extends ExcelUtil implements Validation {
        this.supply_occ = supply_occ;
    }
    public String getDel_flag() {
        return del_flag;
    }
    public void setDel_flag(String del_flag) {
        this.del_flag = del_flag;
    }
    public String getSort_code() {
        return sort_code;
@ -131,8 +119,13 @@ public class BasDrugUseExcelDO extends ExcelUtil implements Validation {
        this.yb_code = yb_code;
    }
    public String getStatus() {
        return status;
    }
    public void setStatus(String status) {
        this.status = status;
    }
    @Override
    public int validate(Map<String, Set> repeatMap) {

+ 1 - 6
svr/svr-base/src/main/java/com/yihu/jw/base/service/dict/importManage/BasFrequencyExcelDO.java

@ -11,13 +11,8 @@ import com.yihu.jw.util.excel.annotation.ValidRepeat;
import java.util.Map;
import java.util.Set;
/**
 *  医生信息列表-excel实体类
 * @author lith
 * Created at 2018/10/22.
 */
@Row(start = 1)
//@Title(names= "{'姓名', '状态(1生效,0失效)','性别(1男2女)', '身份证号', '联系方式', '机构/部门/职务', '职称','归属业务模块角色','是否名医','专长','简介'}")
public class BasFrequencyExcelDO extends ExcelUtil implements Validation {
    @Location(x=0)

+ 1 - 6
svr/svr-base/src/main/java/com/yihu/jw/base/service/dict/importManage/BasIcd10ExcelDO.java

@ -10,13 +10,8 @@ import com.yihu.jw.util.excel.annotation.ValidRepeat;
import java.util.Map;
import java.util.Set;
/**
 *  医生信息列表-excel实体类
 * @author lith
 * Created at 2018/10/22.
 */
@Row(start = 1)
//@Title(names= "{'姓名', '状态(1生效,0失效)','性别(1男2女)', '身份证号', '联系方式', '机构/部门/职务', '职称','归属业务模块角色','是否名医','专长','简介'}")
public class BasIcd10ExcelDO extends ExcelUtil implements Validation {
    @Location(x=0)

+ 18 - 6
svr/svr-base/src/main/java/com/yihu/jw/base/service/dict/importManage/BaseDrugExcelDOReader.java

@ -11,6 +11,7 @@ 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.entity.base.dict.BaseDrugDictDO;
import com.yihu.jw.entity.base.dict.BaseTemplateDictDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.org.dao.BaseOrgDao;
import org.apache.commons.lang3.StringUtils;
@ -19,14 +20,12 @@ import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
/**
 * 医生信息列表-excel解析类
 * Created by 刘文彬 on 2018/10/24.
 */
@Component
public class BaseDrugExcelDOReader extends AExcelReader {
    @Autowired
@ -65,6 +64,8 @@ public class BaseDrugExcelDOReader extends AExcelReader {
            getRepeat().put("win_no", new HashSet<>());
            getRepeat().put("max_stock_amount", new HashSet<>());
            getRepeat().put("mini_stock_amount", new HashSet<>());
            getRepeat().put("manufactory", new HashSet<>());
            getRepeat().put("status", new HashSet<>());
            errorLs.clear();
            correctLs.clear();
            while (sheets.hasNext()){
@ -99,6 +100,8 @@ public class BaseDrugExcelDOReader extends AExcelReader {
                    basDrugExcelDO.setWin_no(replaceBlank(getCellCont(sheet, i, 22)));
                    basDrugExcelDO.setMax_stock_amount(replaceBlank(getCellCont(sheet, i, 23)));
                    basDrugExcelDO.setMini_stock_amount(replaceBlank(getCellCont(sheet, i, 24)));
                    basDrugExcelDO.setManufactory(replaceBlank(getCellCont(sheet, i, 25)));
                    basDrugExcelDO.setStatus(replaceBlank(getCellCont(sheet, i, 26)));
                    basDrugExcelDO.setExcelSeq(i);
                    int rs = basDrugExcelDO.validate(repeat);
                    if (validate(basDrugExcelDO)== 0||rs == 0) {
@ -121,10 +124,19 @@ public class BaseDrugExcelDOReader extends AExcelReader {
    }
    public int validate(BasDrugExcelDO basDrugExcelDO) {
        int rs = 1;
        if (StringUtils.isNoneBlank(basDrugExcelDO.getDosage())){
            List<BaseDrugDictDO> list  = baseDrugDictDao.findByCodeAndNameAndDosage(basDrugExcelDO.getCharge_code(),basDrugExcelDO.getDrugname(),basDrugExcelDO.getDosage());
        if (StringUtils.isNoneBlank(basDrugExcelDO.getCharge_code())){
            List<BaseDrugDictDO> list  = baseDrugDictDao.findByChargeCode(basDrugExcelDO.getCharge_code());
            System.out.println("当前导入数据:"+ basDrugExcelDO.getCharge_code());
            if (list!=null&&list.size()>0){
                String templateId = this.getTemplateId();
                if (StringUtils.isNoneBlank(templateId)){
                    BaseTemplateDictDO baseTemplateDictDO = new BaseTemplateDictDO();
                    baseTemplateDictDO.setTemplateId(templateId);
                    baseTemplateDictDO.setIsDel("1");
                    baseTemplateDictDO.setDictId(list.get(0).getId());
                    baseTemplateDictDO.setCreateTime(new Date());
                    baseTemplateDictDao.save(baseTemplateDictDO);
                }
                System.out.println("进验证有重复数据"+list.get(0).getCharge_code());
                return 0;
            }

+ 20 - 13
svr/svr-base/src/main/java/com/yihu/jw/base/service/dict/importManage/BaseDrugUseExcelDOReader.java

@ -7,20 +7,19 @@ import com.yihu.jw.dict.dao.BaseDrugUseDictDao;
import com.yihu.jw.dict.dao.BaseTemplateDictDao;
import com.yihu.jw.entity.base.dict.BaseDrugDictDO;
import com.yihu.jw.entity.base.dict.BaseDrugUseDictDO;
import com.yihu.jw.entity.base.dict.BaseTemplateDictDO;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
/**
 * 医生信息列表-excel解析类
 * Created by 刘文彬 on 2018/10/24.
 */
@Component
public class BaseDrugUseExcelDOReader extends AExcelReader {
    @Autowired
@ -37,7 +36,6 @@ public class BaseDrugUseExcelDOReader extends AExcelReader {
            getRepeat().put("supply_code", new HashSet<>());
            getRepeat().put("supply_name", new HashSet<>());
            getRepeat().put("supply_occ", new HashSet<>());
            getRepeat().put("del_flag", new HashSet<>());
            getRepeat().put("sort_code", new HashSet<>());
            getRepeat().put("print_name", new HashSet<>());
            getRepeat().put("py_code", new HashSet<>());
@ -57,13 +55,13 @@ public class BaseDrugUseExcelDOReader extends AExcelReader {
                    basDrugUseExcelDO.setSupply_code(replaceBlank(getCellCont(sheet, i, 0)));
                    basDrugUseExcelDO.setSupply_name(replaceBlank(getCellCont(sheet, i, 1)));
                    basDrugUseExcelDO.setSupply_occ(getCellCont(sheet, i, 2));
                    basDrugUseExcelDO.setDel_flag(replaceBlank(getCellCont(sheet, i, 3)));
                    basDrugUseExcelDO.setSort_code(replaceBlank(getCellCont(sheet, i, 4)));
                    basDrugUseExcelDO.setPrint_name(replaceBlank(getCellCont(sheet, i, 5)));
                    basDrugUseExcelDO.setPy_code(replaceBlank(getCellCont(sheet, i, 6)));
                    basDrugUseExcelDO.setD_code(replaceBlank(getCellCont(sheet, i, 7)));
                    basDrugUseExcelDO.setYb_name(getCellCont(sheet, i, 8));
                    basDrugUseExcelDO.setYb_code(replaceBlank(getCellCont(sheet, i, 9)));
                    basDrugUseExcelDO.setSort_code(replaceBlank(getCellCont(sheet, i, 3)));
                    basDrugUseExcelDO.setPrint_name(replaceBlank(getCellCont(sheet, i, 4)));
                    basDrugUseExcelDO.setPy_code(replaceBlank(getCellCont(sheet, i, 5)));
                    basDrugUseExcelDO.setD_code(replaceBlank(getCellCont(sheet, i, 6)));
                    basDrugUseExcelDO.setYb_name(getCellCont(sheet, i, 7));
                    basDrugUseExcelDO.setYb_code(replaceBlank(getCellCont(sheet, i, 8)));
                    basDrugUseExcelDO.setStatus(getCellCont(sheet, i, 9));
                    basDrugUseExcelDO.setExcelSeq(i);
                    int rs = basDrugUseExcelDO.validate(repeat);
                    if (validate(basDrugUseExcelDO)== 0||rs == 0) {
@ -87,9 +85,18 @@ public class BaseDrugUseExcelDOReader extends AExcelReader {
    public int validate(BasDrugUseExcelDO basDrugUseExcelDO) {
        int rs = 1;
        if (StringUtils.isNoneBlank(basDrugUseExcelDO.getSupply_code())){
            List<BaseDrugUseDictDO> list  = baseDrugUseDictDao.findByCodeAndName(basDrugUseExcelDO.getSupply_code(),basDrugUseExcelDO.getSupply_name());
            List<BaseDrugUseDictDO> list  = baseDrugUseDictDao.findBySupCode(basDrugUseExcelDO.getSupply_code());
            System.out.println("当前导入数据:"+ basDrugUseExcelDO.getSupply_code());
            if (list!=null&&list.size()>0){
                String templateId = this.getTemplateId();
                if (StringUtils.isNoneBlank(templateId)){
                    BaseTemplateDictDO baseTemplateDictDO = new BaseTemplateDictDO();
                    baseTemplateDictDO.setTemplateId(templateId);
                    baseTemplateDictDO.setIsDel("1");
                    baseTemplateDictDO.setDictId(list.get(0).getId());
                    baseTemplateDictDO.setCreateTime(new Date());
                    baseTemplateDictDao.save(baseTemplateDictDO);
                }
                System.out.println("进验证有重复数据"+list.get(0).getSupply_code());
                return 0;
            }

+ 13 - 5
svr/svr-base/src/main/java/com/yihu/jw/base/service/dict/importManage/BaseFrequencyExcelDOReader.java

@ -7,20 +7,19 @@ import com.yihu.jw.dict.dao.BaseFrequencyDictDao;
import com.yihu.jw.dict.dao.BaseTemplateDictDao;
import com.yihu.jw.entity.base.dict.BaseDrugUseDictDO;
import com.yihu.jw.entity.base.dict.BaseFrequencyDictDO;
import com.yihu.jw.entity.base.dict.BaseTemplateDictDO;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
/**
 * 医生信息列表-excel解析类
 * Created by 刘文彬 on 2018/10/24.
 */
@Component
public class BaseFrequencyExcelDOReader extends AExcelReader {
    @Autowired
@ -82,9 +81,18 @@ public class BaseFrequencyExcelDOReader extends AExcelReader {
    public int validate(BasFrequencyExcelDO basFrequencyExcelDO) {
        int rs = 1;
        if (StringUtils.isNoneBlank(basFrequencyExcelDO.getFreq_code())){
            List<BaseFrequencyDictDO> list  = baseFrequencyDictDao.findByCodeAndIdName(basFrequencyExcelDO.getFreq_code(),basFrequencyExcelDO.getFreq_name());
            List<BaseFrequencyDictDO> list  = baseFrequencyDictDao.findByFrqCode(basFrequencyExcelDO.getFreq_code());
            System.out.println("当前导入数据:"+ basFrequencyExcelDO.getFreq_code());
            if (list!=null&&list.size()>0){
                String templateId = this.getTemplateId();
                if (StringUtils.isNoneBlank(templateId)){
                    BaseTemplateDictDO baseTemplateDictDO = new BaseTemplateDictDO();
                    baseTemplateDictDO.setTemplateId(templateId);
                    baseTemplateDictDO.setIsDel("1");
                    baseTemplateDictDO.setDictId(list.get(0).getId());
                    baseTemplateDictDO.setCreateTime(new Date());
                    baseTemplateDictDao.save(baseTemplateDictDO);
                }
                System.out.println("进验证有重复数据"+list.get(0).getFreq_code());
                return 0;
            }

+ 13 - 5
svr/svr-base/src/main/java/com/yihu/jw/base/service/dict/importManage/BaseIcd10ExcelDOReader.java

@ -6,6 +6,7 @@ import com.yihu.jw.base.endpoint.common.excel.AExcelReader;
import com.yihu.jw.dict.dao.BaseDrugDictDao;
import com.yihu.jw.dict.dao.BaseTemplateDictDao;
import com.yihu.jw.entity.base.dict.BaseDrugDictDO;
import com.yihu.jw.entity.base.dict.BaseTemplateDictDO;
import com.yihu.jw.entity.base.dict.DictIcd10DO;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.Sheet;
@ -13,14 +14,12 @@ import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
/**
 * 医生信息列表-excel解析类
 * Created by 刘文彬 on 2018/10/24.
 */
@Component
public class BaseIcd10ExcelDOReader extends AExcelReader {
    @Autowired
@ -84,9 +83,18 @@ public class BaseIcd10ExcelDOReader extends AExcelReader {
    public int validate(BasIcd10ExcelDO basIcd10ExcelDO) {
        int rs = 1;
        if (StringUtils.isNoneBlank(basIcd10ExcelDO.getCode())){
            List<DictIcd10DO> list  = dictIcd10Dao.findByCodeAndName(basIcd10ExcelDO.getCode(),basIcd10ExcelDO.getName());
            List<DictIcd10DO> list  = dictIcd10Dao.findByIcdCode(basIcd10ExcelDO.getCode());
            System.out.println("当前导入数据:"+ basIcd10ExcelDO.getCode());
            if (list!=null&&list.size()>0){
                String templateId = this.getTemplateId();
                if (StringUtils.isNoneBlank(templateId)){
                    BaseTemplateDictDO baseTemplateDictDO = new BaseTemplateDictDO();
                    baseTemplateDictDO.setTemplateId(templateId);
                    baseTemplateDictDO.setIsDel("1");
                    baseTemplateDictDO.setDictId(list.get(0).getId().toString());
                    baseTemplateDictDO.setCreateTime(new Date());
                    baseTemplateDictDao.save(baseTemplateDictDO);
                }
                System.out.println("进验证有重复数据"+list.get(0).getCode());
                return 0;
            }

+ 38 - 1
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/patient/PatientNoLoginEndPoint.java

@ -27,6 +27,7 @@ import com.yihu.jw.entity.ylzinfo.OauthYlzConfigDO;
import com.yihu.jw.es.service.StatisticsEsService;
import com.yihu.jw.file_upload.FileUploadService;
import com.yihu.jw.hospital.dao.consult.KnowledgeArticleUserDao;
import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
import com.yihu.jw.hospital.httplog.dao.WlyyHttpLogDao;
import com.yihu.jw.hospital.httplog.service.WlyyHttpLogService;
import com.yihu.jw.hospital.message.service.BaseBannerDoctorService;
@ -130,6 +131,8 @@ public class PatientNoLoginEndPoint extends EnvelopRestEndpoint {
    private BaseDictJobTitleService baseDictJobTitleService;
    @Autowired
    private BaseDoctorInfoService baseDoctorService;
    @Autowired
    private WlyyHospitalSysDictDao wlyyHospitalSysDictDao;
    @Autowired
    private WechatInfoService wechatInfoService;
@ -1067,6 +1070,11 @@ public class PatientNoLoginEndPoint extends EnvelopRestEndpoint {
            ResponseParams<?> decryptRes = client.decryptNotifyResponse(encryptRes);
            logger.info("解密后:{}",JSON.toJSONString(decryptRes) );
            JSONObject jsonObject = JSONObject.parseObject(JSON.toJSONString(decryptRes));
            String hsName="核酸";
            WlyyHospitalSysDictDO wlyyHospitalSysDictDO = wlyyHospitalSysDictDao.findById("natItemName");
            if (wlyyHospitalSysDictDO!=null){
                hsName=wlyyHospitalSysDictDO.getDictValue();
            }
            boolean isDecrypt = ("-1".equals(decryptRes.getRespCode()) ? false : true); // 是否解密失败
            if (!isDecrypt) {
                response.getWriter().write("DECRYPT FAILURE");
@ -1144,7 +1152,8 @@ public class PatientNoLoginEndPoint extends EnvelopRestEndpoint {
                                }
                            }
                            for (WaitPayDetailVO waitPayDetailVO:listWPD){
                                if (waitPayDetailVO.getItemName().contains("核酸检测")){
                                if (waitPayDetailVO.getItemName().contains(hsName)){
                                    System.out.println("hsName:"+hsName);
                                    //判断检查订单
                                    List<BaseNatAppointmentDO> baseNatAppointmentDOS = baseNatAppointmentDao.findByRealOrderList(waitPayDetailVO.getRecipeNo());
                                    for (BaseNatAppointmentDO natAppointmentDO:baseNatAppointmentDOS){
@ -2181,4 +2190,32 @@ public class PatientNoLoginEndPoint extends EnvelopRestEndpoint {
            return Envelop.getError(e.getMessage());
        }
    }
    @GetMapping(value = BaseHospitalRequestMapping.Prescription.findDeptByOrgCode)
    @ApiOperation(value = "查询机构下所有科室", notes = "查询机构下所有科室")
    public MixEnvelop findDeptByOrgCode(@ApiParam(name = "orgCode", value = "机构code")
                                        @RequestParam(value = "orgCode", required = true)String orgCode,
                                        @ApiParam(name = "keyName", value = "关键字")
                                        @RequestParam(value = "keyName", required = false)String keyName) {
        try {
            return prescriptionService.findDeptByOrgCode(orgCode,keyName);
        }catch (Exception e) {
            return failedMixEnvelopException(e);
        }
    }
    @GetMapping(value = BaseHospitalRequestMapping.Prescription.findDeptDescByDeptCodeAndOrgCode)
    @ApiOperation(value = "查询科室介绍", notes = "查询科室介绍")
    public MixEnvelop findDeptDesc(@ApiParam(name = "orgCode", value = "机构code")
                                   @RequestParam(value = "orgCode", required = true)String orgCode,
                                   @ApiParam(name = "deptCode", value = "部门code")
                                   @RequestParam(value = "deptCode", required = true)String deptCode) {
        try {
            return prescriptionService.findDeptDesc(orgCode,deptCode);
        }catch (Exception e) {
            return failedMixEnvelopException(e);
        }
    }
}

+ 2 - 2
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/prescription/PrescriptionEndpoint.java

@ -3091,7 +3091,7 @@ public class PrescriptionEndpoint extends EnvelopRestEndpoint {
       }
    }
    @GetMapping("/findDoctorChargeType")
    /*@GetMapping("/findDoctorChargeType")
    @ApiOperation(value = "findDoctorChargeType", notes = "findDoctorChargeType")
    public Envelop findDoctorChargeType(
            @ApiParam(name = "doctor", value = "doctor")
@ -3137,5 +3137,5 @@ public class PrescriptionEndpoint extends EnvelopRestEndpoint {
        }catch (Exception e) {
            return failedObjEnvelopException(e);
        }
    }
    }*/
}

+ 4 - 0
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/service/SystemMessage/HospitalSystemMessageService.java

@ -9,6 +9,7 @@ import com.yihu.jw.hospital.prescription.service.PrescriptionService;
import com.yihu.jw.im.service.ImService;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.util.idcard.IdCardUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -69,6 +70,9 @@ public class HospitalSystemMessageService  {
			JSONObject object = new JSONObject();
			object.put("socket_sms_type",11);//系统消息刷新事件
			object.put("relation_code",systemMessageDO.getType());
			if (StringUtils.isNoneBlank(systemMessageDO.getType())&&"3".equalsIgnoreCase(systemMessageDO.getType())){
				object.put("outpatientId",systemMessageDO.getRelationCode());
			}
			imService.sendWaiSocketMessage(systemMessageDO.getSender(),systemMessageDO.getReceiver(),object.toString(),"1");
		}catch (Exception e){
			logger.error(e.toString());