wanglt 3 ヶ月 前
コミット
399746b128

+ 2 - 0
ygtx-gxt/src/main/java/com/ygtx/gxt/mapper/GxtRepairOrderMapper.java

@@ -102,6 +102,8 @@ public interface GxtRepairOrderMapper
 
     public GxtOrderData selectHomePageData(@Param("userId") Long userId,@Param("monthPeriod") String monthPeriod);
 
+    public GxtOrderData selectGSTJ(@Param("userId") Long userId,@Param("monthPeriod") String monthPeriod);
+
     public List<GxtUserScore> selectHomePageRank(GxtUserScore gxtUserScore);
     
     /**

+ 3 - 15
ygtx-gxt/src/main/java/com/ygtx/gxt/service/impl/GxtRepairOrderServiceImpl.java

@@ -2047,13 +2047,13 @@ public class GxtRepairOrderServiceImpl implements IGxtRepairOrderService
         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
         String monthPeriod = currentYearMonth.format(formatter);
         GxtOrderData result = gxtRepairOrderMapper.selectHomePageData(userId,monthPeriod);
+        GxtOrderData gstj = gxtRepairOrderMapper.selectGSTJ(userId,monthPeriod);
+        result.setWbgs(gstj.getWbgs());
+        result.setWxgs(gstj.getWxgs());
         BigDecimal wbgs = result.getWbgs();
-        BigDecimal wbgsLast = result.getWbgsLast();
         BigDecimal wxgs = result.getWxgs();
-        BigDecimal wxgsLast = result.getWxgsLast();
         BigDecimal score = result.getScore();
         BigDecimal scoreLast = result.getScoreLast();
-        BigDecimal wbjsy = BigDecimal.ZERO;
         BigDecimal gfjsy = BigDecimal.ZERO;
         double wjsy = 0;
         double rjsy = 0;
@@ -2069,17 +2069,6 @@ public class GxtRepairOrderServiceImpl implements IGxtRepairOrderService
         } else if (result.getRepairOrderNumLast()==0 && result.getRepairOrderNum()>0) {
             rjsy = 100.0;
         }
-        if (wbgsLast.add(wxgsLast).compareTo(BigDecimal.ZERO)!=0) {
-            BigDecimal dif = wbgs.add(wxgs).subtract(wbgsLast).subtract(wxgsLast);
-            if (dif.compareTo(BigDecimal.ZERO)!=0) {
-                wbjsy = dif
-                        .divide(wbgsLast.add(wxgsLast), 10, RoundingMode.HALF_UP)
-                        .multiply(new BigDecimal("100"))
-                        .setScale(1, RoundingMode.HALF_UP);
-            }
-        } else if (wbgs.add(wxgs).compareTo(BigDecimal.ZERO)>0) {
-            wbjsy = new BigDecimal(100.0);
-        }
         if (scoreLast.compareTo(BigDecimal.ZERO)!=0) {
             BigDecimal dif = score.subtract(scoreLast);
             if (dif.compareTo(BigDecimal.ZERO)!=0) {
@@ -2094,7 +2083,6 @@ public class GxtRepairOrderServiceImpl implements IGxtRepairOrderService
         result.setWorkOrderJsy(wjsy);
         result.setRepairOrderJsy(rjsy);
         result.setWbgs(wbgs.add(wxgs));
-        result.setWbjsy(wbjsy);
         result.setGfjsy(gfjsy);
 
         // 排名权限

+ 39 - 4
ygtx-gxt/src/main/resources/mapper/gxt/GxtRepairOrderMapper.xml

@@ -692,6 +692,45 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         WHERE t1.id = #{id}
     </select>
 
+    <select id="selectGSTJ" resultMap="GxtOrderDataResult">
+        SELECT
+            u.user_id,a.wxgs,b.wbgs
+        FROM sys_user u
+        LEFT JOIN (
+        SELECT
+            rop.user_id,
+            SUM((TIMESTAMPDIFF( SECOND, ro.real_start_time, ro.real_end_time ) - IFNULL(gq.total_in_work_suspend_seconds, 0)) / 3600) AS wxgs
+        FROM
+            gxt_repair_order_person rop
+                LEFT JOIN gxt_repair_order ro ON rop.order_id = ro.id
+                LEFT JOIN gxt_repair_order_flow_records_next gq ON gq.order_id = rop.order_id
+                LEFT JOIN (SELECT order_id,MAX(action_time) AS finish_time FROM gxt_repair_order_flow WHERE action_type IN ('complete','auto_finalize') GROUP BY order_id) flow ON flow.order_id=rop.order_id
+        WHERE
+            ro.repair_method!='2' AND ro.work_order_status IN ('completed','archived') AND flow.finish_time IS NOT NULL
+            AND flow.finish_time >= STR_TO_DATE( CONCAT( #{monthPeriod}, '-01 00:00:00' ), '%Y-%m-%d %H:%i:%s' )
+          AND flow.finish_time <![CDATA[<]]> DATE_ADD( STR_TO_DATE( CONCAT( #{monthPeriod}, '-01 00:00:00' ), '%Y-%m-%d %H:%i:%s' ), INTERVAL 1 MONTH )
+        GROUP BY
+            rop.user_id) a ON a.user_id=u.user_id
+        LEFT JOIN (
+        SELECT
+            wop.user_id,
+            SUM((TIMESTAMPDIFF( SECOND, wo.real_start_time, wo.real_end_time ) - IFNULL(gq.total_in_work_suspend_seconds, 0)) / 3600) AS wbgs
+        FROM
+            gxt_work_order_person wop
+                LEFT JOIN gxt_work_order wo ON wop.order_id = wo.id
+                LEFT JOIN gxt_work_order_flow_records_next gq ON gq.order_id = wop.order_id
+                LEFT JOIN (SELECT order_id,MAX(action_time) AS finish_time FROM gxt_work_order_flow WHERE action_type IN ('complete','auto_finalize') GROUP BY order_id) flow ON flow.order_id=wop.order_id
+        WHERE
+            wo.work_order_status IN ('completed','archived') AND flow.finish_time IS NOT NULL
+          AND flow.finish_time >= STR_TO_DATE( CONCAT( #{monthPeriod}, '-01 00:00:00' ), '%Y-%m-%d %H:%i:%s' )
+          AND flow.finish_time <![CDATA[<]]> DATE_ADD( STR_TO_DATE( CONCAT( #{monthPeriod}, '-01 00:00:00' ), '%Y-%m-%d %H:%i:%s' ), INTERVAL 1 MONTH )
+        GROUP BY
+            wop.user_id) b ON u.user_id=b.user_id
+        <where>
+            <if test="userId != null"> and u.user_id=#{userId}</if>
+        </where>
+    </select>
+
     <select id="selectHomePageData" resultMap="GxtOrderDataResult">
         SELECT
         u.user_id,
@@ -700,10 +739,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         IFNULL( c.repair_num, 0 ) AS repairOrderNum,
         IFNULL( cc.repair_num, 0 ) AS repairRestartOrderNum,
         IFNULL( d.repair_num_last, 0 ) AS repairOrderNumLast,
-        IFNULL( j.wxgs, 0 ) AS wxgs,
-        IFNULL( k.wxgs_last, 0 ) AS wxgs_last,
-        IFNULL( l.wbgs, 0 ) AS wbgs,
-        IFNULL( m.wbgs_last, 0 ) AS wbgs_last,
         IFNULL( n.score, 0 ) AS score,
         IFNULL( o.score, 0 ) AS score_last,
         IFNULL( p.pcsWorkOrderNum, 0 ) AS pcsWorkOrderNum,