Browse Source

代码优化

Lifan 1 year ago
parent
commit
63fb07bf79

+ 2 - 2
application/src/main/java/org/thingsboard/server/controller/yunteng/TkDictController.java

@@ -112,7 +112,7 @@ public class TkDictController extends BaseController {
 
     HashMap<String, Object> queryMap = new HashMap<>();
     queryMap.put(PAGE_SIZE, Integer.MAX_VALUE);
-    queryMap.put(PAGE, page);
+    queryMap.put(PAGE, 1);
     queryMap.put(ORDER_FILED, orderBy);
     queryMap.put("dictName", dictName);
     queryMap.put("dictCode", dictCode);
@@ -128,7 +128,7 @@ public class TkDictController extends BaseController {
         export.add(type);
       });
     }
-    ExcelUtil.exportExcel(response, ExcelUtil.exportFilename(ExportConstant.DICT_EXPORT_NAME), ExportConstant.EXPORT_SHEET_NAME, export, SysDictDTO.class);
+    ExcelUtil.exportExcel(response, ExcelUtil.exportFilename(ExportConstant.DICT_EXPORT_NAME), ExportConstant.EXPORT_SHEET_NAME, export, SysDictExport.class);
 
   }
 

+ 98 - 3
application/src/main/java/org/thingsboard/server/controller/yunteng/TkDictItemController.java

@@ -1,26 +1,42 @@
 package org.thingsboard.server.controller.yunteng;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import lombok.RequiredArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.http.ResponseEntity;
 import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.util.CollectionUtils;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 import org.thingsboard.server.common.data.exception.ThingsboardException;
 import org.thingsboard.server.common.data.yunteng.common.AddGroup;
 import org.thingsboard.server.common.data.yunteng.common.DeleteGroup;
 import org.thingsboard.server.common.data.yunteng.common.UpdateGroup;
 import org.thingsboard.server.common.data.yunteng.constant.FastIotConstants;
 import org.thingsboard.server.common.data.yunteng.dto.DeleteDTO;
+import org.thingsboard.server.common.data.yunteng.dto.SysDictDTO;
 import org.thingsboard.server.common.data.yunteng.dto.SysDictItemDTO;
 import org.thingsboard.server.common.data.yunteng.enums.OrderTypeEnum;
 import org.thingsboard.server.common.data.yunteng.utils.tools.ResponseResult;
 import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData;
 import org.thingsboard.server.controller.BaseController;
+import org.thingsboard.server.dao.yunteng.entities.SysDictEntity;
+import org.thingsboard.server.dao.yunteng.mapper.SysDictMapper;
 import org.thingsboard.server.dao.yunteng.service.SysDictItemService;
+import org.thingsboard.server.dao.yunteng.service.SysDictService;
+import org.thingsboard.server.domain.BaseOutput;
+import org.thingsboard.server.domain.export.SysDictExport;
+import org.thingsboard.server.domain.export.SysDictItemExport;
+import org.thingsboard.server.domain.template.SysDictItemTemplate;
+import org.thingsboard.server.domain.template.SysDictTemplate;
+import org.thingsboard.server.glossary.constants.ExportConstant;
+import org.thingsboard.server.glossary.constants.ImportConstant;
+import org.thingsboard.server.utils.ExcelUtil;
 
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import javax.servlet.http.HttpServletResponse;
+import java.util.*;
 
 import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant.*;
 
@@ -29,6 +45,7 @@ import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant.
 @RequiredArgsConstructor
 public class TkDictItemController extends BaseController {
   private final SysDictItemService sysDictItemService;
+  private final SysDictMapper sysDictMapper;
 
   @PreAuthorize("@check.checkPermissions({'SYS_ADMIN','PLATFORM_ADMIN'},{})")
   @GetMapping(params = {PAGE_SIZE, PAGE})
@@ -54,6 +71,84 @@ public class TkDictItemController extends BaseController {
     return sysDictItemService.page(queryMap);
   }
 
+  /**
+   * excel模板下载
+   */
+  @RequestMapping(value = "/template", method = RequestMethod.GET)
+  public void template(HttpServletResponse response){
+    String fileName = ImportConstant.SYS_DICT_ITEM_IMPORT_NAME + System.currentTimeMillis();
+    try {
+      ExcelUtil.exportExcel(response, fileName, "", null, SysDictItemTemplate.class);
+    } catch (Exception e) {
+    }
+  }
+
+  /**
+   * Excel批量导入数据
+   * @param file 导入文件
+   */
+  @RequestMapping(value = "/import", method = RequestMethod.POST)
+  public BaseOutput importEvents(@RequestParam(value = "dictId") String dictId, MultipartFile file){
+    try {
+      List<SysDictItemTemplate> list = (List<SysDictItemTemplate>)ExcelUtil.importExcel(file, SysDictItemTemplate.class);
+      if(CollectionUtils.isEmpty(list)){
+        return BaseOutput.failure("无数据");
+      }
+      for (SysDictItemTemplate item : list) {
+        if(StringUtils.isEmpty(dictId) || StringUtils.isEmpty(item.getItemText())  || StringUtils.isEmpty(item.getItemText())){
+          continue;
+        }
+        SysDictItemDTO sysDictItemDTO = new SysDictItemDTO();
+        BeanUtils.copyProperties(item, sysDictItemDTO);
+        sysDictItemDTO.setStatus("禁用".equals(item.getStatusText()) ? 0 : 1);
+        /*List<SysDictEntity> sysDictEntities = sysDictMapper.selectList(new LambdaQueryWrapper<SysDictEntity>().eq(SysDictEntity::getDictName, item.getDictName()));
+        if(CollectionUtils.isEmpty(sysDictEntities)){
+          continue;
+        }*/
+        sysDictItemDTO.setDictId(dictId);
+        SysDictItemDTO newDTO = sysDictItemService.saveSysDictItem(sysDictItemDTO, getCurrentUser().getCurrentTenantId());
+      }
+      return BaseOutput.success("数据导入完成");
+    } catch (Exception e) {
+      return BaseOutput.failure("数据导入失败!" + e.getMessage());
+    }
+  }
+
+  @PreAuthorize("@check.checkPermissions({'SYS_ADMIN','PLATFORM_ADMIN'},{})")
+  @GetMapping(params = {PAGE_SIZE, PAGE},path = "export")
+  public void export(
+          @RequestParam(PAGE_SIZE) int pageSize,
+          @RequestParam(PAGE) int page,
+          @RequestParam(value = "dictId", required = false) String dictId,
+          @RequestParam(value = "itemText", required = false) String itemText,
+          @RequestParam(value = "status", required = false) Integer status,
+          @RequestParam(value = ORDER_FILED, required = false) String orderBy,
+          @RequestParam(value = ORDER_TYPE, required = false) OrderTypeEnum orderType,
+          HttpServletResponse response) throws Exception {
+
+    HashMap<String, Object> queryMap = new HashMap<>();
+    queryMap.put(PAGE_SIZE, Integer.MAX_VALUE);
+    queryMap.put(PAGE, 1);
+    queryMap.put(ORDER_FILED, orderBy);
+    queryMap.put("itemText", itemText);
+    queryMap.put("status", status);
+    queryMap.put("dictId", dictId);
+    if (orderType != null) {
+      queryMap.put(ORDER_TYPE, orderType.name());
+    }
+    Collection<SysDictItemDTO> items = sysDictItemService.page(queryMap).getItems();
+    List<SysDictItemExport> export = new ArrayList<>();
+    if(!CollectionUtils.isEmpty(items)){
+      items.stream().forEach(item -> {
+        SysDictItemExport type = new SysDictItemExport();
+        BeanUtils.copyProperties(item, type);
+        type.setStatusText(item.getStatus() == 0 ? "禁用" : "启用");
+        export.add(type);
+      });
+    }
+    ExcelUtil.exportExcel(response, ExcelUtil.exportFilename(ExportConstant.DICT_ITEM_EXPORT_NAME), ExportConstant.EXPORT_SHEET_NAME, export, SysDictItemExport.class);
+  }
+
   @PostMapping
   @PreAuthorize("@check.checkPermissions({'SYS_ADMIN','PLATFORM_ADMIN'},{'api:yt:dictItem:post'})")
   public ResponseResult<SysDictItemDTO> saveSysDictItem(

+ 1 - 1
application/src/main/java/org/thingsboard/server/controller/yunteng/TkUserController.java

@@ -304,7 +304,7 @@ public class TkUserController extends AbstractUserAccount {
           throws Exception {
     HashMap<String, Object> queryMap = new HashMap<>();
     queryMap.put(PAGE_SIZE, Integer.MAX_VALUE);
-    queryMap.put(PAGE, page);
+    queryMap.put(PAGE, 1);
     queryMap.put(ORDER_FILED, orderBy);
     queryMap.put("realName",realName);
     queryMap.put("username",username);

+ 43 - 0
application/src/main/java/org/thingsboard/server/domain/export/SysDictItemExport.java

@@ -0,0 +1,43 @@
+package org.thingsboard.server.domain.export;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
+import io.swagger.annotations.ApiModel;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author LF
+ * @date 2023-05-06
+ *
+ * @description (NxMonitorIndex)
+ */
+@Data
+@TableName("nx_monitor_index")
+@ApiModel(value = "", description = "对象 nxMonitorIndex")
+@NoArgsConstructor
+@AllArgsConstructor
+public class SysDictItemExport {
+    @ExcelProperty("文本值")
+    private String itemText;
+    @ExcelProperty("字典值")
+    private String itemValue;
+    @ExcelProperty("描述")
+    private String description;
+    @ExcelProperty("状态")
+    private String statusText;
+    @ExcelProperty("排序")
+    private String sort;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    @ExcelProperty(value = "创建时间")
+    @JsonSerialize(using = LocalDateTimeSerializer.class)
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+}

+ 38 - 0
application/src/main/java/org/thingsboard/server/domain/template/SysDictItemTemplate.java

@@ -0,0 +1,38 @@
+package org.thingsboard.server.domain.template;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
+import io.swagger.annotations.ApiModel;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author LF
+ * @date 2023-05-06
+ *
+ * @description (NxMonitorIndex)
+ */
+@Data
+@TableName("nx_monitor_index")
+@ApiModel(value = "", description = "对象 nxMonitorIndex")
+@NoArgsConstructor
+@AllArgsConstructor
+public class SysDictItemTemplate {
+    @ExcelProperty("文本值")
+    private String itemText;
+    @ExcelProperty("字典值")
+    private String itemValue;
+    @ExcelProperty("描述")
+    private String description;
+    @ExcelProperty("状态")
+    private String statusText;
+    @ExcelProperty("排序")
+    private String sort;
+}

+ 1 - 0
application/src/main/java/org/thingsboard/server/glossary/constants/ExportConstant.java

@@ -40,6 +40,7 @@ public class ExportConstant {
     public  static final String ORGANIZATION_EXPORT_NAME = "组织管理";
     public  static final String USER_EXPORT_NAME = "用户管理";
     public  static final String DICT_EXPORT_NAME = "字典管理";
+    public  static final String DICT_ITEM_EXPORT_NAME = "字典明细管理";
 
 
     public static final String EXPORT_SHEET_NAME = "sheet1";

+ 1 - 0
application/src/main/java/org/thingsboard/server/glossary/constants/ImportConstant.java

@@ -17,6 +17,7 @@ public class ImportConstant {
     public static final String MONITOR_SITE_IMPORT_NAME = "监测站点导入模板";
     public static final String SYS_USER_IMPORT_NAME = "账户管理导入模板";
     public static final String SYS_DICT_IMPORT_NAME = "字典管理导入模板";
+    public static final String SYS_DICT_ITEM_IMPORT_NAME = "字典管理导入模板";
     public static final String TK_ORGANIZATION_IMPORT_NAME = "组织管理导入模板";
 
     public static final String RESCUE_CAR_IMPORT_NAME = "抢险车辆导入模板";

+ 32 - 14
application/src/main/java/org/thingsboard/server/service/nanxi/impl/NxEventManagementServiceImpl.java

@@ -1,6 +1,7 @@
 package org.thingsboard.server.service.nanxi.impl;
 
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -159,8 +160,12 @@ public class NxEventManagementServiceImpl extends ServiceImpl<NxEventManagementM
             }
         }
         NxEventManagement byId = this.getById(id);
+
         if(EventStatus.WAIT_RECEIVE.getCode().equals(byId.getStatus())){
-            this.receive(id);
+            List<NxEventPush> list = nxEventPushService.list(new LambdaQueryWrapper<NxEventPush>().eq(NxEventPush::getEventId, id).eq(NxEventPush::getType, CompanyType.LEADER.getCode()).eq(NxEventPush::getPersonId, UserTicketUtil.getCurrentUser().getCurrentUserId()));
+            if(list.size() > 0 ){
+                this.receive(id);
+            }
         }
         NxEventManagementVO eventManagementVO = getWarningMsgById(id, userId);
 
@@ -443,14 +448,16 @@ public class NxEventManagementServiceImpl extends ServiceImpl<NxEventManagementM
         List<Map<String, Object>> attentionTargets = new ArrayList<>();
         List<NxWarningContactVO> warningContacts = byId.getWarningContacts();
         for (int i = 0; i < warningContacts.size(); i++) {
+            NxWarningContactVO nxWarningContactVO = warningContacts.get(i);
+            basicDataConvertService.pageDataConvert(nxWarningContactVO);
             Map<String, Object> map = new HashMap<>();
-            map.put("name", warningContacts.get(i).getName());
-            map.put("type", warningContacts.get(i).getType());
-            map.put("areaName", warningContacts.get(i).getAreaName());
-            map.put("contactName", warningContacts.get(i).getContactName());
-            map.put("contactPhone", warningContacts.get(i).getContactPhone());
-            map.put("contactPosition", warningContacts.get(i).getContactPosition());
-            map.put("distance", warningContacts.get(i).getDistance());
+            map.put("name", nxWarningContactVO.getName());
+            map.put("type", nxWarningContactVO.getType());
+            map.put("areaName", nxWarningContactVO.getAreaName());
+            map.put("contactName", nxWarningContactVO.getContactName());
+            map.put("contactPhone", nxWarningContactVO.getContactPhone());
+            map.put("contactPosition", nxWarningContactVO.getContactPosition());
+            map.put("distance", nxWarningContactVO.getDistance());
             attentionTargets.add(map);
             mapValueNullToFormat(map, "--");
         }
@@ -459,10 +466,12 @@ public class NxEventManagementServiceImpl extends ServiceImpl<NxEventManagementM
         List<Map<String, Object>> reservePlans = new ArrayList<>();
         List<NxReservePlanVO> rps = byId.getReservePlans();
         for (int i = 0; i < rps.size(); i++) {
+            NxReservePlanVO nxReservePlanVO = rps.get(i);
+            basicDataConvertService.pageDataConvert(nxReservePlanVO);
             Map<String, Object> map = new HashMap<>();
-            map.put("name", rps.get(i).getName());
-            map.put("responseLevelName", CollectionUtils.isEmpty(rps.get(i).getResponses()) ? "" : rps.get(i).getResponses().get(0).getResponseLevelName());
-            map.put("dataSource", rps.get(i).getDataSource());
+            map.put("name", nxReservePlanVO.getName());
+            map.put("responseLevelName", CollectionUtils.isEmpty(nxReservePlanVO.getResponses()) ? "" : nxReservePlanVO.getResponses().get(0).getResponseLevelName());
+            map.put("dataSource", nxReservePlanVO.getDataSource());
             reservePlans.add(map);
             mapValueNullToFormat(map, "--");
         }
@@ -471,10 +480,12 @@ public class NxEventManagementServiceImpl extends ServiceImpl<NxEventManagementM
         List<Map<String, Object>> knowledges = new ArrayList<>();
         List<NxKnowledgeDatabase> kds = byId.getKnowledges();
         for (int i = 0; i < kds.size(); i++) {
+            NxKnowledgeDatabase nxKnowledgeDatabase = kds.get(i);
+            basicDataConvertService.pageDataConvert(nxKnowledgeDatabase);
             Map<String, Object> map = new HashMap<>();
-            map.put("knowledgeBaseName", kds.get(i).getKnowledgeBaseName());
-            map.put("disposalMeasures", kds.get(i).getDisposalMeasures());
-            map.put("disposalPoints", kds.get(i).getDisposalPoints());
+            map.put("knowledgeBaseName", nxKnowledgeDatabase.getKnowledgeBaseName());
+            map.put("disposalMeasures", nxKnowledgeDatabase.getDisposalMeasures());
+            map.put("disposalPoints", nxKnowledgeDatabase.getDisposalPoints());
             map.put("dataSource", "--");
             knowledges.add(map);
             mapValueNullToFormat(map, "--");
@@ -485,6 +496,7 @@ public class NxEventManagementServiceImpl extends ServiceImpl<NxEventManagementM
         List<NxExpertDatabase> eps = byId.getExperts();
         for (int i = 0; i < eps.size(); i++) {
             NxExpertDatabase ep = eps.get(i);
+            basicDataConvertService.pageDataConvert(ep);
             Map<String, Object> map = new HashMap<>();
             map.put("expertName", ep.getExpertName());
             map.put("expertGenderText", ep.getExpertGenderText());
@@ -508,6 +520,7 @@ public class NxEventManagementServiceImpl extends ServiceImpl<NxEventManagementM
         List<NxEventPush> lds = byId.getLeaders();
         for (int i = 0; i < lds.size(); i++) {
             NxEventPush ld = lds.get(i);
+            basicDataConvertService.pageDataConvert(ld);
             Map<String, Object> map = new HashMap<>();
             map.put("companyName", ld.getCompanyName());
             map.put("personName", ld.getPersonName());
@@ -524,6 +537,7 @@ public class NxEventManagementServiceImpl extends ServiceImpl<NxEventManagementM
         List<NxEventPush> cps = byId.getCooperates();
         for (int i = 0; i < cps.size(); i++) {
             NxEventPush cp = cps.get(i);
+            basicDataConvertService.pageDataConvert(cp);
             Map<String, Object> map = new HashMap<>();
             map.put("companyName", cp.getCompanyName());
             map.put("personName", cp.getPersonName());
@@ -567,6 +581,7 @@ public class NxEventManagementServiceImpl extends ServiceImpl<NxEventManagementM
         for (int i = 0; i < ids.size(); i++) {
             Map<String, Object> map = new HashMap<>();
             NxDisposeFeedback df = ids.get(i);
+            basicDataConvertService.pageDataConvert(df);
             map.put("reportTime", df.getReportTime());
             map.put("reportCompanyName", df.getReportCompanyName());
             map.put("reportPersonName", df.getReportPersonName());
@@ -585,6 +600,7 @@ public class NxEventManagementServiceImpl extends ServiceImpl<NxEventManagementM
         List<String> pics = null;
         for (int i = 0; i < disposeFeedbacks.size(); i++) {
             NxDisposeFeedback df = disposeFeedbacks.get(i);
+            basicDataConvertService.pageDataConvert(df);
             Map<String, Object> map = new HashMap<>();
             map.put("disposeTime", df.getDisposeTime() == null ? "--" : simpleDateFormat.format(df.getDisposeTime()));
             map.put("companyName", df.getCompanyName());
@@ -612,6 +628,7 @@ public class NxEventManagementServiceImpl extends ServiceImpl<NxEventManagementM
         for (int i = 0; i < mts.size(); i++) {
             Map<String, Object> map = new HashMap<>();
             NxEventMaterials mt = mts.get(i);
+            basicDataConvertService.pageDataConvert(mt);
             map.put("number", mt.getMaterialsManagement() != null ? mt.getMaterialsManagement().getNumber() : "");
             map.put("materialsName", mt.getMaterialsManagement() != null ? mt.getMaterialsManagement().getName() : "");
             map.put("useAmount", mt.getUseAmount());
@@ -628,6 +645,7 @@ public class NxEventManagementServiceImpl extends ServiceImpl<NxEventManagementM
         for (int i = 0; i < rss.size(); i++) {
             Map<String, Object> map = new HashMap<>();
             NxEventRescue er = rss.get(i);
+            basicDataConvertService.pageDataConvert(er);
             map.put("companyName", er.getCompanyName());
             map.put("rescueTeamName", er.getRescueTeamName());
             map.put("rescuePersonAmount", er.getRescuePersonAmount());

+ 1 - 8
application/src/main/resources/mapper/NxMonitorWarnDataMapper.xml

@@ -373,11 +373,7 @@
         i.event_type_name,
         i.event_level_name,
         i.person_name,
-        i.company_name,
-        l.company_name leading_company_name,
-        k.dispose_time,
-        DATE_PART('day', k.dispose_time::timestamp - i.push_time::timestamp) * 24 +
-        DATE_PART('hour',k.dispose_time::timestamp - i.push_time::timestamp) || '小时' dispose_duration
+        i.company_name
         FROM
         nx_monitor_warn_data a
         LEFT JOIN nx_monitor_index b ON A.monitor_index = b.code
@@ -396,9 +392,6 @@
         LEFT JOIN nx_event_management i ON i.warning_id = A.ID
         LEFT JOIN sys_dict_item j ON i.status = j.item_value
         AND j.dict_id = 'aaafa3a4-7b2c-4e52-b30c-a0d387fe7e8d'
-        LEFT JOIN nx_dispose_feedback K ON i.ID = K.push_id
-        LEFT JOIN nx_event_push l ON i.ID = l.event_id
-        AND l."type" = '1'
         LEFT JOIN sys_dict_item M ON A.warn_level = M.id
         left join sys_dict_item n on b.index_type=n.id
         WHERE