From 8b43954926db6b4df6a61ab6e04d6cb11189069d Mon Sep 17 00:00:00 2001
From: 吴健 <14790700720@163.com>
Date: 星期二, 15 四月 2025 08:54:08 +0800
Subject: [PATCH] add-415

---
 jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/service/impl/DaPassingStationCollectionServiceImpl.java |  201 +++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 188 insertions(+), 13 deletions(-)

diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/service/impl/DaPassingStationCollectionServiceImpl.java b/jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/service/impl/DaPassingStationCollectionServiceImpl.java
index 3b5fbe4..dc2def0 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/service/impl/DaPassingStationCollectionServiceImpl.java
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/service/impl/DaPassingStationCollectionServiceImpl.java
@@ -1,24 +1,32 @@
 package com.jcdm.main.da.passingStationCollection.service.impl;
 
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.List;
-
-import com.jcdm.common.constant.Constants;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson2.JSONObject;
+import com.jcdm.common.core.domain.R;
 import com.jcdm.common.utils.DateUtils;
+import com.jcdm.common.utils.StringUtils;
 import com.jcdm.main.bs.orderScheduling.domain.BsOrderScheduling;
 import com.jcdm.main.bs.orderScheduling.mapper.BsOrderSchedulingMapper;
 import com.jcdm.main.bs.orderScheduling.service.IBsOrderSchedulingService;
 import com.jcdm.main.da.passingStationCollection.domain.DaPassingStationCollection;
+import com.jcdm.main.da.passingStationCollection.domain.ProductNumVO;
 import com.jcdm.main.da.passingStationCollection.mapper.DaPassingStationCollectionMapper;
 import com.jcdm.main.da.passingStationCollection.service.IDaPassingStationCollectionService;
+import com.jcdm.main.da.passingStationCollection.vo.DaPassingStationVO;
 import com.jcdm.main.rm.repairRecord.domain.RmRepairRecord;
 import com.jcdm.main.rm.repairRecord.mapper.RmRepairRecordMapper;
+import com.jcdm.main.websocket.WebSocketServer;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.format.annotation.DateTimeFormat;
 import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 浜у搧杩囩珯閲囬泦Service涓氬姟灞傚鐞�
@@ -63,6 +71,81 @@
     public List<DaPassingStationCollection> selectDaPassingStationCollectionList(DaPassingStationCollection daPassingStationCollection)
     {
         return daPassingStationCollectionMapper.selectDaPassingStationCollectionList(daPassingStationCollection);
+    }
+
+    @Override
+    public List<DaPassingStationCollection> selectDaPassingStationCollectionForSearch(DaPassingStationCollection daPassingStationCollection) {
+        return daPassingStationCollectionMapper.selectDaPassingStationCollectionForSearch(daPassingStationCollection);
+    }
+
+    @Override
+    public List<DaPassingStationVO> getTopProcess(DaPassingStationCollection daPassingStationCollection)
+    {
+
+        List<DaPassingStationVO> result = new ArrayList<>();
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+
+        LocalDateTime startTime = LocalDate.now().atStartOfDay();
+        LocalDateTime endTime = LocalDate.now().plusDays(1).atStartOfDay();
+        String s1 = startTime.format(formatter);
+        String s2 = endTime.format(formatter);
+        daPassingStationCollection.setStartTime(s1);
+        daPassingStationCollection.setEndTime(s2);
+        List<DaPassingStationCollection> list = daPassingStationCollectionMapper.selectDaPassingStationCollectionList(daPassingStationCollection);
+        //绛涢櫎鑺傛媿涓虹┖鐨勬暟鎹�
+        list = list.stream().filter(x -> StringUtils.isNotEmpty(x.getBeatTime())).collect(Collectors.toList());
+        //鍋氱瓫閫夋搷浣�
+        if (CollUtil.isNotEmpty(list)){
+            for (DaPassingStationCollection passingStationCollection : list) {
+                if (StringUtils.isNotEmpty(passingStationCollection.getBeatTime())){
+                    Long aLong = Long.valueOf(passingStationCollection.getBeatTime());
+                    passingStationCollection.setBeatTimeLong(aLong);
+                }else {
+                    passingStationCollection.setBeatTimeLong(0L);
+                }
+            }
+            Map<String, Double> collect = list.stream().collect(Collectors.groupingBy(DaPassingStationCollection::getLocationCode, Collectors.averagingLong(DaPassingStationCollection::getBeatTimeLong)));
+            //鎺掑簭
+            List<Map.Entry<String,Double>> entryList = new ArrayList<>(collect.entrySet());
+            Collections.sort(entryList, new Comparator<Map.Entry<String, Double>>() {
+                @Override
+                public int compare(Map.Entry<String, Double> o1, Map.Entry<String, Double> o2) {
+                    double v = o2.getValue() - o1.getValue();
+                    return (int) v;
+                }
+            });
+            LinkedHashMap<String, Double> linkedHashMap = new LinkedHashMap<String, Double>();
+            int i = 1;
+            double sum =  0;
+            for (Map.Entry<String,Double> e : entryList
+            ) {
+                if (i<6){
+                    sum = sum + e.getValue();
+                    linkedHashMap.put(e.getKey(),e.getValue());
+                    i++;
+                }
+
+            }
+            //璁$畻鏁版嵁
+            if (CollUtil.isNotEmpty(linkedHashMap)){
+                for (String s : linkedHashMap.keySet()) {
+                    DaPassingStationVO vo = new DaPassingStationVO();
+                    BigDecimal divide = BigDecimal.valueOf(linkedHashMap.get(s)).divide(BigDecimal.valueOf(sum),4, RoundingMode.HALF_UP);
+                    vo.setName(s);
+                    vo.setValue(divide);
+                    result.add(vo);
+                }
+            }
+
+//            Map<String, List<DaPassingStationCollection>> collect = list.stream().collect(Collectors.groupingBy(DaPassingStationCollection::getLocationCode));
+//            for (String key:collect.keySet()){
+//                List<DaPassingStationCollection> list1 = collect.get(key);
+//                if (CollUtil.isNotEmpty(list1)) {
+//                    Double collect1 = list1.stream().collect(Collectors.averagingLong(DaPassingStationCollection::getBeatTimeLong));
+//                }
+//            }
+        }
+        return result;
     }
 
     /**
@@ -138,13 +221,105 @@
     @Override
     public void insertRepairRecordByIds(DaPassingStationCollection daPassingStationCollection) {
         Long[] conditions = daPassingStationCollection.getIds();
+        String sfcCode = "";
+        List<RmRepairRecord> save = new ArrayList<>();
+
         for (int i = 0; i < conditions.length; i++) {
             DaPassingStationCollection result = daPassingStationCollectionMapper.selectDaPassingStationCollectionById(conditions[i]);
-            RmRepairRecord rmRepairRecord = new RmRepairRecord();
-            rmRepairRecord.setBoxCode(result.getSfcCode());
-            rmRepairRecord.setProcessesCode(result.getLocationCode());
-            rmRepairRecord.setOriginalResult(result.getOutRsSign());
-            rmRepairRecordMapper.insertRmRepairRecord(rmRepairRecord);
+            if (i==0){
+                if (ObjectUtil.isNotEmpty(result)){
+                    sfcCode = result.getSfcCode();
+                    rmRepairRecordMapper.deleteRmRepairRecordByCode(sfcCode);
+                }
+            }
+            if (ObjectUtil.isNotEmpty(result)){
+                RmRepairRecord rmRepairRecord = new RmRepairRecord();
+                rmRepairRecord.setBoxCode(result.getSfcCode());
+                rmRepairRecord.setProcessesCode(result.getLocationCode());
+                rmRepairRecord.setOriginalResult(result.getOutRsSign());
+                rmRepairRecord.setCreateTime(new Date());
+                rmRepairRecordMapper.insertRmRepairRecord(rmRepairRecord);
+                daPassingStationCollectionMapper.deleteDaPassingStationCollectionById(result.getId());
+            }
         }
+
+    }
+    @Override
+    public String SelectSN(String SNcode,String node) {
+        try {
+            Map<String, Object> params = new HashMap<>();
+            params.put("SN_CODE",SNcode);
+            params.put("Node",node);
+            params.put("Success","");
+            daPassingStationCollectionMapper.SelectSN(params);
+            return (String)params.get("Success");
+        } catch (Exception e) {
+            return "鏁版嵁鏌ヨ澶辫触锛�";
+        }
+    }
+
+    @Override
+    public List<ProductNumVO> getProductNum(DaPassingStationCollection daPassingStationCollection) {
+        String queryMonth = daPassingStationCollection.getQueryMonth();
+        LocalDate queryLocalDate = daPassingStationCollection.getQueryDate();
+        if (ObjectUtil.isNotEmpty(queryLocalDate)){
+            LocalDate addQueryLocalDate = queryLocalDate.plusDays(1);
+            String queryDate = queryLocalDate.toString();
+            String addQueryDate = addQueryLocalDate.toString();
+            List<ProductNumVO> productNum = bsOrderSchedulingMapper.getProductNum(queryDate, addQueryDate);
+            if (CollUtil.isNotEmpty(productNum)){
+                productNum.forEach(x -> {
+                    x.setQueryDate(queryDate);
+                });
+            }
+            return productNum;
+        } else if (ObjectUtil.isNull(queryLocalDate) && ObjectUtil.isNotNull(queryMonth)){
+            //鎸夋湀浠芥煡璇�
+            String s = queryMonth + "-01";
+            LocalDate parse = LocalDate.parse(s);
+            LocalDate localDate = parse.plusMonths(1);
+            String queryDate = parse.toString();
+            String addQueryDate = localDate.toString();
+            List<ProductNumVO> productNum = bsOrderSchedulingMapper.getProductNum(queryDate, addQueryDate);
+            if (CollUtil.isNotEmpty(productNum)){
+                productNum.forEach(x -> {
+                    x.setQueryDate(queryMonth);
+                });
+            }
+            return productNum;
+        }
+        return new ArrayList<ProductNumVO>();
+    }
+
+//    public String sendMessage(String message) throws Exception{
+//        Map<String,Object> map = new HashMap<>();
+//
+//        // 鑾峰彇褰撳墠鏃ユ湡鍜屾椂闂�
+//        LocalDateTime nowDateTime = LocalDateTime.now();
+//        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+//        System.out.println(dateTimeFormatter.format(nowDateTime));
+//        map.put("server_time",dateTimeFormatter.format(nowDateTime));
+//        map.put("server_code","200");
+//
+//        map.put("server_message",message);
+//        JSONObject jsonObject =  new JSONObject(map);
+//        WebSocketServer.sendAllMessage(jsonObject.toString());
+//        return jsonObject.toString();
+//    }
+
+    public String sendMessage(String message,String userid) throws Exception{
+        Map<String,Object> map = new HashMap<>();
+
+        // 鑾峰彇褰撳墠鏃ユ湡鍜屾椂闂�
+        LocalDateTime nowDateTime = LocalDateTime.now();
+        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        System.out.println(dateTimeFormatter.format(nowDateTime));
+        map.put("server_time",dateTimeFormatter.format(nowDateTime));
+        map.put("server_code","200");
+
+        map.put("server_message",message);
+        JSONObject jsonObject =  new JSONObject(map);
+        WebSocketServer.sendInfo(jsonObject.toString(),userid);
+        return jsonObject.toString();
     }
 }

--
Gitblit v1.9.3