From 5e802e25e196adaf64487bd06103126b5e51187d Mon Sep 17 00:00:00 2001
From: zhangc <zc@123>
Date: 星期五, 03 一月 2025 10:00:50 +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 6470c8f..4adb66f 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