From 057d4df78bcc5b34ca7c6897918946c4a9e65d18 Mon Sep 17 00:00:00 2001
From: Fancy <Fancy.fx@outlook.com>
Date: 星期二, 14 一月 2025 13:52:06 +0800
Subject: [PATCH] queryStatisticOrder

---
 pms-parent/pms-web-other/src/main/java/com/dy/pmsOther/screen/ScreenReportSv.java |  152 ++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 133 insertions(+), 19 deletions(-)

diff --git a/pms-parent/pms-web-other/src/main/java/com/dy/pmsOther/screen/ScreenReportSv.java b/pms-parent/pms-web-other/src/main/java/com/dy/pmsOther/screen/ScreenReportSv.java
index 1150855..34cfb76 100644
--- a/pms-parent/pms-web-other/src/main/java/com/dy/pmsOther/screen/ScreenReportSv.java
+++ b/pms-parent/pms-web-other/src/main/java/com/dy/pmsOther/screen/ScreenReportSv.java
@@ -1,21 +1,33 @@
 package com.dy.pmsOther.screen;
 
 
+import cn.hutool.core.date.DateTime;
 import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.dy.common.springUtil.SpringContextUtil;
+import com.dy.pmsGlobal.daoOth.OthStatisticWorkloadMapper;
 import com.dy.pmsGlobal.daoPr.PrAssemblyPlanMapper;
+import com.dy.pmsGlobal.daoPr.PrOrderItemMapper;
+import com.dy.pmsGlobal.daoPr.PrOrderMapper;
 import com.dy.pmsGlobal.daoSta.*;
+import com.dy.pmsGlobal.pojoPr.PrOrder;
+import com.dy.pmsGlobal.pojoPr.PrOrderItem;
 import com.dy.pmsGlobal.pojoSta.*;
+import com.dy.pmsGlobal.util.UserUtil;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.common.utils.PojoUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
+import java.time.temporal.ChronoUnit;
 import java.time.temporal.TemporalAccessor;
 import java.util.Date;
 import java.util.HashMap;
@@ -33,6 +45,17 @@
     private StaDeviceProductionLogMapper deviceProductionLogDao;
     private StaRepairInfoMapper repairInfoDao;
     private PrAssemblyPlanMapper assemblyPlanDao;
+    private StaAssemblyWorkLastMapper assemblyWorkLastDao;
+
+    private OthStatisticWorkloadMapper workloadDao;
+    private PrOrderMapper orderDao;
+    private OthStatisticWorkloadMapper statisticWorkDao;
+
+    @Autowired
+    public void setOrderDao(PrOrderMapper orderDao) {
+        this.orderDao = orderDao;
+    }
+
     @Autowired
     public void setDeviceLastDao(StaDeviceLastMapper deviceLastDao) {
         this.deviceLastDao = deviceLastDao;
@@ -59,8 +82,23 @@
     }
 
     @Autowired
+    public void setAssemblyWorkLastDao(StaAssemblyWorkLastMapper assemblyWorkLastDao) {
+        this.assemblyWorkLastDao = assemblyWorkLastDao;
+    }
+
+    @Autowired
     public void setRepairInfoDao(StaRepairInfoMapper repairInfoDao) {
         this.repairInfoDao = repairInfoDao;
+    }
+
+    @Autowired
+    public void setWorkloadDao(OthStatisticWorkloadMapper workloadDao) {
+        this.workloadDao = workloadDao;
+    }
+
+    @Autowired
+    public void setStatisticWorkDao(OthStatisticWorkloadMapper statisticWorkDao) {
+        this.statisticWorkDao = statisticWorkDao;
     }
 
     public Map<String, Object> getDeviceInfo(String deviceNo) {
@@ -72,7 +110,7 @@
         if (deviceLast == null) {
             return null;
         }
-        Map<String, Object> deviceInfo =new HashMap<>();
+        Map<String, Object> deviceInfo = new HashMap<>();
         deviceInfo.put("deviceInfo", deviceLast);
         //鏌ヨ璁惧鏃ュ織
         List<StaDeviceProductionLog> log = deviceProductionLogDao.selectByDeviceNo(deviceNo);
@@ -90,21 +128,21 @@
     }
 
     public List<StaDeviceProductionLog> queryDeviceLog(String startTime, String endTime) {
-        Date startDt = parseToDate(startTime,0);
-        Date endDt = parseToDate(endTime,1);
+        Date startDt = parseToDate(startTime, 0);
+        Date endDt = parseToDate(endTime, 1);
         //鏌ヨ璁惧鏃ュ織
-        List<StaDeviceProductionLog> log = deviceProductionLogDao.selectProductLog("",startDt,endDt);
+        List<StaDeviceProductionLog> log = deviceProductionLogDao.selectProductLog("", startDt, endDt);
         return log;
     }
 
-    private Date parseToDate(String strDt,long offDays) {
-        LocalDateTime dt = LocalDateTime.of(LocalDate.now().plusDays(offDays), LocalTime.of(0,0,0)); // 浠婂ぉ24鐐�
+    private Date parseToDate(String strDt, long offDays) {
+        LocalDateTime dt = LocalDateTime.of(LocalDate.now().plusDays(offDays), LocalTime.of(0, 0, 0)); // 浠婂ぉ24鐐�
         DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
         DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         if (strDt.matches("\\d{4}(-\\d{2}){2} \\d{2}(:\\d{2}){2}")) {//2024-08-15 00:00:00
-            dt = LocalDateTime.parse(strDt,dtf);
-        }else if (strDt.matches("\\d{4}(-\\d{2}){2}")){
-            dt = LocalDateTime.of(LocalDate.parse(strDt,dtf1), LocalTime.of(0,0,0));
+            dt = LocalDateTime.parse(strDt, dtf);
+        } else if (strDt.matches("\\d{4}(-\\d{2}){2}")) {
+            dt = LocalDateTime.of(LocalDate.parse(strDt, dtf1), LocalTime.of(0, 0, 0));
         }
         Date date = Date.from(dt.atZone(ZoneId.systemDefault()).toInstant());
         return date;
@@ -112,30 +150,106 @@
 
     public List<JSONObject> queryPlanList() {
         List<JSONObject> list = assemblyPlanDao.queryPlanList();
-        Map<String, JSONObject> map = new ConcurrentHashMap<>(); // 浣跨敤骞跺彂瀹夊叏鐨凪ap
-        for(JSONObject item:list){
+        /*Map<String, JSONObject> map = new ConcurrentHashMap<>(); // 浣跨敤骞跺彂瀹夊叏鐨凪ap
+        for (JSONObject item : list) {
             String planId = String.valueOf(item.getObj("planId"));
             JSONObject innerObject = new JSONObject()
                     .set("nodeId", String.valueOf(item.getObj("nodeId")))
                     .set("content", item.getObj("content"));
-            if(map.containsKey(planId)){
-                JSONArray array = (JSONArray)map.get(planId).get("nodes");
+            if (map.containsKey(planId)) {
+                JSONArray array = (JSONArray) map.get(planId).get("nodes");
                 array.add(innerObject);
-            }else{
+            } else {
                 JSONArray array = new JSONArray();
                 array.add(innerObject);
-                JSONObject outObject= new JSONObject()
+                JSONObject outObject = new JSONObject()
                         .set("planId", planId)
                         .set("planName", item.getObj("planName"))
                         .set("nodes", array);
-                map.put(planId,outObject);
+                map.put(planId, outObject);
             }
         }
-        return map.values().stream().collect(Collectors.toList());
+        return map.values().stream().collect(Collectors.toList());*/
+        return list;
+    }
+    public List<JSONObject> queryWorkList() {
+        List<JSONObject> list = assemblyWorkLastDao.queryWorkList();
+        return list;
     }
 
+    //娌″啓瀹�
+    public List<JSONObject> queryOrderList() {
+        List<JSONObject> list = assemblyPlanDao.queryPlanList();
+       /* Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize();
+        List<PrOrder> orderList = orderDao.selectAll(params);
+        for (PrOrder prOrder : orderList) {
+            changeRate(prOrder);
+        }*/
+        return null;
+    }
+    private void changeRate(PrOrder prOrder) {
+        if (prOrder != null && prOrder.items != null) {
+            List<PrOrderItem> items = prOrder.items;
+            for (int i = 1; i < items.size(); i++) {
+                for (int j = i - 1; j >= 0; j--) {
+                    //鎷跨潃i渚濇璺熶笂涓�涓瘮杈�,濡傛灉浜у搧鐩稿悓,鍒欎笂涓�涓褰昪omplete_number - number 濡傛灉 > 0 鍒嗙粰i ,濡傛灉 < 0 鍒欏皢 complete_number 缃负0
+                    if (items.get(j).getProId().intValue() == items.get(i).getProId().intValue()) {
+                        int remainNumber = items.get(j).getCompleteNumber() - items.get(j).getNumber();
+                        if (remainNumber > 0) {
+                            items.get(j).setCompleteNumber(items.get(j).getNumber());
+                            items.get(j).setCompleteRate("100.00%");
+                            items.get(i).setCompleteNumber(remainNumber);
+                            BigDecimal remainBig = new BigDecimal(remainNumber * 100);
+                            BigDecimal iNumberBig = new BigDecimal(items.get(i).getNumber());
+                            BigDecimal result = remainBig.divide(iNumberBig, 2, RoundingMode.HALF_UP);
+                            items.get(i).setCompleteRate(result.toString() + "%");
+                        } else {
+                            items.get(i).setCompleteNumber(0);
+                            items.get(i).setCompleteRate("0.00%");
+                        }
+                        break;
+                    }
+                }
+            }
+        }
+    }
 
+    public List<JSONObject> queryTopError() {
+        Date startDt = Date.from(LocalDateTime.of(LocalDate.now().minusDays(2000), LocalTime.of(0, 0, 0)).atZone(ZoneId.systemDefault()).toInstant());
+        Date endDt = new Date();
+        List<JSONObject> list = deviceProductionLogDao.queryTopError(startDt, endDt);
+        return list;
+    }
+    public JSONObject queryAttendUser() {
+        Date startDt = Date.from(LocalDateTime.of(LocalDate.now().minusDays(2000), LocalTime.of(0, 0, 0)).atZone(ZoneId.systemDefault()).toInstant());
+        Date endDt = new Date();
+        Date todayDt = Date.from(LocalDateTime.of(LocalDate.now(), LocalTime.of(0, 0, 0)).atZone(ZoneId.systemDefault()).toInstant());
+        List<JSONObject> list = assemblyWorkLastDao.queryAttendUser(startDt, endDt,todayDt);
+        if(list.size() == 0){
+            JSONObject obj = new JSONObject();
+            obj.set("require_attend", "0");
+            obj.set("actual_attend", "0");
+            return obj;
+        }
+        return list.get(0);
+    }
 
-
-
+    public List<JSONObject> queryStatisticWork() {
+        Date startDt = Date.from(LocalDateTime.of(LocalDate.now(), LocalTime.of(0, 0, 0)).atZone(ZoneId.systemDefault()).toInstant());
+        Date endDt = new Date();
+        List<JSONObject> list = statisticWorkDao.queryStatisticWork(startDt, endDt);
+        return list;
+    }
+    public JSONObject queryStatisticOrder() {
+       List<JSONObject> list = orderDao.queryStatisticOrder();
+        if(list.size() == 0){
+            JSONObject obj = new JSONObject();
+            obj.set("total", "0");
+            obj.set("year_total", "0");
+            obj.set("complete", "0");
+            obj.set("uncomplete", "0");
+            return obj;
+        }
+        return list.get(0);
+    }
 }

--
Gitblit v1.8.0