LocalBusDeviceAlarmService.java 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. package com.nb.bus.service;
  2. import cn.hutool.core.util.ObjectUtil;
  3. import cn.hutool.core.util.StrUtil;
  4. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  5. import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
  6. import com.baomidou.mybatisplus.core.metadata.IPage;
  7. import com.nb.bus.entity.BusDeviceAlarmEntity;
  8. import com.nb.bus.entity.BusHospitalEntity;
  9. import com.nb.bus.entity.BusInfusionHistoryEntity;
  10. import com.nb.bus.enums.DeviceAlarmEnum;
  11. import com.nb.bus.enums.FlowStatusEnum;
  12. import com.nb.bus.mapper.BusDeviceAlarmMapper;
  13. import com.nb.bus.service.dto.*;
  14. import com.nb.common.crud.BaseService;
  15. import lombok.AllArgsConstructor;
  16. import lombok.extern.slf4j.Slf4j;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18. import org.springframework.context.annotation.Lazy;
  19. import org.springframework.stereotype.Service;
  20. import org.springframework.transaction.annotation.Transactional;
  21. import java.util.ArrayList;
  22. import java.util.HashMap;
  23. import java.util.List;
  24. import java.util.Map;
  25. /**
  26. * @author lifang
  27. * @version 1.0.0
  28. * @ClassName LocalBusHospitalService.java
  29. * @Description 临床使用设备
  30. * @createTime 2022年03月19日 09:27:00
  31. */
  32. @Service
  33. @Slf4j
  34. @AllArgsConstructor
  35. public class LocalBusDeviceAlarmService extends BaseService<BusDeviceAlarmMapper, BusDeviceAlarmEntity,String> {
  36. @Autowired
  37. @Lazy
  38. private LocalBusHospitalService hospitalService;
  39. @Autowired
  40. @Lazy
  41. private LocalBusInfusionHistoryService infusionHistoryService;
  42. @Override
  43. public void validateBeforeSave(BusDeviceAlarmEntity entity) {
  44. }
  45. @Override
  46. public boolean save(BusDeviceAlarmEntity entity) {
  47. BusInfusionHistoryEntity infusionHistoryEntity = infusionHistoryService.getById(entity.getInfusionId());
  48. if(entity.getDeviceType()==null){
  49. entity.setDeviceType(infusionHistoryEntity.getType());
  50. }
  51. if(entity.getAlarmState()==null
  52. || ObjectUtil.equal(entity.getAlarmState(),infusionHistoryEntity.getAlarm())){
  53. entity.setAlarmState(DeviceAlarmEnum.None);
  54. }
  55. if(entity.getWarnAnalgesicPoor()==null
  56. || ObjectUtil.equal(entity.getWarnAnalgesicPoor(),infusionHistoryEntity.getWarnAnalgesicPoor())){
  57. entity.setWarnAnalgesicPoor(false);
  58. }
  59. if(entity.getWarnFlow()==null
  60. || ObjectUtil.equal(entity.getWarnFlow(),infusionHistoryEntity.getWarnFlow())){
  61. entity.setWarnFlow(FlowStatusEnum.None);
  62. }
  63. if(entity.getWarnWillFinished()==null
  64. || ObjectUtil.equal(entity.getWarnWillFinished(),infusionHistoryEntity.getWarnWillFinished())){
  65. entity.setWarnWillFinished(false);
  66. }
  67. if(entity.getWarnLowBattery()==null
  68. || ObjectUtil.equal(entity.getWarnLowBattery(),infusionHistoryEntity.getWarnLowBattery())){
  69. entity.setWarnLowBattery(false);
  70. }
  71. if(entity.getWarnAnalgesicPoor()==null
  72. || ObjectUtil.equal(entity.getWarnAnalgesicPoor(),infusionHistoryEntity.getWarnAnalgesicPoor())){
  73. entity.setWarnAnalgesicPoor(false);
  74. }
  75. if(!entity.alarmOrWarn()){
  76. //无警报信息,存储失败
  77. return false;
  78. }
  79. BusDeviceAlarmEntity existAlarm = BusDeviceAlarmEntity.parseRunning(infusionHistoryEntity);
  80. if (entity.signParm().equalsIgnoreCase(existAlarm.signParm())) {
  81. return false;
  82. }
  83. //再判断是否报警或提示是否发生重复
  84. //满足以上条件进行保存
  85. return super.save(entity);
  86. }
  87. @Override
  88. public void validateBeforeUpdate(BusDeviceAlarmEntity entity) {
  89. }
  90. @Override
  91. public void validateBeforeDelete(String id) {
  92. }
  93. public IPage<BusDeviceAlarmEntity> pageQuery(AlarmQuery query){
  94. return this.baseMapper.pageQuery(query.getPage(),query);
  95. }
  96. /**
  97. * 添加报警原因
  98. * @param id
  99. * @param cause
  100. */
  101. @Transactional(rollbackFor = Exception.class)
  102. public void addCause(String id, String cause) {
  103. BusDeviceAlarmEntity alarm = this.getById(id);
  104. if(alarm==null){
  105. return ;
  106. }
  107. if(StrUtil.isNotEmpty(alarm.getHistoryId())){
  108. //todo 更新历史消息
  109. }
  110. this.update(new UpdateWrapper<BusDeviceAlarmEntity>().lambda().eq(BusDeviceAlarmEntity::getId,id).set(BusDeviceAlarmEntity::getCause,cause));
  111. }
  112. /**
  113. * 查看报警数量
  114. */
  115. @Transactional(rollbackFor = Exception.class)
  116. public List<DeviceUse> selectCountAlarm(DeviceAlarmQuery query){
  117. QueryWrapper<BusHospitalEntity> busHospitalEntityQueryWrapper = new QueryWrapper<>();
  118. if(busHospitalEntityQueryWrapper.getEntity() == null) {
  119. BusHospitalEntity hospitalEntity = new BusHospitalEntity();
  120. busHospitalEntityQueryWrapper.setEntity(hospitalEntity);
  121. }
  122. if(query.getHositalName()!=null){
  123. busHospitalEntityQueryWrapper.lambda().like(BusHospitalEntity::getName,query.getHositalName());
  124. }
  125. if(query.getTenantId()!=null){
  126. busHospitalEntityQueryWrapper.getEntity().setId(query.getTenantId());
  127. }
  128. List<BusHospitalEntity> hospitalEntities = hospitalService.getBaseMapper().selectList(busHospitalEntityQueryWrapper);
  129. List<DeviceUse> deviceUseList = new ArrayList<>();
  130. // 获取 报警所有信息数量
  131. List<DeviceAlarmCountResult> alarmResults = this.baseMapper.selectAlarmCount(query);
  132. //处理报警信息
  133. Map<String,Map<String,String>> alarmMap= new HashMap<>();
  134. for (DeviceAlarmCountResult deviceAlarmResult : alarmResults
  135. ) {
  136. Map<String, String> map = alarmMap.get(deviceAlarmResult.getTenantId());
  137. if(map == null){
  138. map = new HashMap<>();
  139. for (DeviceAlarmEnum deviceAlarmEnum:
  140. DeviceAlarmEnum.values()) {
  141. map.put(deviceAlarmEnum.toString(),"0");
  142. }
  143. }
  144. map.put(deviceAlarmResult.getAlarmState().toString(),deviceAlarmResult.getAlarmCount());
  145. alarmMap.put(deviceAlarmResult.getTenantId(),map);
  146. }
  147. // 获取告警信息
  148. List<DeviceWarnCountResult> warnResults = this.baseMapper.selectWarnCount(query);
  149. //处理告警信息
  150. for (DeviceWarnCountResult deviceWarnCountResult : warnResults
  151. ) {
  152. Map<String, String> map = alarmMap.get(deviceWarnCountResult.getTenantId());
  153. if(map == null){
  154. map = new HashMap<>();
  155. for (DeviceAlarmEnum deviceAlarmEnum:
  156. DeviceAlarmEnum.values()) {
  157. map.put(deviceAlarmEnum.toString(),"0");
  158. }
  159. }
  160. map.put("warnWillFinished",deviceWarnCountResult.getWarnWillFinished());
  161. map.put("warnLowBattery",deviceWarnCountResult.getWarnLowBattery());
  162. map.put("warnAnalgesicPoor",deviceWarnCountResult.getWarnAnalgesicPoor());
  163. alarmMap.put(deviceWarnCountResult.getTenantId(),map);
  164. }
  165. // 遍历医院
  166. for (BusHospitalEntity hospital:hospitalEntities
  167. ) {
  168. DeviceUse deviceUse = new DeviceUse();
  169. deviceUse.setTenantId(hospital.getId());
  170. deviceUse.setAddress(hospital.getAddress());
  171. deviceUse.setName(hospital.getName());
  172. Map<String, String> map = alarmMap.get(hospital.getId());
  173. if (map == null){
  174. map = new HashMap<>();
  175. for (DeviceAlarmEnum deviceAlarmEnum:
  176. DeviceAlarmEnum.values()) {
  177. map.put(deviceAlarmEnum.toString(),"0");
  178. }
  179. map.put("warnWillFinished","0");
  180. map.put("warnLowBattery","0");
  181. map.put("warnAnalgesicPoor","0");
  182. }
  183. deviceUse.setMap(map);
  184. deviceUseList.add(deviceUse);
  185. }
  186. return deviceUseList;
  187. }
  188. /**
  189. * 查看报警数量
  190. */
  191. @Transactional(rollbackFor = Exception.class)
  192. public List<DeviceCountResult> selectUseDetail(BusDeviceAlarmEntity query){
  193. return this.baseMapper.selectDeviceCount(query);
  194. }
  195. }