From 2cd1fab84d88a16063d5036e77d690e9709f5d68 Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期三, 10 七月 2024 08:28:32 +0800
Subject: [PATCH] #MES上报

---
 src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java |  217 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 213 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
index a4491b0..e7a3b9d 100644
--- a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
@@ -1,14 +1,20 @@
 package com.zy.asrs.task.handler;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
-import com.core.common.R;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.param.MesOrderReportParam;
+import com.zy.asrs.entity.param.MesPakinReportParam;
+import com.zy.asrs.entity.param.MesPakoutReportParam;
 import com.zy.asrs.service.*;
 import com.zy.asrs.task.AbstractHandler;
 import com.zy.asrs.task.core.ReturnT;
+import com.zy.common.utils.HttpHandler;
+import io.swagger.models.auth.In;
 import lombok.Synchronized;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -17,17 +23,37 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import java.io.IOException;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Slf4j
 @Service
 public class AgvWrkMastHandler extends AbstractHandler<String> {
 
+    //鍏ュ簱绫诲瀷鏁扮粍
+    private static final int[] IN_TYPE_ARRAY = new int[1];
+    //鍑哄簱绫诲瀷鏁扮粍
+    private static final int[] OUT_TYPE_ARRAY = new int[1];
+    //绉诲簱绫诲瀷鏁扮粍
+    private static final int[] MOVE_TYPE_ARRAY = new int[1];
+
     @Value("${agvBasDev.maxWorkNum}")
     private int maxWrokNum;
+    @Value("${mes.url}")
+    private String url;
+    @Value("${mes.orderReportPath}")
+    private String orderReportPath;
+    @Value("${mes.pakinReportPath}")
+    private String pakinReportPath;
+    @Value("${mes.pakoutReportPath}")
+    private String pakoutReportPath;
+    @Value("${mes.getTokenPath}")
+    private String getTokenPath;
+    @Value("${mes.appKey}")
+    private String appKey;
+    @Value("${mes.appSecret}")
+    private String appSecret;
+
 
     @Autowired
     private AgvWrkMastService agvWrkMastService;
@@ -51,6 +77,8 @@
     private AgvBasDevpService agvBasDevpService;
     @Autowired
     private AgvWorkService agvWorkService;
+    @Autowired
+    private ApiLogService apiLogService;
 
     @Transactional
     public ReturnT<String> completedPutWayWrk(AgvWrkMast agvWrkMast) {
@@ -65,6 +93,8 @@
                 agvBasDevp = agvWrkMast.getSourceLocNo();
             }
 
+            //鐢ㄤ簬涓婃姤mes鐨勫伐浣滄。鏄庣粏
+            List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
 
             //淇敼宸ヤ綔妗g姸鎬佷负207.搴撳瓨鏇存柊瀹屾垚
             agvWrkMast.setWrkSts(207L);
@@ -222,6 +252,12 @@
                 });
             }
 
+            //涓婃姤mes
+            MesOrderReportParam param = generateMesParam(agvWrkMast, agvWrkDetlListOld);
+            if(!Cools.isEmpty(param)){
+                doHttpRequest(param,getMesTokenInfo(),"涓婃姤mes鍗曟嵁淇℃伅",url,orderReportPath,null,"127.0.0.1");
+            }
+
             return SUCCESS;
         }catch (Exception e){
             log.error(""+e.getMessage());
@@ -232,7 +268,12 @@
 
     @Transactional
     public ReturnT<String> completedCarryWrk(AgvWrkMast agvWrkMast) {
+
         try{
+
+            //鐢ㄤ簬涓婃姤mes鐨勫伐浣滄。鏄庣粏
+            List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
+
             Date now = new Date();
             int wrkNo = agvWrkMast.getWrkNo();
             String orderNo = getOrderNoByWrkNo(wrkNo);
@@ -308,6 +349,13 @@
                     orderService.checkComplete(o);
                 });
             }
+
+            //涓婃姤mes
+            MesOrderReportParam param = generateMesParam(agvWrkMast, agvWrkDetlListOld);
+            if(!Cools.isEmpty(param)){
+                doHttpRequest(param,getMesTokenInfo(),"涓婃姤mes鍗曟嵁淇℃伅",url,orderReportPath,null,"127.0.0.1");
+            }
+
             return SUCCESS;
         }catch (Exception e){
             log.error(""+e.getMessage());
@@ -318,6 +366,9 @@
     @Transactional
     public ReturnT<String> completedCarryWrk2(AgvWrkMast agvWrkMast) {
         try{
+            //鐢ㄤ簬涓婃姤mes鐨勫伐浣滄。鏄庣粏
+            List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
+
             int wrkNo = agvWrkMast.getWrkNo();
             String orderNo = getOrderNoByWrkNo(wrkNo);
             String agvBasDevp = "";
@@ -353,6 +404,11 @@
                     String o = map.get("orderNo").toString();
                     orderService.checkComplete(o);
                 });
+            }
+            //涓婃姤mes
+            MesOrderReportParam param = generateMesParam(agvWrkMast, agvWrkDetlListOld);
+            if(!Cools.isEmpty(param)){
+                doHttpRequest(param,getMesTokenInfo(),"涓婃姤mes鍗曟嵁淇℃伅",url,orderReportPath,null,"127.0.0.1");
             }
             return SUCCESS;
         }catch (Exception e){
@@ -527,4 +583,157 @@
 
         return wrkMast;
     }
+
+    private Object getReportParamByIoType(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls){
+        if(Cools.isEmpty(agvWrkDetls)){
+            return null;
+        }
+        //鍖哄垎涓嶅悓浠诲姟绫诲瀷鐨勪笂鎶ユ柟寮�
+
+        if(Arrays.asList(IN_TYPE_ARRAY).contains(agvWrkMast.getIoType())){
+
+        }
+        if(Arrays.asList(OUT_TYPE_ARRAY).contains(agvWrkMast.getIoType())){
+
+        }
+        if(Arrays.asList(MOVE_TYPE_ARRAY).contains(agvWrkMast.getIoType())){
+            return generateMesParam(agvWrkMast,agvWrkDetls);
+        }
+
+        return null;
+    }
+
+    private void reportMesPakinOrder(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls){
+
+        for (AgvWrkDetl agvWrkDetl : agvWrkDetls){
+            MesPakinReportParam mesPakinReportParam = new MesPakinReportParam();
+            mesPakinReportParam.setInboundOrderCode(agvWrkDetl.getOrderNo());
+            mesPakinReportParam.setBizType("0");
+            mesPakinReportParam.setInventoryAttr(new MesPakinReportParam.InventoryAttr(agvWrkDetl.getThreeCode(),agvWrkDetl.getMatnr(),agvWrkMast.getLocNo()));
+            mesPakinReportParam.setNoQrCodeExecAmount(new MesPakinReportParam.NoQrCodeExecAmount(agvWrkDetl.getAnfme(),agvWrkDetl.getUnit(),null));
+
+            doHttpRequest(mesPakinReportParam,getMesTokenInfo(),"涓婃姤mes鍗曟嵁淇℃伅",url,orderReportPath,null,"127.0.0.1");
+        }
+
+    }
+
+    private void reportMesPakoutOrder(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls){
+        for (AgvWrkDetl agvWrkDetl : agvWrkDetls){
+            MesPakoutReportParam mesPakoutReportParam = new MesPakoutReportParam();
+            mesPakoutReportParam.setStorageCode(agvWrkMast.getLocNo());
+            AgvLocMast agvLocMast = agvLocMastService.selectById(agvWrkMast.getLocNo());
+            mesPakoutReportParam.setWareHouseCode(agvLocMast.getPltType().toString());
+            mesPakoutReportParam.setMaterialCode(agvWrkDetl.getMatnr());
+            mesPakoutReportParam.setBatchNos(Arrays.asList(agvWrkDetl.getBatch()));
+            mesPakoutReportParam.setAmount(new MesPakoutReportParam.Amount(agvWrkDetl.getAnfme(),agvWrkDetl.getUnit(),null));
+
+            doHttpRequest(mesPakoutReportParam,getMesTokenInfo(),"涓婃姤mes鍗曟嵁淇℃伅",url,orderReportPath,null,"127.0.0.1");
+
+        }
+    }
+
+    private MesOrderReportParam generateMesParam(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls){
+
+        if(agvWrkMast.getIoType() == 53){
+            String locNo = agvWrkMast.getLocNo();
+            agvWrkMast.setLocNo(agvWrkMast.getSourceLocNo());
+            agvWrkMast.setSourceLocNo(locNo);
+        }
+
+        MesOrderReportParam param = new MesOrderReportParam();
+
+        List<MesOrderReportParam.TransferOrderItem> transferOrderItems = new ArrayList<>();
+        List<MesOrderReportParam.TransferOrderItem.InventoryDetail> inventoryDetails = new ArrayList<>();
+        //娣诲姞transferOrderItem灞炴��
+        MesOrderReportParam.TransferOrderItem transferOrderItem = new MesOrderReportParam.TransferOrderItem();
+        transferOrderItem.setRemark(agvWrkDetls.get(0).getOrderNo());
+        transferOrderItem.setTargetLocationCode(agvWrkMast.getLocNo());
+        transferOrderItems.add(transferOrderItem);
+        transferOrderItem.setInventoryDetails(inventoryDetails);
+
+        param.setTransferOrderItems(transferOrderItems);
+
+        for (AgvWrkDetl agvWrkDetl : agvWrkDetls){
+            MesOrderReportParam.TransferOrderItem.InventoryDetail inventoryDetail = new MesOrderReportParam.TransferOrderItem.InventoryDetail();
+            //娣诲姞amount灞炴��
+            MesOrderReportParam.TransferOrderItem.InventoryDetail.Amount amount = new MesOrderReportParam.TransferOrderItem.InventoryDetail.Amount();
+            amount.setAmount(agvWrkDetl.getAnfme());
+            amount.setUnitName(agvWrkDetl.getUnit());
+            inventoryDetail.setAmount(amount);
+            //娣诲姞bizKey灞炴��
+            MesOrderReportParam.TransferOrderItem.InventoryDetail.BizKey bizKey = new MesOrderReportParam.TransferOrderItem.InventoryDetail.BizKey();
+            bizKey.setBatchNo(agvWrkDetl.getThreeCode());
+            inventoryDetail.setBizKey(bizKey);
+            //娣诲姞inventoryDetail灞炴��
+            inventoryDetail.setLocationCode(agvWrkMast.getSourceLocNo());
+            inventoryDetail.setMaterialCode(agvWrkDetl.getMatnr());
+            inventoryDetail.setQcStatus(1);
+            inventoryDetail.setStorageStatus(1);
+            inventoryDetails.add(inventoryDetail);
+        }
+
+        return param;
+    }
+
+    //鑾峰彇mes token淇℃伅
+    private Map<String,Object> getMesTokenInfo(){
+        Map<String,String> param = new HashMap<>();
+        param.put("appKey",appKey);
+        param.put("appSecret",appSecret);
+
+        JSONObject jsonObject = doHttpRequest(param,null, "鑾峰彇MesToken", url, getTokenPath, null, "127.0.0.1");
+
+        Map<String,Object> headParam = new HashMap<>();
+        headParam.put("X-AUTH",JSON.parseObject(jsonObject.get("data").toString()).get("appAccessToken").toString());
+
+        return headParam;
+
+    }
+
+    private JSONObject doHttpRequest(Object requestParam,Map<String,Object> headParam, String namespace, String url, String path, String appkey, String ip){
+
+        String response = "";
+        boolean success = false;
+
+        try {
+            response = new HttpHandler.Builder()
+                    .setUri(url)
+                    .setPath(path)
+                    .setHeaders(headParam)
+                    .setJson(JSONObject.toJSONString(requestParam))
+                    .setHttps(true)
+                    .build()
+                    .doPost();
+            JSONObject jsonObject = JSON.parseObject(response);
+
+            if(Cools.isEmpty(jsonObject.get("code")) && Integer.parseInt(jsonObject.get("code").toString()) != 200){
+                throw new CoolException(jsonObject.get("dsc").toString());
+            }
+
+            return jsonObject;
+
+//            String succeed = jsonObject.get("succeed").toString();
+//
+//            int code = Cools.eq("0",succeed) ? 0 : 1;
+//            if(code != 200){
+//                throw new CoolException(jsonObject.get("dsc").toString());
+//            }
+//            success = true;
+
+        }catch (Exception e){
+            log.error(e.getMessage());
+            throw new CoolException(e.getMessage());
+        }finally {
+            apiLogService.save(
+                    namespace,
+                    url + path,
+                    appkey,
+                    ip,
+                    JSON.toJSONString(JSONObject.toJSONString(requestParam)),
+                    response,
+                    success
+            );
+        }
+
+    }
 }

--
Gitblit v1.9.1