Explorar o código

优化sql语句

18339543638 hai 1 ano
pai
achega
a7392ffab1

+ 8 - 0
nb-service/web-service/src/main/java/com/nb/web/service/bus/controller/BusDeviceController.java

@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.core.mapper.Mapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.nb.web.api.feign.query.AlarmQuery;
+import com.nb.web.service.bus.controller.vo.BusHospitalCodeAndAliasVO;
 import com.nb.web.service.bus.controller.vo.DeviceBindVo;
 import com.nb.web.api.entity.BusDeviceEntity;
 import com.nb.web.api.enums.DeviceAlarmEnum;
@@ -178,4 +179,11 @@ public class BusDeviceController implements
     public R<String> hospitalCode(@RequestBody String deviceId){
         return R.success(deviceService.hospitalCode(deviceId));
     }
+
+    @PostMapping("/hospitalCodeAndAlias")
+    @SaIgnore
+    @ApiOperation(value = "根据设备id查询设备所在的医院编码")
+    public R<BusHospitalCodeAndAliasVO> hospitalCodeAndAlias(@RequestBody String deviceId){
+        return R.success(deviceService.hospitalCodeAndAlias(deviceId));
+    }
 }

+ 16 - 0
nb-service/web-service/src/main/java/com/nb/web/service/bus/controller/vo/BusHospitalCodeAndAliasVO.java

@@ -0,0 +1,16 @@
+package com.nb.web.service.bus.controller.vo;
+
+import lombok.Data;
+
+/**
+ * @ClassName : BusHospitalCodeAndAliasVO
+ * @Description :
+ * @Author : LF
+ * @Date: 2024年08月21日
+ */
+@Data
+public class BusHospitalCodeAndAliasVO {
+    private String hospitalCode;
+
+    private String alias;
+}

+ 3 - 0
nb-service/web-service/src/main/java/com/nb/web/service/bus/mapper/BusDeviceMapper.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.nb.web.api.entity.BusDeviceEntity;
+import com.nb.web.service.bus.controller.vo.BusHospitalCodeAndAliasVO;
 import com.nb.web.service.bus.service.dto.DeviceQuery;
 import com.nb.web.service.bus.service.dto.DeviceResult;
 import org.apache.ibatis.annotations.Mapper;
@@ -44,4 +45,6 @@ public interface BusDeviceMapper extends BaseMapper<BusDeviceEntity> {
     List<BusDeviceEntity> ignoreLogicAll(@Param("ids") Set<String> pollDeviceIds);
 
     String hospitalCode(@Param("deviceId") String deviceId);
+
+    BusHospitalCodeAndAliasVO hospitalCodeAndAlias(@Param("deviceId")String deviceId);
 }

+ 5 - 0
nb-service/web-service/src/main/java/com/nb/web/service/bus/service/LocalBusDeviceService.java

@@ -21,6 +21,7 @@ import com.nb.web.api.feign.query.PatientMonitorQuery;
 import com.nb.web.api.feign.result.PatientMonitorResult;
 import com.nb.web.api.utils.Constants;
 import com.nb.web.api.bean.AliIotConfig;
+import com.nb.web.service.bus.controller.vo.BusHospitalCodeAndAliasVO;
 import com.nb.web.service.bus.entity.BusPatientEntity;
 import com.nb.web.service.bus.registry.constant.DeviceKeyConstant;
 import com.nb.web.service.bus.registry.device.DeviceRegistry;
@@ -448,4 +449,8 @@ public class LocalBusDeviceService extends BaseService<BusDeviceMapper, BusDevic
                         .collect(Collectors.toList()))
                 .set(BusClinicEntity::getFinished,true));
     }
+
+    public BusHospitalCodeAndAliasVO hospitalCodeAndAlias(String deviceId){
+        return baseMapper.hospitalCodeAndAlias(deviceId);
+    }
 }

+ 73 - 50
nb-service/web-service/src/main/java/com/nb/web/service/bus/service/LocalBusHospitalService.java

@@ -3,7 +3,12 @@ package com.nb.web.service.bus.service;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.crypto.digest.DigestUtil;
+import cn.hutool.http.HttpUtil;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -21,6 +26,7 @@ import com.nb.web.service.bus.hospital.his.strategy.HisStrategyEnum;
 import com.nb.web.service.bus.mapper.BusHospitalMapper;
 import com.nb.web.service.bus.service.constant.LocalBusConAlarmService;
 import com.nb.web.service.bus.service.constant.LocalBusConMixService;
+import com.nb.web.service.bus.service.dto.IotHospitalAddDTO;
 import com.nb.web.service.bus.utils.CodeUtils;
 import com.nb.core.cache.ConfigStorage;
 import com.nb.core.cache.manager.ConfigStorageManager;
@@ -142,61 +148,78 @@ public class LocalBusHospitalService extends BaseService<BusHospitalMapper, BusH
 
     @Override
     public void postSave(BusHospitalEntity entity) {
-        CompletableFuture.runAsync(()->{
-            List<BusHospitalConfigEntity> configs =
-                    configService.list(new QueryWrapper<BusHospitalConfigEntity>().lambda()
-                            .or()
-                            .eq(BusHospitalConfigEntity::getTenantId, 1));
-            configs.forEach(config->{
-                config.setId(null);
-                config.setTenantId(entity.getId());
-            });
-            configService.saveBatch(configs);
-
-            //设置默认更新策略
-            HisUpdateEntity updateConfig = entity.getUpdateConfig();
-            if(updateConfig!=null){
-                hospitalManagerRegister.get(entity.getId()).refreshUpdateConfig(updateConfig);
-            }
 
-            //设置默认管理员角色
-            SysRole sysRole = new SysRole();
-            sysRole.setTenantId(entity.getId());
-            sysRole.setRoleName("超级管理员");
-            sysRole.setDataScope("1");
-            sysRole.setRoleCode("admin");
-            sysRole.setRemarks("超级管理员角色,不可编辑,不可删除");
-            sysRoleService.save(sysRole);
-            nameCache.setConfig(entity.getId(),entity.getName());
+        List<BusHospitalConfigEntity> configs =
+                configService.list(new QueryWrapper<BusHospitalConfigEntity>().lambda()
+                        .or()
+                        .eq(BusHospitalConfigEntity::getTenantId, 1));
+        configs.forEach(config->{
+            config.setId(null);
+            config.setTenantId(entity.getId());
+        });
+        configService.saveBatch(configs);
 
-            //设置默认常量信息
-            List<BusConMixEntity> drugCons = conMixService.list(new QueryWrapper<BusConMixEntity>()
-                    .lambda().eq(BusConMixEntity::getTenantId, "1")
-                    .eq(BusConMixEntity::getType, ConstantMixEnum.drugCate));
-            if(CollUtil.isNotEmpty(drugCons)){
-                conMixService.saveBatch(drugCons.stream().peek(mix->{
-                    mix.setId(null);
-                    mix.setTenantId(entity.getId());
-                }).collect(Collectors.toSet()));
-            }
+        //设置默认更新策略
+        HisUpdateEntity updateConfig = entity.getUpdateConfig();
+        if(updateConfig!=null){
+            hospitalManagerRegister.get(entity.getId()).refreshUpdateConfig(updateConfig);
+        }
 
-            //设置默认报警原因
-            List<BusConAlarmEntity> alarmCauses = conAlarmService.list(new QueryWrapper<BusConAlarmEntity>()
-                    .lambda().eq(BusConAlarmEntity::getTenantId, "1"));
-            if (CollUtil.isNotEmpty(alarmCauses)) {
-                conAlarmService.saveBatch(alarmCauses.stream().peek(alarmCause->{
-                    alarmCause.setId(null);
-                    alarmCause.setTenantId(entity.getId());
-                }).collect(Collectors.toSet()));
-            }
-        })
-                .whenComplete((i,e)->{
-                    if(e!=null){
-                        log.error("新增医院默认配置失败,",e);
-                    }
-                });
+        //设置默认管理员角色
+        SysRole sysRole = new SysRole();
+        sysRole.setTenantId(entity.getId());
+        sysRole.setRoleName("超级管理员");
+        sysRole.setDataScope("1");
+        sysRole.setRoleCode("admin");
+        sysRole.setRemarks("超级管理员角色,不可编辑,不可删除");
+        sysRoleService.save(sysRole);
+        nameCache.setConfig(entity.getId(),entity.getName());
+
+        //设置默认常量信息
+        List<BusConMixEntity> drugCons = conMixService.list(new QueryWrapper<BusConMixEntity>()
+                .lambda().eq(BusConMixEntity::getTenantId, "1")
+                .eq(BusConMixEntity::getType, ConstantMixEnum.drugCate));
+        if(CollUtil.isNotEmpty(drugCons)){
+            conMixService.saveBatch(drugCons.stream().peek(mix->{
+                mix.setId(null);
+                mix.setTenantId(entity.getId());
+            }).collect(Collectors.toSet()));
+        }
+
+        //设置默认报警原因
+        List<BusConAlarmEntity> alarmCauses = conAlarmService.list(new QueryWrapper<BusConAlarmEntity>()
+                .lambda().eq(BusConAlarmEntity::getTenantId, "1"));
+        if (CollUtil.isNotEmpty(alarmCauses)) {
+            conAlarmService.saveBatch(alarmCauses.stream().peek(alarmCause->{
+                alarmCause.setId(null);
+                alarmCause.setTenantId(entity.getId());
+            }).collect(Collectors.toSet()));
+        };
+
+        sendIotAddHospital(entity);
     }
 
+    private void sendIotAddHospital(BusHospitalEntity source){
+        IotHospitalAddDTO sendMsg = new IotHospitalAddDTO();
+        sendMsg.setCode(source.getCode());
+        sendMsg.setUsername(source.getName());
+        sendMsg.setMobile(RandomUtil.randomNumbers(11));
+        sendMsg.setEmail(source.getEmail());
+        sendMsg.setRegionCode(source.getAreaCode());
+        String content= new StringBuffer(sendMsg.getUsername()).append("&").append("yunzhineng").toString();
+        sendMsg.setMd5(DigestUtil.md5Hex(content));
+        try {
+            String post = HttpUtil.post("https://iot.tuoren.com/forward-service/open/addUser", JSONUtil.toJsonStr(sendMsg));
+            JSONObject jsonObject = JSONUtil.parseObj(post);
+            if("1".equals(jsonObject.getStr("code"))){
+                throw new RuntimeException("新增失败,"+jsonObject.getStr("msg"));
+            }
+        }catch (Exception e){
+            log.error("iot.tuoren.com : 医院["+ source.getName()+"]新增失败",e);
+        }
+
+
+    }
     @Override
     public void postUpdate(BusHospitalEntity entity) {
         hospitalManagerRegister.refresh(entity.getId(),true,null!=entity.getScript());

+ 20 - 0
nb-service/web-service/src/main/java/com/nb/web/service/bus/service/dto/IotHospitalAddDTO.java

@@ -0,0 +1,20 @@
+package com.nb.web.service.bus.service.dto;
+
+import lombok.Data;
+
+/**
+ * @ClassName : IotBusAddEntity
+ * @Description :
+ * @Author : LF
+ * @Date: 2024年08月21日
+ */
+@Data
+public class IotHospitalAddDTO {
+    private String username;
+    private String mobile;
+    private String email;
+    private String code;
+    private String regionCode;
+
+    private String md5;
+}

+ 25 - 13
nb-service/web-service/src/main/resources/mapper/bus/BusDeviceMapper.xml

@@ -97,20 +97,20 @@
 
     <select id="view" resultMap="pageQueryResult">
         select
-        d.id as id,
-        d.device_id as device_id,
-        d.version as version,
-        d.alias as alias,
-        ifnull(i.type,0) as type,
-        d.config as config,
-        d.product_no as product_no,
-        d.create_time as create_time,
-        d.update_time as update_time,
-        d.tenant_id as tenant_id
+            d.id as id,
+            d.device_id as device_id,
+            d.version as version,
+            d.alias as alias,
+            ifnull(i.type,0) as type,
+            d.config as config,
+            d.product_no as product_no,
+            d.create_time as create_time,
+            d.update_time as update_time,
+            d.tenant_id as tenant_id
         from (select * from bus_device where id=#{id})
-         AS d
-        LEFT JOIN (select * from bus_infusion_history) as i
-        on i.id=d.infusion_id
+                 AS d
+                 LEFT JOIN (select * from bus_infusion_history) as i
+                           on i.id=d.infusion_id
         order by d.create_time desc
     </select>
 
@@ -129,4 +129,16 @@
     <select id="hospitalCode" resultType="java.lang.String">
         select  bh.code from  bus_device as bd join bus_hospital as bh on bd.tenant_id = bh.tenant_id  where bd.device_id = #{deviceId}
     </select>
+
+
+    <resultMap id="hospitalCodeAndAliasResult" type="com.nb.web.service.bus.controller.vo.BusHospitalCodeAndAliasVO">
+        <result column="code" property="hospitalCode"/>
+        <result column="alias" property="alias"/>
+    </resultMap>
+
+    <select id="hospitalCodeAndAlias" resultMap="hospitalCodeAndAliasResult">
+        select  bh.code as code,
+                bd.alias as alias
+        from  bus_device as bd join bus_hospital as bh on bd.tenant_id = bh.tenant_id  where bd.device_id = #{deviceId}
+    </select>
 </mapper>