Bläddra i källkod

优化119平台事件上报接口

Wang-Xiao-Ran 1 år sedan
förälder
incheckning
4ea165d443

+ 23 - 8
src/main/java/com/sooka/sponest/event/centereventteventcatalogue/controller/FireIncidentController.java

@@ -6,6 +6,8 @@ import com.dahuatech.icc.exception.ClientException;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.system.api.model.LoginUser;
 import com.sooka.sponest.event.centereventteventcatalogue.domain.DaHuaEventBO;
 import com.sooka.sponest.event.centereventteventcatalogue.domain.RemoteFireVO;
 import com.sooka.sponest.event.centereventteventcatalogue.domain.sensor.SensorEventVo;
@@ -107,28 +109,41 @@ public class FireIncidentController {
      * @param RemoteFireVO
      * @return
      */
-    @PostMapping("/remoteReport")
-    public AjaxResult remoteReport(@Validated @RequestBody RemoteFireVO remoteFireVO) {
+    @PostMapping("/insert3rdSystemEvent")
+    public AjaxResult insert3rdSystemEvent(@Validated @RequestBody RemoteFireVO remoteFireVO) {
+        StringBuilder eventCode = new StringBuilder();
+        //业务处理
         try {
+            // 增加判断,防止没有token时空指针异常。
+            LoginUser loginUser = SecurityUtils.getLoginUser();
+            if(StringUtils.isNull(loginUser)){
+                return AjaxResult.error(20001,"权限认证失败");
+            }
+
             //根据事件小类,反查事件大类
             CentereventTEventtype eventtype = centereventTEventtypeService.selectCentereventTEventtypeById(remoteFireVO.getEventType());
             if (StringUtils.isNull(eventtype)) {
-                return AjaxResult.error(201, "参数错误");
+                return AjaxResult.error(20002, "参数错误");
             }
             remoteFireVO.setEventSubType(eventtype.getParentId());
             //处理上报逻辑
-            String eventCode = fireIncidentService.insertFireIncident(remoteFireVO);
-            if (StringUtils.isBlank(eventCode)) {
-                eventCode = String.valueOf(System.currentTimeMillis());
+            eventCode.append(fireIncidentService.insertFireIncident(remoteFireVO, loginUser));
+        } catch (Exception e) {
+            logger.error(e.getMessage());
+            return AjaxResult.error(40001, "上报失败");
+        }
+        //写入报文
+        try{
+            if (StringUtils.isBlank(eventCode.toString())) {
+                eventCode.append(System.currentTimeMillis());
             }
             CentereventTReportmessage tReportMessage = new CentereventTReportmessage();
-            tReportMessage.setId(eventCode);
+            tReportMessage.setId(eventCode.toString());
             tReportMessage.setSource("第三方上传-" + remoteFireVO.getEventType());
             tReportMessage.setContext(JSON.toJSONString(remoteFireVO));
             centereventTReportmessageService.insertCentereventTReportmessage(tReportMessage);
         } catch (Exception e) {
             logger.error(e.getMessage());
-            return AjaxResult.error(500, "上报失败");
         }
         return AjaxResult.success("上报成功");
     }

+ 3 - 6
src/main/java/com/sooka/sponest/event/centereventteventcatalogue/domain/RemoteFireVO.java

@@ -9,6 +9,7 @@ import lombok.NoArgsConstructor;
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import java.util.Date;
+import java.util.List;
 
 @Data
 @AllArgsConstructor
@@ -45,11 +46,6 @@ public class RemoteFireVO {
     private String eventReporter;
 
     /**
-     * 联系方式
-     */
-    private String  contactNumber;
-
-    /**
      * 事件上报时间
      */
     @NotNull(message = "事件上报时间不能为空")
@@ -77,5 +73,6 @@ public class RemoteFireVO {
     /**
      * 事件图片
      */
-    private String eventPicture;
+    @NotNull(message = "事件图片不能为空")
+    private List<String> eventPicture;
 }

+ 2 - 1
src/main/java/com/sooka/sponest/event/centereventteventcatalogue/service/IFireIncidentService.java

@@ -1,7 +1,8 @@
 package com.sooka.sponest.event.centereventteventcatalogue.service;
 
+import com.ruoyi.system.api.model.LoginUser;
 import com.sooka.sponest.event.centereventteventcatalogue.domain.RemoteFireVO;
 
 public interface IFireIncidentService {
-    String insertFireIncident(RemoteFireVO remoteFireVO);
+    String insertFireIncident(RemoteFireVO remoteFireVO, LoginUser loginUser);
 }

+ 22 - 18
src/main/java/com/sooka/sponest/event/centereventteventcatalogue/service/impl/FireInsidentServiceImpl.java

@@ -2,8 +2,11 @@ package com.sooka.sponest.event.centereventteventcatalogue.service.impl;
 
 import com.alibaba.fastjson.JSON;
 import com.ruoyi.common.core.utils.DateUtils;
+import com.ruoyi.common.core.utils.SpringUtils;
 import com.ruoyi.common.core.utils.StringUtils;
-import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.common.core.utils.file.FilePrefixUtils;
+import com.ruoyi.system.api.RemoteFileService;
+import com.ruoyi.system.api.domain.SysFile;
 import com.ruoyi.system.api.model.LoginUser;
 import com.sooka.sponest.event.centereventteventcatalogue.domain.CentereventTEventcatalogue;
 import com.sooka.sponest.event.centereventteventcatalogue.domain.RemoteFireVO;
@@ -16,6 +19,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
@@ -38,18 +42,13 @@ public class FireInsidentServiceImpl implements IFireIncidentService {
      * 119平台上报事件
      *
      * @param remoteFireVO
+     * @param loginUser
      * @return
      */
     @Override
-    public String insertFireIncident(RemoteFireVO remoteFireVO) {
-        // 增加判断,防止没有token时空指针异常。
-        LoginUser loginUser = SecurityUtils.getLoginUser();
-        StringBuilder userId = new StringBuilder();
-        StringBuilder nickName = new StringBuilder();
-        if (null != loginUser) {
-            userId.append(loginUser.getSysUser().getUserId());
-            nickName.append(loginUser.getSysUser().getNickName());
-        }
+    public String insertFireIncident(RemoteFireVO remoteFireVO, LoginUser loginUser) {
+        String userId = new StringBuilder().append(loginUser.getSysUser().getUserId()).toString();
+        String nickName = new StringBuilder().append(loginUser.getSysUser().getNickName()).toString();
         // 事件目录
         CentereventTEventcatalogue eventcatalogue = new CentereventTEventcatalogue(
                 remoteFireVO.getEventSubType(),
@@ -61,19 +60,24 @@ public class FireInsidentServiceImpl implements IFireIncidentService {
                 remoteFireVO.getEventReporter(),
                 remoteFireVO.getEventReportTime(),
                 remoteFireVO.getEventLocation(),
-                REPORTING_SOURCE_5, "确认", FOREST_EVENT_STATUS_7, userId.toString(), nickName.toString(), DateUtils.getNowDate());
+                REPORTING_SOURCE_5, "签收", FOREST_EVENT_STATUS_2, userId, nickName, DateUtils.getNowDate());
         //后续应该修改为调用接口获取部门信息
-        List<CenterdataTAidevicedept> listDept = new ArrayList();
-        listDept.add(new CenterdataTAidevicedept(3777L, "市消防救援支队"));
+        List<CenterdataTAidevicedept> listDept = new ArrayList<>();
+        listDept.add(new CenterdataTAidevicedept(loginUser.getSysUser().getDeptId(), loginUser.getSysUser().getDeptNames()));
         String logId = alarmEventService.getFunction(eventcatalogue, listDept);
-        if (StringUtils.isNotBlank(remoteFireVO.getEventPicture())) {
-            String[] pictures = remoteFireVO.getEventPicture().split(",");
-            // 添加新附件
+
+
+
+        if(StringUtils.isNotEmpty(remoteFireVO.getEventPicture())){
             List<CenterdataTAttach> attachList = new ArrayList<>();
-            for (String picture : pictures) {
+            for (String picture : remoteFireVO.getEventPicture()) {
+
+                MultipartFile multipartFile = FilePrefixUtils.urlToMultipartFile(picture, System.currentTimeMillis() + ".jpg");
+                SysFile sysFile = SpringUtils.getBean(RemoteFileService.class).upload(multipartFile).getData();
+
                 CenterdataTAttach tAttach = new CenterdataTAttach();
                 tAttach.setBusId(logId);
-                tAttach.setAttachPath(picture);
+                tAttach.setAttachPath(sysFile.getUrl());
                 tAttach.setBusIndx(BUS_INDEX_1);
                 tAttach.setBusSource("platform - 119");
                 tAttach.setFileType(FILE_TYPE_1);