|
@ -7,6 +7,7 @@ import com.yihu.wlyy.repository.patient.DeviceWxMessageDao;
|
|
|
import com.yihu.wlyy.repository.patient.PatientDeviceDao;
|
|
|
import com.yihu.wlyy.service.BaseService;
|
|
|
import com.yihu.wlyy.util.DateUtil;
|
|
|
import org.apache.commons.collections.map.HashedMap;
|
|
|
import org.json.JSONArray;
|
|
|
import org.json.JSONObject;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@ -18,6 +19,7 @@ import org.springside.modules.utils.Clock;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
|
@Component
|
|
@ -50,39 +52,44 @@ public class DeviceWxMessageService extends BaseService {
|
|
|
}
|
|
|
//批量插入数据
|
|
|
deviceWxMessageDao.save(messageList);
|
|
|
//放入队列的数据集
|
|
|
List<DeviceWxMessageDTO> deviceWxMessageDTOS = new ArrayList<>();
|
|
|
List<DeviceWxMessageDTO> deviceWxMessageDTOS1 = new ArrayList<>();
|
|
|
|
|
|
//放入队列的数据集(相同用户不同设备各发一条 相同设备发一条)
|
|
|
Map<String,List<String>> map = new HashedMap();
|
|
|
for (DeviceWxMessage deviceWxMessage : messageList) {
|
|
|
deviceWxMessageDTOS1.clear();
|
|
|
deviceWxMessageDTOS1.addAll(deviceWxMessageDTOS);
|
|
|
int i = 0;
|
|
|
if (deviceWxMessageDTOS1.size()==0){
|
|
|
DeviceWxMessageDTO deviceWxMessageDTO = new DeviceWxMessageDTO();
|
|
|
deviceWxMessageDTO.setPatient(deviceWxMessage.getPatient());
|
|
|
deviceWxMessageDTO.setDeviceType(Integer.valueOf(deviceWxMessage.getCategoryCode()));
|
|
|
deviceWxMessageDTO.setCzrq(DateUtil.dateToStr(deviceWxMessage.getCzrq(),"yyyy-MM-dd HH:mm:ss"));
|
|
|
deviceWxMessageDTOS.add(deviceWxMessageDTO);
|
|
|
}else {
|
|
|
for (DeviceWxMessageDTO wxMessageDto : deviceWxMessageDTOS1) {
|
|
|
i++;
|
|
|
//当居民没有重复的时候添加一条发送
|
|
|
if (i==deviceWxMessageDTOS1.size() && (!deviceWxMessage.getPatient().equals(wxMessageDto.getPatient()))){
|
|
|
DeviceWxMessageDTO deviceWxMessageDTO = new DeviceWxMessageDTO();
|
|
|
deviceWxMessageDTO.setPatient(deviceWxMessage.getPatient());
|
|
|
deviceWxMessageDTO.setDeviceType(Integer.valueOf(deviceWxMessage.getCategoryCode()));
|
|
|
deviceWxMessageDTO.setCzrq(DateUtil.dateToStr(deviceWxMessage.getCzrq(),"yyyy-MM-dd HH:mm:ss"));
|
|
|
deviceWxMessageDTOS.add(deviceWxMessageDTO);
|
|
|
List<String> deviceTypeList = null;
|
|
|
if (map.containsKey(deviceWxMessage.getPatient())){
|
|
|
deviceTypeList = map.get(deviceWxMessage.getPatient());
|
|
|
if (deviceTypeList==null){
|
|
|
deviceTypeList = new ArrayList<>();
|
|
|
deviceTypeList.add(deviceWxMessage.getCategoryCode());
|
|
|
map.put(deviceWxMessage.getPatient(),deviceTypeList);
|
|
|
}else {
|
|
|
boolean flag = false;
|
|
|
if (!deviceTypeList.contains(deviceWxMessage.getCategoryCode())){
|
|
|
flag=true;
|
|
|
}
|
|
|
//当居民code重复且设备类型不重复也添加一条发送
|
|
|
if (deviceWxMessage.getPatient().equals(wxMessageDto.getPatient()) && Integer.valueOf(deviceWxMessage.getCategoryCode())!=wxMessageDto.getDeviceType()){
|
|
|
DeviceWxMessageDTO deviceWxMessageDTO = new DeviceWxMessageDTO();
|
|
|
deviceWxMessageDTO.setPatient(deviceWxMessage.getPatient());
|
|
|
deviceWxMessageDTO.setDeviceType(Integer.valueOf(deviceWxMessage.getCategoryCode()));
|
|
|
deviceWxMessageDTO.setCzrq(DateUtil.dateToStr(deviceWxMessage.getCzrq(),"yyyy-MM-dd HH:mm:ss"));
|
|
|
deviceWxMessageDTOS.add(deviceWxMessageDTO);
|
|
|
if (flag){
|
|
|
deviceTypeList.add(deviceWxMessage.getCategoryCode());
|
|
|
map.put(deviceWxMessage.getPatient(),deviceTypeList);
|
|
|
}
|
|
|
}
|
|
|
}else {
|
|
|
deviceTypeList = new ArrayList<>();
|
|
|
deviceTypeList.add(deviceWxMessage.getCategoryCode());
|
|
|
map.put(deviceWxMessage.getPatient(),deviceTypeList);
|
|
|
}
|
|
|
}
|
|
|
List<DeviceWxMessageDTO> deviceWxMessageDTOS = new ArrayList<>();
|
|
|
for (Map.Entry<String, List<String>> entry : map.entrySet()) {
|
|
|
System.out.println(entry.getKey() + ":" + entry.getValue());
|
|
|
String patient = entry.getKey();
|
|
|
List<String> list = entry.getValue();
|
|
|
for (String deviceType : list){
|
|
|
DeviceWxMessageDTO deviceWxMessageDTO = new DeviceWxMessageDTO();
|
|
|
deviceWxMessageDTO.setPatient(patient);
|
|
|
deviceWxMessageDTO.setDeviceType(Integer.valueOf(deviceType));
|
|
|
deviceWxMessageDTO.setCzrq(DateUtil.dateToStr(new Date(),"yyyy-MM-dd HH:mm:ss"));
|
|
|
deviceWxMessageDTOS.add(deviceWxMessageDTO);
|
|
|
}
|
|
|
}
|
|
|
return deviceWxMessageDTOS;
|