From aa7daf29da4f6cda2c10a622a92bf86aa9820327 Mon Sep 17 00:00:00 2001
From: bklLiudl <673013083@qq.com>
Date: 星期四, 16 一月 2025 15:38:37 +0800
Subject: [PATCH] 自动分道 零箱 剔除
---
Admin.NET/WCS.Application/PLC/PLCService.cs | 264 ++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 254 insertions(+), 10 deletions(-)
diff --git a/Admin.NET/WCS.Application/PLC/PLCService.cs b/Admin.NET/WCS.Application/PLC/PLCService.cs
index 1b9e99f..2c61b1f 100644
--- a/Admin.NET/WCS.Application/PLC/PLCService.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCService.cs
@@ -2,6 +2,7 @@
using Dm.filter;
using DocumentFormat.OpenXml.Bibliography;
using DocumentFormat.OpenXml.Drawing.Charts;
+using Elastic.Clients.Elasticsearch.Snapshot;
using Elastic.Clients.Elasticsearch.Tasks;
using Flurl.Util;
using Furion.Logging;
@@ -15,6 +16,7 @@
using System.Data;
using System.Reflection.Emit;
using WCS.Application.Entity;
+using WCS.Application.Service.WcsDevice.Dto;
using WCS.Application.Util;
using static SKIT.FlurlHttpClient.Wechat.Api.Models.CgibinExpressIntracityUpdateStoreRequest.Types;
using static SKIT.FlurlHttpClient.Wechat.Api.Models.NontaxInsertBillRequest.Types.CardExtra.Types.BillCard.Types;
@@ -1800,7 +1802,7 @@
{
var plcConn = modDevice.PLCUtil;
- if (modDevice.DbNumber == "DB101" && modDevice.DbNumber == "DB102")
+ if (modDevice.DbNumber == "DB101")//&& modDevice.DbNumber == "DB102"&& (modDevice.DbNumber == "DB102"||modDevice.PlcIdIP == "10.18.51.110")
{
// 涓绘壂浜や簰娴佺▼
switch (modDevice.Value.ToString())
@@ -1870,11 +1872,12 @@
}
}
}
- // 鏍规嵁绠卞唴鍝佺鍙疯幏鍙栫爜韬茬粦瀹氬伐浣嶅強瀵瑰簲鐨勫垎閬撳彿
- var checkTaskInfo = _db.Queryable<WcsCheckTask>().First(w => w.SkuNo == boxInfo.SkuNo && w.SkuName == boxInfo.SkuName && w.LotNo == boxInfo.LotNo && w.Status == "1");
- if (checkTaskInfo == null)
+
+
+ // 楠岃瘉鏄惁闆剁
+ if (boxInfo.BitBoxMark == "1")
{
- // 缁戝畾淇℃伅涓簄ull鍐欏叆鍓旈櫎閫氶亾鍙�
+ // 鏄浂绠辩洿鎺ュ墧闄わ紝杩涜浜哄伐缁勬墭
var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "0");
if (ret.IsSucceed)
{
@@ -1882,8 +1885,225 @@
var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2");
if (retVal.IsSucceed)
{
- Log.Error("绠辩爜鏈粦瀹氬垎鎷d换鍔★紝杩涜鍓旈櫎銆�");
+ Log.Error("闆剁锛岃繘琛屽墧闄ゃ��");
break;
+ }
+ }
+ break;
+ }
+
+
+ // 鏍规嵁绠卞唴鍝佺鍙疯幏鍙栫爜韬茬粦瀹氬伐浣嶅強瀵瑰簲鐨勫垎閬撳彿
+ var checkTaskInfo = _db.Queryable<WcsCheckTask>().First(w => w.SkuNo == boxInfo.SkuNo && w.SkuName == boxInfo.SkuName && w.LotNo == boxInfo.LotNo && w.Status == "1");
+ if (checkTaskInfo == null)
+ {
+ // 鍒ゆ柇鏄惁鍏宠仈鍗曟嵁 wcsordertask
+ var orderModel = _db.Queryable<WcsOderTask>()
+ .First(m => m.SkuNo == boxInfo.SkuNo && m.Status== TaskStatusEnum.Wait && m.LotNo == boxInfo.LotNo && m.IsDelete == false);
+ if (orderModel != null)
+ {
+ // 鏍规嵁boxinfo琛ㄤ骇绾垮瓧娈佃嚜鍔ㄧ粦瀹氬垎閬�(1绾夸骇鍝佸彧鑳界粦瀹氬埌8閬�)
+ if (boxInfo.LineNo != "1")
+ {// 缁戝畾鍒伴櫎8閬撳鍏朵粬閬�
+
+ // 鑾峰彇鏈粦瀹氶亾
+ var lineNoModels = _db.Queryable<WcsCheckTask>()
+ .Where(m => m.Status == "0" && m.LineNo != "8" && m.RoboatType == PLCTypeEnum.RobotPalletizer).ToList();
+ if (lineNoModels.Count > 0)
+ {
+ // 鑾峰彇褰撳墠鐗╂枡鍝佺鍙�
+ var skuInfo = await _db.Queryable<WcsMateialPzInfo>().Where(w => w.SkuNo == boxInfo.SkuNo).FirstAsync();
+ if (skuInfo == null)
+ {
+ // 姝や骇鍝佽嫢娌¤瀹氬搧瑙勶紝杩涜鍓旈櫎澶勭悊銆傞槻姝㈠牭濉炰欢绠辩嚎
+ var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "0");
+ if (ret.IsSucceed)
+ {
+ // 鍐欏叆娴佺▼鎺у埗瀛� 2
+ var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2");
+ if (retVal.IsSucceed)
+ {
+ Log.Error("娌℃湁绌洪棽鍒嗛亾锛岃繘琛屽墧闄ゃ��");
+ break;
+ }
+ }
+ break;
+ }
+
+ foreach (var lineNoModel in lineNoModels)
+ {
+ // 璇诲彇璁惧楠岃瘉鏄惁缁戝畾鍒嗛亾
+ var (respg, pzNo) = plcConn.GetPlcDBValue(lineNoModel.PosType, lineNoModel.DbNumber, lineNoModel.PlcPos);
+ if (respg.IsSucceed)
+ {
+ if (pzNo != 0)
+ {
+ // plc姝ゅ垎閬撴湭瑙g粦
+ break;
+ }
+ else
+ {
+ // 鑷姩缁戝畾鍒嗛亾
+ lineNoModel.OrderNo = orderModel.OrderNo;
+ lineNoModel.LotNo = boxInfo.LotNo;
+ lineNoModel.SkuNo = boxInfo.SkuNo;
+ lineNoModel.SkuName = boxInfo.SkuName;
+ lineNoModel.Qty = orderModel.Qty;
+ lineNoModel.Status = "1";//宸茬粦瀹�
+ lineNoModel.PZNo = skuInfo.PZNo;
+
+ // 缁橮LC鍐欏叆鍝佽
+ var ret = plcConn.SetPlcDBValue(lineNoModel.PosType, lineNoModel.DbNumber, lineNoModel.PlcPos, skuInfo.PZNo);
+ if (ret.IsSucceed)
+ {
+ //鍐欏叆娴佺▼瀛楁垚鍔熷悗鏇存柊鍒嗘嫞浠诲姟
+ _db.Updateable(lineNoModel).ExecuteCommand();
+ //鏇存柊WcsOderTask琛�
+ orderModel.Status = TaskStatusEnum.Doing;
+ _db.Updateable(orderModel).ExecuteCommand();
+ // Liudl 閫氱煡鍓嶇鏇存柊鍒嗘嫞浠诲姟
+ //涓嬪彂鍒嗘嫞浠诲姟
+ HubUtil.PublicCheckTask(lineNoModel.Adapt<WcsDeviceTaskOrderDto>());
+ break;
+ }
+ else
+ {
+ throw Oops.Bah("涓嶱CL浜や簰澶辫触锛岀粦瀹氬け璐ワ紒");
+ }
+ }
+ }
+ else
+ {
+ // 璇诲彇plc澶辫触
+ break;
+ }
+ }
+
+ }
+ else
+ {
+ // 鑻ユ病鏈夌┖闂查亾锛岃繘琛屽墧闄ゅ鐞嗐�傞槻姝㈠牭濉炰欢绠辩嚎
+ var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "0");
+ if (ret.IsSucceed)
+ {
+ // 鍐欏叆娴佺▼鎺у埗瀛� 2
+ var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2");
+ if (retVal.IsSucceed)
+ {
+ Log.Error("娌℃湁绌洪棽鍒嗛亾锛岃繘琛屽墧闄ゃ��");
+ break;
+ }
+ }
+ break;
+ }
+ }
+ else
+ {// 缁戝畾鍒�8閬�
+ // 鑾峰彇鏈粦瀹氶亾
+ var lineNo8Model = _db.Queryable<WcsCheckTask>()
+ .First(m => m.Status == "0" && m.LineNo == "8" && m.RoboatType == PLCTypeEnum.RobotPalletizer);
+ if (lineNo8Model != null)
+ {
+ // 鑾峰彇褰撳墠鐗╂枡鍝佺鍙�
+ var skuInfo = await _db.Queryable<WcsMateialPzInfo>().Where(w => w.SkuNo == boxInfo.SkuNo).FirstAsync();
+ if (skuInfo == null)
+ {
+ // 姝や骇鍝佽嫢娌¤瀹氬搧瑙勶紝杩涜鍓旈櫎澶勭悊銆傞槻姝㈠牭濉炰欢绠辩嚎
+ var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "0");
+ if (ret.IsSucceed)
+ {
+ // 鍐欏叆娴佺▼鎺у埗瀛� 2
+ var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2");
+ if (retVal.IsSucceed)
+ {
+ Log.Error("娌℃湁绌洪棽鍒嗛亾锛岃繘琛屽墧闄ゃ��");
+ break;
+ }
+ }
+ break;
+ }
+
+
+ // 璇诲彇璁惧楠岃瘉鏄惁缁戝畾鍒嗛亾
+ var (respg, pzNo) = plcConn.GetPlcDBValue(lineNo8Model.PosType, lineNo8Model.DbNumber, lineNo8Model.PlcPos);
+ if (respg.IsSucceed)
+ {
+ if (pzNo != 0)
+ {
+ // plc姝ゅ垎閬撴湭瑙g粦
+ break;
+ }
+ else
+ {
+ // 鑷姩缁戝畾鍒嗛亾
+ lineNo8Model.OrderNo = orderModel.OrderNo;
+ lineNo8Model.LotNo = boxInfo.LotNo;
+ lineNo8Model.SkuNo = boxInfo.SkuNo;
+ lineNo8Model.SkuName = boxInfo.SkuName;
+ lineNo8Model.Qty = orderModel.Qty;
+ lineNo8Model.Status = "1";//宸茬粦瀹�
+ lineNo8Model.PZNo = skuInfo.PZNo;
+
+ // 缁橮LC鍐欏叆鍝佽
+ var ret = plcConn.SetPlcDBValue(lineNo8Model.PosType, lineNo8Model.DbNumber, lineNo8Model.PlcPos, skuInfo.PZNo);
+ if (ret.IsSucceed)
+ {
+ //鍐欏叆娴佺▼瀛楁垚鍔熷悗鏇存柊鍒嗘嫞浠诲姟
+ _db.Updateable(lineNo8Model).ExecuteCommand();
+ //鏇存柊WcsOderTask琛�
+ orderModel.Status = TaskStatusEnum.Doing;
+ _db.Updateable(orderModel).ExecuteCommand();
+
+ // Liudl 閫氱煡鍓嶇鏇存柊鍒嗘嫞浠诲姟
+ //涓嬪彂鍒嗘嫞浠诲姟
+ HubUtil.PublicCheckTask(lineNo8Model.Adapt<WcsDeviceTaskOrderDto>());
+ break;
+ }
+ else
+ {
+ throw Oops.Bah("涓嶱CL浜や簰澶辫触锛岀粦瀹氬け璐ワ紒");
+ }
+ }
+ }
+ else
+ {
+ // 璇诲彇plc澶辫触
+ break;
+ }
+
+
+ }
+ else
+ {
+ // 娌℃湁绌洪棽閬擄紝杩涜鍓旈櫎澶勭悊銆傞槻姝㈠牭濉炰欢绠辩嚎
+ var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "0");
+ if (ret.IsSucceed)
+ {
+ // 鍐欏叆娴佺▼鎺у埗瀛� 2
+ var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2");
+ if (retVal.IsSucceed)
+ {
+ Log.Error("娌℃湁绌洪棽鍒嗛亾锛岃繘琛屽墧闄ゃ��");
+ break;
+ }
+ }
+ break;
+ }
+ }
+ }
+ else
+ {
+ // 涓嶅叧鑱斿崟鎹洿鎺ヨ繘琛屽墧闄ゅ鐞�
+ var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "0");
+ if (ret.IsSucceed)
+ {
+ // 鍐欏叆娴佺▼鎺у埗瀛� 2
+ var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2");
+ if (retVal.IsSucceed)
+ {
+ Log.Error("绠辩爜鏈粦瀹氬垎鎷d换鍔★紝杩涜鍓旈櫎銆�");
+ break;
+ }
}
}
}
@@ -2023,8 +2243,8 @@
//鏄惁缁撴壒绠�
if (boxInfo[0].EndLotFlag == "1" && retVal.IsSucceed)
{
- // 瑙﹀彂缁撴壒 瑙g粦鍒嗛亾
- AutoEndLot(boxInfo[0].LotNo, plcConn, "0");
+ // 瑙﹀彂缁撴壒 鍒嗛亾鍙樹负缁撴壒涓�
+ AutoEndLot(boxInfo[0].LotNo, plcConn, "2");
}
}
else
@@ -2167,6 +2387,7 @@
string sqlStr2 = $"delete from WCSBoxInfoLog where IsDelete=0 and PalletNo='{palletNo}'";
_db.Ado.ExecuteCommand(sqlStr2);
}
+
// 鍚慦MS鐢宠宸烽亾
var http = new HttpService();
string TaskNo = "", EndLocate = "";
@@ -2179,6 +2400,29 @@
}
else
{
+ //鍒ゆ柇鏄惁缁撴壒涓�
+ var (res, jiepi) = plcConn.GetPlcDBValue(checkTaskMedel.PosType, modDevice.DbNumber, checkTaskMedel.PosLot);
+ if (jiepi == 2)//缁撴壒涓�
+ {
+ // 鍒嗛亾瑙g粦锛屾姄绠卞搧绉嶅啓鍏�0
+ var ret1 = plcConn.SetPlcDBValue(checkTaskMedel.PosTypeLot, modDevice.DbNumber, checkTaskMedel.PlcPos, "0");
+ if (ret1.IsSucceed)
+ {
+ //鍐欏叆娴佺▼瀛楁垚鍔熷悗鏇存柊鍒嗘嫞浠诲姟 liudl 鏈�鍚庝竴鎵樼洏鐢宠瀹屽叆搴撴墠鍙竻绌�
+ checkTaskMedel.OrderNo = "";
+ checkTaskMedel.TaskNo = "";
+ checkTaskMedel.LotNo = "";
+ checkTaskMedel.SkuNo = "";
+ checkTaskMedel.SkuName = "";
+ checkTaskMedel.BoxType = "";
+ checkTaskMedel.Qty = 0;
+ checkTaskMedel.PZNo = "";
+ checkTaskMedel.Status = "0"; // 缁戝畾鍒嗛亾 0锛氳В缁� 1锛氱粦瀹�
+
+ //鏇存柊鍒嗘嫞浠诲姟
+ _db.Updateable(checkTaskMedel).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
+ }
+ }
// 鑾峰彇鍏ュ簱浠诲姟淇℃伅
var taskModel = _db.Queryable<WcsTask>().First(m => m.TaskNo == TaskNo && m.IsDelete == false && m.Status == TaskStatusEnum.Wait);
if (taskModel != null)
@@ -2376,7 +2620,7 @@
// 鍐欏叆缁撴壒淇″彿
var ret = plcConn.SetPlcDBValue(item.PosTypeLot, item.DbNumber, item.PosLot, "1");
// 鍒嗛亾瑙g粦锛屾姄绠卞搧绉嶅啓鍏�0
- var ret1 = plcConn.SetPlcDBValue(item.PosTypeLot, item.DbNumber, item.PlcPos, "0");
+ //var ret1 = plcConn.SetPlcDBValue(item.PosTypeLot, item.DbNumber, item.PlcPos, "0");
if (ret.IsSucceed)
{
//鍐欏叆娴佺▼瀛楁垚鍔熷悗鏇存柊鍒嗘嫞浠诲姟 liudl 鏈�鍚庝竴鎵樼洏鐢宠瀹屽叆搴撴墠鍙竻绌�
@@ -2388,7 +2632,7 @@
//item.BoxType = "";
//item.Qty = 0;
item.PZNo = "";
- item.Status = status; // 缁戝畾鍒嗛亾 0锛氳В缁� 1锛氱粦瀹�
+ item.Status = status; // 缁戝畾鍒嗛亾 0锛氳В缁� 1锛氱粦瀹� 2:缁撴壒涓�
//鏇存柊鍒嗘嫞浠诲姟
_db.Updateable(item).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
--
Gitblit v1.8.0