Procházet zdrojové kódy

Merge branch 'dev' of http://192.168.1.220:10080/Amoy/patient-co-management into dev

humingfen před 7 roky
rodič
revize
86414afac0
17 změnil soubory, kde provedl 615 přidání a 52 odebrání
  1. 98 0
      common/common-entity/src/main/java/com/yihu/device/entity/kit/KitDrugDetail.java
  2. 125 0
      common/common-entity/src/main/java/com/yihu/device/entity/kit/KitDrugUseRecord.java
  3. 14 0
      common/common-entity/src/main/java/com/yihu/wlyy/entity/doctor/profile/Doctor.java
  4. 124 0
      common/common-entity/src/main/java/com/yihu/wlyy/entity/patient/PatientCertificate.java
  5. 2 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/doctor/DoctorDao.java
  6. 15 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/patient/PatientCertificateDao.java
  7. 2 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/patient/SignFamilyServerDao.java
  8. 1 1
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/message/MessageService.java
  9. 69 13
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/sign/FamilyContractService.java
  10. 28 22
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/sign/SignWebService.java
  11. 3 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/common/account/PatientService.java
  12. 3 4
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/specialist/SpecialistService.java
  13. 36 11
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/sign/FamilyContractController.java
  14. 58 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/third/clean/ImCleanController.java
  15. 35 1
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/wechat/process/WeiXinEventProcess.java
  16. 2 0
      patient-co/patient-co-wlyy/src/main/resources/system.properties
  17. binární
      patient-co/patient-co-wlyy/src/main/webapp/images/activity.png

+ 98 - 0
common/common-entity/src/main/java/com/yihu/device/entity/kit/KitDrugDetail.java

@ -0,0 +1,98 @@
package com.yihu.device.entity.kit;
import com.yihu.wlyy.entity.IdEntity;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
 * Created by 刘文彬 on 2018/7/18.
 * 用药记录药品清单
 */
@Entity
@Table(name = "kit_drug_detail")
public class KitDrugDetail extends IdEntity {
    private String code;//业务code
    private String deviveSn;//药盒的sn码
    private String drugName;//药品名称
    private String drugCode;//药品编码(巨烨暂无提供)
    private String unit;//药品计量单位(药盒默认“粒”)
    private String measure;//药品计量
    private Date insertTime;//记录添加时间
    private String drugUseCode;//用药记录表KitDrugUseRecord的code
    private String drugImgUrl;//药品图片地址
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public String getDeviveSn() {
        return deviveSn;
    }
    public void setDeviveSn(String deviveSn) {
        this.deviveSn = deviveSn;
    }
    public String getDrugName() {
        return drugName;
    }
    public void setDrugName(String drugName) {
        this.drugName = drugName;
    }
    public String getDrugCode() {
        return drugCode;
    }
    public void setDrugCode(String drugCode) {
        this.drugCode = drugCode;
    }
    public String getUnit() {
        return unit;
    }
    public void setUnit(String unit) {
        this.unit = unit;
    }
    public String getMeasure() {
        return measure;
    }
    public void setMeasure(String measure) {
        this.measure = measure;
    }
    public Date getInsertTime() {
        return insertTime;
    }
    public void setInsertTime(Date insertTime) {
        this.insertTime = insertTime;
    }
    public String getDrugUseCode() {
        return drugUseCode;
    }
    public void setDrugUseCode(String drugUseCode) {
        this.drugUseCode = drugUseCode;
    }
    public String getDrugImgUrl() {
        return drugImgUrl;
    }
    public void setDrugImgUrl(String drugImgUrl) {
        this.drugImgUrl = drugImgUrl;
    }
}

+ 125 - 0
common/common-entity/src/main/java/com/yihu/device/entity/kit/KitDrugUseRecord.java

@ -0,0 +1,125 @@
package com.yihu.device.entity.kit;
import com.yihu.wlyy.entity.IdEntity;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
 * Created by 刘文彬 on 2018/7/18.
 * 药盒用药记录
 */
@Entity
@Table(name = "kit_drug_use_record")
public class KitDrugUseRecord extends IdEntity {
    private String code;//业务code
    private Date insertTime;//记录添加时间
    private Date useTime; //居民用药时间
    private Date normalTime; //居民正常用药时间
    private Integer recordType; //记录类型(1、手动,2、设备)
    private Integer useDrugStatus;//用药状态(1、按时,2、超时,3、漏用)
    private String deviveSn;//药盒的sn码
    private String deviveModel;//药盒型号
    private String patientCode;//居民code
    private String patientName;//居民姓名
    private String kitAccountId;//药盒账号id
    private String drugDetail;//药品清单json串
    public Date getInsertTime() {
        return insertTime;
    }
    public void setInsertTime(Date insertTime) {
        this.insertTime = insertTime;
    }
    public Date getUseTime() {
        return useTime;
    }
    public void setUseTime(Date useTime) {
        this.useTime = useTime;
    }
    public Date getNormalTime() {
        return normalTime;
    }
    public void setNormalTime(Date normalTime) {
        this.normalTime = normalTime;
    }
    public Integer getRecordType() {
        return recordType;
    }
    public void setRecordType(Integer recordType) {
        this.recordType = recordType;
    }
    public Integer getUseDrugStatus() {
        return useDrugStatus;
    }
    public void setUseDrugStatus(Integer useDrugStatus) {
        this.useDrugStatus = useDrugStatus;
    }
    public String getDeviveSn() {
        return deviveSn;
    }
    public void setDeviveSn(String deviveSn) {
        this.deviveSn = deviveSn;
    }
    public String getKitAccountId() {
        return kitAccountId;
    }
    public void setKitAccountId(String kitAccountId) {
        this.kitAccountId = kitAccountId;
    }
    public String getDrugDetail() {
        return drugDetail;
    }
    public void setDrugDetail(String drugDetail) {
        this.drugDetail = drugDetail;
    }
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public String getDeviveModel() {
        return deviveModel;
    }
    public void setDeviveModel(String deviveModel) {
        this.deviveModel = deviveModel;
    }
    public String getPatientCode() {
        return patientCode;
    }
    public void setPatientCode(String patientCode) {
        this.patientCode = patientCode;
    }
    public String getPatientName() {
        return patientName;
    }
    public void setPatientName(String patientName) {
        this.patientName = patientName;
    }
}

+ 14 - 0
common/common-entity/src/main/java/com/yihu/wlyy/entity/doctor/profile/Doctor.java

@ -74,6 +74,8 @@ public class Doctor extends IdEntity {
    //=====================非hibernate字段=========================
    private String concernCode;//关注code
    private String activityPath;//活动路径
    public Double getEvaluateScore() {
        return evaluateScore;
    }
@ -449,4 +451,16 @@ public class Doctor extends IdEntity {
    public void setConcernCode(String concernCode) {
        this.concernCode = concernCode;
    }
    public static long getSerialVersionUID() {
        return serialVersionUID;
    }
    public String getActivityPath() {
        return activityPath;
    }
    public void setActivityPath(String activityPath) {
        this.activityPath = activityPath;
    }
}

+ 124 - 0
common/common-entity/src/main/java/com/yihu/wlyy/entity/patient/PatientCertificate.java

@ -0,0 +1,124 @@
package com.yihu.wlyy.entity.patient;
import com.yihu.wlyy.entity.IdEntity;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
 * Created by Trick on 2018/7/20.
 */
@Entity
@Table(name = "wlyy_patient_certificate")
public class PatientCertificate extends IdEntity {
    private String code;//业务主键',
    private String signDictCode;//服务类型',
    private String signDictName;//服务类型名称',
    private String signYear;//签约年度',
    private String patient;//居民',
    private String patientName;//居民名称',
    private String certificatePath;//证书地址',
    private String del;//1.有效,0删除',
    private String content;//说明',
    private String remark;//备注',
    private Date createTime;//,
    private Date updateTime;//,
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public String getSignDictCode() {
        return signDictCode;
    }
    public void setSignDictCode(String signDictCode) {
        this.signDictCode = signDictCode;
    }
    public String getSignDictName() {
        return signDictName;
    }
    public void setSignDictName(String signDictName) {
        this.signDictName = signDictName;
    }
    public String getSignYear() {
        return signYear;
    }
    public void setSignYear(String signYear) {
        this.signYear = signYear;
    }
    public String getPatient() {
        return patient;
    }
    public void setPatient(String patient) {
        this.patient = patient;
    }
    public String getPatientName() {
        return patientName;
    }
    public void setPatientName(String patientName) {
        this.patientName = patientName;
    }
    public String getCertificatePath() {
        return certificatePath;
    }
    public void setCertificatePath(String certificatePath) {
        this.certificatePath = certificatePath;
    }
    public String getDel() {
        return del;
    }
    public void setDel(String del) {
        this.del = del;
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
    public String getRemark() {
        return remark;
    }
    public void setRemark(String remark) {
        this.remark = remark;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public Date getUpdateTime() {
        return updateTime;
    }
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
}

+ 2 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/doctor/DoctorDao.java

@ -30,6 +30,8 @@ public interface DoctorDao extends PagingAndSortingRepository<Doctor, Long>, Jpa
    @Query("select p from Doctor p where p.code = ?1")
    Doctor findByCode(String code);
    Doctor findByCodeAndDel(String code,String del);
    @Query("select d from Doctor d where d.del = 1")
    List<Doctor> findAllDoctors();

+ 15 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/patient/PatientCertificateDao.java

@ -0,0 +1,15 @@
package com.yihu.wlyy.repository.patient;
import com.yihu.wlyy.entity.patient.PatientCertificate;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by Trick on 2018/7/20.
 */
public interface PatientCertificateDao extends PagingAndSortingRepository<PatientCertificate, Long>, JpaSpecificationExecutor<PatientCertificate> {
    List<PatientCertificate> findByPatientAndSignYearAndDel(String patient,String signYear,String del);
}

+ 2 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/patient/SignFamilyServerDao.java

@ -17,4 +17,6 @@ public interface SignFamilyServerDao extends PagingAndSortingRepository<SignFami
    List<SignFamilyServer> findBySignCodeAndType(String signCode);
    List<SignFamilyServer> findBySignCode(String signCode);
    SignFamilyServer findBySignCodeAndServerType(String signCode,String serverType);
}

+ 1 - 1
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/message/MessageService.java

@ -134,7 +134,7 @@ public class MessageService extends BaseService {
        // 体征指标未读消息总数
        Integer healthIndex = messageDao.amountUnreadHealthByReceiver(doctor);
        JSONObject indexJson = new JSONObject();
        indexJson.put("l", healthIndex);
        indexJson.put("amount", healthIndex);
        if (healthIndex > 0) {
            PageRequest pageRequest = new PageRequest(0, 1);
            List<Message> msgs = messageDao.amountUnreadHealthLastByReceiver(doctor, pageRequest);

+ 69 - 13
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/sign/FamilyContractService.java

@ -38,6 +38,7 @@ import com.yihu.wlyy.task.SignUploadTask;
import com.yihu.wlyy.util.*;
import com.yihu.wlyy.wechat.util.WeiXinAccessTokenUtils;
import com.yihu.wlyy.wechat.util.WeiXinOpenIdUtils;
import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
@ -168,6 +169,8 @@ public class FamilyContractService extends BaseService {
    private TrackPatientDao trackPatientDao;
    @Autowired
    private WechatTemplateConfigDao templateConfigDao;
    @Autowired
    private PatientCertificateDao patientCertificateDao;
    public SignFamily findSignFamilyByCode(String code) {
@ -371,9 +374,13 @@ public class FamilyContractService extends BaseService {
        json.put("services", services);
        //是否签约上限
        JSONObject signLimit = signWebService.getSickFamilyDoctorSignLimit(doctor);
        json.put("signTotal", signLimit.getInt("signTotal"));//签约总数
        json.put("limitTotal", signLimit.getInt("limitTotal"));//限制总数
//        JSONObject signLimit = signWebService.getSickFamilyDoctorSignLimit(doctor);
//        json.put("signTotal", signLimit.getInt("signTotal"));//签约总数
//        json.put("limitTotal", signLimit.getInt("limitTotal"));//限制总数
        //上线记得切换正式
        json.put("signTotal", 20);//签约总数
        json.put("limitTotal", 1000);//限制总数
        return json;
    }
@ -526,7 +533,8 @@ public class FamilyContractService extends BaseService {
                           String idcard,
                           String ssc,
                           String mobile,
                           String emerMobile) throws Exception {
                           String emerMobile,
                           String sevId) throws Exception {
        // 查询三师签约
        JSONObject json = new JSONObject();
        SignFamily sc = signFamilyDao.findByIdcard(idcard);
@ -612,6 +620,10 @@ public class FamilyContractService extends BaseService {
        patient = p.getCode();
        sf.setPatient(patient);
        SignFamily temp = signFamilyDao.save(sf);
        //1.4.9.1版本新增服务类型
        signWebService.setSevId(temp,sevId);
        if (temp != null) {
            // 添加签约消息
            Message message = new Message();
@ -671,7 +683,7 @@ public class FamilyContractService extends BaseService {
     * @param patient 居民code
     * @return
     */
    public int sign(String doctor, String patient, String countryCode,String medicareNumber) throws Exception {
    public int sign(String doctor, String patient, String countryCode,String medicareNumber,String sevId) throws Exception {
        Patient p = patientDao.findByCode(patient);
        if (p == null) {
            return -1;
@ -732,6 +744,10 @@ public class FamilyContractService extends BaseService {
        SignFamily temp = signFamilyDao.save(sf);
        //设置居民服务类型
        //1.4.9.1版本
        signWebService.setSevId(temp,sevId);
        if (temp != null) {
            // 添加签约消息
            Message message = new Message();
@ -3505,6 +3521,7 @@ public class FamilyContractService extends BaseService {
     * @param patient 居民code
     * @return
     */
    @Deprecated
    @Transactional
    public int signRenew(String doctor, String healthDoctor, String patient, String reason,String medicareNumber) throws Exception {
        Patient p = patientDao.findByCode(patient);
@ -3728,7 +3745,7 @@ public class FamilyContractService extends BaseService {
     * @return
     */
    @Transactional
    public int signRenewOverdue(String doctor, String healthDoctor, String patient, String reason, String countryCode,String medicareNumber) throws Exception {
    public int signRenewOverdue(String doctor, String healthDoctor, String patient, String reason, String countryCode,String medicareNumber,String sevId) throws Exception {
        Patient p = patientDao.findByCode(patient);
        if (p == null) {
            return -1;
@ -3878,6 +3895,10 @@ public class FamilyContractService extends BaseService {
        SignFamily temp = signFamilyDao.save(sf);
        //设置居民服务类型
        //1.4.9.1版本
        signWebService.setSevId(temp,sevId);
        if (temp != null) {
            // 添加签约消息
            Message message = new Message();
@ -3954,8 +3975,8 @@ public class FamilyContractService extends BaseService {
    }
    public JSONArray getSignDoctorMessageOverDue(String patientCode) {
        JSONArray jsonArray = new JSONArray();
    public JSONObject getSignDoctorMessageOverDue(String patientCode) {
        JSONObject obj = new JSONObject();
        //找出患者的三师签约信息
        Patient patient = patientDao.findByCode(patientCode);
@ -3967,8 +3988,8 @@ public class FamilyContractService extends BaseService {
        if (jtSignFamily != null) {
            //家庭签约只找全科医生
            Doctor doctor = doctorDao.findByCode(jtSignFamily.getDoctor());
            Doctor doctorHealth = doctorDao.findByCode(jtSignFamily.getDoctorHealth());
            Doctor doctor = doctorDao.findByCodeAndDel(jtSignFamily.getDoctor(),"1");
            Doctor doctorHealth = doctorDao.findByCodeAndDel(jtSignFamily.getDoctorHealth(),"1");
            if (doctor != null) {
                JSONObject jo = new JSONObject();
                jo.put("code", doctor.getCode());
@ -3987,7 +4008,7 @@ public class FamilyContractService extends BaseService {
                    jo.put("qyDate", DateUtil.dateToStrShort(jtSignFamily.getBegin()));//签约时间
                    jo.put("endDate", DateUtil.dateToStrShort(jtSignFamily.getEnd()));//结束时间
                }
                jsonArray.put(jo);
                obj.put("doctor",jo);
            }
            if (doctorHealth != null) {
                JSONObject jo = new JSONObject();
@ -4007,10 +4028,10 @@ public class FamilyContractService extends BaseService {
                    jo.put("qyDate", DateUtil.dateToStrShort(jtSignFamily.getBegin()));//签约时间
                    jo.put("endDate", DateUtil.dateToStrShort(jtSignFamily.getEnd()));//结束时间
                }
                jsonArray.put(jo);
                obj.put("doctorHealth",jo);
            }
        }
        return jsonArray;
        return obj;
    }
    /**
@ -4512,4 +4533,39 @@ public class FamilyContractService extends BaseService {
            }
        }
    }
    public String  saveCertificate(String patient,String imgPath,String sevId){
        try{
            if (StringUtils.isNotBlank(sevId)) {
                String[] sevIds = sevId.split(",");
                for (int i = 0; i < sevIds.length; i++) {
                    String sql = "select d.name from wlyy_sign_dict d where d.code = '" + sevIds[i] + "' and d.year ='" + DateUtil.getSignYear() + "' ";
                    List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
                    Patient p = patientDao.findByCode(patient);
                    String[] img = imgPath.split(",");
                    for(String im :img){
                        PatientCertificate patientCertificate = new PatientCertificate();
                        patientCertificate.setCode(getCode());
                        //设置患者
                        patientCertificate.setPatient(patient);
                        patientCertificate.setPatientName(p.getName());
                        //设置类型
                        Map<String, Object> map = list.get(0);
                        String serverName = (String) map.get("name");
                        patientCertificate.setSignDictName(serverName);
                        patientCertificate.setSignDictCode(sevIds[i]);
                        //设置路径
                        patientCertificate.setCertificatePath(im);
                        patientCertificate.setDel("1");
                        patientCertificate.setCreateTime(new Date());
                        patientCertificateDao.save(patientCertificate);
                    }
                }
            }
        }catch (Exception e){
            logger.info(e.getMessage()+"___:"+e.toString());
        }
        return "1";
    }
}

+ 28 - 22
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/sign/SignWebService.java

@ -6,7 +6,6 @@ import com.yihu.wlyy.entity.address.Street;
import com.yihu.wlyy.entity.address.Town;
import com.yihu.wlyy.entity.charge.WlyyCharge;
import com.yihu.wlyy.entity.consult.Consult;
import com.yihu.wlyy.entity.device.PatientDevice;
import com.yihu.wlyy.entity.device.PatientDeviceLog;
import com.yihu.wlyy.entity.dict.SystemDict;
import com.yihu.wlyy.entity.doctor.profile.Doctor;
@ -31,7 +30,6 @@ import com.yihu.wlyy.repository.message.MessageDao;
import com.yihu.wlyy.repository.patient.*;
import com.yihu.wlyy.repository.wechat.WechatTemplateConfigDao;
import com.yihu.wlyy.service.BaseService;
import com.yihu.wlyy.service.app.device.PatientDeviceService;
import com.yihu.wlyy.service.app.label.SignPatientLabelInfoService;
import com.yihu.wlyy.service.app.statistics.ServiceStatisticsService;
import com.yihu.wlyy.service.app.team.AdminTeamService;
@ -47,7 +45,6 @@ import com.yihu.wlyy.wechat.util.WeiXinAccessTokenUtils;
import com.yihu.wlyy.wechat.util.WeiXinOpenIdUtils;
import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import org.slf4j.Logger;
@ -1692,6 +1689,7 @@ public class SignWebService extends BaseService {
     * @return
     * @throws Exception
     */
    @Deprecated
    public int agreeRenew(String access_token, String dotorCode, String patientCode, String state, Long mesId, String signYear, String code,
                          String health,
                          String disease,
@ -2441,6 +2439,7 @@ public class SignWebService extends BaseService {
     * @param renew
     * @param sevId
     */
    @Deprecated
    public void setSevId(SignFamilyRenew renew, String sevId) {
        if (StringUtils.isNotBlank(sevId)) {
            if (StringUtils.isNotBlank(sevId)) {
@ -2448,15 +2447,18 @@ public class SignWebService extends BaseService {
                for (int i = 0; i < sevIds.length; i++) {
                    String sql = "select d.name from wlyy_sign_dict d where d.code = '" + sevIds[i] + "' and d.year ='" + DateUtil.getSignYear() + "' ";
                    List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
                    SignFamilyServer server = new SignFamilyServer();
                    server.setSignCode(renew.getCode());
                    server.setCreateTime(new Date());
                    server.setServerType(sevIds[i]);
                    Map<String, Object> map = list.get(0);
                    String serverName = (String) map.get("name");
                    server.setServerTypeName(serverName);
                    server.setCzrq(new Date());
                    signFamilyServerDao.save(server);
                    SignFamilyServer s =  signFamilyServerDao.findBySignCodeAndServerType(renew.getCode(),sevIds[i]);
                    if(s==null){
                        SignFamilyServer server = new SignFamilyServer();
                        server.setSignCode(renew.getCode());
                        server.setCreateTime(new Date());
                        server.setServerType(sevIds[i]);
                        Map<String, Object> map = list.get(0);
                        String serverName = (String) map.get("name");
                        server.setServerTypeName(serverName);
                        server.setCzrq(new Date());
                        signFamilyServerDao.save(server);
                    }
                }
            }
        }
@ -2474,15 +2476,18 @@ public class SignWebService extends BaseService {
            for (int i = 0; i < sevIds.length; i++) {
                String sql = "select d.name from wlyy_sign_dict d where d.code = '" + sevIds[i] + "' and d.year ='" + DateUtil.getSignYear() + "' ";
                List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
                SignFamilyServer server = new SignFamilyServer();
                server.setSignCode(renew.getCode());
                server.setCreateTime(new Date());
                server.setServerType(sevIds[i]);
                Map<String, Object> map = list.get(0);
                String serverName = (String) map.get("name");
                server.setServerTypeName(serverName);
                server.setCzrq(new Date());
                signFamilyServerDao.save(server);
                SignFamilyServer s =  signFamilyServerDao.findBySignCodeAndServerType(renew.getCode(),sevIds[i]);
                if(s==null){
                    SignFamilyServer server = new SignFamilyServer();
                    server.setSignCode(renew.getCode());
                    server.setCreateTime(new Date());
                    server.setServerType(sevIds[i]);
                    Map<String, Object> map = list.get(0);
                    String serverName = (String) map.get("name");
                    server.setServerTypeName(serverName);
                    server.setCzrq(new Date());
                    signFamilyServerDao.save(server);
                }
            }
        }
    }
@ -2906,7 +2911,8 @@ public class SignWebService extends BaseService {
        Integer signTotal = 0;
        Integer limitTotal = 0;
        List<AdminTeam> adminTeams = doctorAdminTeamMemberDao.findDoctorTeams(doctorCode);
        for(AdminTeam one:adminTeams){
        for (int i =0;i<(adminTeams.size()>=4?4:adminTeams.size());i++){
            AdminTeam one = adminTeams.get(i);
            //获取团队签约数
            Integer signCount = signFamilyDao.findByAdminTeamIdAndStatus(one.getId(),0);
            signTotal+=signCount;

+ 3 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/common/account/PatientService.java

@ -1142,6 +1142,9 @@ public class PatientService extends TokenService {
            patientRecordLog.setPatientName(patient.getName());
            patientRecordLog.setSsc(patient.getSsc());
            patientRecordLogDao.save(patientRecordLog);
            //清登录缓存
            SystemData.patientTokens.remove(patient.getCode());
        }
        patientDao.clearOpenidByOpenid(openid);
        return "";

+ 3 - 4
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/specialist/SpecialistService.java

@ -568,6 +568,9 @@ public class SpecialistService extends BaseService {
                //推送给居民模板消息
                pushWeiTemp(token, "0", remark, p, d);
            } else {
                //推送给居民模板消息
                pushWeiTemp(token, "1", "", p, d);
                //医生同意,推送全科医生消息
                SignFamily sign = signFamilyDao.findByPatient(josn.getString("patient"));
                //判断是否有家庭医生,有家庭医生则通知家庭医生
@ -599,11 +602,7 @@ public class SpecialistService extends BaseService {
                    dataJson.put("dept", d.getDept());
                    dataJson.put("deptName", d.getDeptName());
                    message.setReason(dataJson.toString());
                    messageDao.save(message);
                    //推送给居民模板消息
                    pushWeiTemp(token, "1", "", p, d);
                }
            }
            return "1";

+ 36 - 11
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/sign/FamilyContractController.java

@ -13,10 +13,11 @@ import com.yihu.wlyy.service.app.sign.FamilyContractService;
import com.yihu.wlyy.service.app.sign.SignWebService;
import com.yihu.wlyy.service.common.account.DoctorService;
import com.yihu.wlyy.service.common.account.PatientService;
import com.yihu.wlyy.util.CommonUtil;
import com.yihu.wlyy.util.DateUtil;
import com.yihu.wlyy.util.IdcardValidator;
import com.yihu.wlyy.util.RSAUtils;
import com.yihu.wlyy.web.BaseController;
import com.yihu.wlyy.web.WeixinBaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@ -33,7 +34,6 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import java.net.URLDecoder;
import java.util.Calendar;
import java.util.List;
/**
@ -44,7 +44,7 @@ import java.util.List;
@Controller
@RequestMapping(value = "/patient/family_contract", produces = MediaType.APPLICATION_JSON_UTF8_VALUE,method = {RequestMethod.GET,RequestMethod.POST})
@Api(description = "患者端-家庭签约")
public class FamilyContractController extends BaseController {
public class FamilyContractController extends WeixinBaseController {
    @Autowired
    private FamilyContractService familyContractService;
@ -60,6 +60,8 @@ public class FamilyContractController extends BaseController {
    private SignWebService signWebService;
    @Autowired
    private RSAUtils rsaUtils;
    @Autowired
    private CommonUtil CommonUtil;
    /**
     * 得到患者的签约的医生的信息
     *
@ -96,13 +98,11 @@ public class FamilyContractController extends BaseController {
    @RequestMapping(value = "getSignMessageOverdue")
    @ResponseBody
    @ApiOperation("")
    @ApiOperation("获取签约过期全科医生过期信息")
    public String getSignDoctorMessageOverDue(String patientCode) {
        try {
            JSONArray array = familyContractService.getSignDoctorMessageOverDue(patientCode);
            return write(200, "获取列表成功!", "list", array);
            return write(200, "获取列表成功!", "list", familyContractService.getSignDoctorMessageOverDue(patientCode));
        } catch (Exception e) {
            error(e);
            return error(-1, "获取列表失败!");
@ -425,7 +425,8 @@ public class FamilyContractController extends BaseController {
    public String sign(@RequestParam(required = false)String doctor,
                       @RequestParam(required = false)String patient,
                       @RequestParam(required = false)String countryCode,
                       @RequestParam(required = true)String medicareNumber) {
                       @RequestParam(required = true)String medicareNumber,
                       @RequestParam(required = false)String sevId) {
        try {
            if (StringUtils.isEmpty(doctor)) {
                return error(-1, "签约医生不能为空");
@ -437,7 +438,7 @@ public class FamilyContractController extends BaseController {
            }
            //==1.3.7===end===
            //1.4.2加入MedicareNumber字段入参
            int result = familyContractService.sign(doctor,patient,countryCode,medicareNumber);
            int result = familyContractService.sign(doctor,patient,countryCode,medicareNumber,sevId);
            if (result == -1) {
                return error(-1, "用户信息查询失败");
@ -446,6 +447,18 @@ public class FamilyContractController extends BaseController {
            } else if (result == -3) {
                return error(-1, "医生信息查询失败");
            } else {
                //1.4.9.1加入证件说明
                // 图片消息
                String content = fetchWxImages();
                // 将临时图片拷贝到正式存储路径下
                if (StringUtils.isNotEmpty(content)) {
                    content = CommonUtil.copyTempImage(content);
                    if (StringUtils.isNotEmpty(content)) {
                        familyContractService.saveCertificate(patient,content,sevId);
                    }
                }
                return write(200, "签约申请成功");
            }
        } catch (Exception e) {
@ -468,7 +481,8 @@ public class FamilyContractController extends BaseController {
                            @RequestParam(required = false) String patient,
                            @RequestParam(required = false) String reason,
                            @RequestParam(required = false) String countryCode,
                            @RequestParam(required = true) String medicareNumber) {
                            @RequestParam(required = true) String medicareNumber,
                            @RequestParam(required = false)String sevId) {
        try {
            if (StringUtils.isEmpty(doctor)) {
                return error(-1, "签约医生不能为空");
@ -483,7 +497,7 @@ public class FamilyContractController extends BaseController {
//                result = familyContractService.signRenewOverdue(doctor,healthDoctor,patient,reason,countryCode,medicareNumber);
//            }
            int result = -1;
            result = familyContractService.signRenewOverdue(doctor,healthDoctor,patient,reason,countryCode,medicareNumber);
            result = familyContractService.signRenewOverdue(doctor,healthDoctor,patient,reason,countryCode,medicareNumber,sevId);
            if (result == -1) {
                return error(-1, "用户信息查询失败");
@ -496,6 +510,17 @@ public class FamilyContractController extends BaseController {
            } else if (result == -5) {
                return error(-1, "未找到有效团队记录");
            } else {
                //1.4.9.1加入证件说明
                // 图片消息
                String content = fetchWxImages();
                // 将临时图片拷贝到正式存储路径下
                if (StringUtils.isNotEmpty(content)) {
                    content = CommonUtil.copyTempImage(content);
                    if (StringUtils.isNotEmpty(content)) {
                        familyContractService.saveCertificate(patient,content,sevId);
                    }
                }
                return write(200, "签约申请成功");
            }
        } catch (Exception e) {

+ 58 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/third/clean/ImCleanController.java

@ -0,0 +1,58 @@
package com.yihu.wlyy.web.third.clean;
import com.yihu.wlyy.web.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.MediaType;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
/**
 * @author yeshijie on 2018/7/18.
 */
@RestController
@RequestMapping(value = "/imclean",produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@Api(description = "im清理")
public class ImCleanController  extends BaseController {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Value("${im.data_base_name}")
    private String imDb;
    @RequestMapping(value = "/clean",method = RequestMethod.POST)
    @ApiOperation("清理")
    public String clean(){
        try {
            String sql1 = "SELECT * from wlyy_sign_family WHERE `status`>0 and patient in(SELECT DISTINCT patient from wlyy_consult_team)";
            List<Map<String,Object>> list = jdbcTemplate.queryForList(sql1);
            list.stream().forEach(one->{
                String patient = one.get("patient").toString();
                String teamCode = one.get("team_code").toString();
                String sessionId = patient+"_"+teamCode+"_2";
                String doctor = one.get("doctor").toString();
                String doctor_health = null;
                String sql2 = "";
                if(one.get("doctor_health")!=null){
                    doctor_health = one.get("doctor_health").toString();
                    sql2 = "delete from "+imDb+".participants where session_id = '"+sessionId+"' and participant_id not in ('"+patient+"','"+doctor+"','"+doctor_health+"')" ;
                }else {
                    sql2 = "delete from "+imDb+".participants where session_id = '"+sessionId+"' and participant_id not in ('"+patient+"','"+doctor+"')" ;
                }
                jdbcTemplate.execute(sql2);
            });
            return success("清理成功");
        }catch (Exception e){
            error(e);
            return error(-1, e.getMessage());
        }
    }
}

+ 35 - 1
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/wechat/process/WeiXinEventProcess.java

@ -1,7 +1,9 @@
package com.yihu.wlyy.wechat.process;
import com.yihu.wlyy.entity.dict.SystemDict;
import com.yihu.wlyy.entity.doctor.profile.Doctor;
import com.yihu.wlyy.repository.dict.SystemDictDao;
import com.yihu.wlyy.repository.doctor.DoctorDao;
import com.yihu.wlyy.service.common.account.PatientService;
import com.yihu.wlyy.task.PushMsgTask;
import com.yihu.wlyy.util.SystemConf;
@ -22,7 +24,7 @@ import java.util.*;
/**
 * 微信事件处理
 * <p>
 * Created by lyr on 2016/08/11.
 * Created by lyr on 2016/08/11
 */
@Component
public class WeiXinEventProcess {
@ -45,6 +47,8 @@ public class WeiXinEventProcess {
    
    @Autowired
    private PatientService patientService;
    @Autowired
    private DoctorDao doctorDao;
    /**
     * 微信推送事件处理
@ -691,6 +695,8 @@ public class WeiXinEventProcess {
            articles.add(article);
            //设置医生活动二维码
            setDoctorActivity(keys[0],articles,systemConf);
            //设置通用链接
            setUrlItems(articles, systemConf);
            //加入续签图文
@ -851,6 +857,13 @@ public class WeiXinEventProcess {
        return result;
    }
    /**
     * 设置专科医生二维码
     * @param articles
     * @param doctor
     * @param teamId
     * @param systemConf
     */
    public void setSpDisease(List<Map<String, String>> articles,String doctor,String teamId,Properties systemConf){
        String url = systemDictDao.findByDictName("SP_DISEASE").get(0).getCode();
@ -872,6 +885,11 @@ public class WeiXinEventProcess {
        articles.add(articleConsult);
    }
    /**
     * 设置通用二维码
     * @param articles
     * @param systemConf
     */
    public void setCurrency(List<Map<String, String>> articles,Properties systemConf){
        String url = systemDictDao.findByDictName("WX_CURRENCY_QR_PATH").get(0).getCode();
@ -894,6 +912,22 @@ public class WeiXinEventProcess {
        articles.add(articleConsult);
    }
    public void setDoctorActivity(String doctor,List<Map<String, String>> articles,Properties systemConf){
        Doctor d = doctorDao.findByCode(doctor);
        if(d!=null&&StringUtils.isNotBlank(d.getActivityPath())){
            logger.info("setDoctorActivity:"+d.getActivityPath());
            // 图文消息图片URL
            String activityPath = systemConf.getProperty("doctor_activity_url");
            activityPath = activityPath.replace("{server}", serverUrl);
            Map<String, String> articleConsult = new HashMap<>();
            articleConsult.put("Url", d.getActivityPath());
            articleConsult.put("Title", "家庭医生线上签约指引");
            articleConsult.put("Description", "贴心家庭医生为居民提供健康指导、随访等服务\n");
            articleConsult.put("PicUrl", activityPath);
            articles.add(articleConsult);
        }
    }
    /**
     * 构建单个图文消息工具类
     *

+ 2 - 0
patient-co/patient-co-wlyy/src/main/resources/system.properties

@ -38,6 +38,8 @@ patient_wifi_pic_url = {server}/images/wifi.png
patient_draw_pic_url = {server}/images/banner02.png
#专科医生签约图片地址
specialist_sign_url = {server}/images/SpBanner.png
#专科医生签约图片地址
doctor_activity_url = {server}/images/activity.png
#通用活动图片地址
currency_url = {server}/images/currency.png
#居民wifi链接

binární
patient-co/patient-co-wlyy/src/main/webapp/images/activity.png