From dd40ad9d66b3cf3430e94f39bf610888775f8e26 Mon Sep 17 00:00:00 2001 From: liudl <673013083@qq.com> Date: 星期五, 17 一月 2025 08:49:35 +0800 Subject: [PATCH] Merge branch 'master' of http://47.95.120.53:8083/r/WCSNet6 --- Admin.NET/WCS.Application/PLC/PLCService.cs | 229 +++++++++++++++++++++++++++++++++++++ Admin.NET/WCS.Application/OpenApi/DemoOpenApi.cs | 3 Web/src/views/device/deviceInfo/index.vue | 14 ++ Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs | 5 Admin.NET/WCS.Application/Service/WcsDevice/Dto/WcsDeviceInput.cs | 10 + Admin.NET/WCS.Application/Job/LogClearJob.cs | 37 ++++++ Admin.NET/WCS.Application/Model/TaskRequest.cs | 5 7 files changed, 297 insertions(+), 6 deletions(-) diff --git a/Admin.NET/WCS.Application/Job/LogClearJob.cs b/Admin.NET/WCS.Application/Job/LogClearJob.cs new file mode 100644 index 0000000..0c0f058 --- /dev/null +++ b/Admin.NET/WCS.Application/Job/LogClearJob.cs @@ -0,0 +1,37 @@ +锘縰sing Furion.Schedule; +using Microsoft.Extensions.Logging; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace WCS.Application; +/// <summary> +/// 鏃ュ織娓呯悊浠诲姟 +/// </summary> +[JobDetail("job_logClear", Description = "浠诲姟鏃ュ織娓呯悊浠诲姟", GroupName = "default", Concurrent = false)] +[Daily(TriggerId = "trigger_logClear", Description = "浠诲姟鏃ュ織娓呯悊浠诲姟")] +public class LogClearJob : IJob +{ + private readonly IServiceScopeFactory _scopeFactory; + private readonly ILogger _logger; + + public LogClearJob(IServiceScopeFactory scopeFactory, ILoggerFactory loggerFactory) + { + _scopeFactory = scopeFactory; + _logger = loggerFactory.CreateLogger(CommonConst.SysLogCategoryName); + } + + public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) + { + using var serviceScope = _scopeFactory.CreateScope(); + + var rep = serviceScope.ServiceProvider.GetRequiredService<SqlSugarRepository<WcsTask>>(); + DateTime threeMonthsAgo = DateTime.Now.AddMonths(-3); + await rep.CopyNew().Context.Deleteable<WcsTask>().Where(s => s.CreateTime < threeMonthsAgo).ExecuteCommandAsync(stoppingToken); + await rep.CopyNew().Context.Deleteable<WcsTaskMonitor>().Where(s => s.CreateTime < threeMonthsAgo).ExecuteCommandAsync(stoppingToken); + threeMonthsAgo = DateTime.Now.AddMonths(-6); + await rep.CopyNew().Context.Deleteable<WcsAlarmLog>().Where(s => s.CreateTime < threeMonthsAgo).ExecuteCommandAsync(stoppingToken); + } +} diff --git a/Admin.NET/WCS.Application/Model/TaskRequest.cs b/Admin.NET/WCS.Application/Model/TaskRequest.cs index 7c5a21d..9a7a77e 100644 --- a/Admin.NET/WCS.Application/Model/TaskRequest.cs +++ b/Admin.NET/WCS.Application/Model/TaskRequest.cs @@ -407,6 +407,11 @@ /// 鍌ㄥ瓨鏈熻嚦 /// </summary> public string StoreTime { get; set; } + + /// <summary> + /// 浜х嚎缂栧彿鎴栧悕绉� + /// </summary> + public string LineNo { get; set; } /// <summary> /// 鏉ユ簮 鍥哄畾鍊糩璧嬬爜] /// </summary> diff --git a/Admin.NET/WCS.Application/OpenApi/DemoOpenApi.cs b/Admin.NET/WCS.Application/OpenApi/DemoOpenApi.cs index 936a6af..e3d0acf 100644 --- a/Admin.NET/WCS.Application/OpenApi/DemoOpenApi.cs +++ b/Admin.NET/WCS.Application/OpenApi/DemoOpenApi.cs @@ -268,6 +268,7 @@ SkuName = models.SkuName, Standard = models.Standard, LotNo = models.LotNo, + LineNo = models.LineNo, // 浜х嚎鍙锋垨浜х嚎鍚嶇О Qty = item2.Qty, FullQty = models.FullQty, //SupplierLot = models.SupplierLot, @@ -283,7 +284,7 @@ BoxNo3 = item2.BoxNo3, QtyCount = item2.QtyCount, QtyOrd = item2.QtyOrd, - + Status = "0", Level = level, diff --git a/Admin.NET/WCS.Application/PLC/PLCService.cs b/Admin.NET/WCS.Application/PLC/PLCService.cs index c0953f1..f364545 100644 --- a/Admin.NET/WCS.Application/PLC/PLCService.cs +++ b/Admin.NET/WCS.Application/PLC/PLCService.cs @@ -16,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; @@ -1871,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) { @@ -1883,10 +1885,227 @@ 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; + } + } + } } else { diff --git a/Admin.NET/WCS.Application/Service/WcsDevice/Dto/WcsDeviceInput.cs b/Admin.NET/WCS.Application/Service/WcsDevice/Dto/WcsDeviceInput.cs index 8bcd3a2..9414df3 100644 --- a/Admin.NET/WCS.Application/Service/WcsDevice/Dto/WcsDeviceInput.cs +++ b/Admin.NET/WCS.Application/Service/WcsDevice/Dto/WcsDeviceInput.cs @@ -361,6 +361,16 @@ /// </summary> public string EndCeng { get; set; } + + /// <summary> + /// 缂犺啘浜や簰 + /// </summary> + public string ChanMo { get; set; } + /// <summary> + /// 鎷嗘ā浜や簰 + /// </summary> + public string ChaiMo { get; set; } + } public class WcsDeviceStartStop diff --git a/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs b/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs index c0c19d2..aef96fc 100644 --- a/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs +++ b/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs @@ -168,6 +168,11 @@ var (result11, value11) = modUtil.GetPlcDBValue(PLCDataTypeEnum.Short, DbNum, "48"); data.EndCeng = value11.ToString(); + var (result12, value12) = modUtil.GetPlcDBValue(PLCDataTypeEnum.Byte, DbNum, "50"); + data.ChanMo = value12.ToString(); + var (result13, value13) = modUtil.GetPlcDBValue(PLCDataTypeEnum.Byte, DbNum, "51"); + data.ChaiMo = value13.ToString(); + modUtil.Close(); return data; } diff --git a/Web/src/views/device/deviceInfo/index.vue b/Web/src/views/device/deviceInfo/index.vue index 4965b80..3dd560a 100644 --- a/Web/src/views/device/deviceInfo/index.vue +++ b/Web/src/views/device/deviceInfo/index.vue @@ -185,6 +185,16 @@ </el-form-item> </el-col> + <el-col :span="6"> + <el-form-item label="缂犺啘淇″彿"> + <el-input v-model="stationValue.chanMo" disabled style="width: 200px; margin-right: 10px;"></el-input> + </el-form-item> + </el-col> + <el-col :span="6"> + <el-form-item label="鎷嗚啘淇″彿"> + <el-input v-model="stationValue.chaiMo" disabled style="width: 200px; margin-right: 10px;"></el-input> + </el-form-item> + </el-col> </el-row> </el-form> </div> @@ -232,6 +242,10 @@ endPai:'', endLie:'', endCeng:'', + + chanMo:'', + chaiMo:'', + }); -- Gitblit v1.8.0