From bf8895d798f6308717f83b2bdb413ff5f304b3e4 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期二, 09 九月 2025 16:11:22 +0800
Subject: [PATCH] *
---
src/main/java/com/zy/asrs/entity/param/CombParam.java | 103 +++++++++++++++++
src/main/java/com/zy/core/model/DevpSlave.java | 5
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 119 +++++++++++++++++++
src/main/resources/mapper/BasArmMastMapper.xml | 9 +
src/main/java/com/zy/asrs/service/BasArmMastService.java | 2
src/main/java/com/zy/asrs/mapper/BasArmMastMapper.java | 3
src/main/java/com/zy/core/MainProcess.java | 4
src/main/resources/application.yml | 65 ++++++++++
src/main/java/com/zy/asrs/service/impl/BasArmMastServiceImpl.java | 4
src/main/java/com/zy/asrs/utils/PostMesDataUtils.java | 8
10 files changed, 316 insertions(+), 6 deletions(-)
diff --git a/src/main/java/com/zy/asrs/entity/param/CombParam.java b/src/main/java/com/zy/asrs/entity/param/CombParam.java
new file mode 100644
index 0000000..0580fb9
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/CombParam.java
@@ -0,0 +1,103 @@
+package com.zy.asrs.entity.param;
+
+import com.core.common.Cools;
+import com.zy.asrs.entity.BasArmMast;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by vincent on 2020/6/28
+ */
+@Data
+public class CombParam {
+
+ // 鍗曟嵁缂栧彿
+ private String orderNo;
+
+ // 鎵樼洏鏉$爜
+ private String barcode;
+
+ // 搴撲綅缂栧彿
+ private String locNo;
+
+ private List<CombMat> combMats;
+
+ @Data
+ public static class CombMat {
+
+ private String orderNo;
+
+ // 鐗╂枡缂栧彿
+ private String matnr = "";
+
+ // 搴忓垪鐮�
+ private String batch = "";
+ private String brand = "";
+ private String standby1 = "";
+ private String standby2 = "";
+ private String standby3 = "";
+
+ private String boxType1 = "1";
+ private String boxType2 = "1";
+ private String boxType3 = "1";
+
+ // 鐗╂枡鏁伴噺
+ private Double anfme;
+
+ // 鍟嗗搧鍚嶇О
+ private String maktx = "";
+
+ // 瑙勬牸
+ private String specs = "";
+
+ // sku
+ private String sku = "";
+ //澶囨敞
+ private String memo = "";
+
+ public CombMat() {
+
+ }
+ public CombMat(BasArmMast basArmMast) {
+ this.orderNo = basArmMast.getOrderNo();
+ this.matnr = basArmMast.getMatnr();
+// this.batch = basArmMast.getCreateTime().toString();
+ this.anfme = basArmMast.getCtns().doubleValue();
+ this.specs = basArmMast.getOrderNo();
+ this.sku = basArmMast.getSku();
+ }
+ }
+
+ public CombParam() {
+
+ }
+ public CombParam(List<BasArmMast> basArmMastList) {
+ this.orderNo = basArmMastList.get(0).getOrderNo();
+ this.combMats = new ArrayList<>();
+ List<BasArmMast> basArmMasts = new ArrayList<>();
+ for (BasArmMast basArmMast : basArmMastList) {
+ if (basArmMasts.isEmpty()){
+ basArmMasts.add(basArmMast);
+ } else {
+ boolean sign = false;
+ for (BasArmMast basArmMastold : basArmMasts){
+ if (basArmMastold.getMatnr().equals(basArmMast.getMatnr())
+ && Cools.eq(basArmMastold.getOrderNo(), basArmMast.getOrderNo())) {//闇�瑕佸畬鍠勩�佸拰寰�
+ basArmMastold.setCtns(basArmMastold.getCtns()+1);
+ sign = true;
+ break;
+ }
+ }
+ if (!sign){
+ basArmMasts.add(basArmMast);
+ }
+ }
+ }
+ for (BasArmMast basArmMast : basArmMasts) {
+ CombMat combMat = new CombMat(basArmMast);
+ combMats.add(combMat);
+ }
+ }
+}
diff --git a/src/main/java/com/zy/asrs/mapper/BasArmMastMapper.java b/src/main/java/com/zy/asrs/mapper/BasArmMastMapper.java
index 264ce36..9ed6db1 100644
--- a/src/main/java/com/zy/asrs/mapper/BasArmMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/BasArmMastMapper.java
@@ -3,10 +3,13 @@
import com.zy.asrs.entity.BasArmMast;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
@Mapper
@Repository
public interface BasArmMastMapper extends BaseMapper<BasArmMast> {
+ boolean updateArmMastStatus(@Param("armNo")int armNo, @Param("sortingLine")int sortingLine, @Param("status")int status, @Param("endStatus")int endStatus);
+
}
diff --git a/src/main/java/com/zy/asrs/service/BasArmMastService.java b/src/main/java/com/zy/asrs/service/BasArmMastService.java
index bbf8883..2519ca2 100644
--- a/src/main/java/com/zy/asrs/service/BasArmMastService.java
+++ b/src/main/java/com/zy/asrs/service/BasArmMastService.java
@@ -5,4 +5,6 @@
public interface BasArmMastService extends IService<BasArmMast> {
+ boolean updateArmMastStatus(int armNo,int sortingLine,int status,int endStatus);
+
}
diff --git a/src/main/java/com/zy/asrs/service/impl/BasArmMastServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasArmMastServiceImpl.java
index 7ac81d6..fc7dcc6 100644
--- a/src/main/java/com/zy/asrs/service/impl/BasArmMastServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/BasArmMastServiceImpl.java
@@ -9,4 +9,8 @@
@Service("basArmMastService")
public class BasArmMastServiceImpl extends ServiceImpl<BasArmMastMapper, BasArmMast> implements BasArmMastService {
+ @Override
+ public boolean updateArmMastStatus(int armNo,int sortingLine,int status,int endStatus){
+ return this.baseMapper.updateArmMastStatus(armNo,sortingLine,status,endStatus);
+ }
}
diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index 117747c..f6f1c90 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -9,6 +9,7 @@
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.ArmTaskAssignmentParam;
+import com.zy.asrs.entity.param.CombParam;
import com.zy.asrs.mapper.*;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.PostMesDataUtils;
@@ -104,6 +105,9 @@
@Value("${wms.url}")
private String wmsUrl;
+
+ @Value("${wms.comb}")
+ private String wmsComb;
@Value("${inventory.number}")
private Integer inventoryNumber;
@@ -4195,6 +4199,111 @@
/*
+ * arm浠诲姟瀹屾垚鑷姩缁勬墭
+ * */
+ public synchronized void armMissionAccomplished() {
+ try{
+ for (DevpSlave devp : slaveProperties.getDevp()) {
+ // 閬嶅巻鎷f枡鍏ュ簱鍙�
+ for (DevpSlave.Sta armSta : devp.getArmSta()) {
+ // 鑾峰彇鏉$爜鎵弿浠俊鎭�
+ BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, armSta.getBarcode());
+ if (barcodeThread == null) {
+ continue;
+ }
+ String barcode = barcodeThread.getBarcode();
+ if(!Cools.isEmpty(barcode)) {
+ if("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
+ continue;
+ }
+ } else {
+ continue;
+ }
+
+ List<BasArm> basArmList = basArmService.selectList(new EntityWrapper<BasArm>()
+ .eq("arm_no", armSta.getArmNo())
+ .eq("sta_no", armSta.getStaNo())
+ .eq("status", 1));
+ for (BasArm basArm : basArmList) {
+ if (basArm.getStatus()!=1){
+ continue;
+ }
+ try{
+ List<BasArmMast> basArmMastList = basArmMastService.selectList(
+ new EntityWrapper<BasArmMast>()
+ .eq("arm_no", basArm.getArmNo())
+ .eq("sorting_line", basArm.getSortingLine())
+ .eq("status", 3)
+ );
+ if (basArmMastList.isEmpty()){
+ continue;
+ }
+ CombParam combParam = new CombParam(basArmMastList);
+ combParam.setBarcode(barcode);
+ //璁剧疆宸ヤ綔绌洪棿灏辩华
+ ReturnT<String> result = new PostMesDataUtils().postMesData("arm浠诲姟瀹屾垚鑷姩缁勬墭",wmsUrl, wmsComb, combParam);
+ if (result.getCode()==200){
+ basArmMastService.updateArmMastStatus(basArm.getArmNo(),basArm.getSortingLine(),3,4);
+ } else {
+ log.error("鏈烘鑷傛姄鍙栦换鍔″畬鎴愶細"+JSON.toJSON(basArmMastList)+"===銆嬭嚜鍔ㄧ粍鎵樺け璐ワ紝绛夊緟閲嶈瘯");
+ }
+ } catch (Exception e){
+ log.error("arm缂栧彿锛�"+basArm.getArmNo()+"====銆嬫満姊拌噦鎶撳彇浠诲姟瀹屾垚"+e.getMessage());
+ }
+ break;
+ }
+ }
+ }
+ } catch (Exception e){
+ log.error("鏈烘鑷傛姄鍙栦换鍔″畬鎴愮粍鎵樺け璐�"+e.getMessage());
+ }
+ }
+ public synchronized void armMissionAccomplishedScanToCheckIn() {
+ try{
+ for (DevpSlave devp : slaveProperties.getDevp()) {
+ // 閬嶅巻鎷f枡鍏ュ簱鍙�
+ for (DevpSlave.Sta armSta : devp.getArmSta()) {
+
+ List<BasArmMast> basArmMastList = basArmMastService.selectList(
+ new EntityWrapper<BasArmMast>()
+ .eq("arm_no", armSta.getArmNo())
+ .eq("sta_no", armSta.getStaNo())
+ .eq("status", 4)
+ );
+
+ if (basArmMastList.isEmpty()){
+ continue;
+ }
+ // 鑾峰彇绔欑偣淇℃伅
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+ StaProtocol staProtocol = devpThread.getStation().get(armSta.getStaNo());
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()) {
+ int workNo = commonService.getWorkNo(6);//寰呭畬鍠�
+ // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
+ staProtocol.setWorkNo(workNo);
+ staProtocol.setStaNo(armSta.getStaNoEnd().shortValue());
+ devpThread.setPakMk(staProtocol.getSiteId(), false);
+ boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+ log.error("杈撻�佺嚎涓嬪彂5锛�"+workNo+","+armSta.getStaNoEnd());
+ if (!result) {
+ News.error(""+" - 3"+" - 鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
+ }
+ basArmMastService.updateArmMastStatus(basArmMastList.get(0).getArmNo(),basArmMastList.get(0).getSortingLine(),4,5);
+ }
+ }
+ }
+ } catch (Exception e){
+ log.error("缁勬墭瀹屾垚椹卞姩鎵樼洏鎵爜鍏ュ簱澶辫触"+e.getMessage());
+ }
+ }
+
+ /*
* arm浠诲姟涓嬪彂
* */
public synchronized void armTaskAssignment() {
@@ -4211,7 +4320,13 @@
.eq("sorting_line", basArm.getSortingLine())
.eq("status", 1)
);
- if (basArmMastListRuning.isEmpty()){
+ List<BasArmMast> basArmMastListRuning3 = basArmMastService.selectList(
+ new EntityWrapper<BasArmMast>()
+ .eq("arm_no", basArm.getArmNo())
+ .eq("sorting_line", basArm.getSortingLine())
+ .eq("status", 3)
+ );
+ if (basArmMastListRuning.isEmpty() && basArmMastListRuning3.isEmpty()){
List<BasArmMast> basArmMastList = basArmMastService.selectList(
new EntityWrapper<BasArmMast>()
.eq("arm_no", basArm.getArmNo())
@@ -4228,7 +4343,7 @@
for (BasArmMast basArmMast:basArmMastList) {
ArmTaskAssignmentParam armTaskAssignmentParam = new ArmTaskAssignmentParam(basArmMast.getSortingLine());
//璁剧疆宸ヤ綔绌洪棿灏辩华
- ReturnT<String> result = new PostMesDataUtils().postMesData("鏈烘鑷傛姄鍙栦换鍔�",ArmConstant.ARM_URL, ArmConstant.ARM_WORKSPACE, armTaskAssignmentParam);
+ ReturnT<String> result = new PostMesDataUtils().postMesData("鏈烘鑷傛姄鍙栦换鍔′笅鍙戯細閫氱煡宸ヤ綔绌洪棿宸插氨缁�",ArmConstant.ARM_URL, ArmConstant.ARM_WORKSPACE, armTaskAssignmentParam);
if (result.getCode()==200){
basArmMast.setStatus(1);
basArmMastService.updateById(basArmMast);
diff --git a/src/main/java/com/zy/asrs/utils/PostMesDataUtils.java b/src/main/java/com/zy/asrs/utils/PostMesDataUtils.java
index 00d53fa..920cfe0 100644
--- a/src/main/java/com/zy/asrs/utils/PostMesDataUtils.java
+++ b/src/main/java/com/zy/asrs/utils/PostMesDataUtils.java
@@ -84,7 +84,7 @@
success = true;
} else {
log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", URL+"/"+mesPath, JSON.toJSONString(combParam), response);
- throw new CoolException("涓婃姤"+name);
+ throw new CoolException(name);
}
} catch (Exception e) {
log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", URL+"/"+mesPath, JSON.toJSONString(combParam), response);
@@ -95,7 +95,7 @@
// 淇濆瓨鎺ュ彛鏃ュ織
ApiLogService apiLogService = SpringUtils.getBean(ApiLogService.class);
apiLogService.save(
- "涓婃姤"+name,
+ name,
URL +"/"+ mesPath,
null,
"127.0.0.1",
@@ -135,7 +135,7 @@
success = true;
} else {
log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", URL+"/"+mesPath, JSON.toJSONString(combParam), response);
- throw new CoolException("涓婃姤"+name);
+ throw new CoolException(name);
}
} catch (Exception e) {
log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", URL+"/"+mesPath, JSON.toJSONString(combParam), response);
@@ -146,7 +146,7 @@
// 淇濆瓨鎺ュ彛鏃ュ織
ApiLogService apiLogService = SpringUtils.getBean(ApiLogService.class);
apiLogService.save(
- "涓婃姤"+name,
+ name,
URL +"/"+ mesPath,
null,
"127.0.0.1",
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index b77014c..f3aa38d 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -157,6 +157,10 @@
continue;
}
+ //arm浠诲姟瀹屾垚
+ mainService.armMissionAccomplished();
+ mainService.armMissionAccomplishedScanToCheckIn();
+
//arm浠诲姟涓嬪彂
mainService.armTaskAssignment();
diff --git a/src/main/java/com/zy/core/model/DevpSlave.java b/src/main/java/com/zy/core/model/DevpSlave.java
index 3a79437..62e3fe2 100644
--- a/src/main/java/com/zy/core/model/DevpSlave.java
+++ b/src/main/java/com/zy/core/model/DevpSlave.java
@@ -27,11 +27,16 @@
private List<Sta> pickSta = new ArrayList<>();
+ private List<Sta> armSta = new ArrayList<>();
+
@Data
public static class Sta {
private Integer staNo;
+ private Integer armNo;
+ private Integer sortingLine;
+ private Integer staNoEnd;
private Integer barcode;
private Integer barcodeMat;
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 27da1b8..92f14d1 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -38,6 +38,7 @@
wms:
url: 127.0.0.1:8080/jshdasrs
+ comb: mobile/combAuto/wcs/auth
inventory:
number: 7
@@ -294,6 +295,70 @@
port: 102
rack: 0
slot: 0
+ # 鐮佸灈浣�
+ armSta[0]:
+ staNo: 1044
+ armNo: 1
+ sortingLine: 1044
+ staNoEnd: 1044
+ barcode: ${wcs-slave.barcode[0].id}
+ led: ${wcs-slave.led[1].id}
+ # 鐮佸灈浣�
+ armSta[1]:
+ staNo: 1044
+ armNo: 1
+ sortingLine: 1044
+ staNoEnd: 1044
+ barcode: ${wcs-slave.barcode[0].id}
+ led: ${wcs-slave.led[1].id}
+ # 鐮佸灈浣�
+ armSta[2]:
+ staNo: 1044
+ armNo: 2
+ sortingLine: 1044
+ staNoEnd: 1044
+ barcode: ${wcs-slave.barcode[0].id}
+ led: ${wcs-slave.led[1].id}
+ # 鐮佸灈浣�
+ armSta[3]:
+ staNo: 1044
+ armNo: 2
+ sortingLine: 1044
+ staNoEnd: 1044
+ barcode: ${wcs-slave.barcode[0].id}
+ led: ${wcs-slave.led[1].id}
+ # 鐮佸灈浣�
+ armSta[4]:
+ staNo: 1044
+ armNo: 3
+ sortingLine: 1044
+ staNoEnd: 1044
+ barcode: ${wcs-slave.barcode[0].id}
+ led: ${wcs-slave.led[1].id}
+ # 鐮佸灈浣�
+ armSta[5]:
+ staNo: 1044
+ armNo: 3
+ sortingLine: 1044
+ staNoEnd: 1044
+ barcode: ${wcs-slave.barcode[0].id}
+ led: ${wcs-slave.led[1].id}
+ # 鐮佸灈浣�
+ armSta[6]:
+ staNo: 1044
+ armNo: 4
+ sortingLine: 1044
+ staNoEnd: 1044
+ barcode: ${wcs-slave.barcode[0].id}
+ led: ${wcs-slave.led[1].id}
+ # 鐮佸灈浣�
+ armSta[7]:
+ staNo: 1044
+ armNo: 4
+ sortingLine: 1044
+ staNoEnd: 1044
+ barcode: ${wcs-slave.barcode[0].id}
+ led: ${wcs-slave.led[1].id}
# 鍏ュ簱鍙�1
inSta[0]:
staNo: 1044
diff --git a/src/main/resources/mapper/BasArmMastMapper.xml b/src/main/resources/mapper/BasArmMastMapper.xml
index 777e018..29622c6 100644
--- a/src/main/resources/mapper/BasArmMastMapper.xml
+++ b/src/main/resources/mapper/BasArmMastMapper.xml
@@ -25,4 +25,13 @@
</resultMap>
+ <update id="updateArmMastStatus">
+ update asr_bas_arm_mast
+ set status = #{endStatus}
+ where 1=1
+ and arm_no = #{armNo}
+ and sorting_line = #{sortingLine}
+ and status = #{status}
+ </update>
+
</mapper>
--
Gitblit v1.9.1