From 2fc477de92ef724cd37a79a3679c7d605adb94ab Mon Sep 17 00:00:00 2001
From: zhangc <zc@123>
Date: 星期二, 14 一月 2025 14:57:06 +0800
Subject: [PATCH] 添加MES库存同步功能及配置

---
 src/main/java/com/zy/asrs/mapper/MesLocDetlMapper.java        |   13 +
 src/main/java/com/zy/asrs/task/handler/ReportDataHandler.java |   11 +
 src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java |   12 
 src/main/resources/mapper/MesLocDetlMapper.xml                |    7 +
 src/main/java/com/zy/asrs/entity/MesLocDetl.java              |  311 ++++++++++++++++++++++++++++++++++++++++++++
 src/main/resources/application-loc.yml                        |    1 
 src/main/resources/application-dev.yml                        |    1 
 src/main/resources/application-prod.yml                       |    1 
 src/main/java/com/zy/asrs/task/ReportDataScheduler.java       |   15 ++
 9 files changed, 365 insertions(+), 7 deletions(-)

diff --git a/src/main/java/com/zy/asrs/entity/MesLocDetl.java b/src/main/java/com/zy/asrs/entity/MesLocDetl.java
new file mode 100644
index 0000000..7cec7e6
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/MesLocDetl.java
@@ -0,0 +1,311 @@
+package com.zy.asrs.entity;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.core.common.Cools;
+import com.core.common.SpringUtils;
+import com.zy.asrs.service.LocMastService;
+import com.zy.common.utils.Synchro;
+import com.zy.system.entity.User;
+import com.zy.system.service.UserService;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Data
+@TableName("mes_loc_detl")
+@ExcelIgnoreUnannotated
+public class MesLocDetl implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value= "搴撲綅鍙�")
+    @TableField("loc_no")
+    private String locNo;
+
+    @ApiModelProperty(value= "鎵樼洏鏉$爜")
+    private String zpallet;
+
+    @ApiModelProperty(value= "鏁伴噺")
+    @ExcelProperty("鏁伴噺")
+    private Double anfme;
+
+    @ApiModelProperty(value= "鐗╂枡鍙�")
+    @ExcelProperty("鐗╂枡鍙�")
+    private String matnr;
+
+    @ApiModelProperty(value= "鐗╂枡鍙�")
+    @ExcelProperty("鐗╂枡鍙�")
+    private String maktx;
+
+    @ApiModelProperty(value= "搴忓垪鐮�")
+    @ExcelProperty("搴忓垪鐮�")
+    private String batch;
+
+    @ApiModelProperty(value= "鍗曟嵁缂栧彿")
+    @ExcelProperty("鍗曟嵁缂栧彿")
+    @TableField("order_no")
+    private String orderNo;
+
+    @ApiModelProperty(value= "瑙勬牸")
+    private String specs;
+
+    @ApiModelProperty(value= "鎵规")
+    private String model;
+
+    @ApiModelProperty(value= "棰滆壊")
+    private String color;
+
+    @ApiModelProperty(value= "鍝佺墝")
+    private String brand;
+
+    @ApiModelProperty(value= "鍗曚綅")
+    private String unit;
+
+    @ApiModelProperty(value= "鍗曚环")
+    private Double price;
+
+    @ApiModelProperty(value= "sku")
+    private String sku;
+
+    @ApiModelProperty(value= "鍖呮暟")
+    private Double units;
+
+    @ApiModelProperty(value= "鏉$爜")
+    private String barcode;
+
+    @ApiModelProperty(value= "鐗╂枡鐘舵��")
+    private String origin;
+
+    @ApiModelProperty(value= "鍘傚")
+    private String manu;
+
+    @ApiModelProperty(value= "鍗曟嵁鏃堕棿")
+    @TableField("manu_date")
+    private String manuDate;
+
+    @ApiModelProperty(value= "鍝侀」鏁�")
+    @TableField("item_num")
+    private String itemNum;
+
+    @ApiModelProperty(value= "瀹夊叏搴撳瓨閲�")
+    @TableField("safe_qty")
+    private Double safeQty;
+
+    @ApiModelProperty(value= "閲嶉噺")
+    private Double weight;
+
+    @ApiModelProperty(value= "闀垮害")
+    private Double length;
+
+    @ApiModelProperty(value= "浣撶Н")
+    private Double volume;
+
+    @ApiModelProperty(value= "涓夋柟缂栫爜")
+    @TableField("three_code")
+    private String threeCode;
+
+    @ApiModelProperty(value= "渚涘簲鍟�")
+    private String supp;
+
+    @ApiModelProperty(value= "渚涘簲鍟嗙紪鐮�")
+    @TableField("supp_code")
+    private String suppCode;
+
+    @ApiModelProperty(value= "鏄惁鎵规 1: 鏄�  0: 鍚�  ")
+    @TableField("be_batch")
+    private Integer beBatch;
+
+    @ApiModelProperty(value= "淇濊川鏈�")
+    @TableField("dead_time")
+    private String deadTime;
+
+    @ApiModelProperty(value= "棰勮澶╂暟")
+    @TableField("dead_warn")
+    private Integer deadWarn;
+
+    @ApiModelProperty(value= "鍒惰喘 1: 鍒堕��  2: 閲囪喘  3: 澶栧崗  ")
+    private Integer source;
+
+    @ApiModelProperty(value= "瑕佹眰妫�楠� 1: 鏄�  0: 鍚�  ")
+    private Integer inspect;
+
+    @ApiModelProperty(value= "鍗遍櫓鍝� 1: 鏄�  0: 鍚�  ")
+    private Integer danger;
+
+    @ApiModelProperty(value= "淇敼浜哄憳")
+    @TableField("modi_user")
+    private Long modiUser;
+
+    @ApiModelProperty(value= "淇敼鏃堕棿")
+    @TableField("modi_time")
+    private Date modiTime;
+
+    @ApiModelProperty(value= "鍒涘缓鑰�")
+    @TableField("appe_user")
+    private Long appeUser;
+
+    @ApiModelProperty(value= "娣诲姞鏃堕棿")
+    @TableField("appe_time")
+    private Date appeTime;
+
+    @ApiModelProperty(value= "澶囨敞")
+    private String memo;
+
+    @TableField("stock_freeze")
+    @ApiModelProperty(value= "搴撳瓨鍐荤粨{1:姝e父,0:鍐荤粨}")
+    private Integer stockFreeze;
+
+    /**
+     * 搴撳瓨鏁伴噺
+     */
+    @ApiModelProperty(value= "鍙嚭鏁伴噺")
+    @TableField(exist = false)
+    private Double stock;
+
+    /**
+     * 搴撳瓨鏁伴噺
+     */
+    @ApiModelProperty(value= "鍙嚭鏁伴噺")
+    @TableField(exist = false)
+    private String locSts;
+
+    /**
+     * 搴撳瓨鏁伴噺
+     */
+    @ApiModelProperty(value= "鍙嚭鏁伴噺")
+    @TableField(exist = false)
+    private String locSts$;
+
+    /**
+     * 宸ュ簭鐘舵��
+     */
+    @ApiModelProperty(value= "宸ュ簭鐘舵�� 1锛氬緟鍔犲伐锛�2锛氬凡鍔犲伐锛�3锛氭棤闇�鍔犲伐")
+    @TableField("process_sts")
+    private Integer processSts;
+
+
+    public String getProcessSts$(){
+        if (null == this.processSts){ return null; }
+        switch (this.processSts){
+            case 0:
+                return "鍏朵粬";
+            case 1:
+                return "寰呭姞宸�";
+            case 2:
+                return "宸插姞宸�";
+            case 3:
+                return "鏃犻渶鍔犲伐";
+            default:
+                return String.valueOf(this.processSts);
+        }
+    }
+
+    public String getLocNo$(){
+        LocMastService service = SpringUtils.getBean(LocMastService.class);
+        LocMast locMast = service.selectById(this.locNo);
+        if (!Cools.isEmpty(locMast)){
+            return String.valueOf(locMast.getLocNo());
+        }
+        return null;
+    }
+
+    public String getBeBatch$(){
+        if (null == this.beBatch){ return null; }
+        switch (this.beBatch){
+            case 1:
+                return "鏄�";
+            case 0:
+                return "鍚�";
+            default:
+                return String.valueOf(this.beBatch);
+        }
+    }
+
+    public String getSource$(){
+        if (null == this.source){ return null; }
+        switch (this.source){
+            case 1:
+                return "鍒堕��";
+            case 2:
+                return "閲囪喘";
+            case 3:
+                return "澶栧崗";
+            default:
+                return String.valueOf(this.source);
+        }
+    }
+
+    public String getInspect$(){
+        if (null == this.inspect){ return null; }
+        switch (this.inspect){
+            case 1:
+                return "鏄�";
+            case 0:
+                return "鍚�";
+            default:
+                return String.valueOf(this.inspect);
+        }
+    }
+
+    public String getDanger$(){
+        if (null == this.danger){ return null; }
+        switch (this.danger){
+            case 1:
+                return "鏄�";
+            case 0:
+                return "鍚�";
+            default:
+                return String.valueOf(this.danger);
+        }
+    }
+
+    public String getModiUser$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.selectById(this.modiUser);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getUsername());
+        }
+        return null;
+    }
+
+    public String getModiTime$(){
+        if (Cools.isEmpty(this.modiTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime);
+    }
+
+    public String getAppeUser$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.selectById(this.appeUser);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getUsername());
+        }
+        return null;
+    }
+
+    public String getAppeTime$(){
+        if (Cools.isEmpty(this.appeTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
+    }
+
+    public void sync(Object source) {
+        Synchro.Copy(source, this);
+    }
+
+    public String getStockFreeze$() {
+        if (Cools.isEmpty(this.stockFreeze)){
+            return "";
+        }
+        return this.stockFreeze == 1 ? "姝e父" : "鍐荤粨";
+    }
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/MesLocDetlMapper.java b/src/main/java/com/zy/asrs/mapper/MesLocDetlMapper.java
new file mode 100644
index 0000000..2ad7344
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/MesLocDetlMapper.java
@@ -0,0 +1,13 @@
+package com.zy.asrs.mapper;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.zy.asrs.entity.AgvLocDetl;
+import com.zy.asrs.entity.MesLocDetl;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface MesLocDetlMapper extends BaseMapper<MesLocDetl> {
+
+}
diff --git a/src/main/java/com/zy/asrs/task/ReportDataScheduler.java b/src/main/java/com/zy/asrs/task/ReportDataScheduler.java
index a788232..eb29c45 100644
--- a/src/main/java/com/zy/asrs/task/ReportDataScheduler.java
+++ b/src/main/java/com/zy/asrs/task/ReportDataScheduler.java
@@ -15,7 +15,6 @@
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
@@ -56,6 +55,9 @@
 
     @Value("${mes.getTokenPath}")
     private String getTokenPath;
+
+    @Value("${mes.stock}")
+    private String stock;
 
 
     @Scheduled(fixedDelay = 5000)
@@ -118,4 +120,15 @@
         }
 
     }
+
+
+    public void executeStock() {
+        log.info("Stock瀹氭椂浠诲姟寮�濮嬫墽琛�");
+        if (!flag) {
+            return;
+        }
+        Map<String, Object> mesTokenInfo = getMesTokenInfo();
+        reportDataHandler.stock(mesTokenInfo);
+        log.info("Stock瀹氭椂浠诲姟缁撴潫鎵ц");
+    }
 }
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 43e7248..2754add 100644
--- a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
@@ -738,12 +738,12 @@
             if (IN_TYPE_LIST.contains(agvWrkMast.getIoType())) {
                 reportMesPakinOrder(agvWrkMast, data);
             }
-            if (OUT_TYPE_List.contains(agvWrkMast.getIoType())) {
-                reportMesPakoutOrder(agvWrkMast, data);
-            }
-            if (MOVE_TYPE_List.contains(agvWrkMast.getIoType())) {
-                generateMesParam(agvWrkMast, data);
-            }
+//            if (OUT_TYPE_List.contains(agvWrkMast.getIoType())) {
+//                reportMesPakoutOrder(agvWrkMast, data);
+//            }
+//            if (MOVE_TYPE_List.contains(agvWrkMast.getIoType())) {
+//                generateMesParam(agvWrkMast, data);
+//            }
         }
 
     }
diff --git a/src/main/java/com/zy/asrs/task/handler/ReportDataHandler.java b/src/main/java/com/zy/asrs/task/handler/ReportDataHandler.java
index da7955c..0dd0a41 100644
--- a/src/main/java/com/zy/asrs/task/handler/ReportDataHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/ReportDataHandler.java
@@ -57,6 +57,9 @@
     @Value("${mes.pakoutReportPath}")
     private String pakoutReportPath;
 
+    @Value("${mes.stock}")
+    private String stock;
+
 
     @Transactional
     public ReturnT<String> start(ReportData data, Map<String, Object> mesTokenInfo) {
@@ -113,4 +116,12 @@
         }
         return response;
     }
+
+
+    @Transactional
+    public ReturnT<String> stock(Map<String, Object> mesTokenInfo) {
+        String result = doHttpRequest("{}", mesTokenInfo, "鍚屾MES搴撳瓨", url, stock, null, "127.0.0.1");
+
+        return SUCCESS;
+    }
 }
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index ff652b0..2260832 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -103,6 +103,7 @@
   getTokenPath: /api/openapi/domain/api/v1/access_token/_get_access_token
   appKey: cli_1712644281065780
   appSecret: 6710d24e31e64adc963d4c213b2c9b8e
+  stock: /inventory/open/v1/material_inventory/_list_sum_inventory
 
 agvBasDev:
   maxWorkNum: 1
diff --git a/src/main/resources/application-loc.yml b/src/main/resources/application-loc.yml
index b32a21d..37be624 100644
--- a/src/main/resources/application-loc.yml
+++ b/src/main/resources/application-loc.yml
@@ -104,6 +104,7 @@
   getTokenPath: /api/openapi/domain/api/v1/access_token/_get_access_token
   appKey: cli_1712644281065780
   appSecret: 6710d24e31e64adc963d4c213b2c9b8e
+  stock: /inventory/open/v1/material_inventory/_list_sum_inventory
 
 agvBasDev:
   maxWorkNum: 1
diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml
index dc7a7d4..bc3efee 100644
--- a/src/main/resources/application-prod.yml
+++ b/src/main/resources/application-prod.yml
@@ -103,6 +103,7 @@
   getTokenPath: /api/openapi/domain/api/v1/access_token/_get_access_token
   appKey: cli_1712644281065780
   appSecret: 6710d24e31e64adc963d4c213b2c9b8e
+  stock: /inventory/open/v1/material_inventory/_list_sum_inventory
 
 agvBasDev:
   maxWorkNum: 1
diff --git a/src/main/resources/mapper/MesLocDetlMapper.xml b/src/main/resources/mapper/MesLocDetlMapper.xml
new file mode 100644
index 0000000..1112e33
--- /dev/null
+++ b/src/main/resources/mapper/MesLocDetlMapper.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zy.asrs.mapper.MesLocDetlMapper">
+
+
+
+</mapper>

--
Gitblit v1.9.1