Răsfoiți Sursa

+ 巡检报告

chen.cheng 11 luni în urmă
părinte
comite
a8b665151e

+ 19 - 22
ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/controller/AdmOpInspectionTaskController.java

@@ -1,26 +1,29 @@
 package com.ruoyi.ems.controller;
 
 import java.util.List;
-import java.io.IOException;
+
 import javax.servlet.http.HttpServletResponse;
+
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
+
+import com.ruoyi.common.core.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.utils.uuid.Seq;
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.TableDataInfo;
 import com.ruoyi.common.log.annotation.Log;
 import com.ruoyi.common.log.enums.BusinessType;
 import com.ruoyi.common.security.annotation.RequiresPermissions;
 import com.ruoyi.ems.domain.AdmOpInspectionTask;
 import com.ruoyi.ems.service.IAdmOpInspectionTaskService;
-import com.ruoyi.common.core.web.controller.BaseController;
-import com.ruoyi.common.core.web.domain.AjaxResult;
-import com.ruoyi.common.core.utils.poi.ExcelUtil;
-import com.ruoyi.common.core.web.page.TableDataInfo;
 
 /**
  * 巡检任务Controller
@@ -30,8 +33,7 @@ import com.ruoyi.common.core.web.page.TableDataInfo;
  */
 @RestController
 @RequestMapping("/inspectionTask")
-public class AdmOpInspectionTaskController extends BaseController
-{
+public class AdmOpInspectionTaskController extends BaseController {
     @Autowired
     private IAdmOpInspectionTaskService admOpInspectionTaskService;
 
@@ -40,8 +42,7 @@ public class AdmOpInspectionTaskController extends BaseController
      */
     @RequiresPermissions("ems:inspection-task:list")
     @GetMapping("/list")
-    public TableDataInfo list(AdmOpInspectionTask admOpInspectionTask)
-    {
+    public TableDataInfo list(AdmOpInspectionTask admOpInspectionTask) {
         startPage();
         List<AdmOpInspectionTask> list = admOpInspectionTaskService.selectAdmOpInspectionTaskList(admOpInspectionTask);
         return getDataTable(list);
@@ -53,8 +54,7 @@ public class AdmOpInspectionTaskController extends BaseController
     @RequiresPermissions("ems:inspection-task:export")
     @Log(title = "巡检任务", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
-    public void export(HttpServletResponse response, AdmOpInspectionTask admOpInspectionTask)
-    {
+    public void export(HttpServletResponse response, AdmOpInspectionTask admOpInspectionTask) {
         List<AdmOpInspectionTask> list = admOpInspectionTaskService.selectAdmOpInspectionTaskList(admOpInspectionTask);
         ExcelUtil<AdmOpInspectionTask> util = new ExcelUtil<AdmOpInspectionTask>(AdmOpInspectionTask.class);
         util.exportExcel(response, list, "巡检任务数据");
@@ -65,8 +65,7 @@ public class AdmOpInspectionTaskController extends BaseController
      */
     @RequiresPermissions("ems:inspection-task:query")
     @GetMapping(value = "/{id}")
-    public AjaxResult getInfo(@PathVariable("id") Long id)
-    {
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
         return success(admOpInspectionTaskService.selectAdmOpInspectionTaskById(id));
     }
 
@@ -76,8 +75,8 @@ public class AdmOpInspectionTaskController extends BaseController
     @RequiresPermissions("ems:inspection-task:add")
     @Log(title = "巡检任务", businessType = BusinessType.INSERT)
     @PostMapping
-    public AjaxResult add(@RequestBody AdmOpInspectionTask admOpInspectionTask)
-    {
+    public AjaxResult add(@RequestBody AdmOpInspectionTask admOpInspectionTask) {
+        admOpInspectionTask.setTaskCode(Seq.getId());
         return toAjax(admOpInspectionTaskService.insertAdmOpInspectionTask(admOpInspectionTask));
     }
 
@@ -87,8 +86,7 @@ public class AdmOpInspectionTaskController extends BaseController
     @RequiresPermissions("ems:inspection-task:edit")
     @Log(title = "巡检任务", businessType = BusinessType.UPDATE)
     @PutMapping
-    public AjaxResult edit(@RequestBody AdmOpInspectionTask admOpInspectionTask)
-    {
+    public AjaxResult edit(@RequestBody AdmOpInspectionTask admOpInspectionTask) {
         return toAjax(admOpInspectionTaskService.updateAdmOpInspectionTask(admOpInspectionTask));
     }
 
@@ -97,9 +95,8 @@ public class AdmOpInspectionTaskController extends BaseController
      */
     @RequiresPermissions("ems:inspection-task:remove")
     @Log(title = "巡检任务", businessType = BusinessType.DELETE)
-	@DeleteMapping("/{ids}")
-    public AjaxResult remove(@PathVariable Long[] ids)
-    {
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
         return toAjax(admOpInspectionTaskService.deleteAdmOpInspectionTaskByIds(ids));
     }
 }

+ 72 - 6
ems-cloud/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/uuid/Seq.java

@@ -1,6 +1,7 @@
 package com.ruoyi.common.core.utils.uuid;
 
 import java.util.concurrent.atomic.AtomicInteger;
+
 import com.ruoyi.common.core.utils.DateUtils;
 import com.ruoyi.common.core.utils.StringUtils;
 
@@ -26,17 +27,21 @@ public class Seq
 
     /**
      * 获取通用序列号
-     * 
+     *
      * @return 序列值
      */
     public static String getId()
     {
         return getId(commSeqType);
     }
-    
+
+    public static String getIdWidthPrefix(String prefix) {
+        return prefix + getId(commSeqType);
+    }
+
     /**
      * 默认16位序列号 yyMMddHHmmss + 一位机器标识 + 3长度循环递增字符串
-     * 
+     *
      * @return 序列值
      */
     public static String getId(String type)
@@ -51,14 +56,14 @@ public class Seq
 
     /**
      * 通用接口序列号 yyMMddHHmmss + 一位机器标识 + length长度循环递增字符串
-     * 
+     *
      * @param atomicInt 序列数
      * @param length 数值长度
      * @return 序列值
      */
     public static String getId(AtomicInteger atomicInt, int length)
     {
-        String result = DateUtils.dateTimeNow();
+        String result = DateUtils.dateTimeNow("yyMMddHHmmss");
         result += machineCode;
         result += getSeq(atomicInt, length);
         return result;
@@ -66,7 +71,7 @@ public class Seq
 
     /**
      * 序列循环递增字符串[1, 10 的 (length)幂次方), 用0左补齐length位数
-     * 
+     *
      * @return 序列值
      */
     private synchronized static String getSeq(AtomicInteger atomicInt, int length)
@@ -83,4 +88,65 @@ public class Seq
         // 转字符串,用0左补齐
         return StringUtils.padl(value, length);
     }
+
+    public static void main(String[] args) {
+        // 线程数=count*count
+        int count = 10;
+        final long[][] times = new long[count][100];
+
+        Thread[] threads = new Thread[count];
+        for (int i = 0; i < threads.length; i++) {
+            final int ip = i;
+            threads[i] = new Thread() {
+                @Override
+                public void run() {
+                    for (int j = 0; j < 10; j++) {
+                        long t1 = System.nanoTime();// 该函数是返回纳秒的。1毫秒=1纳秒*1000000
+
+                        System.out.println(Seq.getId());// 测试
+
+                        long t = System.nanoTime() - t1;
+
+                        times[ip][j] = t;// 求平均
+                    }
+                }
+
+            };
+        }
+
+        long lastMilis = System.currentTimeMillis();
+        // 逐个启动线程
+        for (int i = 0; i < threads.length; i++) {
+            threads[i].start();
+        }
+
+        for (int i = 0; i < threads.length; i++) {
+            try {
+                threads[i].join();
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+        }
+        /**
+         * 1、QPS:系统每秒处理的请求数(query per second) 2、RT:系统的响应时间,一个请求的响应时间,也可以是一段时间的平均值 3、最佳线程数量:刚好消耗完服务器瓶颈资源的临界线程数
+         * 对于单线程:QPS=1000/RT 对于多线程:QPS=1000*线程数量/RT
+         */
+        long time = System.currentTimeMillis() - lastMilis;
+        System.out.println("QPS: " + (1000 * count / time));
+
+        long sum = 0;
+        long max = 0;
+        for (int i = 0; i < times.length; i++) {
+            for (int j = 0; j < times[i].length; j++) {
+                sum += times[i][j];
+
+                if (times[i][j] > max) {
+                    max = times[i][j];
+                }
+            }
+        }
+        System.out.println("Sum(ms)" + time);
+        System.out.println("AVG(ms): " + sum / 1000000 / (count * 100));
+        System.out.println("MAX(ms): " + max / 1000000);
+    }
 }

+ 1 - 1
ems-cloud/sql/ems_sys.sql

@@ -196,7 +196,7 @@ insert into sys_menu values ('144',  '手动抄表',       '5',    '4',  'meterR
 INSERT INTO sys_menu VALUES (151, '告警策略', 6, 1, 'warn-strategy', 'alarm/index', '', 1, 0, 'C', '0', '0', 'warn:strategy', 'warnstrategy', 'admin', '2024-08-29 15:40:27', 'admin', '2024-08-29 16:01:10', '告警策略');
 INSERT INTO sys_menu VALUES (152, '告警列表', 6, 2, 'warn-list', 'alarm/alarm-info/index', '', 1, 0, 'C', '0', '0', 'warn:list', 'warnmsg', 'admin', '2024-08-29 15:40:27', 'admin', '2024-08-29 16:01:36', '告警策略');
 INSERT INTO sys_menu VALUES (153, '巡检任务', 6, 3, 'oper-task', 'task/index', '', 1, 0, 'C', '0', '0', 'oper-mgr:task', 'task', 'admin', '2024-08-29 15:40:27', 'admin', '2024-08-29 16:02:38', '巡检任务');
-insert into sys_menu values ('154',  '巡检报告',       '6',    '4',  'oper-report',        'oper-mgr/report',        '', 1, 0, 'C', '0', '0',   'oper-mgr:report',        'note',           'admin', sysdate(), '', null, '巡检报告');
+insert into sys_menu values ('154',  '巡检报告',       '6',    '4',  'oper-report',        'task/report',        '', 1, 0, 'C', '0', '0',   'oper-mgr:report',        'note',           'admin', sysdate(), '', null, '巡检报告');
 
 insert into sys_menu values ('161',  '建筑区块',       '7',    '1',  'buildingcfg',        '',                       '', 1, 0, 'M', '0', '0',   'basecfg:building',       'building',       'admin', sysdate(), '', null, '用户管理菜单');
 insert into sys_menu values ('162',  '设备设施',       '7',    '2',  'devicecfg',          '',                       '', 1, 0, 'M', '0', '0',   'basecfg:device',         'devicemgr',      'admin', sysdate(), '', null, '用户管理菜单');