Pārlūkot izejas kodu

第三方报警接口开发

gao.qiang 2 gadi atpakaļ
vecāks
revīzija
c2dd614969

+ 52 - 0
business-service/src/main/java/com/ozs/entity/MsgAlarmExt.java

@@ -0,0 +1,52 @@
+package com.ozs.entity;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModel;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+/**
+ * <p>
+ * 报警扩展表
+ * </p>
+ *
+ * @author ozs
+ * @since 2023-04-10
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+@ApiModel("报警扩展表")
+public class MsgAlarmExt implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 报警唯一标识UUID
+     */
+    private String alarmId;
+
+    /**
+     * 1图片;2声音;3视频;4.录制视频的地址
+     */
+    private Integer alarmAttType;
+
+    /**
+     * 存储路径
+     */
+    private String alarmAttPath;
+
+
+}

+ 23 - 0
business-service/src/main/java/com/ozs/entity/vo/Files.java

@@ -0,0 +1,23 @@
+package com.ozs.entity.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author Administrator
+ * 报警附件
+ */
+@Data
+public class Files implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    /**
+     * 上传文件地址
+     */
+    public String fileUrl;
+    /**
+     * 1图片;2声音;3视频
+     */
+    public Integer fileType;
+}

+ 71 - 0
business-service/src/main/java/com/ozs/entity/vo/ReqMsgAlarmVo.java

@@ -0,0 +1,71 @@
+package com.ozs.entity.vo;
+
+import lombok.Data;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author Administrator
+ * 报警信息请求参数
+ */
+@Data
+public class ReqMsgAlarmVo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 报警里程位置
+     */
+    private Integer alarmMile;
+
+    /**
+     * 报警行别
+     */
+    private Integer lineDir;
+
+    /**
+     * 报警线路编码
+     */
+    private String alarmRailway;
+
+    /**
+     * 报警的唯一标识
+     */
+    private String alarmId;
+
+    /**
+     * 报警时间
+     */
+    private Long alarmTime;
+
+    /**
+     * 报警内容
+     */
+    private String content;
+
+    /**
+     * 报警病害类型(1泥石流2异物侵线 3断轨监测)
+     */
+    private Integer alarmType;
+
+    /**
+     * 报警级别
+     */
+    private Integer alarmLevel;
+
+    /**
+     * 报警置信度(百分比)
+     */
+    private Integer alarmConfidence;
+
+
+    /**
+     * 报警病害属性(可以给出泥石流的框定范围)
+     */
+    private String alarmAttr;
+
+    /**
+     * 报警附件集合
+     */
+    private Files[] files;
+}

+ 27 - 0
business-service/src/main/java/com/ozs/entity/vo/RespGeoHazardMonitorVo.java

@@ -0,0 +1,27 @@
+package com.ozs.entity.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 地址灾害获取token返回参数
+ * @author Administrator
+ */
+@Data
+public class RespGeoHazardMonitorVo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    /**
+     * 访问令牌
+     */
+    private String accessToken;
+    /**
+     * 过期时间,单位秒
+     */
+    private Long expiresIn;
+    /**
+     * 令牌类型
+     */
+    private String  tokenType;
+}

+ 35 - 0
business-service/src/main/java/com/ozs/entity/vo/RespMsgAlarmVo.java

@@ -0,0 +1,35 @@
+package com.ozs.entity.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author Administrator
+ * 报警信息请求参数
+ */
+@Data
+public class RespMsgAlarmVo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    private String alarmId;
+
+    /**
+     * 报警解除时间
+     */
+    private Long cancelTime;
+
+    /**
+     * 相机编码
+     */
+    private String cameraCode;
+
+    /**
+     * 报警是否解除 1已解除2未解除
+     */
+    private Integer isCancel;
+}

+ 16 - 0
business-service/src/main/java/com/ozs/mapper/MsgAlarmExtMapper.java

@@ -0,0 +1,16 @@
+package com.ozs.mapper;
+
+import com.ozs.entity.MsgAlarmExt;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author ozs
+ * @since 2023-04-10
+ */
+public interface MsgAlarmExtMapper extends BaseMapper<MsgAlarmExt> {
+
+}

+ 16 - 0
business-service/src/main/java/com/ozs/service/MsgAlarmExtService.java

@@ -0,0 +1,16 @@
+package com.ozs.service;
+
+import com.ozs.entity.MsgAlarmExt;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author ozs
+ * @since 2023-04-10
+ */
+public interface MsgAlarmExtService extends IService<MsgAlarmExt> {
+
+}

+ 20 - 0
business-service/src/main/java/com/ozs/service/impl/MsgAlarmExtServiceImpl.java

@@ -0,0 +1,20 @@
+package com.ozs.service.impl;
+
+import com.ozs.entity.MsgAlarmExt;
+import com.ozs.mapper.MsgAlarmExtMapper;
+import com.ozs.service.MsgAlarmExtService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author ozs
+ * @since 2023-04-10
+ */
+@Service
+public class MsgAlarmExtServiceImpl extends ServiceImpl<MsgAlarmExtMapper, MsgAlarmExt> implements MsgAlarmExtService {
+
+}

+ 2 - 2
business-service/src/main/java/com/ozs/utils/CodeGet.java

@@ -19,7 +19,7 @@ public class CodeGet {
         // 2、全局配置
         // 全局配置
         GlobalConfig gc = new GlobalConfig();
-        gc.setOutputDir("/Users/sunhuanhuan/Documents/project/106/project/VehicleMonitor/business-service/src/main/java");
+        gc.setOutputDir("D://机车/business-service/src/main/java");
 
         // IUserService
         gc.setServiceName("%sService");	//去掉Service接口的首字母I
@@ -48,7 +48,7 @@ public class CodeGet {
         // 5、策略配置
         StrategyConfig strategy = new StrategyConfig();
 
-        strategy.setInclude("msg_alarm");
+        strategy.setInclude("msg_alarm_ext");
 
         strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略
 

+ 5 - 0
business-service/src/main/resources/mapper/MsgAlarmExtMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ozs.mapper.MsgAlarmExtMapper">
+
+</mapper>

+ 269 - 0
vehicle-admin/src/main/java/com/ozs/web/controller/sdk/GeoHazardMonitorTokenController.java

@@ -0,0 +1,269 @@
+package com.ozs.web.controller.sdk;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ozs.common.utils.ApiTokenUtils;
+import com.ozs.common.utils.HttpClientUtil;
+import com.ozs.common.utils.StringUtils;
+import com.ozs.common.utils.stateSecrets.SM4Utils;
+import com.ozs.entity.BaseCameraManagement;
+import com.ozs.entity.BaseDeviceDynamicManagement;
+import com.ozs.entity.BaseUser;
+import com.ozs.entity.MsgAlarm;
+import com.ozs.entity.MsgAlarmExt;
+import com.ozs.entity.MsgAlarmFrequency;
+import com.ozs.entity.SvcAddress;
+import com.ozs.entity.vo.Files;
+import com.ozs.entity.vo.ReqMsgAlarmVo;
+import com.ozs.entity.vo.RespGeoHazardMonitorVo;
+import com.ozs.entity.vo.RespMsgAlarmVo;
+import com.ozs.service.BaseCameraManagementService;
+import com.ozs.service.BaseDeviceDynamicManagementService;
+import com.ozs.service.BaseUserService;
+import com.ozs.service.MsgAlarmExtService;
+import com.ozs.service.MsgAlarmFrequencyService;
+import com.ozs.service.MsgAlarmService;
+import com.ozs.service.SvcAddressService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ObjectUtils;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 1. 获取身份认证控制层
+ *
+ * @author Administrator
+ */
+@RestController
+@Slf4j
+public class GeoHazardMonitorTokenController {
+    public static final String PATTERN = "^([0-9]+),([0-9]+),([0-9]+),([0-9]+),([0-9]+),([0-9]+)$";
+    @Resource
+    private ApiTokenUtils apiTokenUtils;
+    @Resource
+    BaseDeviceDynamicManagementService baseDeviceDynamicManagementService;
+    @Autowired
+    MsgAlarmService msgAlarmService;
+    @Autowired
+    MsgAlarmFrequencyService msgAlarmFrequencyService;
+    @Autowired
+    SvcAddressService svcAddressService;
+    @Autowired
+    BaseCameraManagementService baseCameraManagementService;
+    //    @Value("${sdk.publish}")
+//    private String sdkUrl;
+    @Autowired
+    private BaseUserService baseUserService;
+    @Autowired
+    private MsgAlarmExtService msgAlarmExtService;
+
+    /**
+     * 获取web访问令牌
+     *
+     * @return
+     */
+    @PostMapping("/api/token")
+    public String getWebToken(@RequestBody SvcAddress svcAddress) {
+        // 生成令牌
+        JSONObject jsonObject = new JSONObject();
+        LambdaQueryWrapper<SvcAddress> lw = new LambdaQueryWrapper<SvcAddress>();
+        if (!ObjectUtils.isEmpty(svcAddress.getClientId())) {
+            lw.eq(SvcAddress::getClientId, svcAddress.getClientId());
+        } else {
+            jsonObject.put("resultCode", 0);
+            jsonObject.put("message", "失败");
+            jsonObject.put("data", "客户端编号不能为空");
+            return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
+        }
+        SvcAddress serviceOne = svcAddressService.getOne(lw);
+        if (!ObjectUtils.isEmpty(serviceOne)) {
+            String clientSecret = SM4Utils.decryptData_ECB(serviceOne.getClientSecret(), "4370780c9a8c43e5");
+            if (clientSecret.equals(svcAddress.getClientSecret())) {
+                ArrayList<String> objects = apiTokenUtils.createGeoHazardMonitorToken(svcAddress.getGrantType(), svcAddress.getClientId(), svcAddress.getClientSecret());
+                if (objects.size() > 0) {
+                    RespGeoHazardMonitorVo respGeoHazardMonitorVo = new RespGeoHazardMonitorVo();
+                    respGeoHazardMonitorVo.setAccessToken(objects.get(1));
+                    Long l = Long.valueOf(objects.get(0));
+                    respGeoHazardMonitorVo.setExpiresIn(l / 1000);
+                    respGeoHazardMonitorVo.setTokenType("令牌类型");
+                    jsonObject.put("resultCode", 1);
+                    jsonObject.put("message", "成功");
+                    jsonObject.put("data", respGeoHazardMonitorVo);
+                    return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
+                } else {
+                    jsonObject.put("resultCode", 0);
+                    jsonObject.put("message", "失败");
+                    jsonObject.put("data", "生成token失败");
+                    return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
+                }
+            } else {
+                jsonObject.put("resultCode", 0);
+                jsonObject.put("message", "失败");
+                jsonObject.put("data", "客户端密钥错误");
+                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
+            }
+        } else {
+            jsonObject.put("resultCode", 0);
+            jsonObject.put("message", "失败");
+            jsonObject.put("data", "参数验证失败");
+            return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
+        }
+    }
+
+    /**
+     * 报警信息数据传输
+     */
+    @PostMapping("/api/alarm")
+    @Transactional
+    public String alarm(@RequestParam("parameter") String parameter, HttpServletRequest request) {
+        String token = apiTokenUtils.getGeoHazardMonitorToken(request);
+        log.info("token:{}", token);
+        log.info("parameter:{}", parameter);
+        JSONObject jsonObject = new JSONObject();
+        if (StringUtils.isNotEmpty(token)) {
+            String s = SM4Utils.decryptData_ECB(parameter, "4370780c9a8c43e5");
+            ReqMsgAlarmVo reqMsgAlarmVo = JSON.parseObject(s, ReqMsgAlarmVo.class);
+            if (!ObjectUtils.isEmpty(reqMsgAlarmVo.getAlarmAttr())) {
+                if (!reqMsgAlarmVo.getAlarmAttr().matches(PATTERN)) {
+                    jsonObject.put("resultCode", 0);
+                    jsonObject.put("message", "失败");
+                    jsonObject.put("data", "你填写的报警病害属性不符合规则!!!");
+                    return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
+                }
+            }
+            if (reqMsgAlarmVo.getAlarmTime().toString().length() == 10) {
+                reqMsgAlarmVo.setAlarmTime(reqMsgAlarmVo.getAlarmTime() * 1000);
+            }
+            log.info("reqMsgAlarmVo:{}", reqMsgAlarmVo);
+
+//            RespMsgAlarmVo respMsgAlarmVo = new RespMsgAlarmVo();
+//            LambdaQueryWrapper<BaseCameraManagement> wrapper = new LambdaQueryWrapper<BaseCameraManagement>();
+//            if (!ObjectUtils.isEmpty(reqMsgAlarmVo.getAlarmMile())) {
+//                wrapper.ge(BaseCameraManagement::getBeginMile, reqMsgAlarmVo.getAlarmMile());
+//                wrapper.le(BaseCameraManagement::getEndMile, reqMsgAlarmVo.getAlarmMile());
+//            }
+//            List<BaseCameraManagement> baseCameraManagementList = baseCameraManagementService.list(wrapper);
+//            log.info("baseCameraManagement:{}", baseCameraManagementList);
+//            if (baseCameraManagementList.size() <= 0) {
+//                jsonObject.put("resultCode", 0);
+//                jsonObject.put("message", "失败");
+//                jsonObject.put("data", "报警里程位置没有可用的相机!!!");
+//                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
+//            }
+            //todo 需要根据报警里程位置  拉取相机的录制视频
+            LambdaQueryWrapper<MsgAlarm> lw = new LambdaQueryWrapper<MsgAlarm>();
+            if (!ObjectUtils.isEmpty(reqMsgAlarmVo.getAlarmId())) {
+                lw.eq(MsgAlarm::getAlarmId, reqMsgAlarmVo.getAlarmId());
+            }
+            MsgAlarm alarm = msgAlarmService.getOne(lw);
+            log.info("alarm:{}", alarm);
+            BaseUser admin = baseUserService.getUserName("admin");
+            MsgAlarmFrequency msgAlarmVice = new MsgAlarmFrequency();
+            if (ObjectUtils.isEmpty(alarm)) {
+                MsgAlarm msgAlarm = new MsgAlarm();
+                BeanUtils.copyProperties(reqMsgAlarmVo, msgAlarm);
+                BeanUtils.copyProperties(reqMsgAlarmVo, msgAlarmVice);
+                msgAlarm.setCreateBy(admin.getUserId());
+                msgAlarm.setUpdateBy(admin.getUserId());
+                log.info("时间++++ long ---- " + reqMsgAlarmVo.getAlarmTime());
+                log.info("时间++++" + new Date(reqMsgAlarmVo.getAlarmTime()));
+                msgAlarm.setAlarmTime(new Date(reqMsgAlarmVo.getAlarmTime()));
+                log.info("时间++++get" + msgAlarm.getAlarmTime());
+                msgAlarm.setRailwayCode(reqMsgAlarmVo.getAlarmRailway());
+                msgAlarmService.save(msgAlarm);
+                Files[] files1 = reqMsgAlarmVo.getFiles();
+                if (files1.length > 0) {
+                    for (int i = 0; i < files1.length; i++) {
+                        MsgAlarmExt msgAlarmExt = new MsgAlarmExt();
+                        msgAlarmExt.setAlarmId(msgAlarm.getAlarmId());
+                        msgAlarmExt.setAlarmAttPath(files1[i].fileUrl);
+                        msgAlarmExt.setAlarmAttType(files1[i].fileType);
+                        msgAlarmExtService.save(msgAlarmExt);
+                    }
+                }
+                msgAlarmVice.setCreateBy(admin.getUserId());
+                msgAlarmVice.setUpdateBy(admin.getUserId());
+                msgAlarmVice.setRailwayCode(reqMsgAlarmVo.getAlarmRailway());
+                msgAlarmVice.setAlarmTime(new Date(reqMsgAlarmVo.getAlarmTime()));
+                msgAlarmFrequencyService.save(msgAlarmVice);
+//                        respMsgAlarmVo.setAlarmId(reqMsgAlarmVo.getAlarmId());
+//                        respMsgAlarmVo.setIsCancel(2);
+//                        respMsgAlarmVo.setCancelTime(null);
+
+            } else {
+                BeanUtils.copyProperties(reqMsgAlarmVo, msgAlarmVice);
+                msgAlarmVice.setCreateBy(admin.getUserId());
+                msgAlarmVice.setUpdateBy(admin.getUserId());
+                msgAlarmVice.setAlarmTime(new Date(reqMsgAlarmVo.getAlarmTime()));
+                msgAlarmVice.setRailwayCode(reqMsgAlarmVo.getAlarmRailway());
+                msgAlarmFrequencyService.save(msgAlarmVice);
+//                respMsgAlarmVo.setAlarmId(reqMsgAlarmVo.getAlarmId());
+//                respMsgAlarmVo.setCameraCode(reqMsgAlarmVo.getAlarmCamera());
+//                respMsgAlarmVo.setIsCancel(alarm.getIsRelease());
+//                if (!ObjectUtils.isEmpty(alarm.getReleasedTime())) {
+//                    respMsgAlarmVo.setCancelTime(alarm.getReleasedTime().getTime());
+//                }
+//                respMsgAlarmVo.setCancelTime(null);
+            }
+//            try {
+//                MsgAlarm alarms = msgAlarmService.getOne(lw);
+//                log.info("sdkUrl:{}", sdkUrl);
+//                log.info("alarmJSON :{}", JSON.toJSONString(alarms));
+////                String result = HttpClientUtil.postJson(sdkUrl, JSON.toJSONString(alarms));
+////                log.info("result:{}", result);
+//            } catch (Exception e) {
+//                log.info(e.getMessage());
+//                e.printStackTrace();
+//                jsonObject.put("resultCode", 0);
+//                jsonObject.put("message", "失败");
+//                jsonObject.put("data", "消息推送失败");
+//                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
+//            }
+            jsonObject.put("resultCode", 1);
+            jsonObject.put("message", "成功");
+            jsonObject.put("data", null);
+            return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
+        } else {
+            jsonObject.put("resultCode", 2);
+            jsonObject.put("message", "失败");
+            jsonObject.put("data", "token验证失败");
+            return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
+        }
+    }
+
+    public static void main(String[] args) {
+        JSONObject res = new JSONObject();
+        Files[] files = new Files[1];
+        files[0] = new Files();
+        files[0].fileUrl = "/1244/1/25/2023-03-03/63a1fe3084f24928915dafcf8a47a925.png";
+        files[0].fileType = 1;
+        res.put("alarmMile", 14000);
+        res.put("lineDir", 1);
+        res.put("alarmRailway", "G502");
+        res.put("alarmId", "42010001541320001115");
+        res.put("alarmTime", 1681183564L);
+        res.put("content", "报警内容");
+        res.put("alarmType", 1);
+        res.put("alarmLevel", 2);
+        res.put("alarmConfidence", 1);
+        res.put("alarmAttr", "1280,1280,80,0,738,660");
+        res.put("files", files);
+        String s = SM4Utils.encryptData_ECB(JSONObject.toJSONString(res), "4370780c9a8c43e5");
+        System.out.println(s);
+
+    }
+}

+ 82 - 0
vehicle-admin/src/main/java/com/ozs/web/controller/sdk/UploadController.java

@@ -0,0 +1,82 @@
+package com.ozs.web.controller.sdk;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ozs.common.utils.MinioUtils;
+import com.ozs.common.utils.StringUtils;
+import com.ozs.common.utils.stateSecrets.SM4Utils;
+import com.ozs.common.utils.uuid.IdUtils;
+import com.ozs.entity.BaseCameraManagement;
+import com.ozs.service.BaseCameraManagementService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.util.ObjectUtils;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+public class UploadController {
+
+    @Value("${minio.bucketName}")
+    private String bucketName;
+
+    @Resource
+    MinioUtils minioUtils;
+    @Autowired
+    BaseCameraManagementService baseCameraManagementService;
+    @Value("${base.imgUrl}")
+    private String imgUrl;
+
+
+    @PostMapping("/api/putFile")
+    public JSONObject upLoadImage(@RequestParam("stream") MultipartFile stream,
+                                  @RequestParam(value = "size", required = false) Long size,
+                                  @RequestParam(value = "contentType", required = false) String contentType,
+                                  @RequestParam(value = "alarmMile", required = false) Integer alarmMile,
+                                  @RequestParam(value = "alarmRailway", required = false) String alarmRailway,
+                                  @RequestParam(value = "lineDir", required = false) Integer lineDir) throws Exception {
+
+        JSONObject jsonObject = new JSONObject();
+        if (stream.isEmpty()) {
+            jsonObject.put("resultCode", 2);
+            jsonObject.put("message", "失败");
+            jsonObject.put("data", "不能上传空文件哦");
+            return jsonObject;
+        }
+        //图片保存路径
+        //String fileUploadPath ="/"+userId+"/image";
+        String uploadFile = null;
+        if (stream != null && !stream.isEmpty()) {
+
+            String imageName = stream.getOriginalFilename();
+            if (StringUtils.isNotBlank(imageName)) {
+                String filename = IdUtils.fastSimpleUUID() + stream.getOriginalFilename().substring(stream.getOriginalFilename().lastIndexOf("."));
+                SimpleDateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd");
+                String format1 = dateFormat1.format(new Date());
+                String imgName = alarmRailway + "/" + lineDir + "/" + alarmMile + "/" + format1 + "/" + filename;
+                minioUtils.minIoClientUpload(stream.getInputStream(), imgName);
+                uploadFile = imgUrl+"/" + alarmRailway + "/" + lineDir + "/" + alarmMile + "/" + format1 + "/" + filename;
+            }
+        } else {
+            jsonObject.put("resultCode", 2);
+            jsonObject.put("message", "失败");
+            jsonObject.put("data", "图片为null");
+            return jsonObject;
+        }
+        Map<String, Object> map = new HashMap<>();
+        map.put("url", uploadFile);
+        jsonObject.put("resultCode", 1);
+        jsonObject.put("message", "成功");
+        jsonObject.put("data", map);
+        return jsonObject;
+    }
+}

+ 10 - 2
vehicle-admin/src/main/java/com/ozs/web/controller/system/SysUserController.java

@@ -66,6 +66,8 @@ public class SysUserController extends BaseController {
     private String defaultPassword;
     @Autowired
     private DataScoreUtil dataScoreUtil;
+    @Autowired
+    private ISysDictTypeService dictTypeService;
 //    @Resource
 //    private BaseUserService baseUserService;
 //    /**
@@ -152,11 +154,17 @@ public class SysUserController extends BaseController {
     @PreAuthorize("@ss.hasPermi('system:user:import')")
     @PostMapping("/importData")
     public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception {
+        String password=null;
         ExcelUtil<SysUsers> util = new ExcelUtil<SysUsers>(SysUsers.class);
         List<SysUsers> userList = util.importExcel(file.getInputStream());
         String userId = getUserId();
-        // todo 修改为 从字典中取默认密码
-        String message = userService.importUser(userList, updateSupport, userId, "123456");
+        List<SysDictData> data = dictTypeService.selectDictDataByType("default_password");
+        if(!ObjectUtils.isEmpty(data.get(0).getDictValue())){
+            password=data.get(0).getDictValue();
+        }else {
+            password=defaultPassword;
+        }
+        String message = userService.importUser(userList, updateSupport, userId, password);
         return success(message);
     }
 

+ 2 - 0
vehicle-admin/src/main/resources/application.yml

@@ -16,6 +16,8 @@ base:
   captchaType: math
 #  sqlType: kingbasees  # 数据库类型
   dbname: vehicle #数据库名
+  #图片路径前缀
+  imgUrl: http://124.71.171.71:18801/picbucket
 
 server:
   # 服务器的HTTP端口,默认为8080