Explorar o código

车载终端 导入导出下载模版

sunhh %!s(int64=2) %!d(string=hai) anos
pai
achega
8a578c9cb6

+ 9 - 0
business-service/src/main/java/com/ozs/entity/BaseVehicleTerminal.java

@@ -1,7 +1,9 @@
 package com.ozs.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.ozs.common.annotation.Excel;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -31,17 +33,22 @@ public class BaseVehicleTerminal implements Serializable {
     /**
      * 终端编码
      */
+    @Excel(name = "终端编码")
     private String terminalCode;
 
     /**
      * 终端名称
      */
+    @Excel(name = "终端名称")
     private String terminalName;
 
     /**
      * 状态 1在线2离线
      */
     private Integer status;
+    @Excel(name = "状态")
+    @TableField(exist = false)
+    private String statusStr;
 
     /**
      * 创建者
@@ -71,10 +78,12 @@ public class BaseVehicleTerminal implements Serializable {
     /**
      * 终端经度
      */
+    @Excel(name = "终端经度")
     private String terminalLongitude;
 
     /**
      * 终端纬度
      */
+    @Excel(name = "终端纬度")
     private String terminalLatitude;
 }

+ 6 - 0
business-service/src/main/java/com/ozs/service/BaseVehicleTerminalService.java

@@ -6,6 +6,8 @@ import com.ozs.entity.BaseVehicleTerminal;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ozs.entity.vo.BaseVehicleTerminalVo;
 
+import java.util.List;
+
 /**
  * <p>
  * 机车车载终端信息表 服务类
@@ -23,4 +25,8 @@ public interface BaseVehicleTerminalService extends IService<BaseVehicleTerminal
     AjaxResult vehicleTerminalAdd(BaseVehicleTerminal baseVehicleTerminal, String userId);
 
     AjaxResult vehicleTerminalUpdate(BaseVehicleTerminal baseVehicleTerminal, String userId);
+
+    String importBaseVehicleTerminal(List<BaseVehicleTerminal> accountManageList, boolean updateSupport, String userId);
+
+    List<BaseVehicleTerminal> exportBaseVehicleTerminal(BaseVehicleTerminal baseVehicleTerminal);
 }

+ 86 - 0
business-service/src/main/java/com/ozs/service/impl/BaseVehicleTerminalServiceImpl.java

@@ -5,7 +5,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.pagehelper.PageHelper;
 import com.ozs.common.core.domain.AjaxResult;
+import com.ozs.common.exception.ServiceException;
 import com.ozs.common.utils.StringUtils;
+import com.ozs.common.utils.bean.BeanValidators;
 import com.ozs.entity.BaseVehicleTerminal;
 import com.ozs.entity.vo.BaseVehicleTerminalVo;
 import com.ozs.mapper.BaseVehicleTerminalMapper;
@@ -13,6 +15,7 @@ import com.ozs.service.BaseVehicleTerminalService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.validation.Validator;
 import java.util.Date;
 import java.util.List;
 
@@ -29,6 +32,8 @@ public class BaseVehicleTerminalServiceImpl extends ServiceImpl<BaseVehicleTermi
 
     @Autowired
     private BaseVehicleTerminalMapper baseVehicleTerminalMapper;
+    @Autowired
+    protected Validator validator;
 
     @Override
     public IPage<BaseVehicleTerminal> vehicleTerminalList(BaseVehicleTerminalVo baseVehicleTerminalleVo) {
@@ -101,4 +106,85 @@ public class BaseVehicleTerminalServiceImpl extends ServiceImpl<BaseVehicleTermi
             return AjaxResult.error();
         }
     }
+
+    @Override
+    public String importBaseVehicleTerminal(List<BaseVehicleTerminal> accountManageList, boolean updateSupport, String userId) {
+        int successNum = 0;
+        int failureNum = 0;
+        StringBuilder successMsg = new StringBuilder();
+        StringBuilder failureMsg = new StringBuilder();
+        for (BaseVehicleTerminal baseVehicleTerminal : accountManageList) {
+            try {
+//                BaseVehicle baseVehicle = new BaseVehicle();
+//                BeanUtils.copyProperties(baseVehicleTerminal, baseVehicle);
+                // 判断机车编码是否存在
+                LambdaQueryWrapper<BaseVehicleTerminal> lw = new LambdaQueryWrapper<BaseVehicleTerminal>();
+                if (!StringUtils.isEmptySunhh(baseVehicleTerminal.getTerminalCode())) {
+                    lw.eq(BaseVehicleTerminal::getTerminalCode, baseVehicleTerminal.getTerminalCode());
+                }
+                BaseVehicleTerminal baseVehicle1 = baseVehicleTerminalMapper.selectOne(lw);
+                if (StringUtils.isEmptySunhh(baseVehicle1)) {
+                    BeanValidators.validateWithException(validator, baseVehicleTerminal);
+                    baseVehicleTerminal.setStatus("在线".equals(baseVehicleTerminal.getStatusStr()) ? 1 : 2);
+                    baseVehicleTerminal.setUpdateBy(userId);
+                    baseVehicleTerminal.setCreateBy(userId);
+                    Date date = new Date();
+                    baseVehicleTerminal.setCreateTime(date);
+                    baseVehicleTerminal.setUpdateTime(date);
+                    int insert = baseVehicleTerminalMapper.insert(baseVehicleTerminal);
+                    successNum++;
+                    successMsg.append(successNum + "、终端编码 " + baseVehicleTerminal.getTerminalCode() + " 导入成功");
+                } else if (updateSupport) {
+                    BeanValidators.validateWithException(validator, baseVehicleTerminal);
+                    LambdaQueryWrapper<BaseVehicleTerminal> lambdaQueryWrapper = new LambdaQueryWrapper<BaseVehicleTerminal>();
+                    if (!StringUtils.isEmptySunhh(baseVehicleTerminal.getTerminalCode())) {
+                        lambdaQueryWrapper.eq(BaseVehicleTerminal::getTerminalCode, baseVehicleTerminal.getTerminalCode());
+                    }
+                    BaseVehicleTerminal baseVehicle4 = baseVehicleTerminalMapper.selectOne(lambdaQueryWrapper);
+                    if (StringUtils.isEmptySunhh(baseVehicle4)) {
+                        baseVehicleTerminal.setUpdateBy(userId);
+                        baseVehicleTerminal.setUpdateTime(new Date());
+                        baseVehicleTerminal.setId(baseVehicle4.getId());
+                        baseVehicleTerminalMapper.updateById(baseVehicleTerminal);
+                        successNum++;
+                        successMsg.append(successNum + "、终端编码 " + baseVehicleTerminal.getTerminalCode() + " 更新成功");
+                    } else {
+                        failureNum++;
+                        failureMsg.append(failureNum + "、终端编码 " + baseVehicleTerminal.getTerminalCode() + "不存在");
+                    }
+                }
+            } catch (Exception e) {
+                failureNum++;
+                String msg = failureNum + "、终端编码 " + baseVehicleTerminal.getTerminalCode() + " 导入失败:";
+                failureMsg.append(msg);
+                log.error(msg, e);
+            }
+        }
+        if (failureNum > 0) {
+            failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
+            throw new ServiceException(failureMsg.toString());
+        } else {
+            successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条。");
+        }
+        return successMsg.toString();
+    }
+
+    @Override
+    public List<BaseVehicleTerminal> exportBaseVehicleTerminal(BaseVehicleTerminal baseVehicleTerminal) {
+        LambdaQueryWrapper<BaseVehicleTerminal> wrapper = new LambdaQueryWrapper<BaseVehicleTerminal>();
+        if (!StringUtils.isEmptySunhh(baseVehicleTerminal) && !StringUtils.isEmptySunhh(baseVehicleTerminal.getTerminalName())) {
+            wrapper.eq(BaseVehicleTerminal::getTerminalName, baseVehicleTerminal.getTerminalName());
+        }
+        if (!StringUtils.isEmptySunhh(baseVehicleTerminal) && !StringUtils.isEmptySunhh(baseVehicleTerminal.getTerminalCode())) {
+            wrapper.eq(BaseVehicleTerminal::getTerminalCode, baseVehicleTerminal.getTerminalCode());
+        }
+        if (!StringUtils.isEmptySunhh(baseVehicleTerminal) && !StringUtils.isEmptySunhh(baseVehicleTerminal.getStatus())) {
+            wrapper.eq(BaseVehicleTerminal::getStatus, baseVehicleTerminal.getStatus());
+        }
+        List<BaseVehicleTerminal> baseVehicleTerminalList = baseVehicleTerminalMapper.selectList(wrapper);
+        for (BaseVehicleTerminal baseVehicleTerminal1 : baseVehicleTerminalList) {
+            baseVehicleTerminal1.setStatusStr(baseVehicleTerminal1.getStatus() == 1 ? "在线" : "离线");
+        }
+        return baseVehicleTerminalList;
+    }
 }

+ 57 - 1
vehicle-admin/src/main/java/com/ozs/web/controller/accountmanagment/BaseVehicleTerminalController.java

@@ -7,14 +7,20 @@ import com.ozs.common.core.controller.BaseController;
 import com.ozs.common.core.domain.AjaxResult;
 import com.ozs.common.enums.BusinessType;
 import com.ozs.common.utils.StringUtils;
+import com.ozs.common.utils.file.FileUtils;
+import com.ozs.common.utils.poi.ExcelUtil;
 import com.ozs.entity.BaseVehicleTerminal;
 import com.ozs.entity.vo.BaseVehicleTerminalVo;
 import com.ozs.service.BaseVehicleTerminalService;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.InputStream;
 import java.util.List;
 
 /**
@@ -117,6 +123,57 @@ public class BaseVehicleTerminalController extends BaseController {
         }
     }
 
+    /**
+     * 车载终端信息导入
+     *
+     * @param file
+     * @param updateSupport
+     * @return
+     * @throws Exception
+     */
+    @ApiOperation("车载终端信息导入")
+    @PostMapping("/importBaseVehicleTerminal")
+    @Log(title = "车载终端管理", businessType = BusinessType.IMPORT)
+    public AjaxResult importBaseVehicleTerminal(MultipartFile file, boolean updateSupport) throws Exception {
+        ExcelUtil<BaseVehicleTerminal> util = new ExcelUtil<BaseVehicleTerminal>(BaseVehicleTerminal.class);
+        List<BaseVehicleTerminal> accountManageList = util.importExcel(file.getInputStream());
+        String message = baseVehicleTerminalService.importBaseVehicleTerminal(accountManageList, updateSupport, getUserId());
+        return AjaxResult.success(message);
+    }
+
+    /**
+     * 车载终端信息导出
+     *
+     * @param response
+     */
+    @ApiOperation("车载终端信息导出")
+    @PostMapping("/exportBaseVehicleTerminal")
+    @Log(title = "车载终端管理", businessType = BusinessType.EXPORT)
+    public void exportBaseVehicleTerminal(HttpServletResponse response, @RequestBody BaseVehicleTerminal baseVehicleTerminal) {
+        List<BaseVehicleTerminal> baseVehicleList = baseVehicleTerminalService.exportBaseVehicleTerminal(baseVehicleTerminal);
+        ExcelUtil<BaseVehicleTerminal> util = new ExcelUtil<>(BaseVehicleTerminal.class);
+        util.exportExcel(response, baseVehicleList, "车载终端数据");
+    }
+
+    /**
+     * 车载终端信息模板下载
+     *
+     * @param response
+     */
+    @ApiOperation("车载终端信息模板下载")
+    @GetMapping("/downloaExcel")
+    @Log(title = "车载终端管理", businessType = BusinessType.OTHER)
+    public void downloadZip(HttpServletResponse response) {
+        try {
+            InputStream resourceAsStream = this.getClass().getResourceAsStream("/template/BaseVehicleTerminal.xlsx");
+            response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
+            FileUtils.setAttachmentResponseHeader(response, "车载终端信息模板.xlsx");
+            FileUtils.writeBytesByInput(resourceAsStream, response.getOutputStream());
+        } catch (Exception e) {
+            log.error("下载文件失败", e);
+        }
+    }
+
     /**
      * 终端信息表 查询
      *
@@ -129,6 +186,5 @@ public class BaseVehicleTerminalController extends BaseController {
         List<BaseVehicleTerminal> list = baseVehicleTerminalService.list();
         return AjaxResult.success(list);
     }
-
 }
 

BIN=BIN
vehicle-admin/src/main/resources/template/BaseVehicle.xlsx


BIN=BIN
vehicle-admin/src/main/resources/template/BaseVehicleTerminal.xlsx