From b9f5b7c6c0a66fa04e12ab2f85c0f015ad024a1a Mon Sep 17 00:00:00 2001 From: pang.jiabao <pang_jiabao@163.com> Date: 星期四, 05 六月 2025 15:51:10 +0800 Subject: [PATCH] wms分配库位异常回传给wms --- src/main/java/com/zy/core/thread/SiemensDevpThread.java | 401 +++++++++++++++++++++++++++++++++------------------------ 1 files changed, 233 insertions(+), 168 deletions(-) diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java index fe5dffa..999ad53 100644 --- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java +++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java @@ -25,11 +25,9 @@ import lombok.extern.slf4j.Slf4j; import java.text.MessageFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.ConcurrentHashMap; +import java.util.stream.Collectors; /** * 杈撻�佺嚎绾跨▼ @@ -47,6 +45,11 @@ public static final ArrayList<Integer> staNos2 = new ArrayList<Integer>() {{ add(301);add(302);add(303);add(304);add(305);add(306);add(307);add(308); + }}; + + // 姝i潰5涓潯鐮佹壂鎻忕珯 + public static final ArrayList<Integer> barcodeSite2 = new ArrayList<Integer>() {{ + add(102);add(105);add(108);add(111);add(114); }}; // 渚ч潰涓変釜鏉$爜鎵弿绔� @@ -185,190 +188,252 @@ ArrayList<Integer> staNos = getStaNo(); int staNoSize = staNos.size(); + OperateResultExOne<byte[]> result; + if (slave.getId() == 1) { + // 璇绘闈㈣揣浣嶄俊鎭弽棣� + result = siemensS7Net.Read("DB101.0", (short) (16 * 8)); + if (result.IsSuccess) { + for (int i = 0; i < 16; 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((short) siemensS7Net.getByteTransform().TransInt32(result.Content, i * 8)); // 宸ヤ綔鍙� - // 璇绘闈㈣揣浣嶄俊鎭弽棣� - OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (16 * 8)); - if (result.IsSuccess) { - for (int i = 0; i < 16; 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((short) siemensS7Net.getByteTransform().TransInt32(result.Content, i * 8)); // 宸ヤ綔鍙� + staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i * 8 + 4)); // 鐩爣绔� - staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i * 8 + 4)); // 鐩爣绔� + boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, i * 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]); // 浣庡簱浣� - boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, i * 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); + if (!staProtocol.isPakMk() && !staProtocol.isLoading()) { + staProtocol.setPakMk(true); + } } } - } + // 璇讳晶闈㈣揣浣嶄俊鎭弽棣� + OperateResultExOne<byte[]> resultCm = siemensS7Net.Read("DB101.800", (short) (12 * 8)); + if (resultCm.IsSuccess) { + for (int i = 16; i < staNoSize; 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((short) siemensS7Net.getByteTransform().TransInt32(resultCm.Content, (i - 16) * 8)); // 宸ヤ綔鍙� - // 璇讳晶闈㈣揣浣嶄俊鎭弽棣� - OperateResultExOne<byte[]> resultCm = siemensS7Net.Read("DB101.800", (short) (12 * 8)); - if (resultCm.IsSuccess) { - for (int i = 16; i < staNoSize; 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((short) siemensS7Net.getByteTransform().TransInt32(resultCm.Content, (i-16) * 8)); // 宸ヤ綔鍙� + staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(resultCm.Content, (i - 16) * 8 + 4)); // 鐩爣绔� - staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(resultCm.Content, (i-16) * 8 + 4)); // 鐩爣绔� + boolean[] status = siemensS7Net.getByteTransform().TransBool(resultCm.Content, (i - 16) * 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]); // 浣庡簱浣� - boolean[] status = siemensS7Net.getByteTransform().TransBool(resultCm.Content, (i-16) * 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); + if (!staProtocol.isPakMk() && !staProtocol.isLoading()) { + staProtocol.setPakMk(true); + } } } - } - // 璇诲彇姝i潰鏉$爜 - OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.1404", (short) (16 * 8)); - if (result2.IsSuccess) { - for (int i = 0; i < 16; i++) { - int barcodeId = 0; - switch (i) { - case 1: - barcodeId = 1; - break; - case 4: - barcodeId = 2; - break; - case 7: - barcodeId = 3; - break; - case 10: - barcodeId = 4; - break; - case 13: - barcodeId = 5; - break; - default: + // 璇诲彇姝i潰鏉$爜 + OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB103.0", (short) (5 * 40)); + if (result2.IsSuccess) { + for (int i = 0; i < 5; i++) { + String barcode = siemensS7Net.getByteTransform().TransString(result2.Content, i * 40, 40, "UTF-8"); + if(!Cools.isEmpty()){ + barcode = barcode.trim(); + } + List<String> barcodeList = Arrays.stream(barcode.split(",")).collect(Collectors.toList()); + Iterator<String> iterator = barcodeList.iterator(); + while (iterator.hasNext()){ + String next = iterator.next(); + if(next.length() == 6) { + barcode = next; + iterator.remove(); + break; + } + } + + BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, i); + if (!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) { + barcodeThread.setBarcode(barcode); + } + StaProtocol staProtocol = station.get(barcodeSite2.get(i)); + if (staProtocol != null) { + staProtocol.setMatIdList(barcodeList); + } } - if (barcodeId != 0) { - String barcode = siemensS7Net.getByteTransform().TransString(result2.Content, i * 8, 6, "UTF-8"); - BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, barcodeId); + } + + // 璇诲彇姝i潰鏉$爜 +// OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.1404", (short) (16 * 8)); +// if (result2.IsSuccess) { +// for (int i = 0; i < 16; i++) { +// int barcodeId = 0; +// switch (i) { +// case 1: +// barcodeId = 1; +// break; +// case 4: +// barcodeId = 2; +// break; +// case 7: +// barcodeId = 3; +// break; +// case 10: +// barcodeId = 4; +// break; +// case 13: +// barcodeId = 5; +// break; +// default: +// } +// if (barcodeId != 0) { +// String barcode = siemensS7Net.getByteTransform().TransString(result2.Content, i * 8, 6, "UTF-8"); +// BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, barcodeId); +// if (!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) { +// barcodeThread.setBarcode(barcode); +// } +// } +// } +// } + + // 璇诲彇渚ч潰鏉$爜 + OperateResultExOne<byte[]> resultCM2 = siemensS7Net.Read("DB101.2574", (short) (3 * 4 * 6)); + if (resultCM2.IsSuccess) { + for (int i = 8; i >= 6; i--) { + BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, i); + List<String> barcodes = new ArrayList<>(); + for (int j = 0; j < 4; j++) { + String barcode1 = siemensS7Net.getByteTransform().TransString(resultCM2.Content, (8 - i) * 24 + j * 6, 6, "UTF-8"); + if (!Cools.isEmpty(barcode1) && !barcode1.equals("000000") && !barcode1.equals("NoRead")) { + barcodes.add(barcode1); + } + } + String barcode = String.join("#", barcodes); if (!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) { barcodeThread.setBarcode(barcode); } } } - } - // 璇诲彇渚ч潰鏉$爜 - OperateResultExOne<byte[]> resultCM2 = siemensS7Net.Read("DB101.2574", (short) (3 * 4 * 6)); - if (resultCM2.IsSuccess) { - for (int i= 8; i >= 6; i --) { - BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, i); - List<String> barcodes = new ArrayList<>(); - for(int j = 0; j < 4; j ++) { - String barcode1 = siemensS7Net.getByteTransform().TransString(resultCM2.Content, (8-i) * 24 + j *6, 6, "UTF-8"); - if (!Cools.isEmpty(barcode1)&&!barcode1.equals("000000")&& !barcode1.equals("NoRead")) { - barcodes.add(barcode1); + // 璇诲彇姝i潰澶栧舰妫�娴� + OperateResultExOne<byte[]> resultErr1 = siemensS7Net.Read("DB101.936", (short) (16 * 8)); + if (resultErr1.IsSuccess) { + for (int i = 0; i < 16; i++) { + Integer siteId = staNos.get(i); // 绔欑偣缂栧彿 + StaProtocol staProtocol = station.get(siteId); + boolean[] status1 = siemensS7Net.getByteTransform().TransBool(resultErr1.Content, i * 2, 1); + staProtocol.setFrontErr(status1[0]); + staProtocol.setBackErr(status1[1]); + staProtocol.setHighErr(status1[2]); + staProtocol.setLeftErr(status1[3]); + staProtocol.setRightErr(status1[4]); + staProtocol.setWeightErr(status1[5]); + staProtocol.setBarcodeErr(status1[6]); + } + } + + // 璇诲彇渚ч潰澶栧舰妫�娴� + OperateResultExOne<byte[]> resultErrCM1 = siemensS7Net.Read("DB101.1336", (short) (12 * 8)); + if (resultErrCM1.IsSuccess) { + for (int i = 16; i < staNoSize; i++) { + Integer siteId = staNos.get(i); // 绔欑偣缂栧彿 + StaProtocol staProtocol = station.get(siteId); + boolean[] status1 = siemensS7Net.getByteTransform().TransBool(resultErrCM1.Content, (i - 16) * 2, 1); + staProtocol.setFrontErr(status1[0]); + staProtocol.setBackErr(status1[1]); + staProtocol.setHighErr(status1[2]); + staProtocol.setLeftErr(status1[3]); + staProtocol.setRightErr(status1[4]); + staProtocol.setWeightErr(status1[5]); + staProtocol.setBarcodeErr(status1[6]); + } + } + + // 璇绘闈㈡晠闅滃弽棣� + OperateResultExOne<byte[]> resultErr = siemensS7Net.Read("DB101.922.0", (short) (16 * 4)); + if (resultErr.IsSuccess) { + for (int i = 0; i < 16; i++) { + Integer siteId = staNos.get(i); // 绔欑偣缂栧彿 + boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr.Content, i * 4, 1); + StaProtocol staProtocol = station.get(siteId); + 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[]> resultErrCM = siemensS7Net.Read("DB101.2540.0", (short) (12 * 4)); + if (resultErrCM.IsSuccess) { + for (int i = 16; i < staNoSize; i++) { + Integer siteId = staNos.get(i); // 绔欑偣缂栧彿 + boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErrCM.Content, (i - 16) * 4, 1); + StaProtocol staProtocol = station.get(siteId); + 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]); + + } + } + } else { + // 璇诲缃緭閫佺嚎璐т綅淇℃伅鍙嶉 + result = siemensS7Net.Read("DB101.0", (short) (staNoSize * 8)); + if (result.IsSuccess) { + for (int i = 0; i < staNoSize; 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((short) siemensS7Net.getByteTransform().TransInt32(result.Content, i * 8)); // 宸ヤ綔鍙� + + staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i * 8 + 4)); // 鐩爣绔� + + boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, i * 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); } } - String barcode = String.join("#",barcodes); - if (!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) { - barcodeThread.setBarcode(barcode); - } - } - } - - // 璇诲彇姝i潰澶栧舰妫�娴� - OperateResultExOne<byte[]> resultErr1 = siemensS7Net.Read("DB101.936", (short) (16 * 8)); - if (resultErr1.IsSuccess) { - for (int i = 0; i < 16; i++) { - Integer siteId = staNos.get(i); // 绔欑偣缂栧彿 - StaProtocol staProtocol = station.get(siteId); - boolean[] status1 = siemensS7Net.getByteTransform().TransBool(resultErr1.Content, i * 2, 1); - staProtocol.setFrontErr(status1[0]); - staProtocol.setBackErr(status1[1]); - staProtocol.setHighErr(status1[2]); - staProtocol.setLeftErr(status1[3]); - staProtocol.setRightErr(status1[4]); - staProtocol.setWeightErr(status1[5]); - staProtocol.setBarcodeErr(status1[6]); - } - } - - // 璇诲彇渚ч潰澶栧舰妫�娴� - OperateResultExOne<byte[]> resultErrCM1 = siemensS7Net.Read("DB101.1336", (short) (12 * 8)); - if (resultErrCM1.IsSuccess) { - for (int i = 16; i < staNoSize; i++) { - Integer siteId = staNos.get(i); // 绔欑偣缂栧彿 - StaProtocol staProtocol = station.get(siteId); - boolean[] status1 = siemensS7Net.getByteTransform().TransBool(resultErrCM1.Content, (i-16) * 2, 1); - staProtocol.setFrontErr(status1[0]); - staProtocol.setBackErr(status1[1]); - staProtocol.setHighErr(status1[2]); - staProtocol.setLeftErr(status1[3]); - staProtocol.setRightErr(status1[4]); - staProtocol.setWeightErr(status1[5]); - staProtocol.setBarcodeErr(status1[6]); - } - } - - // 璇绘闈㈡晠闅滃弽棣� - OperateResultExOne<byte[]> resultErr = siemensS7Net.Read("DB101.922.0", (short) (16 * 4)); - if (resultErr.IsSuccess) { - for (int i = 0; i < 16; i++) { - Integer siteId = staNos.get(i); // 绔欑偣缂栧彿 - boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr.Content, i * 4, 1); - StaProtocol staProtocol = station.get(siteId); - 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[]> resultErrCM = siemensS7Net.Read("DB101.2540.0", (short) (12 * 4)); - if (resultErrCM.IsSuccess) { - for (int i = 16; i < staNoSize; i++) { - Integer siteId = staNos.get(i); // 绔欑偣缂栧彿 - boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErrCM.Content, (i-16) * 4, 1); - StaProtocol staProtocol = station.get(siteId); - 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]); - } } -- Gitblit v1.9.1