Explorar el Código

驾驶舱-样式优化

wanglt hace 3 meses
padre
commit
82188ae540

+ 7 - 7
ygtx-gxt/src/main/java/com/ygtx/gxt/domain/GxtOrderData.java

@@ -80,16 +80,12 @@ public class GxtOrderData extends BaseEntity
     /** 工时统计 */
     private String gstj;
 
-    /** 停机时长 */
-    @Excel(name = "停机时长(h)")
-    private String tjsc;
-
     /** 下发时长 */
     @Excel(name = "下发时长(h)")
     private String xfsc;
 
     /** 响应时长 */
-    @Excel(name = "响应时长(h)")
+    @Excel(name = "接单时长(h)")
     private String xysc;
 
     /** 准备时长 */
@@ -97,13 +93,17 @@ public class GxtOrderData extends BaseEntity
     private String zbsc;
 
     /** 处理时长 */
-    @Excel(name = "处理时长(h)")
+    @Excel(name = "作业时长(h)")
     private String clsc;
 
     /** 启机并网时长 */
-    @Excel(name = "启机并网时长(h)")
+    @Excel(name = "复运时长(h)")
     private String qjbwsc;
 
+    /** 停机时长 */
+    @Excel(name = "停运时长(h)")
+    private String tjsc;
+
     /** 挂起时长 */
     @Excel(name = "挂起时长(h)")
     private String gqsc;

+ 2 - 2
ygtx-gxt/src/main/java/com/ygtx/gxt/service/impl/GxtWorkOrderServiceImpl.java

@@ -1969,8 +1969,8 @@ public class GxtWorkOrderServiceImpl implements IGxtWorkOrderService
 
     @Override
     public List<GxtOrderData> selectHomePageWorkOrderList(GxtOrderData gxtOrderData) {
-        Integer workOrderFlowRecordsSize = orderPersonMapper.selectWorkOrderFlowRecordsSize();
-        Integer repairOrderFlowRecordsSize = orderPersonMapper.selectRepairOrderFlowRecordsSize();
+        Integer workOrderFlowRecordsSize = orderPersonMapper.workOrderFlowRecordsSize();
+        Integer repairOrderFlowRecordsSize = orderPersonMapper.repairOrderFlowRecordsSize();
         Integer workOrderFlowRecordsSizeNext = orderPersonMapper.selectWorkOrderFlowRecordsSize();
         Integer repairOrderFlowRecordsSizeNext = orderPersonMapper.selectRepairOrderFlowRecordsSize();
 

+ 6 - 6
ygtx-gxt/src/main/resources/mapper/gxt/GxtWorkOrderMapper.xml

@@ -703,8 +703,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 ROUND((TIMESTAMPDIFF( MINUTE, wo.accept_time, wo.real_start_time ) / 60) - (IFNULL(gq.total_before_start_suspend_seconds, 0) / 3600),2) AS zbsc,
                 ROUND(TIMESTAMPDIFF( MINUTE, COALESCE ( wo.pause_time, wo.real_start_time ), wo.restart_time ) / 60,2) AS tjsc,
                 ROUND(TIMESTAMPDIFF( MINUTE, wo.real_end_time, wo.restart_time ) / 60,2) AS qjbwsc,
-                ROUND(( TIMESTAMPDIFF( MINUTE, wo.real_start_time, wo.real_end_time ) / 60 ) - (IFNULL(gq.total_before_start_suspend_seconds, 0) / 3600) - (IFNULL(gq.total_in_work_suspend_seconds, 0) / 3600),2) AS clsc,
-                ROUND(TIMESTAMPDIFF( MINUTE, approved.approved_time, resume.resume_time ) / 60,2) AS gqsc
+                ROUND(( TIMESTAMPDIFF( MINUTE, wo.real_start_time, wo.real_end_time ) / 60 ) - (IFNULL(gq.total_in_work_suspend_seconds, 0) / 3600),2) AS clsc,
+                ROUND(CASE WHEN gq.order_id IS NOT NULL THEN (gq.total_in_work_suspend_seconds)/3600 ELSE 0 END,2) AS gqsc
             FROM
                 gxt_work_order wo
                 LEFT JOIN sys_dept d ON wo.pcs_station_pid = d.dept_id
@@ -745,7 +745,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                     </foreach>
                 </if>
                 <if test="dataPermission != null and dataPermission != ''">${dataPermission}</if>
-                AND p.dept_name IS NOT NULL AND wo.work_order_status IS NOT NULL AND wo.work_order_status!='invalid'
+                AND p.dept_name IS NOT NULL AND wo.work_order_status IS NOT NULL AND wo.work_order_status='archived'
             </where>
 
             UNION ALL
@@ -766,12 +766,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 <if test="repairPerson != null and repairPerson == 'true'">u.nick_name AS repairPerson,ROUND(wop.score,2) AS score,</if>
                 <if test="repairPerson == null or repairPerson == '' or repairPerson == 'false'">ROUND(wo.score,2) AS score,</if>
                 ROUND(TIMESTAMPDIFF( MINUTE, wo.occur_time, wo.assign_time ) / 60,2) AS xfsc,
-                ROUND(TIMESTAMPDIFF( MINUTE, wo.assign_time, wo.accept_time ) / 60,2) AS xysc,
+                ROUND((TIMESTAMPDIFF( MINUTE, wo.assign_time, wo.accept_time ) / 60)-(IFNULL(gq.total_night_auto_suspend_seconds, 0) / 3600),2) AS xysc,
                 ROUND((TIMESTAMPDIFF( MINUTE, wo.accept_time, wo.real_start_time ) / 60)-(IFNULL(gq.total_before_start_suspend_seconds, 0) / 3600),2) AS zbsc,
                 ROUND(TIMESTAMPDIFF( MINUTE, wo.occur_time, wo.restart_time ) / 60,2) AS tjsc,
                 ROUND(TIMESTAMPDIFF( MINUTE, wo.real_end_time, wo.restart_time ) / 60,2) AS qjbwsc,
                 ROUND((TIMESTAMPDIFF( MINUTE, wo.real_start_time, wo.real_end_time ) / 60 ) - (IFNULL(gq.total_before_start_suspend_seconds, 0) / 3600) - (IFNULL(gq.total_in_work_suspend_seconds, 0) / 3600),2) AS clsc,
-                ROUND(TIMESTAMPDIFF( MINUTE, approved.approved_time, resume.resume_time ) / 60,2) AS gqsc
+                ROUND(CASE WHEN gq.order_id IS NOT NULL THEN (gq.total_before_start_suspend_seconds + gq.total_in_work_suspend_seconds + gq.total_night_auto_suspend_seconds)/3600 ELSE 0 END,2) AS gqsc
             FROM
                 gxt_repair_order wo
                 LEFT JOIN sys_dept d ON wo.pcs_station_pid = d.dept_id
@@ -812,7 +812,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                     </foreach>
                 </if>
                 <if test="dataPermission != null and dataPermission != ''">${dataPermission}</if>
-                AND p.dept_name IS NOT NULL AND wo.work_order_status IS NOT NULL AND wo.work_order_status!='invalid'
+                AND p.dept_name IS NOT NULL AND wo.work_order_status IS NOT NULL AND wo.work_order_status='archived'
             </where>
             ) o
         <where>

+ 48 - 11
ygtx-gxt/src/main/resources/mapper/gxt/gxtOrderPersonMapper.xml

@@ -114,12 +114,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             (SELECT COUNT(*)
              FROM gxt_repair_order_flow f2
              WHERE f2.order_id = f.order_id
-               AND f2.action_type IN ('approved', 'resume')
+               AND f2.action_type IN ('approved', 'resume', 'auto_suspend', 'auto_resume')
                AND f.action_time >= f2.action_time) AS order_seq
         FROM gxt_repair_order_flow f
                  LEFT JOIN gxt_repair_order ro
                            ON ro.id = f.order_id
-        WHERE f.action_type IN ('approved', 'resume')
+        WHERE f.action_type IN ('approved', 'resume', 'auto_suspend', 'auto_resume')
         ) t
     </select>
 
@@ -139,12 +139,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             (SELECT COUNT(*)
              FROM gxt_repair_order_flow f2
              WHERE f2.order_id = f.order_id
-               AND f2.action_type IN ('approved', 'resume')
+               AND f2.action_type IN ('approved', 'resume', 'auto_suspend', 'auto_resume')
                AND f.action_time >= f2.action_time) AS order_seq
         FROM gxt_repair_order_flow f
                  LEFT JOIN gxt_repair_order ro
                            ON ro.id = f.order_id
-        WHERE f.action_type IN ('approved', 'resume')
+        WHERE f.action_type IN ('approved', 'resume', 'auto_suspend', 'auto_resume')
         ORDER BY f.order_id, f.action_time
     </insert>
 
@@ -153,11 +153,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             order_id,
             total_before_start_suspend_seconds,
             total_in_work_suspend_seconds,
+            total_night_auto_suspend_seconds,
             before_start_suspend_format,
-            in_work_suspend_format
+            in_work_suspend_format,
+            night_auto_suspend_format
         )
         SELECT
-            t1.order_id,
+            t0.order_id,
             COALESCE(SUM(CASE
                              WHEN t1.action_time <![CDATA[<]]> t1.real_start_time
                                  THEN TIMESTAMPDIFF(SECOND, t1.action_time, t2.action_time)
@@ -169,6 +171,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                                  THEN TIMESTAMPDIFF(SECOND, t1.action_time, t2.action_time)
                              ELSE 0
                 END), 0) AS total_in_work_suspend_seconds,
+            COALESCE(SUM(CASE
+                             WHEN t4.action_time IS NOT NULL
+                                 THEN TIMESTAMPDIFF(SECOND, t3.action_time, t4.action_time)
+                             ELSE 0
+                END), 0) AS total_night_auto_suspend_seconds,
 
             CONCAT(
                     FLOOR(COALESCE(SUM(CASE
@@ -204,15 +211,45 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                                              THEN TIMESTAMPDIFF(SECOND, t1.action_time, t2.action_time)
                                          ELSE 0
                         END), 0), 60), '秒'
-                ) AS in_work_suspend_format
-        FROM gxt_repair_order_flow_records t1
+                ) AS in_work_suspend_format,
+
+            CONCAT(
+                    FLOOR(COALESCE(SUM(CASE
+                                           WHEN t4.action_time IS NOT NULL
+                                               THEN TIMESTAMPDIFF(SECOND, t3.action_time, t4.action_time)
+                                           ELSE 0
+                        END), 0) / 3600), '小时',
+                    FLOOR(MOD(COALESCE(SUM(CASE
+                                               WHEN t4.action_time IS NOT NULL
+                                                   THEN TIMESTAMPDIFF(SECOND, t3.action_time, t4.action_time)
+                                               ELSE 0
+                        END), 0), 3600) / 60), '分钟',
+                    MOD(COALESCE(SUM(CASE
+                                         WHEN t4.action_time IS NOT NULL
+                                             THEN TIMESTAMPDIFF(SECOND, t3.action_time, t4.action_time)
+                                         ELSE 0
+                        END), 0), 60), '秒'
+                ) AS night_auto_suspend_format
+
+        FROM (SELECT order_id FROM gxt_repair_order_flow_records GROUP BY order_id) t0
+                 LEFT JOIN gxt_repair_order_flow_records t1
+                           ON t0.order_id = t1.order_id
+                               AND t1.action_type = 'approved'
                  LEFT JOIN gxt_repair_order_flow_records t2
                            ON t1.order_id = t2.order_id
                                AND t2.order_seq = t1.order_seq + 1
                                AND t1.action_type = 'approved'
-                               AND t2.action_type = 'resume'
-        GROUP BY t1.order_id
-        ORDER BY t1.order_id
+                               AND t2.action_type IN ('resume','auto_resume')
+                 LEFT JOIN gxt_repair_order_flow_records t3
+                           ON t0.order_id = t3.order_id
+                               AND t3.action_type = 'auto_suspend'
+                 LEFT JOIN gxt_repair_order_flow_records t4
+                           ON t3.order_id = t4.order_id
+                               AND t4.order_seq = t3.order_seq + 1
+                               AND t3.action_type = 'auto_suspend'
+                               AND t4.action_type IN ('resume','auto_resume')
+        GROUP BY t0.order_id
+        ORDER BY t0.order_id
     </insert>
 
     <select id="selectWorkOrderFlowRecordsSize" resultType="Integer">

+ 8 - 8
ygtx-ui/src/views/gxt/monthRuntime/index.vue

@@ -61,21 +61,21 @@
     <!-- 订单列表弹窗 -->
     <el-dialog :title="ordersTitle" v-model="openOrders" width="1200px" append-to-body>
       <el-table v-loading="ordersLoading" :data="ordersList" style="width: 100%">
-        <el-table-column prop="pcsDeviceName" label="设备编号" width="120" />
-        <el-table-column prop="model" label="设备型号" width="150" />
+        <el-table-column prop="pcsDeviceName" label="风机编号" width="120" />
+        <el-table-column prop="model" label="机型" width="150" />
         <el-table-column prop="pcsStationName" label="设备场站" width="150" />
         <el-table-column prop="orderType" label="工单类型" width="100">
           <template #default="scope">
             {{ scope.row.orderType == 1 ? '维保工单' : scope.row.orderType == 2 ? '维修工单' : '' }}
           </template>
         </el-table-column>
-        <el-table-column label="工单编号" width="150">
+        <el-table-column label="工单编码" width="180">
           <template #default="scope">
             <el-button link type="primary" @click="handleWorkOrderClick(scope.row)">{{ scope.row.workOrderProjectNo }}</el-button>
           </template>
         </el-table-column>
-        <el-table-column v-if="isStop" prop="pauseTime" label="停机时间" width="150" />
-        <el-table-column prop="restartTime" label="复运时间" width="150" />
+        <el-table-column v-if="isStop" prop="pauseTime" label="停机时间"/>
+        <el-table-column prop="restartTime" label="复运时间"/>
         <el-table-column v-if="isStop" prop="stopDays" label="停机天数" />
         <el-table-column v-if="!isStop" prop="runningDays" label="安全运行天数" />
       </el-table>
@@ -195,9 +195,9 @@ function handleShowOrders(row, type) {
 
 
     
-// 处理工单编点击事件
+// 处理工单编点击事件
 function handleWorkOrderClick(row) {
-  // 记录来源路由和工单编
+  // 记录来源路由和工单编
   if (!row.workOrderProjectNo) return
   openOrders.value = false;
   if (row.orderType==1) {
@@ -208,7 +208,7 @@ function handleWorkOrderClick(row) {
       path: '/workOrder/gxtOrder'
     });
   }else{
-    // 记录来源路由和工单编
+    // 记录来源路由和工单编
     sessionStorage.setItem('fromRouteRepair', '/workScore/monthScore');
     sessionStorage.setItem('workOrderProjectNoRepair', row.workOrderProjectNo);
     // 跳转到维保工单列表页面

+ 5 - 5
ygtx-ui/src/views/gxt/monthScore/index.vue

@@ -103,7 +103,7 @@
           </div>
           <div class="form-content" style="margin-top: 20px;">
             <el-table :data="workOrderList" style="width: 100%" class="custom-header-table">
-              <el-table-column width="200px" label="工单编">
+              <el-table-column width="200px" label="工单编">
                 <template #default="scope">
                   <el-button link type="primary" @click="handleWorkOrderClick(scope.row)">{{ scope.row.workOrderProjectNo }}</el-button>
                 </template>
@@ -147,7 +147,7 @@
           </div>
           <div class="form-content" style="margin-top: 20px;">
             <el-table :data="repairOrderList" style="width: 100%" class="custom-header-table">
-              <el-table-column width="200px" label="工单编">
+              <el-table-column width="200px" label="工单编">
                 <template #default="scope">
                   <el-button link type="primary" @click="handleRepairOrderClick(scope.row)">{{ scope.row.workOrderProjectNo }}</el-button>
                 </template>
@@ -642,9 +642,9 @@ export default {
       return dictItem ? dictItem.value : '';
     },
     
-    // 处理工单编点击事件
+    // 处理工单编点击事件
     handleWorkOrderClick(row) {
-      // 记录来源路由和工单编
+      // 记录来源路由和工单编
       sessionStorage.setItem('fromRoute', '/workScore/monthScore');
       sessionStorage.setItem('workOrderProjectNo', row.workOrderProjectNo);
       // 跳转到维保工单列表页面
@@ -654,7 +654,7 @@ export default {
     },
     
     handleRepairOrderClick(row) {
-      // 记录来源路由和工单编
+      // 记录来源路由和工单编
       sessionStorage.setItem('fromRouteRepair', '/workScore/monthScore');
       sessionStorage.setItem('workOrderProjectNoRepair', row.workOrderProjectNo);
       // 跳转到维保工单列表页面

+ 5 - 5
ygtx-ui/src/views/gxt/monthScore/info.vue

@@ -38,7 +38,7 @@
           </div>
           <div class="form-content" style="margin-top: 20px;">
             <el-table :data="workOrderList" style="width: 100%" class="custom-header-table">
-              <el-table-column width="200px" label="工单编">
+              <el-table-column width="200px" label="工单编">
                 <template #default="scope">
                   <el-button link type="primary" @click="handleWorkOrderClick(scope.row)">{{ scope.row.workOrderProjectNo }}</el-button>
                 </template>
@@ -83,7 +83,7 @@
           </div>
           <div class="form-content" style="margin-top: 20px;">
             <el-table :data="repairOrderList" style="width: 100%" class="custom-header-table">
-              <el-table-column width="200px" label="工单编">
+              <el-table-column width="200px" label="工单编">
                 <template #default="scope">
                   <el-button link type="primary" @click="handleRepairOrderClick(scope.row)">{{ scope.row.workOrderProjectNo }}</el-button>
                 </template>
@@ -515,9 +515,9 @@ export default {
       this.queryWxList();
     },
     
-    // 处理工单编点击事件
+    // 处理工单编点击事件
     handleWorkOrderClick(row) {
-      // 记录来源路由和工单编
+      // 记录来源路由和工单编
       sessionStorage.setItem('fromRoute', '/workScore/monthScore');
       sessionStorage.setItem('workOrderProjectNo', row.workOrderProjectNo);
       // 跳转到维保工单列表页面
@@ -527,7 +527,7 @@ export default {
     },
     
     handleRepairOrderClick(row) {
-      // 记录来源路由和工单编
+      // 记录来源路由和工单编
       sessionStorage.setItem('fromRouteRepair', '/workScore/monthScore');
       sessionStorage.setItem('workOrderProjectNoRepair', row.workOrderProjectNo);
       // 跳转到维保工单列表页面

+ 4 - 4
ygtx-ui/src/views/index3.vue

@@ -19,8 +19,8 @@
               >
                 <el-option label="维保中心" value="gxt_center" />
                 <el-option label="场站" value="pcs_station_name" />
-                <el-option label="设备品牌" value="brand" />
-                <el-option label="设备型号" value="model" />
+                <el-option label="品牌" value="brand" />
+                <el-option label="机型" value="model" />
               </el-select>
               <el-button icon="Refresh" @click="resetQuery" style="margin-left: 10px;">重置</el-button>
               <el-button type="success" icon="Download" @click="handleExport">导出</el-button>
@@ -379,8 +379,8 @@ const selectedGroupFields = computed(() => {
   const fieldMap = {
     'gxt_center': { prop: 'gxt_center', label: '维保中心' },
     'pcs_station_name': { prop: 'pcs_station_name', label: '场站' },
-    'brand': { prop: 'brand', label: '设备品牌' },
-    'model': { prop: 'model', label: '设备型号' }
+    'brand': { prop: 'brand', label: '品牌' },
+    'model': { prop: 'model', label: '机型' }
   }
   return groupFields.value.map(field => fieldMap[field])
 })

+ 5 - 5
ygtx-ui/src/views/index4.vue

@@ -467,12 +467,12 @@
             <el-table-column v-if="queryParams.repairOrderNum==1" prop="repairOrderNum" label="维修工单数" :style="{ width: changeWidth() + '%' }" header-align="center" align="center"></el-table-column>
             <el-table-column v-if="queryParams.restartNum==1" prop="restartNum" label="复位启机数量" :style="{ width: changeWidth() + '%' }" header-align="center" align="center"></el-table-column>
             <el-table-column v-if="queryParams.score==1" prop="score" label="工分" :style="{ width: changeWidth() + '%' }" header-align="center" align="center" :formatter="formatScore"></el-table-column>
-            <el-table-column v-if="queryParams.tjsc" prop="tjsc" label="停机时长(h)" :style="{ width: changeWidth() * 1.5 + '%' }" header-align="center" align="center" :formatter="formatScore"></el-table-column>
             <el-table-column v-if="queryParams.xfsc" prop="xfsc" label="下发时长(h)" :style="{ width: changeWidth() * 1.5 + '%' }" header-align="center" align="center" :formatter="formatScore"></el-table-column>
-            <el-table-column v-if="queryParams.xysc" prop="xysc" label="响应时长(h)" :style="{ width: changeWidth() * 1.5 + '%' }" header-align="center" align="center" :formatter="formatScore"></el-table-column>
+            <el-table-column v-if="queryParams.xysc" prop="xysc" label="接单时长(h)" :style="{ width: changeWidth() * 1.5 + '%' }" header-align="center" align="center" :formatter="formatScore"></el-table-column>
             <el-table-column v-if="queryParams.zbsc" prop="zbsc" label="准备时长(h)" :style="{ width: changeWidth() * 1.5 + '%' }" header-align="center" align="center" :formatter="formatScore"></el-table-column>
-            <el-table-column v-if="queryParams.clsc" prop="clsc" label="处理时长(h)" :style="{ width: changeWidth() * 1.5 + '%' }" header-align="center" align="center" :formatter="formatScore"></el-table-column>
-            <el-table-column v-if="queryParams.qjbwsc" prop="qjbwsc" label="启机并网时长(h)" :style="{ width: changeWidth() * 1.5 + '%' }" header-align="center" align="center" :formatter="formatScore"></el-table-column>
+            <el-table-column v-if="queryParams.clsc" prop="clsc" label="作业时长(h)" :style="{ width: changeWidth() * 1.5 + '%' }" header-align="center" align="center" :formatter="formatScore"></el-table-column>
+            <el-table-column v-if="queryParams.qjbwsc" prop="qjbwsc" label="复运时长(h)" :style="{ width: changeWidth() * 1.5 + '%' }" header-align="center" align="center" :formatter="formatScore"></el-table-column>
+            <el-table-column v-if="queryParams.tjsc" prop="tjsc" label="停运时长(h)" :style="{ width: changeWidth() * 1.5 + '%' }" header-align="center" align="center" :formatter="formatScore"></el-table-column>
             <el-table-column v-if="queryParams.gqsc" prop="gqsc" label="挂起时长(h)" :style="{ width: changeWidth() * 1.5 + '%' }" header-align="center" align="center" :formatter="formatScore"></el-table-column>
           </el-table>
           <pagination
@@ -868,7 +868,7 @@ export default {
               }
             });
             
-            // 添加设备编号作为最终层级
+            // 添加风机编号作为最终层级
             // 显示为equipmentCode,但值为equipmentId
             if (item.equipmentCode && item.equipmentId) {
               path.push(`equipment-${item.equipmentId}-${index}`);