From 48d66a079c307356997fb400d27907ff6d363b7b Mon Sep 17 00:00:00 2001
From: liudl <673013083@qq.com>
Date: 星期一, 20 一月 2025 08:35:37 +0800
Subject: [PATCH] 修改2楼分拣和1楼拆垛时获取拆垛信息接口
---
Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs | 142 +++++++++++++++++++++++++++++++++--------------
1 files changed, 100 insertions(+), 42 deletions(-)
diff --git a/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs b/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs
index dd5008e..55efc00 100644
--- a/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs
+++ b/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs
@@ -6,6 +6,7 @@
using System.Drawing.Drawing2D;
using WCS.Application.Entity;
using WCS.Application.Service.WcsDevice.Dto;
+using static SKIT.FlurlHttpClient.Wechat.Api.Models.CgibinComponentApiGetAuthorizerInfoResponse.Types.Authorizer.Types;
namespace WCS.Application;
@@ -18,7 +19,7 @@
private readonly SqlSugarRepository<WcsPlc> _wcsPlcRep;
private readonly SqlSugarRepository<WcsDevice> _wcsDeviceRep;
private readonly SysCacheService _sysCacheService;
- public WcsDeviceService(SqlSugarRepository<WcsPlc> wcsPlcRep,SqlSugarRepository<WcsDevice> wcsDeviceRep, SysCacheService sysCacheService)
+ public WcsDeviceService(SqlSugarRepository<WcsPlc> wcsPlcRep, SqlSugarRepository<WcsDevice> wcsDeviceRep, SysCacheService sysCacheService)
{
_wcsPlcRep = wcsPlcRep;
_wcsDeviceRep = wcsDeviceRep;
@@ -82,7 +83,7 @@
case "suoding": // 閿佸畾
modUtil.SetPlcDBValue(PLCDataTypeEnum.Short, DbNum, "48.0", input.LocatNo);
break;
-
+
default:
break;
}
@@ -115,7 +116,7 @@
modPlc = plcList.FirstOrDefault(m => m.Text == "1灞傛墭鐩樿緭閫佺嚎");
if (modPlc == null)
throw Oops.Bah($"鏈煡璇㈠埌{input.Layer}妤煎眰PLC淇℃伅");
- DbNum = "";
+ DbNum = "DB1100";
break;
case "2":
modPlc = plcList.FirstOrDefault(m => m.Text == "2灞傛墭鐩樿緭閫佺嚎");
@@ -127,7 +128,7 @@
modPlc = plcList.FirstOrDefault(m => m.Text == "3灞傛墭鐩樿緭閫佺嚎");
if (modPlc == null)
throw Oops.Bah($"鏈煡璇㈠埌{input.Layer}妤煎眰PLC淇℃伅");
- DbNum = "";
+ DbNum = "DB1100";
break;
default:
throw Oops.Bah("妤煎眰淇℃伅閿欒");
@@ -168,6 +169,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;
}
@@ -182,50 +188,46 @@
public async Task WriteInfo(WcsDeviceUpInfo input)
{
WcsPlc modPlc;
- string DbNum = "";// DB鍧�
-
+ string DbNum = "DB91";// DB鍧�
+
if (string.IsNullOrWhiteSpace(input.LocatNo))//濡傛灉宸ヤ綅涓虹┖
{
throw Oops.Bah("宸ヤ綅涓嶈兘涓虹┖");
}
- var plcList = await _wcsPlcRep.Context.Queryable<WcsPlc>().Where(s => s.Type == PLCTypeEnum.ConveyorLine && s.IsDelete == false).ToListAsync();
+ var plcList = await _wcsPlcRep.Context.Queryable<WcsPlc>().Where(s => s.Type == PLCTypeEnum.ConveyorLine).ToListAsync();
switch (input.Layer)
{
case "1":
- modPlc = plcList.FirstOrDefault(m=>m.Text == "1灞傛墭鐩樿緭閫佺嚎");
- if (modPlc == null)
- throw Oops.Bah($"鏈煡璇㈠埌{input.Layer}妤煎眰PLC淇℃伅");
- DbNum = "";
+ modPlc = plcList.FirstOrDefault(m => m.Text == "1灞傛墭鐩樿緭閫佺嚎");
+ //DbNum = "";
break;
case "2":
modPlc = plcList.FirstOrDefault(m => m.Text == "2灞傛墭鐩樿緭閫佺嚎");
- if (modPlc == null)
- throw Oops.Bah($"鏈煡璇㈠埌{input.Layer}妤煎眰PLC淇℃伅");
- DbNum = "DB91";
+ //DbNum = "DB91";
break;
case "3":
modPlc = plcList.FirstOrDefault(m => m.Text == "3灞傛墭鐩樿緭閫佺嚎");
- if (modPlc == null)
- throw Oops.Bah($"鏈煡璇㈠埌{input.Layer}妤煎眰PLC淇℃伅");
- DbNum = "";
+ //DbNum = "";
break;
default:
throw Oops.Bah("妤煎眰淇℃伅閿欒");
}
-
- var device = await _wcsDeviceRep.Context.Queryable<WcsDevice>().FirstAsync(s => s.PlcId == modPlc.Id && s.StationNum == input.LocatNo && s.IsDelete == false && s.DeviceType == DeviceTypeEnum.Show);
- if (device == null)
+ if (modPlc == null)
+ throw Oops.Bah($"鏈煡璇㈠埌{input.Layer}妤煎眰PLC淇℃伅");
+
+ var device = await _wcsDeviceRep.Context.Queryable<WcsDevice>().FirstAsync(s => s.PlcId == modPlc.Id && s.StationNum == input.LocatNo && s.DeviceType == DeviceTypeEnum.Show);
+ if (device == null)
{
throw Oops.Bah("褰撳墠妤煎眰鏈煡璇㈠埌璇ュ伐浣嶄俊鎭�");
}
PLCUtil modUtil = new PLCUtil(modPlc);
-
+
// true 锛� 鎵嬪姩妯″紡 false:鑷姩妯″紡
var (result, value) = modUtil.GetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "50.4");
if (result.IsSucceed)
{
- if (input.TypeName != "shoudong" && value.ToString().ToLower() == "false" && input.TypeName != "huifu" && input.TypeName != "UpTask" )
+ if (input.TypeName != "shoudong" && value.ToString().ToLower() == "false" && input.TypeName != "huifu" && input.TypeName != "UpTask")
{
throw Oops.Bah("褰撳墠涓鸿嚜鍔ㄦā寮忥紝璇峰厛鍒囨崲涓烘墜鍔ㄦā寮�");
}
@@ -234,7 +236,7 @@
{
throw Oops.Bah("璇诲彇PLC鎵嬭嚜鍔ㄥ�煎け璐�");
}
-
+
switch (input.TypeName)
{
case "zidong": // 鑷姩
@@ -258,10 +260,10 @@
{
throw Oops.Bah("浜嬩欢缁撴灉閿欒");
}
-
+
break;
case "1diandong": // 1鐐瑰姩
- if(input.FuncName == "true")
+ if (input.FuncName == "true")
{
modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "50.7", "true");
}
@@ -403,11 +405,11 @@
case "fanzhuansheng":
if (input.FuncName == "true")
{
- modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "51.7", "true");
+ modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "59.0", "true");
}
else if (input.FuncName == "false")
{
- modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "51.7", "false");
+ modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "59.0", "false");
}
else
{
@@ -417,11 +419,11 @@
case "fanzhuanjiang":
if (input.FuncName == "true")
{
- modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "52.0", "true");
+ modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "59.1", "true");
}
else if (input.FuncName == "false")
{
- modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "52.0", "false");
+ modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "59.1", "false");
}
else
{
@@ -445,8 +447,8 @@
{
throw Oops.Bah("璇诲彇PLC鍊煎け璐�");
}
-
-
+
+
break;
default:
break;
@@ -547,7 +549,7 @@
Thread.Sleep(1000);
modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "50.2", "false");
break;
-
+
default:
break;
}
@@ -570,7 +572,7 @@
WcsPlc modPlc;
string DbNum = "";// DB鍧�
-
+
var plcList = await _wcsPlcRep.Context.Queryable<WcsPlc>().Where(s => s.Type == PLCTypeEnum.ConveyorLine && s.IsDelete == false).ToListAsync();
if (input.Layer == "1")
{
@@ -685,7 +687,7 @@
{
throw Oops.Bah("浜嬩欢缁撴灉閿欒");
}
- break;
+ break;
case "TwoBoxStop":
if (input.FuncName == "true")
@@ -717,7 +719,7 @@
{
throw Oops.Bah("鎿嶄綔绫诲瀷淇℃伅閿欒");
}
-
+
}
#endregion
@@ -746,6 +748,7 @@
.WhereIF(input.PlcId > 0, u => u.PlcId == input.PlcId)
.WhereIF(!string.IsNullOrWhiteSpace(input.StationNum), u => u.StationNum.Contains(input.StationNum.Trim()))
.WhereIF(!string.IsNullOrWhiteSpace(input.Text), u => u.Text.Contains(input.Text.Trim()))
+ .WhereIF(input.DeviceType.HasValue, u => u.DeviceType == input.DeviceType)
//澶勭悊澶栭敭鍜孴reeSelector鐩稿叧瀛楁鐨勮繛鎺�
.LeftJoin<WcsPlc>((u, plcid) => u.PlcId == plcid.Id)
.Select((u, plcid) => new WcsDeviceOutput
@@ -970,7 +973,7 @@
(result, var palletNo) = modConn.GetPlcDBValue(modPositionPalletNo.PosType, modDevice.DbNumber, modPositionPalletNo.PlcPos, modPositionPalletNo.StringLength);
modDevice.PalletNo = Convert.ToString(palletNo);
Console.WriteLine(modDevice.DbNumber + "." + modPositionPalletNo.PlcPos + "----------");
- }
+ }
if (cachePlc.Type == PLCTypeEnum.ConveyorLine || cachePlc.Type == PLCTypeEnum.StackingMachine)
{
//鏀捐揣鎺�
@@ -1015,11 +1018,11 @@
(result, var pickStorey) = modConn.GetPlcDBValue(modPositionPickStorey.PosType, modDevice.DbNumber, modPositionPickStorey.PlcPos);
modDevice.PickStorey = Convert.ToInt32(pickStorey);
}
-
+
if (cachePlc.Type == PLCTypeEnum.StackingMachine)
{
//璺烘満鐨勮捣濮嬪伐浣嶇敤鍙栬揣鎺掑垪灞�
- modDevice.StartLocatNo = $"{modDevice.PickRow.ToString().PadLeft(2,'0')}{modDevice.PickCol.ToString().PadLeft(2, '0')}{modDevice.PickStorey.ToString().PadLeft(2, '0')}";
+ modDevice.StartLocatNo = $"{modDevice.PickRow.ToString().PadLeft(2, '0')}{modDevice.PickCol.ToString().PadLeft(2, '0')}{modDevice.PickStorey.ToString().PadLeft(2, '0')}";
//璺烘満鐨勭洰鐨勫伐浣嶇敤鏀捐揣鎺掑垪灞�
modDevice.EndLocatNo = $"{modDevice.ReleaseRow.ToString().PadLeft(2, '0')}{modDevice.ReleaseCol.ToString().PadLeft(2, '0')}{modDevice.ReleaseStorey.ToString().PadLeft(2, '0')}";
}
@@ -1157,7 +1160,7 @@
var modPositionEndLocatNo = listPosition.FirstOrDefault(s => s.Text == "鐩殑宸ヤ綅");
if (modPositionEndLocatNo != null)
result = modUtil.SetPlcDBValue(modPositionEndLocatNo.PosType, modDbDevice.DbNumber, modPositionEndLocatNo.PlcPos, modDevice.EndLocatNo.ToString());
- }
+ }
}
//鎵樼洏鐮�
if (modDevice.PalletNo != null)
@@ -1237,7 +1240,7 @@
public async Task<dynamic> WcsPackPlcList()
{
return await _wcsDeviceRep.Context.Queryable<WcsPlc>()
- .Where(w => w.Type == PLCTypeEnum.RobotPalletizer || w.Type == PLCTypeEnum.StackingRobot)
+ .Where(w => w.Type == PLCTypeEnum.RobotPalletizer /*|| w.Type == PLCTypeEnum.StackingRobot*/)
.OrderByDescending(o => o.Type)
.Select(u => new
{
@@ -1282,7 +1285,7 @@
PZNo = task.PZNo,
Qty = task.Qty,
- PlcId=device.PlcId,
+ PlcId = device.PlcId,
Type = plc.Type
})
.ToListAsync();
@@ -1294,7 +1297,62 @@
if (modUtil.Connected)
{
connStatus = true;
- }
+ }
+ foreach (var item in list)
+ {
+ item.PlcStatus = connStatus;
+ }
+ return list;
+ }
+ /// <summary>
+ /// 鑾峰彇璁惧瀵瑰簲宸ヤ綅鍒楄〃
+ /// </summary>
+ /// <param name="entry"></param>
+ /// <returns></returns>
+ [HttpGet]
+ [ApiDescriptionSettings(Name = "WcsStackingRobotList")]
+ [DisplayName("鑾峰彇璁惧瀵瑰簲宸ヤ綅鍒楄〃")]
+ public async Task<List<WcsDeviceTaskOrderDto>> WcsStackingRobotList()
+ {
+ //var list = await _wcsDeviceRep.AsQueryable()
+ // .LeftJoin<WcsPlc>((a, b) => a.PlcId == b.Id)
+ // .Where((a, b) => a.DeviceType == DeviceTypeEnum.Business)
+ // .Select<WcsDeviceOutput>((a, b) => new WcsDeviceOutput() { Type = b.Type }, true)
+ // .ToListAsync();
+
+
+ var list = await _wcsDeviceRep.Context.Queryable<WcsCheckTask>()
+ .LeftJoin<WcsDevice>((task, device) => device.StationNum == task.Port)
+ .InnerJoin<WcsPlc>((task, device, plc) => device.PlcId == plc.Id)
+ .Where((task, device, plc) => task.Id <= 3)
+ .OrderBy((task, device, plc) => device.CreateTime)
+ .Select((task, device, plc) => new WcsDeviceTaskOrderDto()
+ {
+ Id = device.Id,
+ TaskId = task.Id,
+ Text = task.Id.ToString() + "鍙峰嚭搴撳垎鎷g嚎",
+ TaskNo = task.TaskNo,
+ OrderNo = task.OrderNo,
+ LotNo = task.LotNo,
+ SkuNo = task.SkuNo,
+ SkuName = task.SkuName,
+ LineNo = task.LineNo,
+ Status = task.Status,
+ PZNo = task.PZNo,
+ Qty = task.Qty,
+ PlcId = device.PlcId,
+ Type = plc.Type
+ })
+ .ToListAsync();
+
+ bool connStatus = false;
+ //鑾峰彇璁惧鐨勭姸鎬�
+ var modPlc = await _wcsDeviceRep.Context.Queryable<WcsPlc>().FirstAsync(s => s.Id == list[0].PlcId);
+ PLCUtil modUtil = new PLCUtil(modPlc);
+ if (modUtil.Connected)
+ {
+ connStatus = true;
+ }
foreach (var item in list)
{
item.PlcStatus = connStatus;
--
Gitblit v1.8.0