123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- using ServiceCenter.Logs;
- using ServiceCenter.SqlSugars;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Linq;
- using System.Net.Sockets;
- using System.Net;
- using System.Text;
- using System.Threading.Tasks;
- using WCS.Core;
- using WCS.WorkEngineering.Extensions;
- using WCS.WorkEngineering.Protocol.Station;
- using WCS.WorkEngineering.Worlds;
- using WCS.WorkEngineering.WebApi.Controllers;
- using ServiceCenter.Extensions;
- using Newtonsoft.Json.Linq;
- using WCS.Entity;
- using TaskStatus = WCS.Entity.TaskStatus;
- using WCS.WorkEngineering.Protocol.BCR;
- namespace WCS.WorkEngineering.Systems
- { /// <summary>
- /// 库尾贴标
- /// </summary>
- [BelongTo(typeof(MainWorld))]
- [Description("库尾贴标")]
- public class 库尾贴标 : DeviceSystem<Device<IStation520, IStation521, IStation523, IBCR81>>
- {
- protected override bool ParallelDo => true;
- protected override bool SaveLogsToFile => true;
- private List<Station> devs = new List<Station>();
- private List<SRM> srms = new List<SRM>();
- public override void Do(Device<IStation520, IStation521, IStation523, IBCR81> obj)
- {
-
- obj.入库站点是否满足执行条件();
-
- #region test
- //World.Log(bcr);
- ////test
- //var str1 = "LABLC";
- //string data = $"^XA\r\n^CI28\r\n^CW1,E:SIMSUN.TTF\r\n^XFE:{str1}^FS\r\n";
- //var fn1 = "FD1810204013";
- //var fn2 = "FD3x0.20+6x0.35 HT LC BS80/33-7000";
- //var fn3 = "FD1496.00KG";
- //var fn4 = "FD塑料隔板(中层)";
- //var fn5 = "FD62101201";
- //var fn6 = "FDBS80/33 绕向:R";
- //var fn7 = "FDLA,1810204013";
- //var fn8 = "FD1810204013";
- //{
- // data += $"^FN{1}^{fn1}^FS\r\n^FN{2}^{fn2}^FS\r\n^FN{3}^{fn3}^FS\r\n^FN{4}^{fn4}^FS\r\n^FN{5}^{fn5}^FS\r\n^FN{6}^{fn6}^FS\r\n^FN{7}^{fn7}^FS\r\n^FN{8}^{fn8}^FS\r\n";
- //}
- //if (data.Contains("FDLA"))
- //{
- // data += "^PQ1,0,1,Y\r\n^XZ";
- //}
- //else
- //{
- // data += "^XZ";
- //}
- //Send(data);
- #endregion
- SqlSugarHelper.Do(db =>
- {
- WCS_TaskInfo taskInfo = null;
- //找到对应任务
- taskInfo = db.Default.Queryable<WCS_TaskInfo>().First(v => v.ID == obj.Data2.TaskNumber && v.Status == Entity.TaskStatus.ConveyorExecution);
- //未找到对应任务
- if (taskInfo == null)
- {
- throw new KnownException($"未找到对应WCS任务{obj.Data2.TaskNumber}", LogLevelEnum.High);
- }
- //非正常箱、铁托不贴标不扫码
- else if (!taskInfo.TaskGroupKey.StartsWith("181") || taskInfo.BarCode.Length == 13 || taskInfo.BusType == "空托盘出库")
- {
- obj.Data.TaskNumber = taskInfo.ID;
- obj.Data.GoodsStart = obj.Entity.Code.ToShort();
- obj.Data.VoucherNo++;
- World.Log($"箱号{taskInfo.TaskGroupKey}");
- }
- else
- {
- var bcr = obj.Data4.GetBCRCode();
- if (string.IsNullOrEmpty(bcr))
- {
- throw new KnownException($"条码为空,条码值[{bcr}]", LogLevelEnum.High);
- }
- //找到对应任务
- taskInfo = db.Default.Queryable<WCS_TaskInfo>().First(v => v.ID == obj.Data2.TaskNumber && v.Status == Entity.TaskStatus.ConveyorExecution && v.BarCode == bcr);
- //未找到对应任务
- if (taskInfo == null)
- {
- throw new KnownException($"未找到对应WCS任务{obj.Data2.TaskNumber}条码{bcr}", LogLevelEnum.High);
- }
- obj.Data.TaskNumber = taskInfo.ID;
- obj.Data.GoodsStart = obj.Entity.Code.ToShort();
- obj.Data.VoucherNo++;
- //跟贴标机交互
- //{
- // World.Log($"{obj.Entity.Code},贴标控埋点1,任务号:{taskInfo.ID}", LogLevelEnum.High);
- // string cleardata = "~JA";// 清除打印
- // Send(cleardata);
- // var labelResponse = WmsApi.GetLabelData(taskInfo.ID).JsonToString();
- // var jsonObj = JObject.Parse(labelResponse);
- // string data = $"^XA\r\n^CI28\r\n^CW1,E:SIMSUN.TTF\r\n^XFE:{jsonObj["LabelName"]}^FS\r\n";
- // for (int i = 1; i < jsonObj.Count; i++)
- // {
- // data += $"^FN{i}^{jsonObj[$"FN{i}"]}^FS\r\n";
- // }
- // if (data.Contains("FDLA"))
- // {
- // data += "^PQ1,0,1,Y\r\n^XZ";
- // }
- // else
- // {
- // data += "^XZ";
- // }
- // Send(data);
- //}
- }
- taskInfo.Status = Entity.TaskStatus.Finish;
- taskInfo.EditTime = DateTime.Now;
- taskInfo.EedTime = DateTime.Now;
- taskInfo.AddWCS_TASK_DTL(db, obj.Entity.Code, taskInfo.AddrNext, $"出库任务完成");
- db.Default.Updateable(taskInfo).ExecuteCommand();
- if (taskInfo.Status == TaskStatus.Finish)
- {
- WmsApi.CompleteTask(taskInfo.ID);
- taskInfo.CompleteOrCancelTasks(db);
- }
- World.Log($"{obj.Entity.Code},贴标控埋点2,任务号:{taskInfo.ID}", LogLevelEnum.High);
- });
- }
- public void Send(string data)
- {
- try
- {
- IPEndPoint iPEndPoint = new IPEndPoint(IPAddress.Parse("10.30.43.8"), 9100);
- Socket client = new(iPEndPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
- client.Connect(iPEndPoint);
- byte[] databyte = Encoding.UTF8.GetBytes(data);
- client.Send(databyte, SocketFlags.None);
- client.Close();
- }
- catch (Exception ex)
- {
- throw new KnownException($"贴标机打印数据发送失败,原因:{ex.Message}", LogLevelEnum.High);
- }
- }
- public override bool Select(Device dev)
- {
- return dev.Code == "8278";
- }
- }
- }
|