From 9d831229b5a8c238ce55f4ee8de7433c56cbe3a8 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期五, 14 十一月 2025 08:30:35 +0800
Subject: [PATCH] *

---
 src/main/webapp/static/js/locDetl/locDetl.js                  |   29 +++++++++
 src/main/webapp/views/locDetl/locDetl.html                    |    1 
 src/main/java/com/zy/asrs/controller/LocDetlController.java   |   64 +++++++++++++++++++--
 src/main/java/com/zy/asrs/entity/param/OrderMesXGHYParam.java |   81 +++++++++++++++++++++++++++
 4 files changed, 168 insertions(+), 7 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/LocDetlController.java b/src/main/java/com/zy/asrs/controller/LocDetlController.java
index 49ad3aa..87c2902 100644
--- a/src/main/java/com/zy/asrs/controller/LocDetlController.java
+++ b/src/main/java/com/zy/asrs/controller/LocDetlController.java
@@ -9,14 +9,10 @@
 import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.baomidou.mybatisplus.plugins.Page;
 import com.core.annotations.ManagerAuth;
-import com.core.common.BaseRes;
-import com.core.common.Cools;
-import com.core.common.DateUtils;
-import com.core.common.R;
-import com.zy.asrs.entity.LocDetl;
-import com.zy.asrs.entity.ManLocDetl;
-import com.zy.asrs.entity.Mat;
+import com.core.common.*;
+import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.param.OrderInspectionRollParam;
+import com.zy.asrs.entity.param.OrderMesXGHYParam;
 import com.zy.asrs.entity.param.QualityGroupListParam;
 import com.zy.asrs.entity.result.OrderPakoutDetailVo;
 import com.zy.asrs.mapper.LocDetlMapper;
@@ -47,11 +43,18 @@
     private MatService matService;
     @Autowired
     private ApiLogService apiLogService;
+    @Autowired
+    private SnowflakeIdWorker snowflakeIdWorker;
 
     @Value("${srXghyMes.qualityFinishedCheckoutUrl}")
     private String qualityFinishedCheckoutUrl;
     @Value("${srXghyMes.qualityFinishedCheckout}")
     private String qualityFinishedCheckout;
+
+    @Value("${srXghyMes.productInventoryUrl}")
+    private String productInventoryUrl;
+    @Value("${srXghyMes.productInventory}")
+    private String productInventory;
 
     @RequestMapping(value = "/locDetl/update")
     public R update1() {
@@ -385,4 +388,51 @@
         return R.error("涓婃姤澶辫触").add("涓婃姤澶辫触");
     }
 
+    @RequestMapping(value = "/synchronize/mes/locDetl/report/auth")
+    @ManagerAuth(memo = "鍚屾搴撳瓨鑷矼ES")
+    public R synchronizeLocDetlMes() {
+        List<LocDetl> locDetlList = locDetlService.selectList(new EntityWrapper<LocDetl>());
+        if (locDetlList.isEmpty()) {
+            return R.error("搴撳瓨涓虹┖锛侊紒锛�");
+        }
+
+        OrderMesXGHYParam orderMesXGHYParam = new OrderMesXGHYParam(locDetlList,"in","鎴愬搧鍏ュ簱");
+        orderMesXGHYParam.setBarcode(String.valueOf(snowflakeIdWorker.nextId()));
+        orderMesXGHYParam.setPalletizingNo(1);
+
+
+        String response = "";
+        boolean success = false;
+        try {
+            response = new HttpHandler.Builder()
+                    .setUri(productInventoryUrl)
+                    .setPath(productInventory)
+                    .setJson(JSON.toJSONString(orderMesXGHYParam))
+                    .build()
+                    .doPost();
+            JSONObject jsonObject = JSON.parseObject(response);
+            if (jsonObject.getBoolean("state")) {
+                success = true;
+            } else {
+                return R.error("鍚屾搴撳瓨鑷矼ES");
+            }
+        } catch (Exception e) {
+            return R.error("鍚屾搴撳瓨鑷矼ES"+e.getMessage());
+        } finally {
+            try {
+                // 淇濆瓨鎺ュ彛鏃ュ織
+                apiLogService.save(
+                        "鍚屾搴撳瓨鑷矼ES",
+                        productInventoryUrl+"/"+productInventory,
+                        null,
+                        "127.0.0.1",
+                        JSON.toJSONString(orderMesXGHYParam),
+                        response,
+                        success
+                );
+            } catch (Exception e) { }
+        }
+        return R.error("涓婃姤澶辫触").add("涓婃姤澶辫触");
+    }
+
 }
diff --git a/src/main/java/com/zy/asrs/entity/param/OrderMesXGHYParam.java b/src/main/java/com/zy/asrs/entity/param/OrderMesXGHYParam.java
index 24bf2cc..272613f 100644
--- a/src/main/java/com/zy/asrs/entity/param/OrderMesXGHYParam.java
+++ b/src/main/java/com/zy/asrs/entity/param/OrderMesXGHYParam.java
@@ -1,6 +1,7 @@
 package com.zy.asrs.entity.param;
 
 import com.core.common.DateUtils;
+import com.zy.asrs.entity.LocDetl;
 import com.zy.asrs.entity.WrkDetl;
 import lombok.Data;
 
@@ -76,6 +77,16 @@
                 this.orderSerialNumber = sampleWrkDetl.getOrderNo();
             }
 
+            public Roll(LocDetl sampleLocDetl) {
+                this.boxNo = sampleLocDetl.getBatch();
+                this.rollNo = sampleLocDetl.getModel();
+                this.specs = sampleLocDetl.getMatnr();
+                this.length = sampleLocDetl.getPrice().toString();
+                this.splices = sampleLocDetl.getSpecs();
+                this.netWeight = sampleLocDetl.getWeight().toString();
+                this.grossWeight = sampleLocDetl.getVolume().toString();
+            }
+
             @Override
             public String toString() {
                 return String.format(
@@ -170,6 +181,76 @@
         this.matList = boxList;
     }
 
+    public OrderMesXGHYParam(List<LocDetl> locDetls, String outOrIn,String stockType) {
+        // 鎸塨atch瀛楁鍒嗙粍锛屾瘡涓猙atch瀵瑰簲涓�涓狟ox
+        Map<String, List<LocDetl>> batchGroup = locDetls.stream()
+                .collect(Collectors.groupingBy(LocDetl::getBatch));
+
+        List<OrderMesXGHYParam.Box> boxList = new ArrayList<>();
+
+        // 澶勭悊姣忎釜batch鍒嗙粍
+        for (Map.Entry<String, List<LocDetl>> entry : batchGroup.entrySet()) {
+            String batch = entry.getKey();
+            List<LocDetl> batchWrkDetls = entry.getValue();
+
+            // 鍒涘缓Box瀵硅薄
+            OrderMesXGHYParam.Box box = new OrderMesXGHYParam.Box();
+            box.setBoxNo(batch); // batch瀵瑰簲boxNo
+            box.setOutOrIn(outOrIn); // batch瀵瑰簲boxNo
+
+            // 鎸塵odel瀛楁鍒嗙粍锛屾瘡涓猰odel瀵瑰簲涓�涓猺oll
+            Map<String, List<LocDetl>> modelGroup = batchWrkDetls.stream()
+                    .collect(Collectors.groupingBy(LocDetl::getModel));
+
+            List<OrderMesXGHYParam.Box.Roll> rollList = new ArrayList<>();
+            String wideInWidth = null;
+            String thickness = null;
+            String boxPos = null;
+            String boxType = null;
+            String packageGroupNo = null;	//鍖呰缁勫彿锛堝緪宸ユ病鏈夛紝鍙湁绠卞彿鍗峰彿涓�瀵逛竴锛�  //null
+
+            // 澶勭悊姣忎釜model鍒嗙粍
+            for (Map.Entry<String, List<LocDetl>> modelEntry : modelGroup.entrySet()) {
+                List<LocDetl> modelWrkDetls = modelEntry.getValue();
+
+                LocDetl sampleWrkDetl = modelWrkDetls.get(0);
+                String matnr = sampleWrkDetl.getMatnr();
+
+                String[] firstSplit = matnr.split("渭m脳");
+                if (firstSplit.length == 2) {
+                    thickness = firstSplit[0];  // 5.2
+                    String[] secondSplit = firstSplit[1].split("mm");
+                    if (secondSplit.length > 0) {
+                        wideInWidth = secondSplit[0];  // 834.1
+                    } else {
+                        continue;
+                    }
+                } else {
+                    continue;
+                }
+                boxPos = sampleWrkDetl.getOrigin();
+                boxType = sampleWrkDetl.getBrand$();
+                stockType = sampleWrkDetl.getManu();
+                packageGroupNo = sampleWrkDetl.getDeadTime();
+                OrderMesXGHYParam.Box.Roll roll = new OrderMesXGHYParam.Box.Roll(sampleWrkDetl);
+
+                rollList.add(roll);
+            }
+            box.setWideInWidth(wideInWidth);
+            box.setThickness(thickness);
+            box.setBoxPos(boxPos);
+            box.setBoxType(boxType);
+            box.setStockType(stockType);
+            box.setPackageGroupNo(packageGroupNo);
+
+            box.setRolls(rollList);
+            boxList.add(box);
+        }
+
+        // 璁剧疆鍒颁富瀵硅薄涓�
+        this.matList = boxList;
+    }
+
     @Override
     public String toString() {
         StringBuilder sb = new StringBuilder();
diff --git a/src/main/webapp/static/js/locDetl/locDetl.js b/src/main/webapp/static/js/locDetl/locDetl.js
index 3697125..26c9c1f 100644
--- a/src/main/webapp/static/js/locDetl/locDetl.js
+++ b/src/main/webapp/static/js/locDetl/locDetl.js
@@ -470,6 +470,35 @@
         })
     }
 
+    // 鍚屾搴撳瓨鑷矼ES
+    form.on('submit(synchronize)', function (data) {
+        layer.confirm('纭鍚慚ES鍚屾搴撳瓨锛�', {
+            shade: .1,
+            skin: 'layui-layer-admin'
+        }, function (i) {
+            $.ajax({
+                url: baseUrl + "/synchronize/mes/locDetl/report/auth",
+                headers: {'token': localStorage.getItem('token')},
+                method: 'POST',
+                success: function (res) {
+                    layer.closeAll('loading');
+                    if (res.code === 200){
+                        if (insTbCount === 0) {
+                            insTb.reload({page: {curr: 1}});
+                        } else {
+                            $(".layui-laypage-btn")[0].click();
+                        }
+                        layer.msg(res.msg, {icon: 1});
+                    } else if (res.code === 403){
+                        top.location.href = baseUrl+"/";
+                    }else {
+                        layer.msg(res.msg, {icon: 2});
+                    }
+                }
+            })
+        });
+    });
+
     // 澶嶉�夋浜嬩欢
     form.on('checkbox(detailCheckbox)', function (data) {
         var el = data.elem;
diff --git a/src/main/webapp/views/locDetl/locDetl.html b/src/main/webapp/views/locDetl/locDetl.html
index 72e2ca2..e30e676 100644
--- a/src/main/webapp/views/locDetl/locDetl.html
+++ b/src/main/webapp/views/locDetl/locDetl.html
@@ -60,6 +60,7 @@
     <div id="data-search-btn" class="layui-btn-container layui-form-item" style="display: inline-block">
         <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">鎼滅储</button>
         <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">閲嶇疆</button>
+        <button id="unreason" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="synchronize">鍚屾搴撳瓨鑷矼ES</button>
 <!--        <button id="unreason" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="unreason">鏌ョ湅寮傚父鏁版嵁</button>-->
     </div>
 

--
Gitblit v1.9.1