From 5f75515d78809c336cb1a004a8cacf53c982344b Mon Sep 17 00:00:00 2001
From: admin <15939171744@163.com>
Date: 星期五, 26 七月 2024 20:25:03 +0800
Subject: [PATCH] -加420订阅

---
 jcdm-main/src/main/java/com/jcdm/main/restful/qingYan/service/ExternalInterface.java |  286 ++++++++++++++++++++++++--------------------------------
 1 files changed, 122 insertions(+), 164 deletions(-)

diff --git a/jcdm-main/src/main/java/com/jcdm/main/restful/qingYan/service/ExternalInterface.java b/jcdm-main/src/main/java/com/jcdm/main/restful/qingYan/service/ExternalInterface.java
index d588819..5dc4879 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/restful/qingYan/service/ExternalInterface.java
+++ b/jcdm-main/src/main/java/com/jcdm/main/restful/qingYan/service/ExternalInterface.java
@@ -1,14 +1,21 @@
 package com.jcdm.main.restful.qingYan.service;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.http.HttpRequest;
 import cn.hutool.http.HttpResponse;
+import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.gson.Gson;
 import com.jcdm.common.core.domain.AjaxResult;
+import com.jcdm.common.utils.StringUtils;
+import com.jcdm.framework.websocket.WebSocketUsers;
+import com.jcdm.main.bs.beatSetting.domain.BsBeatSetting;
+import com.jcdm.main.bs.beatSetting.service.IBsBeatSettingService;
 import com.jcdm.main.bs.formulaChild.domain.BsFormulaChildInfo;
 import com.jcdm.main.bs.formulaChild.service.IBsFormulaChildInfoService;
 import com.jcdm.main.constant.Constants;
@@ -20,23 +27,33 @@
 import com.jcdm.main.da.testDeviceInterface.service.IDaTestDeviceInterfaceService;
 import com.jcdm.main.om.productionOrde.domain.OmProductionOrdeInfo;
 import com.jcdm.main.om.productionOrde.service.IOmProductionOrdeInfoService;
-import com.jcdm.main.restful.qingYan.doman.ChildVO;
-import com.jcdm.main.restful.qingYan.doman.ParentVO;
-import com.jcdm.main.restful.qingYan.doman.PostEntity;
+import com.jcdm.main.restful.factoryMes.service.RestfulService;
+import com.jcdm.main.restful.qingYan.doman.*;
+import lombok.extern.slf4j.Slf4j;
 import org.aspectj.weaver.loadtime.Aj;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import javax.websocket.Session;
 import java.lang.reflect.Field;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.concurrent.CompletableFuture;
 import java.util.stream.Collectors;
-
+@Slf4j
 @RestController
 @RequestMapping("/jcdmMes")
 public class ExternalInterface {
+    Map<String, Session> map = WebSocketUsers.getUsers();
+
+    private static final Logger logger = LoggerFactory.getLogger("sys-user");
+
+    public SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
     @Autowired
     private IDaTestDeviceInterfaceService daTestDeviceInterfaceService;
     @Autowired
@@ -54,85 +71,21 @@
     @Autowired
     private IBsFormulaChildInfoService bsFormulaChildInfoService;
 
+    @Autowired
+    private IBsBeatSettingService bsBeatSettingService;
 
-    String url = "https://imes-uat-group.geelycv-test.com/api/mom-open/restful/aMesSysIntegration/deviceResultFeedback";
+    private IDaPassingStationCollectionService passingStationCollectionService;
+
+//    String url = "https://imes-uat-group.geelycv-test.com/api/mom-open/restful/aMesSysIntegration/deviceResultFeedback";
+
+    String url = "https://imes-group.geelycv.com/api/mom-open/restful/aMesSysIntegration/deviceResultFeedback";
 
     /**
      * 瀵煎嚭鐐规浠诲姟鍒楄〃
      */
     @PostMapping("/deviceResultFeedback")
-    public AjaxResult hdy(@RequestBody ParentVO parentVO)
+    public AjaxResult deviceResultFeedback(@RequestBody ParentVO parentVO)
     {
-        //淇濆瓨
-        //杩囩珯璁板綍
-//        String productNum = parentVO.getProductNum();
-//        if (StrUtil.isNotBlank(productNum)){
-//            List<OmProductionOrdeInfo> list = productionOrdeInfoService.list(new LambdaQueryWrapper<OmProductionOrdeInfo>().eq(OmProductionOrdeInfo::getProductNum, productNum));
-//            if (CollUtil.isNotEmpty(list)){
-//                OmProductionOrdeInfo omProductionOrdeInfo = list.get(0);
-//                DaPassingStationCollection passingStationCollection = new DaPassingStationCollection();
-//                passingStationCollection.setWorkOrderNo(omProductionOrdeInfo.getWorkOrderNo());
-//                passingStationCollection.setSfcCode(productNum);
-//                passingStationCollection.setProductCode(omProductionOrdeInfo.getProductCode());
-//                passingStationCollection.setLocationCode(parentVO.getStationCode());
-//                passingStationCollection.setOutRsSign(parentVO.getTotalResult());
-//                passingStationCollection.setCreateTime(new Date());
-//
-//                List<ChildVO> checkList = parentVO.getCheckList();
-//                if (CollUtil.isNotEmpty(checkList)){
-//                    List<String> collect = checkList.stream()
-//                            .filter(x -> Constants.IN_BOUND_TIME_CODE.equals(x.getItemCode()))
-//                            .map(ChildVO::getItemValue)
-//                            .collect(Collectors.toList());
-//                    if (CollUtil.isNotEmpty(collect)){
-//                        String s = collect.get(0);
-//                        if (StrUtil.isNotBlank(s)){
-//                            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-//                            try {
-//                                Date parse = simpleDateFormat.parse(s);
-//                                passingStationCollection.setInboundTime(parse);
-//                            } catch (ParseException e) {
-//                                throw new RuntimeException(e);
-//                            }
-//                        }
-//                    }
-//                    List<String> collect2 = checkList.stream()
-//                            .filter(x -> Constants.OUT_BOUND_TIME_CODE.equals(x.getItemCode()))
-//                            .map(ChildVO::getItemValue)
-//                            .collect(Collectors.toList());
-//                    if (CollUtil.isNotEmpty(collect2)){
-//                        String s = collect2.get(0);
-//                        if (StrUtil.isNotBlank(s)){
-//                            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-//                            try {
-//                                Date parse = simpleDateFormat.parse(s);
-//                                passingStationCollection.setOutboundTime(parse);
-//                            } catch (ParseException e) {
-//                                throw new RuntimeException(e);
-//                            }
-//                        }
-//                    }
-//                    daPassingStationCollectionService.save(passingStationCollection);
-//                    //鍙傛暟淇濆瓨
-//                    List<DaParamCollection> paramCollectionList = new ArrayList<>();
-//                    for (ChildVO childVO : checkList) {
-//                        DaParamCollection daParamCollection = new DaParamCollection();
-//                        daParamCollection.setWorkOrderNo(omProductionOrdeInfo.getWorkOrderNo());
-//                        daParamCollection.setSfcCode(productNum);
-//                        daParamCollection.setProductCode(omProductionOrdeInfo.getProductCode());
-//                        daParamCollection.setLocationCode(omProductionOrdeInfo.getStationCode());
-//                        daParamCollection.setParamCode(childVO.getItemCode());
-//                        daParamCollection.setParamValue(childVO.getItemValue());
-//                        daParamCollection.setCollectionTime(new Date());
-//                        daParamCollection.setParamName(childVO.getItemText());
-//                        paramCollectionList.add(daParamCollection);
-//                    }
-//                    if (CollUtil.isNotEmpty(paramCollectionList)){
-//                        daParamCollectionService.insertBatch(paramCollectionList);
-//                    }
-//                }
-//            }
-//        }
         ObjectMapper mapper = new ObjectMapper();
         List<ChildVO> li = parentVO.getCheckList();
         String s = null;
@@ -147,108 +100,113 @@
         daTestDeviceInterface.setProductNum(parentVO.getProductNum());
         daTestDeviceInterface.setTotalResult(parentVO.getTotalResult());
         daTestDeviceInterface.setCheckList(s);
+        daTestDeviceInterface.setCreateTime(new Date());
         daTestDeviceInterfaceService.save(daTestDeviceInterface);
+//        if(parentVO.getStationCode().contains("POP410")){
+//            if(StringUtils.isNotBlank(parentVO.getProductNum())){
+//                OmProductionOrdeInfo one = omProductionOrdeInfoService.getOne(new LambdaQueryWrapper<OmProductionOrdeInfo>().eq(OmProductionOrdeInfo::getProductNum, parentVO.getProductNum()));
+//                if(ObjectUtil.isNotNull(one)){
+//                    logger.info("瑙g粦灏忚溅{}锛宲ack鐮佹槸{}"+one.getTrolleyYard(),one.getProductNum());
+//                    one.setTrolleyYard("");
+//                    omProductionOrdeInfoService.saveOrUpdate(one);
+//                }
+//            }
+//        }
+//        try{
+//            CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> {
+//                logger.info("寮�濮嬫墽琛屽紓姝ユ柟娉�");
+//                HttpResponse execute = HttpRequest.post(url).body(JSONUtil.toJsonStr(parentVO)).execute();
+//                logger.info("寮傛鏂规硶鎵ц缁撴潫");
+//                logger.info("鎺ユ敹娓呯爺锛屾皵瀵嗗紓姝ユ柟娉晎}"+execute.body());
+//            });
+//        }catch (Exception e){
+//            System.out.println(e.getMessage());
+//        }
+        logger.info("鏀跺埌宸ヤ綅{}鐨勬祴璇曡澶囨暟鎹叆鍙俈O{}" + parentVO.getStationCode(),new Gson().toJson(parentVO));
         HttpResponse execute = HttpRequest.post(url).body(JSONUtil.toJsonStr(parentVO)).execute();
+        logger.info("宸ュ巶MES杩斿洖鎶ユ枃{}-宸ヤ綅{}" + execute.body(),parentVO.getStationCode());
         return AjaxResult.success(execute.body());
     }
 
     @GetMapping("/productionWorkOrderRequest")
     public AjaxResult productionWorkOrderRequest(){
-        List<OmProductionOrdeInfo> list = omProductionOrdeInfoService.list();
-
-        return AjaxResult.success(list);
+        List<RestFulOrder> restFulOrders = new ArrayList<>();
+//        try{
+//            CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> {
+//                List<OmProductionOrdeInfo> list = omProductionOrdeInfoService.list();
+//                for (OmProductionOrdeInfo omProductionOrdeInfo : list) {
+//                    RestFulOrder order = new RestFulOrder();
+//                    order.setProductionOrderNum(omProductionOrdeInfo.getWorkOrderNo());
+//                    order.setProductNum(omProductionOrdeInfo.getProductNum());
+//                    order.setMaterialCode(omProductionOrdeInfo.getMaterialCode());
+//                    order.setStationCode(omProductionOrdeInfo.getStationCode());
+//                    order.setPlanQty(omProductionOrdeInfo.getPlanQty());
+//                    order.setCreateTime(format.format(omProductionOrdeInfo.getCreateTime()));
+//                    restFulOrders.add(order);
+//                }
+//            });
+//        }catch (Exception e){
+//            System.out.println(e.getMessage());
+//        }
+        return AjaxResult.success(restFulOrders);
     }
+
+    @GetMapping("/getQualityData")
+    public AjaxResult getQualityData(){
+//        List<DaPassingStationCollection> qualified = daPassingStationCollectionService.list(new LambdaQueryWrapper<DaPassingStationCollection>().eq(DaPassingStationCollection::getOutRsSign, "1"));
+//        List<DaPassingStationCollection> unQualified = daPassingStationCollectionService.list(new LambdaQueryWrapper<DaPassingStationCollection>().eq(DaPassingStationCollection::getOutRsSign, "2"));
+//        Map<String,Integer> map = new HashMap<>();
+//        map.put("qualified",qualified.size());
+//        map.put("unQualified",unQualified.size());
+//        for (BsBeatSetting bsBeatSetting : bsBeatSettingService.list()) {
+//            String str = bsBeatSetting.getProductCode();
+//            String[] split = str.split("  ");
+//            String reportResult = RestfulService.getWorkReportResultFeedback(split[0], "", "2024-06-27 15:48:51");
+//            JSONObject jsonObject = new JSONObject(reportResult);
+//            String code = jsonObject.getStr("code");
+//            String status = jsonObject.getJSONObject("data").getStr("resultCode");
+//            if("success".equals(code)&&"S".equals(status)){
+//                //濡傛灉鎴愬姛锛屾墽琛屾姤宸ユ垚鍔熸柟娉曪紝淇敼鏄惁鎶ュ伐涓�1锛屾坊鍔犳姤宸ユ椂闂�
+//                bsBeatSetting.setProductName("S");
+//                this.bsBeatSettingService.saveOrUpdate(bsBeatSetting);
+//            }else{
+//                bsBeatSetting.setProductName("F");
+//                this.bsBeatSettingService.saveOrUpdate(bsBeatSetting);
+//            }
+//        }
+        return AjaxResult.success();
+    }
+
+
 
     @GetMapping("/productionOrderComponentRequest")
     public AjaxResult productionOrderComponentRequest(BsFormulaChildInfo bsFormulaChildInfo){
-        Map<String,List<String>> map = new HashMap<>();
-        List<BsFormulaChildInfo> list = bsFormulaChildInfoService.list(new LambdaQueryWrapper<BsFormulaChildInfo>()
-                .eq(BsFormulaChildInfo::getProcessesCode, bsFormulaChildInfo.getProcessesCode())
-                .eq(BsFormulaChildInfo::getOperationType, "2")
-        );
-        List<String> materialCode = list.stream().map(BsFormulaChildInfo::getMaterialCode).collect(Collectors.toList());
-        List<String> operationSteps = list.stream().map(BsFormulaChildInfo::getOperationSteps).collect(Collectors.toList());
-        map.put("materialCode",materialCode);
-        map.put("operationSteps",operationSteps);
-        return AjaxResult.success(map);
+        List<ProductionOrderComponentRequest> requests = new ArrayList<>();
+//        try{
+//            CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> {
+//                List<BsFormulaChildInfo> list = bsFormulaChildInfoService.list(new LambdaQueryWrapper<BsFormulaChildInfo>()
+//                        .eq(BsFormulaChildInfo::getProcessesCode, bsFormulaChildInfo.getProcessesCode())
+//                        .eq(BsFormulaChildInfo::getOperationType, "2")
+//                );
+//                for (BsFormulaChildInfo info : list) {
+//                    ProductionOrderComponentRequest request = new ProductionOrderComponentRequest();
+//                    request.setMaterialCode(info.getMaterialCode());
+//                    request.setOperationSteps(info.getOperationSteps());
+//                    requests.add(request);
+//                }
+//            });
+//        }catch (Exception e){
+//            System.out.println(e.getMessage());
+//        }
+        return AjaxResult.success(requests);
     }
-
-
-    @PostMapping("/pushParamData")
-    public void receivingData(@RequestBody PostEntity postEntity) throws JsonProcessingException {
-//        ObjectMapper objectMapper = new ObjectMapper();
-//        PostEntity person = objectMapper.readValue(postEntity, PostEntity.class);
-
-
-        Class<?> entityClass = PostEntity.class; // 鏇挎崲涓轰綘鐨勫疄浣撶被
-        String packId = postEntity.getPEOL_PackID();
-        OmProductionOrdeInfo one = productionOrdeInfoService.getOne(new LambdaQueryWrapper<OmProductionOrdeInfo>().eq(OmProductionOrdeInfo::getProductNum, packId));
-        String productType = "type";
-        String workOrderNo = one.getWorkOrderNo();
-        for (Field field : entityClass.getDeclaredFields()) {
-            String fieldName = field.getName();
-            DaParamCollection daParamCollection = new DaParamCollection();
-            daParamCollection.setWorkOrderNo(workOrderNo);
-            daParamCollection.setProductCode(productType);
-            daParamCollection.setSfcCode(packId);
-            daParamCollection.setParamCode(field.getName());
-            daParamCollection.setParamValue((String) getFieldValue(postEntity, fieldName));
-            if(fieldName.contains("GDBH")){
-                daParamCollection.setParamValue(workOrderNo);
-            }
-            if(fieldName.contains("CPXH")){
-                daParamCollection.setParamValue(productType);
-            }
-            daParamCollectionService.save(daParamCollection);
-        }
-
-    }
-
 
     /**
-     * 浣跨敤鍙嶅皠鑾峰彇瀵硅薄鐨勫睘鎬у��
-     *
-     * @param obj       鐩爣瀵硅薄
-     * @param fieldName 灞炴�у悕
-     * @return 灞炴�у�硷紝濡傛灉鑾峰彇澶辫触鍒欒繑鍥瀗ull
+     * 鏀捐璇风┖鐘舵��
      */
-    public static Object getFieldValue(Object obj, String fieldName) {
-        if (obj == null) {
-            throw new IllegalArgumentException("Object must not be null");
-        }
-        try {
-            Field field = obj.getClass().getDeclaredField(fieldName);
-            field.setAccessible(true); // 璁剧疆鍙闂�э紝浠ヤ究璁块棶绉佹湁瀛楁
-            return field.get(obj);
-        } catch (NoSuchFieldException e) {
-            // 濡傛灉褰撳墠绫绘病鏈夎瀛楁锛屽垯灏濊瘯浠庣埗绫讳腑鑾峰彇
-            Class<?> superClass = obj.getClass().getSuperclass();
-            if (superClass != null && !superClass.equals(Object.class)) {
-                return getFieldValue(obj, fieldName, superClass);
-            }
-            e.printStackTrace();
-        } catch (IllegalAccessException e) {
-            e.printStackTrace();
-        }
-        return null;
+    @PostMapping("/sendWebSocket")
+    public void sendWebSocket(@RequestBody BsFormulaChildInfo bsFormulaChildInfo)
+    {
+        WebSocketUsers.sendMessageToUserByText(map.get(bsFormulaChildInfo.getLocationCode()), bsFormulaChildInfo.getResults());
     }
-
-    private static Object getFieldValue(Object obj, String fieldName, Class<?> superClass) {
-        try {
-            Field field = superClass.getDeclaredField(fieldName);
-            field.setAccessible(true);
-            return field.get(obj);
-        } catch (NoSuchFieldException e) {
-            // 濡傛灉鐖剁被涔熸病鏈夎瀛楁锛屽垯缁х画鍚戜笂鏌ユ壘
-            Class<?> grandParentClass = superClass.getSuperclass();
-            if (grandParentClass != null && !grandParentClass.equals(Object.class)) {
-                return getFieldValue(obj, fieldName, grandParentClass);
-            }
-            e.printStackTrace();
-        } catch (IllegalAccessException e) {
-            e.printStackTrace();
-        }
-        return null;
-    }
-
 }

--
Gitblit v1.9.3