Browse Source

Merge branch 'dev' of zd_123/patient-co-management into dev

huangwenjie 7 years ago
parent
commit
b5eb6d21a4

+ 25 - 9
common/common-entity/src/main/java/com/yihu/wlyy/entity/device/DeviceDetail.java

@ -31,7 +31,8 @@ public class DeviceDetail extends IdEntity{
    private String applicantMail;
    private String applicantMail;
    private Integer isGrant;
    private Integer isGrant;
    private String grantAdminTeam;
    private String grantAdminTeam;
    private String grantHospital;
    private String grantOrgCode;
    private Integer isBinding;
    private String bindingCount;
    private String bindingCount;
    private Date grantTime;
    private Date grantTime;
@ -40,10 +41,9 @@ public class DeviceDetail extends IdEntity{
    public DeviceDetail() {
    public DeviceDetail() {
    }
    }
    /** full constructor */
    /** full constructor */
    public DeviceDetail(String deviceName, String deviceModel, String deviceCode, String manufacturer, String applyDate
            , String orgName, String linkman, String tel, String serverIp, String manufacturerCode, String address
            , String representative, String applicantName, String applicantIdentity, String applicantTel, String applicantMail) {
    public DeviceDetail(String deviceName, String deviceModel, String deviceCode, String manufacturer, String applyDate, String orgName, String linkman, String tel, String serverIp, String manufacturerCode, String address, String representative, String applicantName, String applicantIdentity, String applicantTel, String applicantMail, Integer isGrant, String grantAdminTeam, String grantOrgCode, Integer isBinding, String bindingCount, Date grantTime) {
        this.deviceName = deviceName;
        this.deviceName = deviceName;
        this.deviceModel = deviceModel;
        this.deviceModel = deviceModel;
        this.deviceCode = deviceCode;
        this.deviceCode = deviceCode;
@ -60,8 +60,15 @@ public class DeviceDetail extends IdEntity{
        this.applicantIdentity = applicantIdentity;
        this.applicantIdentity = applicantIdentity;
        this.applicantTel = applicantTel;
        this.applicantTel = applicantTel;
        this.applicantMail = applicantMail;
        this.applicantMail = applicantMail;
        this.isGrant = isGrant;
        this.grantAdminTeam = grantAdminTeam;
        this.grantOrgCode = grantOrgCode;
        this.isBinding = isBinding;
        this.bindingCount = bindingCount;
        this.grantTime = grantTime;
    }
    }
    @Column(name = "device_name")
    @Column(name = "device_name")
    public String getDeviceName() {
    public String getDeviceName() {
        return deviceName;
        return deviceName;
@ -224,13 +231,22 @@ public class DeviceDetail extends IdEntity{
        this.grantAdminTeam = grantAdminTeam;
        this.grantAdminTeam = grantAdminTeam;
    }
    }
    @Column(name = "grant_hospital")
    public String getGrantHospital() {
        return grantHospital;
    @Column(name = "grant_org_code")
    public String getGrantOrgCode() {
        return grantOrgCode;
    }
    public void setGrantOrgCode(String grantOrgCode) {
        this.grantOrgCode = grantOrgCode;
    }
    @Column(name = "is_binding")
    public Integer getIsBinding() {
        return isBinding;
    }
    }
    public void setGrantHospital(String grantHospital) {
        this.grantHospital = grantHospital;
    public void setIsBinding(Integer isBinding) {
        this.isBinding = isBinding;
    }
    }
    @Column(name = "binding_count")
    @Column(name = "binding_count")

+ 24 - 1
common/common-entity/src/main/java/com/yihu/wlyy/entity/device/PatientDevice.java

@ -31,7 +31,12 @@ public class PatientDevice extends IdEntity {
    private String userIdcard;
    private String userIdcard;
    // 操作医生代码
    // 操作医生代码
    private String doctor;
    private String doctor;
    private String agent;//代绑人代码(家人)
    //操作医生姓名
    private String doctorName;
    //代绑人代码(家人)
    private String agent;
    //代绑人姓名
    private String agentName;
    // 操作时间
    // 操作时间
    private Date czrq;
    private Date czrq;
@ -166,6 +171,15 @@ public class PatientDevice extends IdEntity {
        this.doctor = doctor;
        this.doctor = doctor;
    }
    }
    @Column(name = "doctor_name")
    public String getDoctorName() {
        return doctorName;
    }
    public void setDoctorName(String doctorName) {
        this.doctorName = doctorName;
    }
    @Column(name = "agent")
    @Column(name = "agent")
    public String getAgent() {
    public String getAgent() {
        return agent;
        return agent;
@ -175,6 +189,15 @@ public class PatientDevice extends IdEntity {
        this.agent = agent;
        this.agent = agent;
    }
    }
    @Column(name = "agent_name")
    public String getAgentName() {
        return agentName;
    }
    public void setAgentName(String agentName) {
        this.agentName = agentName;
    }
    @Column(name = "del_user")
    @Column(name = "del_user")
    public String getDelUser() {
    public String getDelUser() {
        return delUser;
        return delUser;

+ 111 - 0
common/common-entity/src/main/java/com/yihu/wlyy/entity/device/PatientDeviceLog.java

@ -0,0 +1,111 @@
package com.yihu.wlyy.entity.device;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.wlyy.entity.IdEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.Date;
@Entity
@Table(name = "wlyy_patient_device_log")
public class PatientDeviceLog extends IdEntity {
    //患者id
    private String patient;
    //设备sn码
    private String deviceSn;
    //设备名称
    private String deviceName;
    // 设备类型标识
    private String categoryCode;
    //操作人code
    private String operator;
    // 医生或者患者(1医生 2患者)
    private Integer role;
    //操作动作(1绑定 2解绑)
    private Integer operateCode;
    // 创建时间
    private Date createTime;
    @Column(name = "patient")
    public String getPatient() {
        return patient;
    }
    public void setPatient(String patient) {
        this.patient = patient;
    }
    @Column(name = "device_sn")
    public String getDeviceSn() {
        return deviceSn;
    }
    public void setDeviceSn(String deviceSn) {
        this.deviceSn = deviceSn;
    }
    @Column(name = "device_name")
    public String getDeviceName() {
        return deviceName;
    }
    public void setDeviceName(String deviceName) {
        this.deviceName = deviceName;
    }
    @Column(name = "category_code")
    public String getCategoryCode() {
        return categoryCode;
    }
    public void setCategoryCode(String categoryCode) {
        this.categoryCode = categoryCode;
    }
    @Column(name = "operator")
    public String getOperator() {
        return operator;
    }
    public void setOperator(String operator) {
        this.operator = operator;
    }
    @Column(name = "role")
    public Integer getRole() {
        return role;
    }
    public void setRole(Integer role) {
        this.role = role;
    }
    @Column(name = "operate_code")
    public Integer getOperateCode() {
        return operateCode;
    }
    public void setOperateCode(Integer operateCode) {
        this.operateCode = operateCode;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    @Column(name = "create_time")
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public PatientDeviceLog() {
    }
}

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

@ -2,9 +2,12 @@ package com.yihu.wlyy.health.repository;
import com.yihu.device.entity.DeviceDetail;
import com.yihu.device.entity.DeviceDetail;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.Date;
/**
/**
 * @author yeshijie on 2018/1/10.
 * @author yeshijie on 2018/1/10.
 */
 */
@ -12,4 +15,16 @@ public interface DeviceDetailDao extends PagingAndSortingRepository<DeviceDetail
    @Query(value = "select a.* from device.wlyy_devices a where a.device_code=?1 limit 0,1",nativeQuery = true)
    @Query(value = "select a.* from device.wlyy_devices a where a.device_code=?1 limit 0,1",nativeQuery = true)
    DeviceDetail findBySn(String sn);
    DeviceDetail findBySn(String sn);
    @Modifying
    @Query("update DeviceDetail dd set dd.isGrant=1,dd.grantAdminTeam=?1,dd.grantOrgCode=?2,dd.bindingCount=?3,dd.grantTime = ?4,dd.isBinding=1 where dd.deviceCode=?5")
    void updateAfterBindingFirst(String adminTeam, String hospital, String isFirstBinding, Date grantTime, String deviceSn);
    @Modifying
    @Query("update DeviceDetail dd set dd.isGrant=1,dd.grantAdminTeam=?1,dd.grantOrgCode=?2,dd.bindingCount=?3,dd.isBinding=1 where dd.deviceCode=?4")
    void updateAfterBinding(String adminTeam, String hospital, String isFirstBinding,String deviceSn);
    @Modifying
    @Query("update DeviceDetail dd set dd.isBinding=0 where dd.deviceCode=?1")
    void updateUnbindAll(String deviceSn);
}
}

+ 17 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/patient/PatientDeviceLogDao.java

@ -0,0 +1,17 @@
package com.yihu.wlyy.repository.patient;
import com.yihu.wlyy.entity.device.PatientDevice;
import com.yihu.wlyy.entity.device.PatientDeviceLog;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
public interface PatientDeviceLogDao extends PagingAndSortingRepository<PatientDeviceLog, Long>, JpaSpecificationExecutor<PatientDeviceLog> {
    @Query("select pdl from PatientDeviceLog pdl where pdl.patient=?1 and pdl.categoryCode=?2")
    List<PatientDeviceLog> findByPatientAndCategoryCode(String patient,String categoryCode);
}

+ 152 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/device/DeviceDetailService.java

@ -0,0 +1,152 @@
package com.yihu.wlyy.service.app.device;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.yihu.device.entity.DeviceDetail;
import com.yihu.wlyy.entity.device.Device;
import com.yihu.wlyy.entity.device.PatientDevice;
import com.yihu.wlyy.entity.doctor.profile.Doctor;
import com.yihu.wlyy.entity.patient.Patient;
import com.yihu.wlyy.entity.patient.SignFamily;
import com.yihu.wlyy.health.repository.DeviceDetailDao;
import com.yihu.wlyy.repository.deviece.DeviceDao;
import com.yihu.wlyy.repository.doctor.DoctorDao;
import com.yihu.wlyy.repository.patient.PatientDao;
import com.yihu.wlyy.repository.patient.PatientDeviceDao;
import com.yihu.wlyy.repository.patient.SignFamilyDao;
import com.yihu.wlyy.service.BaseService;
import com.yihu.wlyy.util.DateUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
/**
 * 设备管理(device库)
 * zd
 */
@Component
@Transactional(rollbackFor = Exception.class)
public class DeviceDetailService extends BaseService {
	@Autowired
	private DeviceDetailDao deviceDetailDao;
	@Autowired
	private SignFamilyDao signFamilyDao;
	@Autowired
	private DeviceDao deviceDao;
	@Autowired
	private PatientDao patientDao;
	@Autowired
	private DoctorDao doctorDao;
	@Autowired
	private PatientDeviceDao patientDeviceDao;
	/**
	 * 绑定时更新设备表中的信息
	 * @param patientDevice
	 * @param grantTime
	 * @param isFirst
	 * @throws Exception
	 */
	public void updateAfterBinding(PatientDevice patientDevice, Date grantTime,boolean isFirst)throws Exception{
		DeviceDetail deviceDetail = deviceDetailDao.findBySn(patientDevice.getDeviceSn());
		List<SignFamily> signFamilyList = signFamilyDao.findSSandJTByIdcard(patientDevice.getUserIdcard());
		long adminTeam=0L;
		String hospital = "";
		String isFirstBind = "";
		String hospitalName = "";
		String keyType = "1";
		if ("2".equals(patientDevice.getUserType())){
			keyType="2";
		}
		if (signFamilyList!=null && signFamilyList.size()>0){
			adminTeam = signFamilyList.get(0).getAdminTeamId();
			hospital = signFamilyList.get(0).getHospital();
			hospitalName = signFamilyList.get(0).getHospitalName();
		}
		//设备表没有数据则插入一条数据
		if (deviceDetail==null){
			insertDevice(patientDevice,String.valueOf(adminTeam),hospitalName,hospital);
			deviceDetail = deviceDetailDao.findBySn(patientDevice.getDeviceSn());
		}
		isFirstBind = deviceDetail.getBindingCount();
		if (StringUtils.isNotBlank(isFirstBind)){
			JSONObject jsonObject = JSON.parseObject(isFirstBind);
			int bindCount = Integer.valueOf(String.valueOf(jsonObject.get(keyType)));
			jsonObject.replace(keyType,bindCount+1+"");
			isFirstBind = jsonObject.toJSONString();
		}
		if (isFirst){
			deviceDetailDao.updateAfterBindingFirst(String.valueOf(adminTeam),hospital,isFirstBind,grantTime,patientDevice.getDeviceSn());
		}else {
			deviceDetailDao.updateAfterBinding(String.valueOf(adminTeam),hospital,isFirstBind,patientDevice.getDeviceSn());
		}
	}
	/**
	 * 绑定时设备表如果没有数据则插入一条数据
	 * @param patientDevice
	 * @param adminTeam
	 * @param orgName
	 * @param orgCode
	 * @throws Exception
	 */
	public void insertDevice(PatientDevice patientDevice, String adminTeam, String orgName, String orgCode)throws Exception{
		//获取原始数据
		DeviceDetail deviceDetail = new DeviceDetail();
		Patient patient = patientDao.findByCode(patientDevice.getUser());
		Doctor doctor = doctorDao.findByCode(patientDevice.getDoctor());
		Device device = deviceDao.findOne(patientDevice.getDeviceId());
		//添加数据到具体字段
		deviceDetail.setDeviceCode(patientDevice.getDeviceSn());
		deviceDetail.setDeviceName(patientDevice.getDeviceName());
		deviceDetail.setSim(patientDevice.getSim());
		deviceDetail.setIsGrant(1);
		deviceDetail.setGrantAdminTeam(adminTeam);
		deviceDetail.setGrantOrgCode(orgCode);
		deviceDetail.setIsBinding(1);
		deviceDetail.setGrantTime(new Date());
		deviceDetail.setApplyDate(DateUtil.getStringDate("yyyy-MM-dd HH:mm:ss"));
		deviceDetail.setOrgName(orgName);
		if (device!=null){
			deviceDetail.setDeviceModel(device.getModel());
		}
		if (Integer.valueOf(patientDevice.getUserType())>0){
			deviceDetail.setBindingCount("{\"1\":\"0\",\"2\":\"0\"}");
		}else {
			deviceDetail.setBindingCount("{\"1\":\"0\"}");
		}
		if (patient!=null){
			deviceDetail.setLinkman(patient.getName());
			deviceDetail.setTel(patient.getPhone());
		}
		if (doctor!=null){
			deviceDetail.setApplicantName(doctor.getName());
			deviceDetail.setApplicantIdentity(doctor.getIdcard());
			deviceDetail.setApplicantTel(doctor.getMobile());
			deviceDetail.setApplicantMail(doctor.getMobile());
		}
		deviceDetailDao.save(deviceDetail);
	}
	/**
	 * 全部解绑后设备表更新为未绑定
	 * @param deviceSn
	 */
	public void unBindUpdateIsBinding(String deviceSn)throws Exception{
		List<PatientDevice> patientDeviceList = patientDeviceDao.findByDeviceSn(deviceSn);
		if (patientDeviceList.size()==0){
			deviceDetailDao.updateUnbindAll(deviceSn);
		}
	}
}

+ 55 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/device/PatientDeviceLogService.java

@ -0,0 +1,55 @@
package com.yihu.wlyy.service.app.device;
import com.yihu.wlyy.entity.device.PatientDevice;
import com.yihu.wlyy.entity.device.PatientDeviceLog;
import com.yihu.wlyy.repository.patient.PatientDeviceDao;
import com.yihu.wlyy.repository.patient.PatientDeviceLogDao;
import com.yihu.wlyy.service.BaseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springside.modules.utils.Clock;
import java.util.Date;
@Component
@Transactional(rollbackFor = Exception.class)
public class PatientDeviceLogService extends BaseService {
    private Clock clock = Clock.DEFAULT;
    @Autowired
    private PatientDeviceLogDao patientDeviceLogDao;
    @Autowired
    private PatientDeviceDao patientDeviceDao;
    /**
     *
     * @param patientDevice
     * @param role
     * @param operateCode
     * @throws Exception
     */
    public void savePatientDeviceLog(PatientDevice patientDevice,String deviceSn,int role,int operateCode)throws Exception{
       if (patientDevice==null){
           patientDevice = patientDeviceDao.findByDeviceSn(deviceSn).get(0);
       }
        PatientDeviceLog patientDeviceLog = new PatientDeviceLog();
        patientDeviceLog.setPatient(patientDevice.getUser());
        patientDeviceLog.setCategoryCode(patientDevice.getCategoryCode());
        patientDeviceLog.setDeviceName(patientDevice.getDeviceName());
        patientDeviceLog.setDeviceSn(patientDevice.getDeviceSn());
        patientDeviceLog.setRole(role);
        patientDeviceLog.setOperateCode(operateCode);
        if (role==1){
            patientDeviceLog.setOperator(patientDevice.getDoctor());
        }else if (role==2){
            patientDeviceLog.setOperator(patientDevice.getAgent());
        }
        patientDeviceLog.setCreateTime(new Date());
        patientDeviceLogDao.save(patientDeviceLog);
    }
}

+ 15 - 21
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/device/PatientDeviceService.java

@ -64,9 +64,6 @@ public class PatientDeviceService extends BaseService {
    @Autowired
    @Autowired
    private PatientDeviceDao patientDeviceDao;
    private PatientDeviceDao patientDeviceDao;
    @Autowired
    private WlyyDeviceDetailDao wlyyWlyyDeviceDetailDao;
    @Autowired
    @Autowired
    private DeviceDao deviceDao;
    private DeviceDao deviceDao;
    @Autowired
    @Autowired
@ -112,6 +109,8 @@ public class PatientDeviceService extends BaseService {
    private IotDeviceService iotDeviceService;
    private IotDeviceService iotDeviceService;
    @Autowired
    @Autowired
    private Icd10DictDao icd10DictDao;
    private Icd10DictDao icd10DictDao;
    @Autowired
    private PatientDeviceLogDao patientDeviceLogDao;
    //健康问题 高血压
    //健康问题 高血压
    private static final String gxy = "HP0093";
    private static final String gxy = "HP0093";
    //健康问题 糖尿病
    //健康问题 糖尿病
@ -1191,27 +1190,22 @@ public class PatientDeviceService extends BaseService {
        String msg = "";
        String msg = "";
        String deviceSn = patientDevice.getDeviceSn();
        String deviceSn = patientDevice.getDeviceSn();
        String userType = patientDevice.getUserType();
        String userType = patientDevice.getUserType();
        //绑定前判断是都已经绑定过同样类型的设备
        List<PatientDevice> patientDevices = patientDeviceDao.findByDeviceSn(deviceSn);
        String sql = "SELECT dd.category_code FROM wlyy_devices wd LEFT JOIN dm_device dd ON wd.device_model = dd.model where wd.device_code='"+deviceSn+"'";
        Map<String,Object> map = jdbcTemplate.queryForMap(sql);
        if(patientDevices!=null && patientDevices.size()>0){
            for (PatientDevice patientDevice1 : patientDevices){
                if (patientDevice1.getCategoryCode().equals(String.valueOf(map.get("category_code")))){
                    flag=false;
                    msg="已经绑定过同样类型的设备了";
                    code=-10000;
                }
            }
        //判断患者是否第一次绑定设备
        List<PatientDeviceLog> patientDeviceLogList = patientDeviceLogDao.findByPatientAndCategoryCode(patientDevice.getUser(),patientDevice.getCategoryCode());
        if (patientDeviceLogList!=null && patientDeviceLogList.size()>0){
            flag=false;
            msg="已经绑定过同样类型的设备了";
            code=-10000;
        }
        }
        //判断设备是否首次绑定
        //设备是否是第一次被绑定
        String keyType = "1";
        String keyType = "1";
        if("2".equals(userType)){
        if("2".equals(userType)){
            keyType = "2";
            keyType = "2";
        }
        }
        com.yihu.wlyy.entity.device.DeviceDetail deviceDetail = wlyyWlyyDeviceDetailDao.findByDeviceSn(deviceSn);
        if (deviceDetail!=null){
            JSONObject jsonObject =new JSONObject(deviceDetail.getBindingCount());
        String sql = "SELECT binding_count FROM wlyy_devices WHERE device_code='"+deviceSn+"'";
        Map<String,Object> devicesMap = jdbcTemplate.queryForMap(sql);
        if (devicesMap!=null){
            JSONObject jsonObject =new JSONObject(String.valueOf(devicesMap.get("binding_count")));
            if (jsonObject.getInt(keyType)>0){
            if (jsonObject.getInt(keyType)>0){
                flag=false;
                flag=false;
                msg="设备不是首次绑定";
                msg="设备不是首次绑定";
@ -1248,7 +1242,7 @@ public class PatientDeviceService extends BaseService {
            if ("10000".equals(code) || "10001".equals(code)) {
            if ("10000".equals(code) || "10001".equals(code)) {
                flag = true;
                flag = true;
            }else {
            }else {
                String sql ="select count(*) num from wlyy_devices where device_code = '"+deviceSn+"'";
                String sql ="select count(*) num from device.wlyy_devices where device_code = '"+deviceSn+"'";
                Map<String,Object> map  = jdbcTemplate.queryForMap(sql);
                Map<String,Object> map  = jdbcTemplate.queryForMap(sql);
                if (Integer.valueOf(String.valueOf(map.get("num")))>0){
                if (Integer.valueOf(String.valueOf(map.get("num")))>0){
                    flag = true ;
                    flag = true ;
@ -1263,7 +1257,7 @@ public class PatientDeviceService extends BaseService {
            flag = false;
            flag = false;
        }
        }
        String sql ="select count(*) num from wlyy_devices where device_code = '"+deviceSn+"'";
        String sql ="select count(*) num from device.wlyy_devices where device_code = '"+deviceSn+"'";
        Map<String,Object> map  = jdbcTemplate.queryForMap(sql);
        Map<String,Object> map  = jdbcTemplate.queryForMap(sql);
        if (Integer.valueOf(String.valueOf(map.get("num")))>0){
        if (Integer.valueOf(String.valueOf(map.get("num")))>0){
            flag = true ;
            flag = true ;

+ 0 - 65
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/device/WlyyDeviceDetailService.java

@ -1,65 +0,0 @@
package com.yihu.wlyy.service.app.device;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.yihu.wlyy.entity.device.DeviceDetail;
import com.yihu.wlyy.entity.patient.SignFamily;
import com.yihu.wlyy.repository.deviece.WlyyDeviceDetailDao;
import com.yihu.wlyy.repository.patient.SignFamilyDao;
import com.yihu.wlyy.service.BaseService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
/**
 * 设备管理
 * zd
 */
@Component
@Transactional(rollbackFor = Exception.class)
public class WlyyDeviceDetailService extends BaseService {
	@Autowired
	private WlyyDeviceDetailDao wlyyDeviceDetailDao;
	@Autowired
	private SignFamilyDao signFamilyDao;
	public DeviceDetail findBySn(String sn){
		return  wlyyDeviceDetailDao.findByDeviceSn(sn);
	}
	public void updateAfterBinding(String deviceSn, String idCard, String userType, Date grantTime,boolean isFirst)throws Exception{
		DeviceDetail deviceDetail = wlyyDeviceDetailDao.findByDeviceSn(deviceSn);
		List<SignFamily> signFamilyList = signFamilyDao.findSSandJTByIdcard(idCard);
		long adminTeam=0L;
		String hospital = "";
		String isFirstBind = "";
		String keyType = "1";
		if ("2".equals(userType)){
			keyType="2";
		}
		if (signFamilyList!=null && signFamilyList.size()>0){
			adminTeam = signFamilyList.get(0).getAdminTeamId();
			hospital = signFamilyList.get(0).getHospital();
		}
		if (deviceDetail!=null){
			isFirstBind = deviceDetail.getBindingCount();
			if (StringUtils.isNotBlank(isFirstBind)){
				JSONObject jsonObject = JSON.parseObject(isFirstBind);
				int bindCount = Integer.valueOf(String.valueOf(jsonObject.get(keyType)));
				jsonObject.replace(keyType,bindCount+1+"");
				isFirstBind = jsonObject.toJSONString();
			}
		}
		if (isFirst){
			wlyyDeviceDetailDao.updateAfterBindingFirst(String.valueOf(adminTeam),hospital,isFirstBind,grantTime,deviceSn);
		}else {
			wlyyDeviceDetailDao.updateAfterBinding(String.valueOf(adminTeam),hospital,isFirstBind,deviceSn);
		}
	}
}

+ 28 - 15
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/device/DoctorDeviceController.java

@ -4,14 +4,17 @@ import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.wlyy.aop.ObserverRequired;
import com.yihu.wlyy.aop.ObserverRequired;
import com.yihu.wlyy.entity.device.PatientDevice;
import com.yihu.wlyy.entity.device.PatientDevice;
import com.yihu.wlyy.entity.doctor.profile.Doctor;
import com.yihu.wlyy.entity.doctor.team.admin.AdminTeam;
import com.yihu.wlyy.entity.doctor.team.admin.AdminTeam;
import com.yihu.wlyy.entity.patient.Patient;
import com.yihu.wlyy.entity.patient.Patient;
import com.yihu.wlyy.entity.wechat.WechatTemplateConfig;
import com.yihu.wlyy.entity.wechat.WechatTemplateConfig;
import com.yihu.wlyy.repository.patient.PatientDao;
import com.yihu.wlyy.repository.patient.PatientDao;
import com.yihu.wlyy.repository.wechat.WechatTemplateConfigDao;
import com.yihu.wlyy.repository.wechat.WechatTemplateConfigDao;
import com.yihu.wlyy.service.app.device.WlyyDeviceDetailService;
import com.yihu.wlyy.service.app.device.DeviceDetailService;
import com.yihu.wlyy.service.app.device.PatientDeviceLogService;
import com.yihu.wlyy.service.app.device.PatientDeviceService;
import com.yihu.wlyy.service.app.device.PatientDeviceService;
import com.yihu.wlyy.service.app.team.AdminTeamService;
import com.yihu.wlyy.service.app.team.AdminTeamService;
import com.yihu.wlyy.service.common.account.DoctorService;
import com.yihu.wlyy.service.common.account.PatientService;
import com.yihu.wlyy.service.common.account.PatientService;
import com.yihu.wlyy.service.third.health.bank.CreditLogService;
import com.yihu.wlyy.service.third.health.bank.CreditLogService;
import com.yihu.wlyy.task.PushMsgTask;
import com.yihu.wlyy.task.PushMsgTask;
@ -36,7 +39,7 @@ import java.util.List;
import java.util.Map;
import java.util.Map;
/**
/**
 * 患者端:设备管理控制类
 * 医生端:设备管理控制类
 * @author George
 * @author George
 *
 *
 */
 */
@ -50,7 +53,7 @@ public class DoctorDeviceController extends BaseController {
	private PatientDeviceService patientDeviceService;
	private PatientDeviceService patientDeviceService;
	@Autowired
	@Autowired
	private WlyyDeviceDetailService wlyyDeviceDetailService;
	private DeviceDetailService deviceDetailService;
	@Autowired
	@Autowired
	private AdminTeamService adminTeamService;
	private AdminTeamService adminTeamService;
@ -58,8 +61,6 @@ public class DoctorDeviceController extends BaseController {
	@Autowired
	@Autowired
	private CreditLogService creditLogService;
	private CreditLogService creditLogService;
	@Autowired
	private PatientService patientService;
	@Autowired
	@Autowired
	private WechatTemplateConfigDao templateConfigDao;
	private WechatTemplateConfigDao templateConfigDao;
	@Autowired
	@Autowired
@ -68,11 +69,13 @@ public class DoctorDeviceController extends BaseController {
	private WeiXinAccessTokenUtils weiXinAccessTokenUtils;
	private WeiXinAccessTokenUtils weiXinAccessTokenUtils;
	@Autowired
	@Autowired
	private PatientDao patientDao;
	private PatientDao patientDao;
	@Autowired
	private DoctorService doctorService;
	@Autowired
	private PatientDeviceLogService patientDeviceLogService;
	private ObjectMapper  objectMapper=new ObjectMapper();
	private ObjectMapper  objectMapper=new ObjectMapper();
	private JdbcTemplate jdbcTemplate;
	@ApiOperation("设备保存接口--医生端")
	@ApiOperation("设备保存接口--医生端")
	@RequestMapping(value = "SavePatientDevice",method = RequestMethod.POST)
	@RequestMapping(value = "SavePatientDevice",method = RequestMethod.POST)
	@ResponseBody
	@ResponseBody
@ -98,24 +101,26 @@ public class DoctorDeviceController extends BaseController {
	@RequestMapping(value = "SavePatientDeviceAndCredit",method = RequestMethod.POST)
	@RequestMapping(value = "SavePatientDeviceAndCredit",method = RequestMethod.POST)
	@ResponseBody
	@ResponseBody
	@ObserverRequired
	@ObserverRequired
	public String SavePatientDeviceAndCredit(@ApiParam(name="data",value="设备数据json",defaultValue = "{\"user\":\"915cca0a-5b1d-11e6-8344-fa163e8aee56\",\"deviceId\": \"3\",\"deviceName\": \"血压计-优瑞恩\",\"deviceSn\": \"16C000337\",\"categoryCode\": \"1\",\"userType\": \"-1\"}")
	public String SavePatientDeviceAndCredit(@ApiParam(name="data",value="设备数据json",defaultValue = "{\"user\":\"915cca0a-5b1d-11e6-834 4-fa163e8aee56\",\"deviceId\": \"3\",\"deviceName\": \"血压计-优瑞恩\",\"deviceSn\": \"16C000337\",\"categoryCode\": \"1\",\"userType\": \"-1\"}")
							 @RequestParam(value="data",required = true) String data) {
							 @RequestParam(value="data",required = true) String data) {
		try {
		try {
			PatientDevice device = objectMapper.readValue(data,PatientDevice.class);
			PatientDevice device = objectMapper.readValue(data,PatientDevice.class);
			// 设置操作医生标识
			// 设置操作医生标识
			device.setDoctor(getUID());
			device.setDoctor(getUID());
			//首绑和设备类型判断
			Doctor doctor = doctorService.findDoctorByCode(getUID());
			if (doctor!=null){
				device.setDoctorName(doctor.getName());
			}
			//首绑和设备类型判断  判断是否可以增加积分
			Map<String,Object> checkMap = patientDeviceService.checkBindingFirstAndType(device);
			Map<String,Object> checkMap = patientDeviceService.checkBindingFirstAndType(device);
			boolean flag = (Boolean)checkMap.get("flag");
			boolean flag = (Boolean)checkMap.get("flag");
			int checkCode = Integer.valueOf(String.valueOf(checkMap.get("code")));
			//已经绑定过同样的设备类型了,无法继续绑定
			if (checkCode == -10000){
				return write(-1,String.valueOf(checkMap.get("msg")));
			}
			//绑定
			//绑定
			patientDeviceService.saveDevice(device);
			patientDeviceService.saveDevice(device);
			patientDeviceLogService.savePatientDeviceLog(device,device.getDeviceSn(),1,1);
			//修改设备表中{"1":"0", "2":"0"}绑定次数 和其他绑定信息,
			//修改设备表中{"1":"0", "2":"0"}绑定次数 和其他绑定信息,
			wlyyDeviceDetailService.updateAfterBinding(device.getDeviceSn(),device.getUserIdcard(),device.getUserType(),new Date(),flag);
			deviceDetailService.updateAfterBinding(device,new Date(),flag);
			Patient patient = patientDao.findByCode(device.getUser());
			Patient patient = patientDao.findByCode(device.getUser());
			//调用增加积分接口  海沧区的居民才能添加积分
			//调用增加积分接口  海沧区的居民才能添加积分
			if (flag && "350205".equals(patient.getTown())){
			if (flag && "350205".equals(patient.getTown())){
@ -211,6 +216,9 @@ public class DoctorDeviceController extends BaseController {
			{
			{
				if(StringUtils.isNotBlank(pd.getDoctor())&&StringUtils.equals(pd.getDoctor(), getUID())){
				if(StringUtils.isNotBlank(pd.getDoctor())&&StringUtils.equals(pd.getDoctor(), getUID())){
					List<com.alibaba.fastjson.JSONObject> objects = patientDeviceService.deleteDevice(id,getUID());
					List<com.alibaba.fastjson.JSONObject> objects = patientDeviceService.deleteDevice(id,getUID());
					//全部解绑后去判断就更新设备表中是否绑定字段
					deviceDetailService.unBindUpdateIsBinding(pd.getDeviceSn());
					patientDeviceLogService.savePatientDeviceLog(pd,pd.getDeviceSn(),1,2);
					return write(200,"","data",objects);
					return write(200,"","data",objects);
				}
				}
				else if(StringUtils.isNotBlank(pd.getDoctor())&&!StringUtils.equals(pd.getDoctor(), getUID())){
				else if(StringUtils.isNotBlank(pd.getDoctor())&&!StringUtils.equals(pd.getDoctor(), getUID())){
@ -222,6 +230,8 @@ public class DoctorDeviceController extends BaseController {
					}
					}
					if(bo){//同行政团队
					if(bo){//同行政团队
						List<com.alibaba.fastjson.JSONObject> objects = patientDeviceService.deleteDevice(id,getUID());
						List<com.alibaba.fastjson.JSONObject> objects = patientDeviceService.deleteDevice(id,getUID());
						deviceDetailService.unBindUpdateIsBinding(pd.getDeviceSn());
						patientDeviceLogService.savePatientDeviceLog(pd,pd.getDeviceSn(),1,2);
						return write(200,"","data",objects);
						return write(200,"","data",objects);
					}else{
					}else{
						return error(-1, "只允许删除自己及自己行政团队绑定的设备!");
						return error(-1, "只允许删除自己及自己行政团队绑定的设备!");
@ -252,6 +262,9 @@ public class DoctorDeviceController extends BaseController {
						@RequestParam(value="type",required = true) String type) {
						@RequestParam(value="type",required = true) String type) {
		try{
		try{
			patientDeviceService.deleteDevices(deviceSn,type,getUID());
			patientDeviceService.deleteDevices(deviceSn,type,getUID());
			//全部解绑后去判断就更新设备表中是否绑定字段
			deviceDetailService.unBindUpdateIsBinding(deviceSn);
			patientDeviceLogService.savePatientDeviceLog(null,deviceSn,1,2);
			return write(200,"解绑成功!");
			return write(200,"解绑成功!");
		}catch (Exception e){
		}catch (Exception e){
			error(e);
			error(e);

+ 51 - 58
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/device/PatientDeviceController.java

@ -9,8 +9,9 @@ import com.yihu.wlyy.entity.wechat.WechatTemplateConfig;
import com.yihu.wlyy.repository.deviece.PatientHealthTimeDao;
import com.yihu.wlyy.repository.deviece.PatientHealthTimeDao;
import com.yihu.wlyy.repository.patient.PatientDeviceDao;
import com.yihu.wlyy.repository.patient.PatientDeviceDao;
import com.yihu.wlyy.repository.wechat.WechatTemplateConfigDao;
import com.yihu.wlyy.repository.wechat.WechatTemplateConfigDao;
import com.yihu.wlyy.service.app.device.PatientDeviceLogService;
import com.yihu.wlyy.service.app.device.PatientDeviceService;
import com.yihu.wlyy.service.app.device.PatientDeviceService;
import com.yihu.wlyy.service.app.device.WlyyDeviceDetailService;
import com.yihu.wlyy.service.app.device.DeviceDetailService;
import com.yihu.wlyy.service.app.health.PatientHealthIndexService;
import com.yihu.wlyy.service.app.health.PatientHealthIndexService;
import com.yihu.wlyy.service.common.account.PatientService;
import com.yihu.wlyy.service.common.account.PatientService;
import com.yihu.wlyy.service.third.health.bank.CreditLogService;
import com.yihu.wlyy.service.third.health.bank.CreditLogService;
@ -18,7 +19,6 @@ import com.yihu.wlyy.task.PushMsgTask;
import com.yihu.wlyy.util.DateUtil;
import com.yihu.wlyy.util.DateUtil;
import com.yihu.wlyy.util.HttpClientUtil;
import com.yihu.wlyy.util.HttpClientUtil;
import com.yihu.wlyy.web.BaseController;
import com.yihu.wlyy.web.BaseController;
import com.yihu.wlyy.web.doctor.device.DoctorDeviceController;
import com.yihu.wlyy.wechat.util.WeiXinAccessTokenUtils;
import com.yihu.wlyy.wechat.util.WeiXinAccessTokenUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiOperation;
@ -59,11 +59,9 @@ public class PatientDeviceController extends BaseController {
    @Autowired
    @Autowired
    private PatientDeviceDao patientDeviceDao;
    private PatientDeviceDao patientDeviceDao;
    @Autowired
    @Autowired
    private HttpClientUtil HttpClientUtil;
    @Autowired
    private PatientHealthIndexService patientHealthIndexService;
    private PatientHealthIndexService patientHealthIndexService;
    @Autowired
    @Autowired
    private WlyyDeviceDetailService wlyyDeviceDetailService;
    private DeviceDetailService deviceDetailService;
    @Autowired
    @Autowired
    private CreditLogService creditLogService;
    private CreditLogService creditLogService;
    @Autowired
    @Autowired
@ -74,6 +72,8 @@ public class PatientDeviceController extends BaseController {
    private PushMsgTask pushMsgTask;
    private PushMsgTask pushMsgTask;
    @Autowired
    @Autowired
    private WeiXinAccessTokenUtils weiXinAccessTokenUtils;
    private WeiXinAccessTokenUtils weiXinAccessTokenUtils;
    @Autowired
    private PatientDeviceLogService patientDeviceLogService;
    @Value("${yihu.yihu_OpenPlatform_url}")
    @Value("${yihu.yihu_OpenPlatform_url}")
    private String url;
    private String url;
@ -213,66 +213,62 @@ public class PatientDeviceController extends BaseController {
            // 设置患者标识
            // 设置患者标识
            device.setUser(getRepUID());
            device.setUser(getRepUID());
//            device.setUser(getUID());
//            device.setUser(getUID());
            //首绑和设备类型判断
            //患者和设备是否首绑
            Map<String,Object> checkMap = patientDeviceService.checkBindingFirstAndType(device);
            Map<String,Object> checkMap = patientDeviceService.checkBindingFirstAndType(device);
            boolean flag = (Boolean)checkMap.get("flag");
            boolean flag = (Boolean)checkMap.get("flag");
            int checkCode = Integer.valueOf(String.valueOf(checkMap.get("code")));
            //已经绑定过同样的设备类型了,无法继续绑定
            if (checkCode == -10000){
                return write(-1,String.valueOf(checkMap.get("msg")));
            }
            Patient patient = patientService.findByCode(device.getUser());
            if(!getUID().equals(getRepUID())&&device.getId()==null){
            if(!getUID().equals(getRepUID())&&device.getId()==null){
                device.setAgent(getRepUID());
                device.setAgent(getRepUID());
                device.setAgentName(patient.getName());
            }
            }
            String sn = device.getDeviceSn();
            String sn = device.getDeviceSn();
            synchronized (sn.intern()){
            synchronized (sn.intern()){
                patientDeviceService.saveDevice(device);
                patientDeviceService.saveDevice(device);
                patientDeviceLogService.savePatientDeviceLog(device,2,1);
            }
            }
            //判断是否为积分设备
            DeviceDetail deviceDetail = wlyyDeviceDetailService.findBySn(device.getDeviceSn());
            if (deviceDetail!=null){
                //修改设备表中{"1":"0", "2":"0"}的绑定次数 和其他绑定信息,
                wlyyDeviceDetailService.updateAfterBinding(device.getDeviceSn(),device.getUserIdcard(),device.getUserType(),new Date(),flag);
                Patient patient = patientService.findByCode(device.getUser());
                if (flag && "350205".equals(patient.getTown())){
                    String creditDetail = "{\"tradeType\":\"HEALTH_TASK\",\"flag\":\"BIND\",\"tradeDirection\":1,\"status\":1,\"patientId\":\""+device.getUser()+"\",\"hospital\":\""+patient.getTown()+"\"}";
                    com.alibaba.fastjson.JSONObject jsonObject = com.alibaba.fastjson.JSONObject.parseObject(creditDetail);
                    com.alibaba.fastjson.JSONObject response = creditLogService.insert(jsonObject);
                    System.out.println("添加积分返回数据======"+response.toJSONString());
                    String status = response.getString("status");
                    if ("200".equals(status)){
                        List<Map<String,Object>> list = (List<Map<String,Object>>)response.get("detailModelList");
                        if (list!=null && list.size()>0){
                            String integrate = String.valueOf(list.get(0).get("integrate"));
                            String flagType = String.valueOf(list.get(0).get("flag"));
                            //@TODO 调用发送微信模板接口
	                        //Patient people = patientDao.findByCode(device.getUser());
                        }
            //修改设备表中{"1":"0", "2":"0"}的绑定次数 和其他绑定信息,
            deviceDetailService.updateAfterBinding(device,new Date(),flag);
            if (flag && "350205".equals(patient.getTown())){
                String creditDetail = "{\"tradeType\":\"HEALTH_TASK\",\"flag\":\"BIND\",\"tradeDirection\":1,\"status\":1,\"patientId\":\""+device.getUser()+"\",\"hospital\":\""+patient.getTown()+"\"}";
                com.alibaba.fastjson.JSONObject jsonObject = com.alibaba.fastjson.JSONObject.parseObject(creditDetail);
                com.alibaba.fastjson.JSONObject response = creditLogService.insert(jsonObject);
                System.out.println("添加积分返回数据======"+response.toJSONString());
                String status = response.getString("status");
                /*if ("200".equals(status)){
                    List<Map<String,Object>> list = (List<Map<String,Object>>)response.get("detailModelList");
                    if (list!=null && list.size()>0){
                        String integrate = String.valueOf(list.get(0).get("integrate"));
                        String flagType = String.valueOf(list.get(0).get("flag"));
                        //@TODO 调用发送微信模板接口
                        //Patient people = patientDao.findByCode(device.getUser());
                    }
                    }
                }*/
                if (!"200".equals(status)){
                    logger.info("添加积分失败!");
                }
                }
    
                try {
                    String openId = patient.getOpenid();
                    String name = patient.getName();
        
                    org.json.JSONObject sendJson = new org.json.JSONObject();
                    String first = "";
                    String remark = "";
                    String deviceName = device.getDeviceName();
                    WechatTemplateConfig templateConfig = templateConfigDao.findByScene("template_patient_bind_device","bdsb");
                    first = templateConfig.getFirst();
                    first = first.replace("key1",(deviceName==null?"":deviceName));
                    remark = templateConfig.getRemark();
        
                    sendJson.put("keyword1", deviceName);
                    sendJson.put("keyword2", DateUtil.dateToStrLong(device.getCzrq()));
                    sendJson.put("keyword3", templateConfig.getKeyword3());
                    sendJson.put("first", first);
                    sendJson.put("remark", remark);
                    sendJson.put("url", templateConfig.getUrl());//带参数的模板跳转链接
                    System.out.println(sendJson.toString());
                    pushMsgTask.putWxMsg(weiXinAccessTokenUtils.getAccessToken(), 22, openId, name, sendJson);
            }
            try {
                String openId = patient.getOpenid();
                String name = patient.getName();
                org.json.JSONObject sendJson = new org.json.JSONObject();
                String first = "";
                String remark = "";
                String deviceName = device.getDeviceName();
                WechatTemplateConfig templateConfig = templateConfigDao.findByScene("template_patient_bind_device","bdsb");
                first = templateConfig.getFirst();
                first = first.replace("key1",(deviceName==null?"":deviceName));
                remark = templateConfig.getRemark();
                sendJson.put("keyword1", deviceName);
                sendJson.put("keyword2", DateUtil.dateToStrLong(device.getCzrq()));
                sendJson.put("keyword3", templateConfig.getKeyword3());
                sendJson.put("first", first);
                sendJson.put("remark", remark);
                sendJson.put("url", templateConfig.getUrl());//带参数的模板跳转链接
                System.out.println(sendJson.toString());
                pushMsgTask.putWxMsg(weiXinAccessTokenUtils.getAccessToken(), 22, openId, name, sendJson);
//	                    //发送代理人
//	                    //发送代理人
//	                    jsonArray = weiXinOpenIdUtils.getAgentOpenId(patient, openId);
//	                    jsonArray = weiXinOpenIdUtils.getAgentOpenId(patient, openId);
//	                    if (jsonArray != null && jsonArray.length() > 0) {
//	                    if (jsonArray != null && jsonArray.length() > 0) {
@ -289,13 +285,10 @@ public class PatientDeviceController extends BaseController {
//			                    pushMsgTask.putWxMsg(weiXinAccessTokenUtils.getAccessToken(), 19, member.getOpenid(), name, sendJson);
//			                    pushMsgTask.putWxMsg(weiXinAccessTokenUtils.getAccessToken(), 19, member.getOpenid(), name, sendJson);
//		                    }
//		                    }
//	                    }
//	                    }
                }catch (Exception e){
                    logger.info("设备绑定微信模板消息发送失败:"+e.getMessage());
            }catch (Exception e){
                logger.info("设备绑定微信模板消息发送失败:"+e.getMessage());
//	                        e.printStackTrace();
//	                        e.printStackTrace();
                }
            }
            }
            return success("设备保存成功!");
            return success("设备保存成功!");
        } catch (Exception ex) {
        } catch (Exception ex) {
            error(ex);
            error(ex);