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