|
@ -0,0 +1,247 @@
|
|
|
package com.yihu.wlyy.service.kit;
|
|
|
|
|
|
import com.yihu.device.entity.DeviceDetail;
|
|
|
import com.yihu.wlyy.entity.device.PatientDevice;
|
|
|
import com.yihu.wlyy.entity.kit.KitDrugDetail;
|
|
|
import com.yihu.wlyy.entity.kit.KitDrugUseRecord;
|
|
|
import com.yihu.wlyy.entity.kit.KitUseRemindRecord;
|
|
|
import com.yihu.wlyy.entity.patient.Patient;
|
|
|
import com.yihu.wlyy.health.repository.DeviceDetailDao;
|
|
|
import com.yihu.wlyy.repository.kit.KitDrugDetailDao;
|
|
|
import com.yihu.wlyy.repository.kit.KitDrugUseRecordDao;
|
|
|
import com.yihu.wlyy.repository.kit.KitUseRemindRecordDao;
|
|
|
import com.yihu.wlyy.repository.patient.PatientDao;
|
|
|
import com.yihu.wlyy.repository.patient.PatientDeviceDao;
|
|
|
import com.yihu.wlyy.service.BaseService;
|
|
|
import com.yihu.wlyy.service.common.account.PatientService;
|
|
|
import com.yihu.wlyy.service.third.kit.JyKitService;
|
|
|
import com.yihu.wlyy.util.DateUtil;
|
|
|
import net.sf.json.JSONArray;
|
|
|
import net.sf.json.JSONObject;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* Created by 刘文彬 on 2018/7/18.
|
|
|
* i健康药盒
|
|
|
*/
|
|
|
@Service
|
|
|
public class KitService extends BaseService {
|
|
|
|
|
|
@Autowired
|
|
|
private JyKitService jyKitService;
|
|
|
@Autowired
|
|
|
private PatientService patientService;
|
|
|
@Autowired
|
|
|
private KitDrugDetailDao kitDrugDetailDao;
|
|
|
@Autowired
|
|
|
private KitDrugUseRecordDao kitDrugUseRecordDao;
|
|
|
@Autowired
|
|
|
private KitUseRemindRecordDao kitUseRemindRecordDao;
|
|
|
@Autowired
|
|
|
private DeviceDetailDao deviceDetailDao;
|
|
|
@Autowired
|
|
|
private PatientDeviceDao patientDeviceDao;
|
|
|
@Autowired
|
|
|
private JdbcTemplate jdbcTemplate;
|
|
|
public String format = "yyyy-MM-dd HH:mm";
|
|
|
|
|
|
/**
|
|
|
* 药盒绑定
|
|
|
* @param deviceSn
|
|
|
* @param type
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
@Transactional
|
|
|
public void kitBinding(String deviceSn,String type,String patientCode) throws Exception{
|
|
|
Patient patient = patientService.findByCode(patientCode);
|
|
|
JSONObject dataJSONStr = jyKitService.kitBinding(deviceSn,patient.getMobile(),type);
|
|
|
//绑定成功,设备添加到device库
|
|
|
String sn = dataJSONStr.getString("device_sn");//设备编码
|
|
|
String deviceType = dataJSONStr.getString("device_type");//设备型号
|
|
|
String maxAlarm = dataJSONStr.getString("max_alarm");//设备闹钟数
|
|
|
String maxDrugs = dataJSONStr.getString("max_drugs");//设备药格数
|
|
|
|
|
|
System.out.println("sn:"+sn+",deviceType:"+deviceType+",maxAlarm:"+maxAlarm+",maxDrugs:"+maxDrugs);
|
|
|
|
|
|
//添加设备
|
|
|
DeviceDetail deviceDetail = new DeviceDetail();
|
|
|
deviceDetail.setDeviceModel(deviceType);//设备型号
|
|
|
deviceDetail.setDeviceName("");
|
|
|
deviceDetail.setDeviceCode(sn);
|
|
|
deviceDetail.setLinkman(patient.getName());
|
|
|
String sql = " select f.* from wlyy_sign_family f where f.patient='' and p.status=1 ";
|
|
|
List<Map<String, Object>> signFamilys1 = jdbcTemplate.queryForList(sql);
|
|
|
if(signFamilys1.size()>0){
|
|
|
deviceDetail.setOrgName(signFamilys1.get(0).get("hospital_name")+"");
|
|
|
deviceDetail.setTel(patient.getMobile());
|
|
|
deviceDetail.setGrantAdminTeam(signFamilys1.get(0).get("admin_team_code")+"");
|
|
|
deviceDetail.setGrantOrgCode(signFamilys1.get(0).get("hospital")+"");
|
|
|
deviceDetail.setGrantTime(new Date());
|
|
|
}
|
|
|
deviceDetail = deviceDetailDao.save(deviceDetail);
|
|
|
//添加绑定关系
|
|
|
PatientDevice patientDevice = new PatientDevice();
|
|
|
patientDevice.setDeviceId(deviceDetail.getId());
|
|
|
patientDevice.setDeviceSn(deviceDetail.getDeviceCode());
|
|
|
patientDevice.setDeviceName(deviceDetail.getDeviceName());
|
|
|
patientDevice.setUser(patientCode);
|
|
|
patientDevice.setCategoryCode("3");
|
|
|
patientDevice.setUserType("-1");
|
|
|
patientDevice.setUserIdcard(patient.getIdcard());
|
|
|
patientDevice.setCzrq(new Date());
|
|
|
if("1".equals(type)){
|
|
|
type="0";
|
|
|
}else if("2".equals(type)){
|
|
|
type="1";
|
|
|
}
|
|
|
patientDevice.setDel(Integer.valueOf(type));
|
|
|
patientDeviceDao.save(patientDevice);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 用药提醒
|
|
|
* @param normalTime 居民计划用药时间
|
|
|
* @param remindType 提醒类型(1、到点,2、超时,3、漏用)
|
|
|
* @param deviveSn 药盒的sn码
|
|
|
* @param kitAccountId 药盒账号id
|
|
|
* @param drugDetail 药品清单json串
|
|
|
*/
|
|
|
@Transactional
|
|
|
public void drugUseRemind(String normalTime,String remindType,
|
|
|
String deviveSn,String kitAccountId,String drugDetail){
|
|
|
//保存用药提醒记录
|
|
|
Date currentTime = new Date();
|
|
|
KitUseRemindRecord kitUseRemindRecord = new KitUseRemindRecord();
|
|
|
kitUseRemindRecord.setCode(getCode());
|
|
|
kitUseRemindRecord.setNormalTime(DateUtil.strToDate(normalTime, format));
|
|
|
kitUseRemindRecord.setRemindType(Integer.valueOf(remindType));
|
|
|
kitUseRemindRecord.setInsertTime(currentTime);
|
|
|
kitUseRemindRecord.setKitAccountId(kitAccountId);
|
|
|
// kitUseRemindRecord.setDeviveModel();//药盒型号
|
|
|
kitUseRemindRecord.setDeviceSn(deviveSn);
|
|
|
//根据药盒sn码和居民的绑定关系表,获取居民信息
|
|
|
List<PatientDevice> patientDeviceList = patientDeviceDao.findByDeviceSn(deviveSn);
|
|
|
if(patientDeviceList.size()>0){
|
|
|
kitUseRemindRecord.setPatientCode(patientDeviceList.get(0).getUser());
|
|
|
Patient patient = patientService.findByCode(patientDeviceList.get(0).getUser());
|
|
|
kitUseRemindRecord.setPatientName(patient.getName());
|
|
|
}
|
|
|
kitUseRemindRecord.setDrugDetail(drugDetail);
|
|
|
kitUseRemindRecordDao.save(kitUseRemindRecord);
|
|
|
|
|
|
//保存药品清单信息
|
|
|
JSONArray dataJSONStr = JSONArray.fromObject(drugDetail);
|
|
|
List<KitDrugDetail> result = new ArrayList<KitDrugDetail>();
|
|
|
for(int i =0; i<dataJSONStr.size();i++){
|
|
|
|
|
|
KitDrugDetail kitDrugDetail = new KitDrugDetail();
|
|
|
String drugName = dataJSONStr.getJSONObject(i).getString("drugName");
|
|
|
String measure = dataJSONStr.getJSONObject(i).getString("measure");
|
|
|
String drugImgUrl = dataJSONStr.getJSONObject(i).getString("drugImgUrl");
|
|
|
kitDrugDetail.setCode(getCode());
|
|
|
kitDrugDetail.setDeviceSn(deviveSn);
|
|
|
kitDrugDetail.setDrugName(drugName);
|
|
|
kitDrugDetail.setUnit("粒");
|
|
|
kitDrugDetail.setMeasure(measure);
|
|
|
kitDrugDetail.setInsertTime(currentTime);
|
|
|
kitDrugDetail.setRelationCode(kitUseRemindRecord.getCode());
|
|
|
kitDrugDetail.setDrugImgUrl(drugImgUrl);
|
|
|
kitDrugDetail.setType(2);//清单类型(1、用药记录药品清单、2、用药提醒药品清单)
|
|
|
result.add(kitDrugDetail);
|
|
|
}
|
|
|
kitDrugDetailDao.save(result);
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 同步居民用药记录
|
|
|
* @param useTime 居民用药时间
|
|
|
* @param normalTime 居民计划用药时间
|
|
|
* @param recordType 记录类型(1、手动,2、设备)
|
|
|
* @param useDrugStatus 用药状态(1、按时,2、超时,3、漏用)
|
|
|
* @param deviveSn 药盒的sn码
|
|
|
* @param kitAccountId 药盒账号id
|
|
|
* @param drugDetail 药品清单json串
|
|
|
*/
|
|
|
@Transactional
|
|
|
public void useDrugRecord(String useTime,String normalTime,String recordType,String useDrugStatus,
|
|
|
String deviveSn,String kitAccountId,String drugDetail) throws Exception{
|
|
|
//保存用药信息
|
|
|
Date currentTime = new Date();
|
|
|
KitDrugUseRecord kitDrugUseRecord = new KitDrugUseRecord();
|
|
|
kitDrugUseRecord.setCode(getCode());
|
|
|
kitDrugUseRecord.setInsertTime(currentTime);
|
|
|
kitDrugUseRecord.setUseTime(DateUtil.strToDate(useTime, format));
|
|
|
kitDrugUseRecord.setNormalTime(DateUtil.strToDate(normalTime, format));
|
|
|
kitDrugUseRecord.setRecordType(Integer.valueOf(recordType));
|
|
|
kitDrugUseRecord.setUseDrugStatus(Integer.valueOf(useDrugStatus));
|
|
|
kitDrugUseRecord.setDeviceSn(deviveSn);
|
|
|
kitDrugUseRecord.setKitAccountId(kitAccountId);
|
|
|
kitDrugUseRecord.setDrugDetail(drugDetail);
|
|
|
//根据药盒sn码和居民的绑定关系表,获取居民信息
|
|
|
List<PatientDevice> patientDeviceList = patientDeviceDao.findByDeviceSn(deviveSn);
|
|
|
if(patientDeviceList.size()>0){
|
|
|
kitDrugUseRecord.setPatientCode(patientDeviceList.get(0).getUser());
|
|
|
Patient patient = patientService.findByCode(patientDeviceList.get(0).getUser());
|
|
|
kitDrugUseRecord.setPatientName(patient.getName());
|
|
|
}
|
|
|
kitDrugUseRecord.setDrugDetail(drugDetail);
|
|
|
kitDrugUseRecordDao.save(kitDrugUseRecord);
|
|
|
|
|
|
//保存药品清单信息
|
|
|
JSONArray dataJSONStr = JSONArray.fromObject(drugDetail);
|
|
|
List<KitDrugDetail> result = new ArrayList<KitDrugDetail>();
|
|
|
for(int i =0; i<dataJSONStr.size();i++){
|
|
|
KitDrugDetail kitDrugDetail = new KitDrugDetail();
|
|
|
String drugName = dataJSONStr.getJSONObject(i).getString("drugName");
|
|
|
String measure = dataJSONStr.getJSONObject(i).getString("measure");
|
|
|
String drugImgUrl = dataJSONStr.getJSONObject(i).getString("drugImgUrl");
|
|
|
kitDrugDetail.setCode(getCode());
|
|
|
kitDrugDetail.setDeviceSn(deviveSn);
|
|
|
kitDrugDetail.setDrugName(drugName);
|
|
|
kitDrugDetail.setUnit("粒");
|
|
|
kitDrugDetail.setMeasure(measure);
|
|
|
kitDrugDetail.setInsertTime(currentTime);
|
|
|
kitDrugDetail.setRelationCode(kitDrugUseRecord.getCode());
|
|
|
kitDrugDetail.setDrugImgUrl(drugImgUrl);
|
|
|
kitDrugDetail.setType(1);//清单类型(1、用药记录药品清单、2、用药提醒药品清单)
|
|
|
result.add(kitDrugDetail);
|
|
|
}
|
|
|
kitDrugDetailDao.save(result);
|
|
|
}
|
|
|
|
|
|
public static void main(String[] args) {
|
|
|
String drugDetail =
|
|
|
"[{" +
|
|
|
"\"drugName\":\"aa\"," +
|
|
|
"\"measure\":\"bb\"," +
|
|
|
"\"drugImgUrl\":\"cc\"" +
|
|
|
"},"+"{" +
|
|
|
"\"drugName\":\"aa\"," +
|
|
|
"\"measure\":\"bb\"," +
|
|
|
"\"drugImgUrl\":\"cc\"" +
|
|
|
"}"+"]";
|
|
|
// JSONObject drugDetailJson = JSONObject.fromObject(drugDetail);
|
|
|
JSONArray a = JSONArray.fromObject(drugDetail);
|
|
|
for(int i = 0;i<a.size();i++){
|
|
|
String drugName = a.getJSONObject(i).getString("drugName");
|
|
|
String measure = a.getJSONObject(i).getString("measure");
|
|
|
String drugImgUrl = a.getJSONObject(i).getString("drugImgUrl");
|
|
|
System.out.println(i+","+drugName+","+measure+","+drugImgUrl);
|
|
|
}
|
|
|
// JSONArray b = drugDetailJson.getJSONArray("drug");
|
|
|
// for(int i = 0;i<b.size();i++){
|
|
|
// String drugName = b.getJSONObject(i).getString("drugName");
|
|
|
// String measure = b.getJSONObject(i).getString("measure");
|
|
|
// String drugImgUrl = b.getJSONObject(i).getString("drugImgUrl");
|
|
|
// System.out.println(i+","+drugName+","+measure+","+drugImgUrl);
|
|
|
// }
|
|
|
System.out.println("appId:"+UUID.randomUUID().toString());
|
|
|
System.out.println("appSecret:"+UUID.randomUUID().toString());
|
|
|
}
|
|
|
}
|