From e9a5f5c065e7232e9d5ca1f2a4948d2f8e6e0c03 Mon Sep 17 00:00:00 2001 From: pang.jiabao <pang_jiabao@163.com> Date: 星期日, 27 四月 2025 09:29:25 +0800 Subject: [PATCH] 米多泉州wcs开发完成 --- src/main/java/com/zy/common/model/CombParam.java | 54 ++ src/main/resources/mapper/WrkMastMapper.xml | 3 src/main/java/com/zy/service/impl/MainServiceImpl.java | 529 +++++++++++++++++++---- src/main/java/com/zy/common/model/SearchLocParam.java | 20 src/main/java/com/zy/common/model/LocTypeDto.java | 9 /dev/null | 95 ---- src/main/java/com/zy/core/model/protocol/StaProtocol.java | 28 src/main/java/com/zy/core/thread/SiemensCrnThread.java | 18 src/main/java/com/zy/common/model/CanningLineInLocParam.java | 23 + src/main/java/com/zy/core/MainProcess.java | 15 src/main/java/com/zy/core/thread/SiemensDevpThread.java | 322 ------------- src/main/java/com/zy/entity/WrkMast.java | 9 src/main/resources/application.yml | 146 +++--- 13 files changed, 664 insertions(+), 607 deletions(-) diff --git a/src/main/java/com/zy/common/model/CanningLineInLocParam.java b/src/main/java/com/zy/common/model/CanningLineInLocParam.java new file mode 100644 index 0000000..055eb19 --- /dev/null +++ b/src/main/java/com/zy/common/model/CanningLineInLocParam.java @@ -0,0 +1,23 @@ +package com.zy.common.model; + +import lombok.Data; + +/** + * @author pang.jiabao + * @description 缃愯瀹屾垚锛岀敵璇峰叆鎴愬搧搴� + * @createDate 2025/4/24 10:13 + */ +@Data +public class CanningLineInLocParam { + + /** + * 浠诲姟鍙� + */ + private Integer wrkNo; + + /** + * 婧愮珯鐐� + */ + private Integer sourceStaNo; + +} diff --git a/src/main/java/com/zy/common/model/CombParam.java b/src/main/java/com/zy/common/model/CombParam.java new file mode 100644 index 0000000..fb203ad --- /dev/null +++ b/src/main/java/com/zy/common/model/CombParam.java @@ -0,0 +1,54 @@ +package com.zy.common.model; + +import lombok.Data; + +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; + + } + +} diff --git a/src/main/java/com/zy/common/model/LocTypeDto.java b/src/main/java/com/zy/common/model/LocTypeDto.java index 38fb7d2..84da5f1 100644 --- a/src/main/java/com/zy/common/model/LocTypeDto.java +++ b/src/main/java/com/zy/common/model/LocTypeDto.java @@ -1,6 +1,5 @@ package com.zy.common.model; -import com.core.exception.CoolException; import com.zy.core.model.protocol.StaProtocol; import lombok.Data; @@ -34,11 +33,11 @@ // if (staProtocol.isHigh() == staProtocol.isLow()) { // throw new CoolException("plc楂樹綆妫�娴嬪紓甯�"); // } - if (staProtocol.getSiteId() == 106 || staProtocol.getSiteId() == 159){ - this.locType1 = 2; // 楂樺簱浣� - }else { +// if (staProtocol.getSiteId() == 106 || staProtocol.getSiteId() == 159){ +// this.locType1 = 2; // 楂樺簱浣� +// }else { this.locType1 = 1; // 浣庡簱浣� - } +// } } /** diff --git a/src/main/java/com/zy/common/model/SearchLocParam.java b/src/main/java/com/zy/common/model/SearchLocParam.java index 159024e..dc7c9d6 100644 --- a/src/main/java/com/zy/common/model/SearchLocParam.java +++ b/src/main/java/com/zy/common/model/SearchLocParam.java @@ -3,6 +3,9 @@ import com.alibaba.fastjson.JSON; import lombok.Data; +import java.util.HashMap; +import java.util.Map; + /** * Created by vincent on 2020/10/30 */ @@ -18,6 +21,23 @@ // 搴撲綅瑙勬牸锛� 0:鏈煡, 1:浣庡簱浣�, 2:涓簱浣�, 3:楂樺簱浣� 锛� private Short locType1; + /** + * 搴撳尯绫诲瀷 1.鎴愬搧搴擄紝2.绌烘《搴� + */ + private int locArea; + + // 鍏ュ簱妗剁紪鍙� + private String bucketType; + + // 鍏ュ簱妗舵暟閲� + private int bucketCount; + + // 灏炬墭鏍囪瘑 + private boolean tailSupportFlag; + + // 缃愯绾胯妗� 缃愯绾垮彿-妗剁被鍨� + private Map<Integer,String> wantBucketFlag = new HashMap<>(); + public static void main(String[] args) { SearchLocParam searchLocParam = new SearchLocParam(); searchLocParam.setIoType(1); diff --git a/src/main/java/com/zy/controller/OpenController.java b/src/main/java/com/zy/controller/OpenController.java deleted file mode 100644 index 6106853..0000000 --- a/src/main/java/com/zy/controller/OpenController.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.zy.controller; - -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.mapper.EntityWrapper; -import com.core.common.Cools; -import com.core.common.R; -import com.core.exception.CoolException; -import com.zy.common.model.AgvTaskCompleteDto; -import com.zy.common.web.BaseController; -import com.zy.core.cache.MessageQueue; -import com.zy.core.cache.SlaveConnection; -import com.zy.core.enums.SlaveType; -import com.zy.core.model.Task; -import com.zy.core.model.protocol.StaProtocol; -import com.zy.core.thread.SiemensDevpThread; -import com.zy.entity.BasDevp; -import com.zy.entity.WrkMast; -import com.zy.service.BasDevpService; -import com.zy.service.WrkMastService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import javax.servlet.http.HttpServletRequest; -import java.util.ArrayList; - -/** - * Created by vincent on 2022/4/8 - */ -@Slf4j -@RestController -@RequestMapping("open/asrs") -public class OpenController extends BaseController { - - private static final boolean auth = true; - public static final ArrayList<String> APP_KEY_LIST = new ArrayList<String>() {{ - add("ea1f0459efc02a79f046f982767939ae"); - }}; - @Autowired - private BasDevpService basDevpService; - @Autowired - private WrkMastService wrkMastService; - /** - * agv鍙栨斁璐у畬鎴愶紝閫氱煡wcs - */ - @PostMapping("/agv/agvTaskComplete") - public synchronized R agvTaskComplete(@RequestHeader(required = false) String appkey, - @RequestBody AgvTaskCompleteDto param, - HttpServletRequest request) { - auth(appkey, param, request); - // 缁�305鍐欏叧闂� - BasDevp basDevp = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", 305)); - if (basDevp.getWrkNo() != 0) { - WrkMast wrkMast = wrkMastService.selectById(basDevp.getWrkNo()); - if(wrkMast.getWhsType() != null && wrkMast.getWhsType() == 3) { - SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); - StaProtocol staProtocol305 = devpThread.getStation().get(305); - if (!staProtocol305.getIfCloseDoor()) { // 娌¤姹傚叧闂� - // 璇锋眰鍏抽棴 - if(!MessageQueue.offer(SlaveType.Devp, 1, new Task(3, 0))){ - log.error("璇锋眰鍏抽棬澶辫触"); - R.parse("璇锋眰鍏抽棬澶辫触"); - } - staProtocol305.setOpenAskDoor(false); - wrkMast.setWhsType(4); - wrkMastService.updateById(wrkMast); - } else { - return R.ok("宸茬粡璇锋眰杩囧叧闂細" + staProtocol305.getIfCloseDoor()); - } - } else { - return R.parse("璇锋眰鍏抽棬寮傚父,褰撳墠鐘舵�佷负锛�" + wrkMast.getWhsType()); - } - } else { - return R.parse("鏃犱换鍔�"); - } - return R.ok("璇锋眰鍏抽棬鎴愬姛"); - } - - - private void auth(String appkey, Object obj, HttpServletRequest request) { - log.info("{}鎺ュ彛琚闂紱appkey:{}锛涜姹傛暟鎹細{}", request.getRequestURI(), appkey, JSON.toJSONString(obj)); - request.setAttribute("cache", obj); - if (!auth) { - return; - } - if (Cools.isEmpty(appkey)) { - throw new CoolException("璁よ瘉澶辫触锛岃纭appkey鏃犺锛�"); - } - if (!APP_KEY_LIST.contains(appkey)) { - throw new CoolException("璁よ瘉澶辫触锛岃纭appkey鏃犺锛�"); - } - } - - -} diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java index c58dabc..bd4cedf 100644 --- a/src/main/java/com/zy/core/MainProcess.java +++ b/src/main/java/com/zy/core/MainProcess.java @@ -41,12 +41,22 @@ continue; } + // 鎵樼洏鍒拌揪rgv鎺ラ┏绔欑偣锛屾洿鏀瑰伐浣滄。鐘舵�佷负9.鍛煎彨RGV锛岀幆绌跨▼搴忚皟搴gv + mainService.callRgv(); + // 鍏ュ簱 ===>> 鍏ュ簱绔欏埌鍫嗗灈鏈虹珯锛屾牴鎹潯鐮佹壂鎻忕敓鎴愬叆搴撳伐浣滄。 mainService.generateStoreWrkFile(1); // 缁勬墭 + Thread.sleep(500); - // 鐢熸垚 绌哄瓙/姣嶆墭鐩樹换鍔� + // 鐢熸垚 绌哄瓙/姣嶆墭鐩樺嚭搴撲换鍔� mainService.generateEmptyPalletStoreWrk(); + + // 鍏ュ簱 ===>> 绌哄瓙鎵樼洏鍏ュ簱 + mainService.storeEmptyPlt(); + + // 鍏ュ簱 ===>> 姣嶇┖鎵樼洏鍙犳弧鍏ュ簱 + mainService.autoEmptyIn(); // 鍑哄簱 ===>> 鍫嗗灈鏈哄嚭搴撶珯鍒板嚭搴撶珯 mainService.crnStnToOutStn(4); @@ -57,6 +67,9 @@ // 鍏ュ簱 ===>> 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣� mainService.storeFinished(6); + // 绌烘《缃愯瀹屾垚鍒拌揪缃愯绾縭gv鍙� 瀹屾垚鐩翠緵缃愯绾夸换鍔″拰绌烘《鍑哄簱浠诲姟锛屽垱寤烘垚鍝佹《鍏ュ簱浠诲姟 + mainService.canningLineTaskFinish(); + // 鍫嗗灈鏈哄紓甯镐俊鎭褰� mainService.recCrnErr(7); diff --git a/src/main/java/com/zy/core/model/protocol/StaProtocol.java b/src/main/java/com/zy/core/model/protocol/StaProtocol.java index c844cae..8abdeee 100644 --- a/src/main/java/com/zy/core/model/protocol/StaProtocol.java +++ b/src/main/java/com/zy/core/model/protocol/StaProtocol.java @@ -58,6 +58,26 @@ //lfd鍏ュ簱鍗拌 褰搒tamp>=2鏃舵墠鍏ュ簱 private Integer stamp = 0; + /** + * 鍏ュ簱妗剁紪鍙�/鐗╂枡鍙� + */ + private String bucketType; + + /** + * 鍏ュ簱妗舵暟閲忥紝鎵樼洏涓婃湁鍑犱釜妗� + */ + private int bucketCount; + + /** + * 灏炬墭鏍囪瘑 0涓嶆槸灏炬墭锛�1鏄熬鎵� + */ + private boolean tailSupportFlag; + + /** + * 娓呴櫎瑕佹《淇″彿 0.涓嶇敤娓呴櫎锛�123娓呴櫎鐩稿簲瑕佹《淇″彿 + */ + private int clearBucketSignal; + // 澶栧舰妫�娴� ------------------------------------------------------------------------ // 鍓嶈秴闄� @@ -97,14 +117,6 @@ private Boolean contactErr = false; //鐢垫満鎺ヨЕ鍣ㄦ晠闅� private Boolean upcontactErr = false; //椤跺崌鐢垫満鎺ヨЕ鍣ㄦ晠闅� - - private Boolean ifOpenDoor = false; // 鏄惁鎵撳紑 - - private Boolean ifCloseDoor = false; // 鏄惁鍏抽棴 - - private Boolean openAskDoor = false; // 璇锋眰寮�闂� - - private Boolean closeAskDoor = false; // 璇锋眰鍏抽棬 public BasDevp toSqlModel(){ BasDevp basDevp = new BasDevp(); diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java index 7cd498d..9f6e7cb 100644 --- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java +++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java @@ -278,16 +278,10 @@ array[7] = command.getDestinationPosY(); // 鐩爣浣嶇疆鍒楀彿 array[8] = command.getDestinationPosZ(); // 鐩爣浣嶇疆灞傚彿 array[9] = command.getCommand(); -// array[10] = 0; //澶囩敤1 - -// boolean[] array2 = new boolean[1]; -// array2[0] = command.isTraySize(); OperateResult result = siemensNet.Write("DB100.0", array); -// OperateResult result2 = siemensNet.Write("DB100.22", array2); News.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), array); -// if(!result.IsSuccess || !result2.IsSuccess){ - if(!result.IsSuccess){ + if(!result.IsSuccess){ News.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂版坊鍔犱换鍔″埌闃熷垪 ===>> [id:{}],{}", slave.getId(), JSON.toJSON(command)); MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, command)); Thread.sleep(100); @@ -372,14 +366,6 @@ } } -// if (command.getAckFinish() == 0) { -// short commandFinish = 1; -// Thread.sleep(200L); -// result = siemensNet.Write("DB100.18", commandFinish); -// log.info("鍫嗗灈鏈篶ommandFinish涓嬪彂[id:{}] >>>>> {}", slave.getId(), commandFinish); -//// result = siemensNet.Write("DB100.22", commandFinish); -// } - try { // 鏃ュ織璁板綍 BasCrnOptService bean = SpringUtils.getBean(BasCrnOptService.class); @@ -403,7 +389,7 @@ bean.insert(basCrnOpt); } catch (Exception ignore) {} - if (result != null && result.IsSuccess) { + if (result.IsSuccess) { this.readStatus(); News.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command)); OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java index 9fe3d21..25784fa 100644 --- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java +++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java @@ -43,10 +43,15 @@ private short heartBeatVal = 1; private StaError1 staError1; public static final ArrayList<Integer> staNos = new ArrayList<Integer>() {{ - add(1002);add(1020);add(1035);add(103); - add(104);add(105);add(106);add(107); - add(200);add(201);add(202);add(203);add(210); - add(300);add(301);add(302);add(303);add(304);add(305); + add(1001);add(1002);add(1004);add(1005);add(1006);add(1007);add(1008);add(1009);add(1010);add(1011);add(1012); + add(1041);add(1042);add(1043);add(1013);add(1014);add(1015);add(1016);add(1017);add(1018);add(1019);add(1020); + add(1034);add(1035);add(1036);add(1038);add(1039);add(1040); + add(1022);add(1023);add(1024);add(1025);add(1026);add(1027);add(1028);add(1030);add(1031);add(1032);add(1033); + add(1044);add(1045);add(1046);add(1047);add(1049);add(1050);add(1051);add(1052);add(1053);add(1054);add(1056);add(1057); + add(1061);add(1063);add(1064);add(1065);add(1066);add(1067);add(1068);add(1073);add(1074);add(1075);add(1077);add(1078);add(1079); + add(1081);add(1082);add(1083);add(1084);add(1085);add(1086);add(1087);add(1088);add(1089);add(1090); + add(1091);add(1092);add(1093);add(1094);add(1095);add(1096);add(1097);add(1098);add(1099);add(1100);add(1101);add(1102);add(1103);add(1104); + add(1105);add(1106);add(1107); }}; public static final ArrayList<Integer> BarcodeList = new ArrayList<Integer>() {{ @@ -55,6 +60,9 @@ public static final ArrayList<Integer> staNosErrList = new ArrayList<Integer>() {{ add(101); add(103); }}; + + // 缃愯绾胯妗舵爣璇� + private volatile Map<Integer,String> wantBucketFlag = new HashMap<>(); /** * 鏉$爜鏁伴噺 @@ -105,10 +113,6 @@ write((StaProtocol)task.getData()); // log.error("杈撻�佺嚎涓嬪彂鍛戒护锛�"+((StaProtocol) task.getData()).getWorkNo()+","+((StaProtocol) task.getData()).getStaNo()); break; - // 鍐欏紑闂� - case 3: - write2((Integer) task.getData()); - break; default: break; } @@ -119,44 +123,6 @@ e.printStackTrace(); } - } - } - - private void write2(int flag) throws InterruptedException { - if (flag == 0) { - OperateResultExOne<byte[]> readOpenResult = siemensS7Net.Read("DB100.826", (short) 1); - if (readOpenResult.IsSuccess) { - boolean[] booleans = siemensS7Net.getByteTransform().TransBool(readOpenResult.Content, 0, 1); - booleans[1] = true; // 鍏抽棬淇″彿 - booleans[0] = false; - siemensS7Net.Write("DB100.826",booleans); - log.info("涓嬪彂鍏抽棬淇″彿鎴愬姛锛�" + Arrays.toString(booleans)); - } - } else if(flag == 1) { - OperateResultExOne<byte[]> readOpenResult = siemensS7Net.Read("DB100.826", (short) 1); - if (readOpenResult.IsSuccess) { - boolean[] booleans = siemensS7Net.getByteTransform().TransBool(readOpenResult.Content, 0, 1); - booleans[0] = true; // 寮�闂ㄤ俊鍙� - booleans[1] = false; - siemensS7Net.Write("DB100.826",booleans); - log.info("涓嬪彂寮�闂ㄤ俊鍙锋垚鍔燂細" + Arrays.toString(booleans)); - } - } - Thread.sleep(500); - OperateResultExOne<byte[]> readOpenResult = siemensS7Net.Read("DB100.826", (short) 1); - if (readOpenResult.IsSuccess) { - boolean[] booleans = siemensS7Net.getByteTransform().TransBool(readOpenResult.Content, 0, 1); - StaProtocol staProtocol = station.get(305); - if (null == staProtocol) { - staProtocol = new StaProtocol(); - staProtocol.setSiteId(305); - station.put(305, staProtocol); - } - staProtocol.setOpenAskDoor(booleans[0]); - staProtocol.setCloseAskDoor(booleans[1]); - staProtocol.setIfOpenDoor(booleans[2]); - staProtocol.setIfCloseDoor(booleans[3]); - log.info("涓嬪彂寮�鍏抽棬鍚庡洖璇伙細" + Arrays.toString(booleans)); } } @@ -211,10 +177,10 @@ * 璇诲彇鐘舵�� ====> 鏁村潡plc */ private void read() throws InterruptedException { -// // 鏇存柊鍏ュ嚭搴撴ā寮� -// updateIoMode(); -// ArrayList<Integer> staNos = getStaNo(); -// int staNoSize = staNos.size(); + wantBucketFlag.clear(); + //todo 璇诲彇缃愯绾縋LC瑕佹《鏍囪瘑 + wantBucketFlag.put(1,"IBC"); + // 璇讳竴妤艰繛缁�8涓珯鐐� OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (8*8)); if (result.IsSuccess) { @@ -245,112 +211,6 @@ } } } - // 璇讳簩妤艰繛缁�4涓珯鐐� - OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.800", (short) (4*8)); - if (result2.IsSuccess) { - for (int i = 8; i < 12; i++) { - Integer siteId = staNos.get(i); // 绔欑偣缂栧彿 - StaProtocol staProtocol = station.get(siteId); - if (null == staProtocol) { - staProtocol = new StaProtocol(); - staProtocol.setSiteId(siteId); - station.put(siteId, staProtocol); - } - staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt32(result2.Content, (i-8)*8)); // 宸ヤ綔鍙� - - staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result2.Content, (i-8)*8 + 4)); // 鐩爣绔� - - boolean[] status = siemensS7Net.getByteTransform().TransBool(result2.Content, (i-8)*8 + 6, 2); - staProtocol.setAutoing(status[0]); // 鑷姩 - staProtocol.setLoading(status[1]); // 鏈夌墿 - staProtocol.setInEnable(status[2]); // 鍙叆 - staProtocol.setOutEnable(status[3]);// 鍙嚭 - staProtocol.setEmptyMk(status[4]); // 绌烘澘淇″彿 - staProtocol.setFullPlt(status[5]); // 婊℃墭鐩� - staProtocol.setHigh(status[6]); // 楂樺簱浣� - staProtocol.setLow(status[7]); // 浣庡簱浣� - - if (!staProtocol.isPakMk() && !staProtocol.isLoading()) { - staProtocol.setPakMk(true); - } - } - } - // 璇讳簩妤�210 - OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB101.880", (short) (8)); - if (result3.IsSuccess) { - Integer siteId = staNos.get(12); // 绔欑偣缂栧彿210 - StaProtocol staProtocol = station.get(siteId); - if (null == staProtocol) { - staProtocol = new StaProtocol(); - staProtocol.setSiteId(siteId); - station.put(siteId, staProtocol); - } - staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt32(result3.Content, 0)); // 宸ヤ綔鍙� - - staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result3.Content, 4)); // 鐩爣绔� - - boolean[] status = siemensS7Net.getByteTransform().TransBool(result3.Content, 6, 2); - staProtocol.setAutoing(status[0]); // 鑷姩 - staProtocol.setLoading(status[1]); // 鏈夌墿 - staProtocol.setInEnable(status[2]); // 鍙叆 - staProtocol.setOutEnable(status[3]);// 鍙嚭 - staProtocol.setEmptyMk(status[4]); // 绌烘澘淇″彿 - staProtocol.setFullPlt(status[5]); // 婊℃墭鐩� - staProtocol.setHigh(status[6]); // 楂樺簱浣� - staProtocol.setLow(status[7]); // 浣庡簱浣� - - if (!staProtocol.isPakMk() && !staProtocol.isLoading()) { - staProtocol.setPakMk(true); - } - } - // 璇讳簩妤�3鍖� - OperateResultExOne<byte[]> result4 = siemensS7Net.Read("DB101.1600", (short) (6*8)); - if (result2.IsSuccess) { - for (int i = 13; i < staNos.size(); i++) { - Integer siteId = staNos.get(i); // 绔欑偣缂栧彿 - StaProtocol staProtocol = station.get(siteId); - if (null == staProtocol) { - staProtocol = new StaProtocol(); - staProtocol.setSiteId(siteId); - station.put(siteId, staProtocol); - } - staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt32(result4.Content, (i-13)*8)); // 宸ヤ綔鍙� - - staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result4.Content, (i-13)*8 + 4)); // 鐩爣绔� - - boolean[] status = siemensS7Net.getByteTransform().TransBool(result4.Content, (i-13)*8 + 6, 2); - staProtocol.setAutoing(status[0]); // 鑷姩 - staProtocol.setLoading(status[1]); // 鏈夌墿 - staProtocol.setInEnable(status[2]); // 鍙叆 - staProtocol.setOutEnable(status[3]);// 鍙嚭 - staProtocol.setEmptyMk(status[4]); // 绌烘澘淇″彿 - staProtocol.setFullPlt(status[5]); // 婊℃墭鐩� - staProtocol.setHigh(status[6]); // 楂樺簱浣� - staProtocol.setLow(status[7]); // 浣庡簱浣� - - if (!staProtocol.isPakMk() && !staProtocol.isLoading()) { - staProtocol.setPakMk(true); - } - } - } -// BasRgvMapService basRgvMapService = SpringUtils.getBean(BasRgvMapService.class); - //RGV灏忚溅1 -// Thread.sleep(100); -// OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB50.200",(short)10); -// if (result3.IsSuccess) { -// BasRgvMap basRgvMap = basRgvMapService.selectByRgvNo((int) siemensS7Net.getByteTransform().TransInt16(result3.Content, 0)); -// if (!Cools.isEmpty(basRgvMap)){ -// Integer siteId = 1; -// StaProtocol staProtocol = station.get(siteId); -// if (null == staProtocol) { -// staProtocol = new StaProtocol(); -// staProtocol.setSiteId(siteId); -// station.put(siteId, staProtocol); -// } -// staProtocol.setAutoing(true); -// staProtocol.setNearbySta(String.valueOf(siemensS7Net.getByteTransform().TransInt16(result3.Content, 8))); -// } -// } // 鏉$爜鎵弿鍣� OperateResultExOne<byte[]> barcodeResult = siemensS7Net.Read("DB101.1672", (short) ((BarcodeList.size()+1) * 8)); // 涓嶈繛缁� @@ -396,145 +256,6 @@ } } - // 璇讳簩妤艰繛缁�4涓珯鐐癸紝鏁呴殰淇℃伅鍙嶉 - OperateResultExOne<byte[]> resultErr3 = siemensS7Net.Read("DB101.3512", (short) (4*2)); - if (resultErr3.IsSuccess) { - for (int i = 8; i < 12; i++) { - boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr3.Content, (i-8) * 2 + 1, 1); - StaProtocol staProtocol = station.get(staNos.get(i)); // 绔欑偣缂栧彿 - staProtocol.setBreakerErr(status[0]); - staProtocol.setInfraredErr(status[1]); - staProtocol.setOutTimeErr(status[2]); - staProtocol.setSeizeSeatErr(status[3]); - staProtocol.setWrkYgoodsN(status[4]); - staProtocol.setInverterErr(status[5]); - staProtocol.setContactErr(status[6]); - staProtocol.setUpcontactErr(status[7]); - } - } - // 璇讳笁鍖烘晠闅滀俊鎭弽棣� - OperateResultExOne<byte[]> resultErr4 = siemensS7Net.Read("DB101.2096", (short) (6*2)); - if (resultErr4.IsSuccess) { - for (int i = 13; i < staNos.size(); i++) { - boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr4.Content, (i-13) * 2 + 1, 1); - StaProtocol staProtocol = station.get(staNos.get(i)); // 绔欑偣缂栧彿 - staProtocol.setBreakerErr(status[0]); - staProtocol.setInfraredErr(status[1]); - staProtocol.setOutTimeErr(status[2]); - staProtocol.setSeizeSeatErr(status[3]); - staProtocol.setWrkYgoodsN(status[4]); - staProtocol.setInverterErr(status[5]); - staProtocol.setContactErr(status[6]); - staProtocol.setUpcontactErr(status[7]); - } - } - - // 涓�妤煎嚭鍏ュ簱妯″紡鍒囨崲 -// OperateResultExOne<byte[]> ioModeResult = siemensS7Net.Read("DB101.3724", (short) 1); -// if (ioModeResult.IsSuccess) { -// boolean[] ioModelBooleans = siemensS7Net.getByteTransform().TransBool(ioModeResult.Content, 0, 1); -//// log.info("璇诲彇鍑哄叆搴撴ā寮忥細" + Arrays.toString(ioModelBooleans)); -// WrkMastService wrkMastService = SpringUtils.getBean(WrkMastService.class); -// if (ioModelBooleans[0]) { // 100鍒囧叆搴� -// if (ioModeOf101 == IoModeType.PAKOUT_MODE) { -// int outCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type", 101) -// .eq("sta_no", 100).in("wrk_sts", 12, 13, 14)); -// if (outCount == 0) { -// boolean[] booleans = new boolean[8]; -// booleans[0]=true; -// ioModeOf101 = IoModeType.PAKIN_MODE; -// siemensS7Net.Write("DB100.824",booleans); -// log.info("101鍒囨崲鍏ュ簱妯″紡鎴愬姛"); -// } -// } -// } -// if (ioModelBooleans[1]) { // 100鍒囧嚭搴� -// if (ioModeOf101 == IoModeType.PAKIN_MODE) { -// int inCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type", 1) -// .eq("sta_no", 101).in("wrk_sts", 2, 3, 4)); -// if (inCount == 0) { -// boolean[] booleans = new boolean[8]; -// booleans[0]=true; -// ioModeOf101 = IoModeType.PAKOUT_MODE; -// siemensS7Net.Write("DB100.824",booleans); -// log.info("101鍒囨崲鍑哄簱妯″紡鎴愬姛"); -// } -// } -// } -// if (ioModelBooleans[2]) { // 102鍒囧叆搴� -// if (ioModeOf103 == IoModeType.PAKOUT_MODE) { -// int outCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type", 101) -// .eq("sta_no", 102).in("wrk_sts", 12, 13, 14)); -// if (outCount == 0) { -// boolean[] booleans = new boolean[8]; -// booleans[1]=true; -// ioModeOf103 = IoModeType.PAKIN_MODE; -// siemensS7Net.Write("DB100.824",booleans); -// log.info("103鍒囨崲鍏ュ簱妯″紡鎴愬姛"); -// } -// } -// } -// if (ioModelBooleans[3]) { // 102鍒囧嚭搴� -// if (ioModeOf103 == IoModeType.PAKIN_MODE) { -// int inCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type", 1) -// .eq("sta_no", 103).in("wrk_sts", 2, 3, 4)); -// if (inCount == 0) { -// boolean[] booleans = new boolean[8]; -// booleans[1]=true; -// ioModeOf103 = IoModeType.PAKOUT_MODE; -// siemensS7Net.Write("DB100.824",booleans); -// log.info("103鍒囨崲鍑哄簱妯″紡鎴愬姛"); -// } -// } -// } -// } - - // 璇诲紑闂ㄤ俊鍙� -// OperateResultExOne<byte[]> readOpenResult = siemensS7Net.Read("DB100.826", (short) 1); -// if (readOpenResult.IsSuccess) { -// boolean[] booleans = siemensS7Net.getByteTransform().TransBool(readOpenResult.Content, 0, 1); -// StaProtocol staProtocol = station.get(305); -// if (null == staProtocol) { -// staProtocol = new StaProtocol(); -// staProtocol.setSiteId(305); -// station.put(305, staProtocol); -// } -// staProtocol.setOpenAskDoor(booleans[0]); -// staProtocol.setCloseAskDoor(booleans[1]); -// staProtocol.setIfOpenDoor(booleans[2]); -// staProtocol.setIfCloseDoor(booleans[3]); -//// log.info("寮�闂ㄤ俊鍙凤細" + Arrays.toString(booleans)); -// } - - -//// OperateResultExOne<byte[]> resultErr3 = siemensS7Net.Read("DB13.400", (short) 3); -//// if (resultErr3.IsSuccess) { -//// if (staError1 == null){ -//// staError1 = new StaError1(); -// } -// boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr3.Content, 0, 3); -// staError1.setEMERGENCY_Stop_Core(status[0]); -// staError1.setEMERGENCY_STOP1(status[1]); -// staError1.setEMERGENCY_STOP2(status[2]); -// staError1.setEMERGENCY_STOP3(status[3]); -// staError1.setEMERGENCY_STOP4(status[4]); -// -// staError1.setDoor_EMERGENCY_STOP1(status[5]); -// staError1.setDoor_EMERGENCY_STOP2(status[6]); -// staError1.setDoor_EMERGENCY_STOP3(status[7]); -// staError1.setDoor_EMERGENCY_STOP4(status[8]); -// staError1.setDoor_EMERGENCY_STOP5(status[9]); -// staError1.setDoor_EMERGENCY_STOP6(status[10]); -// -// staError1.setDoor_Open_Err1(status[11]); -// staError1.setDoor_Open_Err1(status[12]); -// staError1.setDoor_Open_Err1(status[13]); -// staError1.setDoor_Open_Err1(status[14]); -// staError1.setDoor_Open_Err1(status[15]); -// staError1.setDoor_Open_Err1(status[16]); -// -// } - if (result.IsSuccess) { @@ -629,16 +350,6 @@ } } - // 鏇存柊鍏ュ嚭搴撴ā寮� - private void updateIoMode() throws InterruptedException { -// if (this.ioModeOf2F != IoModeType.NONE) { -// if (!siemensS7Net.Write("DB100.180", this.ioModeOf2F.id).IsSuccess) { -// OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎2F鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={1}", slave.getId())); -// News.error("SiemensDevp"+" - 6"+" - 鍐欏叆杈撻�佺嚎2F鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={}", slave.getId()); -// } -// } - } - /** * 蹇冭烦 */ @@ -675,7 +386,6 @@ slave.setIp("10.10.10.18"); SiemensDevpThread devpThread = new SiemensDevpThread(slave); devpThread.connect(); - devpThread.write2(0); devpThread.read(); // // 鍐� // StaProtocol staProtocol = devpThread.getStation().get(1); diff --git a/src/main/java/com/zy/entity/WrkMast.java b/src/main/java/com/zy/entity/WrkMast.java index aaa0edb..27358e9 100644 --- a/src/main/java/com/zy/entity/WrkMast.java +++ b/src/main/java/com/zy/entity/WrkMast.java @@ -301,6 +301,15 @@ @TableField("ctn_no") private String ctnNo; + @TableField("rgv_no") + private Integer rgvNo; + + @TableField("rgv_ssta_no") + private Integer rgvSstaNo; + + @TableField("rgv_dsta_no") + private Integer rgvDstaNo; + /** * 婊℃澘 */ diff --git a/src/main/java/com/zy/service/impl/MainServiceImpl.java b/src/main/java/com/zy/service/impl/MainServiceImpl.java index 79b29fd..594455a 100644 --- a/src/main/java/com/zy/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/service/impl/MainServiceImpl.java @@ -6,10 +6,7 @@ import com.baomidou.mybatisplus.mapper.Wrapper; import com.core.common.Cools; import com.core.exception.CoolException; -import com.zy.common.model.LocTypeDto; -import com.zy.common.model.MatDto; -import com.zy.common.model.SearchLocParam; -import com.zy.common.model.StartupDto; +import com.zy.common.model.*; import com.zy.common.service.CommonService; import com.zy.core.CrnThread; import com.zy.core.DevpThread; @@ -53,12 +50,41 @@ public static final long COMMAND_TIMEOUT = 5 * 1000; - // 绌烘嫋鍑哄簱绔欑偣 + // 绌烘嫋鍑哄簱绔欑偣锛屽尯鍒嗗瓙姣嶇┖鎵樼洏 public static final Map<Integer,String> emptyPalletSiteMap = new HashMap<>(); - // 鍒濆鍖栫┖鎵樼洏鍑哄簱绔欑偣 M绌烘瘝鎵樼洏锛孼绌哄瓙鎵樼洏 + // 姣嶆墭鐩樺彔鐩樼珯鐐� + public static final List<Integer> stackingSite = new ArrayList<>(); + + // rgv鎺ラ┏绔欑偣 + public static final List<Integer> rgvConnectionSiteList = new ArrayList<>(); + + // 宸ヤ綔妗e搴旂洰鏍囩珯鐐硅浆鎹负rgv鐩爣绔欑偣 + public static final Map<Integer,Integer> taskStaNoToRgvStaNoMap = new HashMap<>(); + + // 缃愯瀹屾垚rgv鎺ラ┏绔欑偣 + public static final List<Integer> canningLineRgvConnectionSiteList = new ArrayList<>(); + static { - emptyPalletSiteMap.put(1002,"M");emptyPalletSiteMap.put(1020,"M");emptyPalletSiteMap.put(1035,"Z"); + emptyPalletSiteMap.put(1002,"M"); + emptyPalletSiteMap.put(1020,"M");emptyPalletSiteMap.put(1035,"Z"); + + stackingSite.add(1027);stackingSite.add(1020); + + rgvConnectionSiteList.add(1012);rgvConnectionSiteList.add(1006);rgvConnectionSiteList.add(1001);rgvConnectionSiteList.add(1018); + rgvConnectionSiteList.add(1019);rgvConnectionSiteList.add(1041);rgvConnectionSiteList.add(1034);rgvConnectionSiteList.add(1033); + rgvConnectionSiteList.add(1026);rgvConnectionSiteList.add(1022);rgvConnectionSiteList.add(1044); + rgvConnectionSiteList.add(1083);rgvConnectionSiteList.add(1086);rgvConnectionSiteList.add(1089);rgvConnectionSiteList.add(1090); + rgvConnectionSiteList.add(1105);rgvConnectionSiteList.add(1100);rgvConnectionSiteList.add(1097);rgvConnectionSiteList.add(1094); + rgvConnectionSiteList.add(1091); + + taskStaNoToRgvStaNoMap.put(1050,1044);taskStaNoToRgvStaNoMap.put(1079,1044);taskStaNoToRgvStaNoMap.put(1065,1044);taskStaNoToRgvStaNoMap.put(1072,1044);taskStaNoToRgvStaNoMap.put(1093,1094); + taskStaNoToRgvStaNoMap.put(1104,1100);taskStaNoToRgvStaNoMap.put(1102,1100);taskStaNoToRgvStaNoMap.put(1090,1090);taskStaNoToRgvStaNoMap.put(1002,1001);taskStaNoToRgvStaNoMap.put(1016,1018); + taskStaNoToRgvStaNoMap.put(1020,1019);taskStaNoToRgvStaNoMap.put(1024,1022);taskStaNoToRgvStaNoMap.put(1035,1034);taskStaNoToRgvStaNoMap.put(1040,1033);taskStaNoToRgvStaNoMap.put(1043,1041); + + canningLineRgvConnectionSiteList.add(1083);canningLineRgvConnectionSiteList.add(1086); + canningLineRgvConnectionSiteList.add(1089); + } @Autowired @@ -129,14 +155,7 @@ // 灏哄妫�娴嬪紓甯� boolean back = false; String errMsg = ""; -// if ((staProtocol.getSiteId() == 101 && devpThread.ioModeOf101 == IoModeType.PAKOUT_MODE) -// ||(staProtocol.getSiteId() == 103 && devpThread.ioModeOf103 == IoModeType.PAKOUT_MODE) -// ||(staProtocol.getSiteId() == 305 && devpThread.ioModeOf305 == IoModeType.PAKOUT_MODE)) { -// errMsg = "褰撳墠涓哄嚭搴撴ā寮�"; -// back = true; -// } -// if (!back && staProtocol.isFrontErr()) { - if (staProtocol.isFrontErr()) { + if (staProtocol.isFrontErr()) { errMsg = "鍓嶈秴闄�"; back = true; } @@ -166,7 +185,6 @@ } // 閫�鍥� if (back) { -// News.warn("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", inSta.getStaNo(), errMsg); MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg)); if (!staProtocol.isLoading()){ @@ -225,6 +243,12 @@ param.setIoType(1); param.setSourceStaNo(inSta.getStaNo()); param.setLocType1(locTypeDto.getLocType1()); + param.setLocArea(2);// 鍏ョ┖妗跺簱鏍囪瘑 + param.setBucketType(staProtocol.getBucketType()); + param.setBucketCount(staProtocol.getBucketCount()); + param.setTailSupportFlag(staProtocol.isTailSupportFlag()); + param.setWantBucketFlag(devpThread.getWantBucketFlag()); + String response = new HttpHandler.Builder() .setUri(wmsUrl) .setPath("/rpc/pakin/loc/v1") @@ -236,6 +260,11 @@ if (jsonObject.getInteger("code").equals(200)) { StartupDto dto = jsonObject.getObject("data", StartupDto.class); barcodeThread.setBarcode(""); + // 鐩爣绔欑偣鏄洿渚涚綈瑁呯嚎 + if (dto.getStaNo() == 1079 || dto.getStaNo() == 1065 || dto.getStaNo() == 1072) { + devpThread.getWantBucketFlag().remove(dto.getCrnNo()); // 绉婚櫎杈撻�佺嚎瑕佹《淇″彿 + staProtocol.setClearBucketSignal(dto.getCrnNo()); // 娓呴櫎瑕佹《淇″彿鏍囪瘑 + } staProtocol.setWorkNo(dto.getWorkNo()); staProtocol.setStaNo(RouteUtils.SouStaEnd(dto.getStaNo(),dto.getSourceStaNo())); devpThread.setPakMk(staProtocol.getSiteId(), false); @@ -253,28 +282,21 @@ staProtocol.setStaNo(inSta.getBackSta().shortValue()); devpThread.setPakMk(staProtocol.getSiteId(), false); MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); -// -// if (ledThread != null) { + if (ledThread != null) { String errorMsg = jsonObject.getString("msg"); if (!Cools.isEmpty(errorMsg)) { MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg)); } -// } -// News.error(methodName + ":璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response); + } + News.error(methodName + ":璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response); } - - } catch (Exception e) { e.printStackTrace(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); } - } - - } } -// News.infoNoLog(""+mark+" - 0"+" - 缁勬墭 ===銆嬫墽琛屽畬鎴�"); } @@ -522,40 +544,34 @@ if (crnProtocol.modeType == CrnModeType.AUTO && crnProtocol.getTaskNo().equals(wrkMast.getWrkNo().shortValue()) && crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.forkPosType == CrnForkPosType.HOME) { -// News.error("鍫嗗灈鏈哄嚭搴撳畬鎴� - 寮�濮嬫墽琛�"); - // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- - - // 鏇存柊宸ヤ綔妗g姸鎬佷负14澶辫触 - - // 涓嬪彂绔欑偣淇℃伅 - - if (wrkMast.getSourceStaNo() == 106 && wrkMast.getWrkSts() == 12L) { - wrkMast.setWrkSts(16L); - wrkMast.setCrnNo(1); - if (wrkMast.getStaNo() == 107) { - wrkMast.setSourceStaNo(107); - } else if(wrkMast.getStaNo()==104) { - wrkMast.setSourceStaNo(105); - } - staProtocol.setStaNo((short) 106); - - log.info("----------106绉诲簱鏍囪瘑---------"); - }else if(wrkMast.getSourceStaNo() == 105 && wrkMast.getWrkSts() == 16L) { - staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); - log.info("106绉诲簱瀹屾垚锛岃緭閫佺嚎鍙戦��105鍒�104锛屾簮绔欎负锛�" + staProtocol.getSiteId()); - wrkMast.setWrkSts(14L); - }else { - staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); - wrkMast.setWrkSts(14L); - } - + staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); staProtocol.setWorkNo(wrkMast.getWrkNo()); if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) { continue; } + wrkMast.setWrkSts(14L); wrkMast.setCrnEndTime(new Date()); if (wrkMastMapper.updateById(wrkMast) != 0) { + // 绌烘《鍑哄簱瀹屾垚搴撲綅缁勪换鍔� + if (wrkMast.getSourceStaNo() == 1056) { + WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("source_sta_no", 1056).eq("wrk_sts", 12)); + if (wrkMast1 != null) { + StaProtocol staProtocol1 = devpThread.getStation().get(1057); + if (staProtocol1 != null) { + staProtocol1 = staProtocol1.clone(); + staProtocol1.setStaNo(wrkMast1.getStaNo().shortValue()); + staProtocol1.setWorkNo(wrkMast1.getWrkNo()); + if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol1))) { + log.error("绌烘《鍑哄簱瀹屾垚搴撲綅缁勪换鍔℃帹閫佽緭閫佺嚎鍛戒护闃熷垪澶辫触"); + } + wrkMast1.setWrkSts(14L); + wrkMast1.setCrnEndTime(new Date()); + if (wrkMastMapper.updateById(wrkMast1) != 0) { + } + } + } + } // 澶嶄綅鍫嗗灈鏈� log.info("鍑哄簱浠诲姟瀹屾垚涓嬪彂鍫嗗灈鏈哄浣�,浠诲姟鍙凤細{}",wrkMast.getWrkNo()); crnThread.setResetFlag(true); @@ -578,6 +594,142 @@ } /** + * 绌哄瓙鎵樼洏鍏ュ簱 + */ + public synchronized void storeEmptyPlt() { + // 鏍规嵁杈撻�佺嚎plc閬嶅巻 + for (DevpSlave devp : slaveProperties.getDevp()) { + // 閬嶅巻鍏ュ簱鍙� + for (DevpSlave.Sta inSta : devp.getEmptyInSta()) { + // 鑾峰彇鏉$爜鎵弿浠俊鎭� + BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode()); + LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed()); + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); + StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo()); + if (staProtocol == null) { + continue; + } else { + staProtocol = staProtocol.clone(); + } + + if (barcodeThread == null) { + continue; + } + String barcode = barcodeThread.getBarcode(); + // 灏哄妫�娴嬪紓甯� + boolean back = false; + String errMsg = ""; + if (staProtocol.isFrontErr()) { + errMsg = "鍓嶈秴闄�"; + back = true; + } + if (!back && staProtocol.isBackErr()) { + errMsg = "鍚庤秴闄�"; + back = true; + } + if (!back && staProtocol.isHighErr()) { + errMsg = "楂樿秴闄�"; + back = true; + } + if (!back && staProtocol.isLeftErr()) { + errMsg = "宸﹁秴闄�"; + back = true; + } + if (!back && staProtocol.isRightErr()) { + errMsg = "鍙宠秴闄�"; + back = true; + } + if (!back && staProtocol.isWeightErr()) { + errMsg = "瓒呴噸"; + back = true; + } + if (!back && staProtocol.isBarcodeErr()) { + errMsg = "鎵爜澶辫触"; + back = true; + } + // 閫�鍥� + if (back) { + MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg)); + if (!staProtocol.isLoading()) { + continue; + } + if (!staProtocol.isPakMk()) { + continue; + } + staProtocol.setWorkNo(wrkNo); + News.info("{}绌烘墭鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", inSta.getStaNo(), errMsg, wrkNo); + staProtocol.setStaNo(inSta.getBackSta().shortValue()); + devpThread.setPakMk(staProtocol.getSiteId(), false); + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + log.error("杈撻�佺嚎涓嬪彂1锛�" + wrkNo + "," + inSta.getBackSta()); + return; + } + + // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢 + if (staProtocol.isAutoing() + && staProtocol.isLoading() + && staProtocol.isInEnable() + && staProtocol.isEmptyMk() + && staProtocol.isPakMk()) { + if (Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode)) { + News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode); + continue; + } + // 鍒ゆ柇閲嶅宸ヤ綔妗� + WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode); + if (wrkMast != null) { + continue; + } + try { + LocTypeDto locTypeDto = new LocTypeDto(staProtocol); + + SearchLocParam param = new SearchLocParam(); + param.setBarcode(barcode); + param.setIoType(10); + param.setSourceStaNo(inSta.getStaNo()); + param.setLocType1(locTypeDto.getLocType1()); + String response = new HttpHandler.Builder() + .setUri(wmsUrl) + .setPath("/rpc/pakin/loc/v1") + .setJson(JSON.toJSONString(param)) + .build() + .doPost(); + log.info("绌哄瓙鎵樼洏鍏ュ簱璇锋眰wms鍘熷杩斿洖锛�" + response); + JSONObject jsonObject = JSON.parseObject(response); + if (jsonObject.getInteger("code").equals(200)) { + StartupDto dto = jsonObject.getObject("data", StartupDto.class); + barcodeThread.setBarcode(""); + staProtocol.setWorkNo(dto.getWorkNo()); + staProtocol.setStaNo(RouteUtils.SouStaEnd(dto.getStaNo(), dto.getSourceStaNo())); + devpThread.setPakMk(staProtocol.getSiteId(), false); + boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + log.error("杈撻�佺嚎涓嬪彂2锛�" + dto.getWorkNo() + "," + dto.getStaNo()); + if (!result) { + News.error(":鏇存柊plc绔欑偣淇℃伅澶辫触"); + throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触"); + } else { + ledThread.errorReset(); + } + } else { + staProtocol.setWorkNo(wrkNo); + staProtocol.setStaNo(inSta.getBackSta().shortValue()); + devpThread.setPakMk(staProtocol.getSiteId(), false); + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + String errorMsg = jsonObject.getString("msg"); + if (!Cools.isEmpty(errorMsg)) { + MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg)); + } + } + } catch (Exception e) { + e.printStackTrace(); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } + } + } + } + } + + /** * 鍏ュ嚭搴� ===>> 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂 */ public synchronized void crnIoExecute(Integer mark) { @@ -594,11 +746,6 @@ News.error(""+mark+" - 1"+" - {}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crn.getId()); continue; } - -// //鍫嗗灈鏈哄洖鍘熺偣浠诲姟涓� -// if(crnThread.isBackHpFlag()){ -// continue; -// } // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛� if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO @@ -628,12 +775,8 @@ } } // 搴撲綅绉昏浆 - //mark - 3 - .... this.locToLoc(crn, crnProtocol,mark); -// this.crnRebackHp(crnProtocol, crnThread); - } -// News.infoNoLog(""+mark+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂鎵ц瀹屾垚"); } /** @@ -761,18 +904,6 @@ News.error(""+mark+" - 1"+" - 16"+" - 鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); } else { -// long startTime = System.currentTimeMillis(); -// while ((System.currentTimeMillis() - startTime) < COMMAND_TIMEOUT) { -// -// if (true) { -// break; -// } -// -// try{ -// Thread.sleep(500); -// }catch(Exception ignore){} -// } - // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� Date now = new Date(); wrkMast.setWrkSts(3L); @@ -780,6 +911,21 @@ wrkMast.setModiTime(now); if (wrkMastMapper.updateById(wrkMast) == 0) { News.error(""+mark+" - 1"+" - 17"+" - 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); + } + // 濡傛灉鏄�1049鍒欐湁涓や釜浠诲姟锛岄渶瑕佹妸1050鏀规垚鍚婅溅鍏ュ簱涓� + if (crnStn.getStaNo() == 1049) { + BasDevp basDevp = basDevpService.selectById(1050); + if (basDevp.getWrkNo() == 0) { + log.error("鍙栬揣鐐逛负1049锛屼絾鏄�1050浠诲姟鍙蜂负0"); + } else { + WrkMast wrkMast1 = wrkMastMapper.selectById(basDevp.getWrkNo()); + wrkMast1.setWrkSts(3L); + wrkMast1.setCrnStrTime(now); + wrkMast1.setModiTime(now); + if (wrkMastMapper.updateById(wrkMast1) == 0) { + News.error(""+mark+" - 1"+" - 17"+" - 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); + } + } } } } @@ -794,9 +940,7 @@ News.warnNoLog(""+mark+" - 2"+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂锛氭墽琛屽嚭搴�"); for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) { // 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗� -// WrkMast wrkMast = wrkMastMapper.selectPakOutStep1(slave.getId(), crnStn.getStaNo()); List<WrkMast> wrkMasts = wrkMastMapper.selectPakOutStep11(slave.getId(), crnStn.getStaNo()); - // todo 闄愬埗鍑哄簱鍒�305鐨勫伐浣滄。锛屽鏋滈厤缃畂utModel涓嶇瓑浜嶻锛屽垯璺宠繃 for (WrkMast wrkMast : wrkMasts) { if (wrkMast == null) { continue; @@ -818,41 +962,22 @@ if (staProtocol == null) { News.infoNoLog(""+mark+" - 2"+" - 3"+" - 鍫嗗灈鏈哄嚭搴撶珯淇℃伅(staProtocol!=null缁х画鎵ц,鍚﹀垯寰幆缁堟)锛歴taProtocol="+staProtocol); break; -// continue; } else { staProtocol = staProtocol.clone(); } - -// // 鍏ュ嚭搴撴ā寮忓垽鏂� -// if (devpThread.ioMode != IoModeType.PAKOUT_MODE) { continue; } -// if (wrkMast.getStaNo() == 204 && devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) { -// News.infoNoLog(""+mark+" - 2"+" - 4"+" - 鍏ュ嚭搴撴ā寮忥紙姝ゅ鍑哄簱鏂规硶锛屽嚭搴撴ā寮忕户缁�=="+devpThread.ioModeOf2F); -// continue; -// } - // 鍏ュ嚭搴撴ā寮忓垽鏂� -// if ((staProtocol.getSiteId() == 101 && devpThread.ioModeOf101 != IoModeType.PAKOUT_MODE) -// || (staProtocol.getSiteId() == 103 && devpThread.ioModeOf103 != IoModeType.PAKOUT_MODE) -// || (staProtocol.getSiteId() == 305 && devpThread.ioModeOf305 != IoModeType.PAKOUT_MODE)) { -// continue; -// } // 鏌ヨ绔欑偣璇︾粏淇℃伅 BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo()); if (staDetl == null) { News.error(""+mark+" - 2"+" - 5"+" - 鍑哄簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo()); break; -// continue; } - // 107鏃犵墿鎵嶈兘鍑猴紝鍏朵粬鏈夎浆杩愭灦鎵嶈兘鍑� - boolean loading = (staProtocol.getSiteId() == 107) != staProtocol.isLoading(); + // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵�� - if (staProtocol.isAutoing() && loading && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y") + if (staProtocol.isAutoing() && staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y") && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) { - // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- -// log.warn("鍫嗗灈鏈哄嚭搴撳懡浠や笅鍙戯細"+staProtocol.getWorkNo()+","+staProtocol.isOutEnable()+","+staProtocol.getSiteId()); // 鍫嗗灈鏈烘帶鍒惰繃婊� if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { -// continue; break; } @@ -908,11 +1033,39 @@ // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊� if (wrkMastMapper.selectWorking(slave.getId()) != null) { break; -// return; } -// if(crnStn.getStaNo() == 105) { -// continue; -// } + + WrkMast wrkMast1 = null; // 搴撲綅浠诲姟瀵瑰簲鍙︿竴涓簱浣嶄换鍔� + LocMast locMast = null; // 搴撲綅瀵瑰簲鍙︿竴涓簱浣� + // 绌烘《搴撳嚭搴撻渶瑕佷袱涓簱浣嶄竴璧峰嚭 + if(slave.getId() == 4) { + Integer row = sourceSta.getRow1(); + // 鑾峰彇瀵瑰簲搴撲綅 + String newLocNo = (row == 9 || row == 11 ? String.valueOf(row + 1) : row == 10 ? "09" : "11") + sourceSta.getLocNo().substring(2); + locMast = locMastService.selectById(newLocNo); + if (locMast == null) { + log.error("绌烘《鍑哄簱瀵绘壘{}瀵瑰簲搴撲綅缁勫簱浣嶅彿{}閿欒",sourceSta.getLocNo(),newLocNo); + break; + } + if (locMast.getLocSts().equals("R")) { + wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("source_loc_no", newLocNo)); + } else if(locMast.getLocSts().equals("F")) { + log.error("绌烘《鍑哄簱瀵绘壘{}瀵瑰簲搴撲綅缁勫簱浣嶅彿{}搴撲綅鐘舵�侀敊璇疐",sourceSta.getLocNo(),newLocNo); + break; + } + } + if (wrkMast1 != null) { + // 鍒ゆ柇缁欏爢鍨涙満鍙戠敓鍛戒护鐨勬簮搴撲綅 + if (sourceSta.getRow1() == 10 || sourceSta.getRow1() == 11) { + // 浜ゆ崲搴撲綅鍜屼换鍔� + LocMast t1 = sourceSta; + sourceSta = locMast; + locMast = t1; + WrkMast t2 = wrkMast1; + wrkMast1 = wrkMast; + wrkMast = t2; + } + } News.warnNoLog(""+mark+" - 2"+" - 12"+" - 鍛戒护涓嬪彂 : 宸ヤ綔鍙�={},婧愭帓={},婧愬垪={},婧愬眰={},鐩爣鎺�={},鐩爣鍒�={},鐩爣灞�={}",wrkMast.getWrkNo().shortValue() ,sourceSta.getRow1().shortValue(),sourceSta.getBay1().shortValue(),sourceSta.getLev1().shortValue() @@ -941,6 +1094,15 @@ wrkMast.setModiTime(now); if (wrkMastMapper.updateById(wrkMast) == 0) { News.error(""+mark+" - 2"+" - 14"+" - 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); + } + // 淇敼绌烘《搴撳搴斿簱浣嶄换鍔$姸鎬� + if (wrkMast1 != null) { + wrkMast1.setWrkSts(12L); + wrkMast1.setCrnStrTime(now); + wrkMast1.setModiTime(now); + if (wrkMastMapper.updateById(wrkMast1) == 0) { + News.error(""+mark+" - 2"+" - 14"+" - 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); + } } break; } @@ -1500,7 +1662,7 @@ } /** - * 鐢熸垚 绌哄瓙/姣嶆墭鐩樹换鍔� + * 鐢熸垚 绌哄瓙/姣嶆墭鐩樺嚭搴撲换鍔� */ public synchronized void generateEmptyPalletStoreWrk() { Integer devpId = 1; @@ -1516,7 +1678,7 @@ // 鑷姩&鏃犵墿&鍙嚭 if (staProtocol.isAutoing() && !staProtocol.isLoading() && staProtocol.isOutEnable()) { // 鍒ゆ柇鏄惁宸茬粡鐢熸垚浠诲姟 - if (wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("io_type", 110).eq("sta_no", entry.getKey())).size() > 0) { + if (wrkMastService.selectList(new EntityWrapper<WrkMast>().in("io_type", 111,112).eq("sta_no", entry.getKey())).size() > 0) { log.warn("{}绔欑偣宸茬粡瀛樺湪绌烘澘鍑哄簱浠诲姟", entry.getKey()); continue; } @@ -1544,4 +1706,165 @@ } } } + + /** + * 鎵樼洏鍒拌揪rgv鎺ラ┏绔欑偣锛屾洿鏀瑰伐浣滄。鐘舵�佷负9.鍛煎彨RGV锛岀幆绌跨▼搴忚皟搴gv + */ + public synchronized void callRgv() { + // 杈撻�佺嚎plc缂栧彿 + Integer devpPlcId = 1; + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devpPlcId); + for (Integer site : rgvConnectionSiteList) { + StaProtocol staProtocol = devpThread.getStation().get(site); + if (staProtocol == null) { + continue; + } else { + staProtocol = staProtocol.clone(); + } + if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() != 0) { + // 鏌ヨ宸ヤ綔妗� + WrkMast wrkMast = wrkMastMapper.selectByWrkNo(staProtocol.getWorkNo()); + if ((wrkMast.getWrkSts() == 2 || wrkMast.getWrkSts() == 15) && wrkMast.getRgvNo() == null) { + wrkMast.setRgvNo(0); + wrkMast.setRgvSstaNo(site); + wrkMast.setRgvDstaNo(taskStaNoToRgvStaNoMap.get(wrkMast.getStaNo())); + wrkMast.setModiTime(new Date()); + wrkMastMapper.updateById(wrkMast); + log.info("浠诲姟鍙凤細{}宸插埌杈緍gv鎺ラ┏浣嶏紝鍑嗗鍛煎彨rgv...", wrkMast.getWrkNo()); + } + } + } + } + + /** + * 姣嶆墭鐩樺彔婊¤嚜鍔ㄥ叆搴� + */ + public synchronized void autoEmptyIn() { + + for (DevpSlave devp : slaveProperties.getDevp()) { + // 閬嶅巻绌烘澘鍏ュ簱鍙� + for (Integer site : stackingSite) { + // 鑾峰彇绌烘澘鍏ュ簱绔欎俊鎭� + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); + StaProtocol staProtocol = devpThread.getStation().get(site); + if (staProtocol == null) { + continue; + } else { + staProtocol = staProtocol.clone(); + } + + if (!staProtocol.isLoading()){ + continue; + } + + // 绔欑偣鏉′欢鍒ゆ柇 + if (staProtocol.isAutoing() + && staProtocol.isLoading() + && staProtocol.isInEnable() + && staProtocol.isEmptyMk() + && staProtocol.isPakMk() + && staProtocol.getWorkNo() == 0 + ) { + + try { + LocTypeDto locTypeDto = new LocTypeDto(staProtocol); + + SearchLocParam param = new SearchLocParam(); + param.setIoType(10); + param.setSourceStaNo(site); + param.setLocType1(locTypeDto.getLocType1()); + String response = new HttpHandler.Builder() + .setUri(wmsUrl) + .setPath("/rpc/pakin/loc/v1") + .setJson(JSON.toJSONString(param)) + .build() + .doPost(); + JSONObject jsonObject = JSON.parseObject(response); + if (jsonObject.getInteger("code").equals(200)) { + StartupDto dto = jsonObject.getObject("data", StartupDto.class); + // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护 + staProtocol.setWorkNo(dto.getWorkNo()); + staProtocol.setStaNo(staProtocol.getSiteId().shortValue()); + devpThread.setPakMk(staProtocol.getSiteId(), false); + boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + log.error("杈撻�佺嚎涓嬪彂6锛�"+dto.getWorkNo()+","+staProtocol.getSiteId()); + if (!result) { + News.errorNoLog(""+" - 1"+" - 鏇存柊plc绔欑偣淇℃伅澶辫触"); + throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触"); + } + } else { + News.error(" - 3"+" - 姣嶆墭鍙犵洏鍏ュ簱璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response); + } + } catch (Exception e) { + e.printStackTrace(); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } + } else { + News.errorNoLog(" - 姣嶆墭鍙犵洏鍏ュ簱绔欑偣淇℃伅涓嶇鍚堝叆搴撴潯浠讹紒锛侊紒"+" 鑷姩淇″彿锛�"+staProtocol.isAutoing()+"銆佸彲鍏ヤ俊鍙凤細" + staProtocol.isInEnable() + +"銆佺┖鏉夸俊鍙凤細"+ staProtocol.isEmptyMk()+"銆佸伐浣滃彿锛�" + staProtocol.getWorkNo() + +"銆侀攣瀹氭爣璁�"+ staProtocol.isPakMk()); + } + } + } + + } + + /** + * 绌烘《缃愯瀹屾垚鍒拌揪缃愯绾縭gv鍙� 瀹屾垚鐩翠緵缃愯绾夸换鍔″拰绌烘《鍑哄簱浠诲姟锛屽垱寤烘垚鍝佹《鍏ュ簱浠诲姟 + */ + public synchronized void canningLineTaskFinish() { + // 杈撻�佺嚎plc缂栧彿 + Integer devpPlcId = 1; + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devpPlcId); + for (Integer site : canningLineRgvConnectionSiteList) { + StaProtocol staProtocol = devpThread.getStation().get(site); + if (staProtocol == null) { + continue; + } else { + staProtocol = staProtocol.clone(); + } + if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.getWorkNo() != 0) { + // 鏌ヨ宸ヤ綔妗� + WrkMast wrkMast = wrkMastMapper.selectByWrkNo(staProtocol.getWorkNo()); + if (wrkMast.getIoType() != 1) { + try { + CanningLineInLocParam param = new CanningLineInLocParam(); + param.setWrkNo(wrkMast.getWrkNo()); + param.setSourceStaNo(site); + + String response = new HttpHandler.Builder() + .setUri(wmsUrl) + .setPath("/rpc/pakin/CanningLine/loc/v1") + .setJson(JSON.toJSONString(param)) + .build() + .doPost(); + log.info("缃愯绾垮叆搴撹姹倃ms鍘熷杩斿洖锛�" + response); + JSONObject jsonObject = JSON.parseObject(response); + if (jsonObject.getInteger("code").equals(200)) { + StartupDto dto = jsonObject.getObject("data", StartupDto.class); + staProtocol.setWorkNo(dto.getWorkNo()); + staProtocol.setStaNo(RouteUtils.SouStaEnd(dto.getStaNo(), dto.getSourceStaNo())); + devpThread.setPakMk(staProtocol.getSiteId(), false); + // 杩欓噷涓嬪彂鍛戒护鍚庯紝杈撻�佺嚎瑕佹妸璇ョ珯鐐瑰彲鍏ヤ俊鍙峰幓闄� + boolean result = MessageQueue.offer(SlaveType.Devp, devpPlcId, new Task(2, staProtocol)); + if (result) { + log.info("缃愯绾垮叆搴撴帹閫佽緭閫佺嚎鍛戒护鎴愬姛锛�" + dto.getWorkNo() + "," + site + "," + dto.getStaNo()); + News.info("缃愯绾垮叆搴撴帹閫佽緭閫佺嚎鍛戒护鎴愬姛锛�" + dto.getWorkNo() + "," + site + "," + dto.getStaNo()); + } else { + log.error("缃愯绾垮叆搴撴帹閫佽緭閫佺嚎鍛戒护澶辫触锛�" + dto.getWorkNo() + "," + site + "," + dto.getStaNo()); + News.error("缃愯绾垮叆搴撴帹閫佽緭閫佺嚎鍛戒护澶辫触锛�" + dto.getWorkNo() + "," + site + "," + dto.getStaNo()); + throw new CoolException("缃愯绾垮叆搴撴帹閫佽緭閫佺嚎鍛戒护澶辫触:" + site); + } + } else { + log.error("缃愯绾垮叆搴撹姹傛帴鍙e紓甯革紝url:{}锛宺equest:{},response:{}", wmsUrl + "/rpc/pakin/CanningLine/loc/v1", JSON.toJSONString(param), response); + News.error("缃愯绾垮叆搴撹姹傛帴鍙e紓甯革紒锛侊紒url锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/CanningLine/loc/v1", JSON.toJSONString(param), response); + } + } catch (Exception e) { + e.printStackTrace(); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } + } + } + } + } } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 76f268e..f19488f 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -41,7 +41,7 @@ # 鍙屾繁 doubleDeep: true # 鍙屾繁搴撲綅鎺掑彿 - doubleLocs: 1,4,5,8 + doubleLocs: 1,4 # 涓�涓爢鍨涙満璐熻矗鐨勮揣鏋舵帓鏁� groupCount: 4 @@ -58,41 +58,17 @@ # 鍫嗗灈鏈哄叆搴撶珯鐐� crnInStn[0]: devpPlcId: ${wcs-slave.devp[0].id} - staNo: 103 - row: 2 + staNo: 1093 + row: 3 bay: 1 lev: 1 - crnInStn[1]: - devpPlcId: ${wcs-slave.devp[0].id} - staNo: 203 - row: 2 - bay: 1 - lev: 2 # 鍫嗗灈鏈哄嚭搴撶珯鐐� crnOutStn[0]: devpPlcId: ${wcs-slave.devp[0].id} - staNo: 103 - row: 2 + staNo: 1093 + row: 3 bay: 1 lev: 1 - crnOutStn[1]: - devpPlcId: ${wcs-slave.devp[0].id} - staNo: 105 - row: 2 - bay: 4 - lev: 1 - crnOutStn[2]: - devpPlcId: ${wcs-slave.devp[0].id} - staNo: 107 - row: 1 - bay: 28 - lev: 1 - crnOutStn[3]: - devpPlcId: ${wcs-slave.devp[0].id} - staNo: 203 - row: 2 - bay: 1 - lev: 2 # 鍫嗗灈鏈�2 crn[1]: id: 2 @@ -106,34 +82,16 @@ # 鍫嗗灈鏈哄叆搴撶珯鐐� crnInStn[0]: devpPlcId: ${wcs-slave.devp[0].id} - staNo: 101 + staNo: 1104 row: 6 bay: 1 lev: 1 - crnInStn[1]: - devpPlcId: ${wcs-slave.devp[0].id} - staNo: 201 - row: 6 - bay: 1 - lev: 2 # 鍫嗗灈鏈哄嚭搴撶珯鐐� crnOutStn[0]: devpPlcId: ${wcs-slave.devp[0].id} - staNo: 101 - row: 6 + staNo: 1099 + row: 5 bay: 1 - lev: 1 - crnOutStn[1]: - devpPlcId: ${wcs-slave.devp[0].id} - staNo: 201 - row: 6 - bay: 1 - lev: 2 - crnOutStn[2]: - devpPlcId: ${wcs-slave.devp[0].id} - staNo: 106 - row: 6 - bay: 28 lev: 1 # 鍫嗗灈鏈�3 crn[2]: @@ -148,15 +106,15 @@ # 鍫嗗灈鏈哄叆搴撶珯鐐� crnInStn[0]: devpPlcId: ${wcs-slave.devp[0].id} - staNo: 101 - row: 6 + staNo: 1102 + row: 7 bay: 1 lev: 1 # 鍫嗗灈鏈哄嚭搴撶珯鐐� crnOutStn[0]: devpPlcId: ${wcs-slave.devp[0].id} - staNo: 101 - row: 6 + staNo: 1107 + row: 8 bay: 1 lev: 1 # 鍫嗗灈鏈�4 @@ -169,18 +127,25 @@ # 鍋忕Щ閲忥紝褰撳爢鍨涙満绔欑偣鍒楀彿=1鏃讹紝鍋忕Щ閲�=2 offset: 2 demo: false - # 鍫嗗灈鏈哄叆搴撶珯鐐� + # 鍫嗗灈鏈哄叆搴撶珯鐐�1 crnInStn[0]: devpPlcId: ${wcs-slave.devp[0].id} - staNo: 101 - row: 6 + staNo: 1050 + row: 11 + bay: 1 + lev: 1 + # 鍫嗗灈鏈哄叆搴撶珯鐐�2 + crnInStn[1]: + devpPlcId: ${wcs-slave.devp[0].id} + staNo: 1049 + row: 12 bay: 1 lev: 1 # 鍫嗗灈鏈哄嚭搴撶珯鐐� crnOutStn[0]: devpPlcId: ${wcs-slave.devp[0].id} - staNo: 101 - row: 6 + staNo: 1056 + row: 9 bay: 1 lev: 1 @@ -193,26 +158,61 @@ slot: 0 # 鍏ュ簱鍙�1 inSta[0]: - staNo: 101 + staNo: 1011 barcode: ${wcs-slave.barcode[0].id} - backSta: 100 + backSta: 1010 led: ${wcs-slave.led[0].id} # 鍏ュ簱鍙�2 inSta[1]: - staNo: 103 + staNo: 1007 barcode: ${wcs-slave.barcode[1].id} - backSta: 102 + backSta: 1008 led: ${wcs-slave.led[1].id} # 鍏ュ簱鍙�3 inSta[2]: - staNo: 305 + staNo: 1017 + barcode: ${wcs-slave.barcode[1].id} + backSta: 1016 + led: ${wcs-slave.led[1].id} + # 鍏ュ簱鍙�4 + inSta[3]: + staNo: 1042 + barcode: ${wcs-slave.barcode[1].id} + backSta: 1043 + led: ${wcs-slave.led[1].id} + # 绌烘澘鍏ュ簱鍙�1 + emptyInSta[0]: + staNo: 1042 + barcode: ${wcs-slave.barcode[0].id} + backSta: 1043 + led: ${wcs-slave.led[2].id} + # 绌烘澘鍏ュ簱鍙�2 + emptyInSta[1]: + staNo: 1017 + barcode: ${wcs-slave.barcode[1].id} + backSta: 1016 + led: ${wcs-slave.led[3].id} + # 绌烘澘鍏ュ簱鍙�3 + emptyInSta[2]: + staNo: 1007 + barcode: ${wcs-slave.barcode[2].id} + backSta: 1008 + led: ${wcs-slave.led[4].id} # 鍑哄簱鍙�1 outSta[0]: - staNo: 100 + staNo: 1024 led: ${wcs-slave.led[0].id} # 鍑哄簱鍙�2 outSta[1]: - staNo: 102 + staNo: 1040 + led: ${wcs-slave.led[1].id} + # 鍑哄簱鍙�3 + outSta[2]: + staNo: 1043 + led: ${wcs-slave.led[1].id} + # 鍑哄簱鍙�4 + outSta[3]: + staNo: 1016 led: ${wcs-slave.led[1].id} # 鏉$爜鎵弿浠�1 @@ -242,46 +242,46 @@ ip: 10.10.10.190 port: 5005 devpPlcId: ${wcs-slave.devp[0].id} - staArr: 101 + staArr: 1024 # LED2 led[1]: id: 2 ip: 10.10.10.191 port: 5005 devpPlcId: ${wcs-slave.devp[0].id} - staArr: 102 + staArr: 1040 # LED3 led[2]: id: 3 ip: 10.10.10.191 port: 5005 devpPlcId: ${wcs-slave.devp[0].id} - staArr: 102 + staArr: 1042,1043 # LED4 led[3]: id: 4 ip: 10.10.10.191 port: 5005 devpPlcId: ${wcs-slave.devp[0].id} - staArr: 102 + staArr: 1017,1016 # LED5 led[4]: id: 5 ip: 10.10.10.191 port: 5005 devpPlcId: ${wcs-slave.devp[0].id} - staArr: 102 + staArr: 1007 # LED6 led[5]: id: 6 ip: 10.10.10.191 port: 5005 devpPlcId: ${wcs-slave.devp[0].id} - staArr: 102 + staArr: 1011 # LED7 led[6]: id: 7 ip: 10.10.10.191 port: 5005 devpPlcId: ${wcs-slave.devp[0].id} - staArr: 102 \ No newline at end of file + staArr: 1090 \ No newline at end of file diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml index 78d045c..b86468f 100644 --- a/src/main/resources/mapper/WrkMastMapper.xml +++ b/src/main/resources/mapper/WrkMastMapper.xml @@ -59,6 +59,9 @@ <!-- <result column="Pdc_type" property="PdcType" />--> <result column="ctn_no" property="ctnNo" /> <result column="full_plt" property="fullPlt" /> + <result column="rgv_no" property="rgvNo" /> + <result column="rgv_ssta_no" property="rgvSstaNo" /> + <result column="rgv_dsta_no" property="rgvDstaNo" /> </resultMap> -- Gitblit v1.9.1