123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- using Microsoft.AspNetCore.Http;
- using NetTaste;
- using Newtonsoft.Json;
- using Newtonsoft.Json.Linq;
- using PlcSiemens.Core.Extension;
- using PlcSiemens.O;
- using ServiceCenter.Extensions;
- using ServiceCenter.Logs;
- using ServiceCenter.SqlSugars;
- using SqlSugar;
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Linq;
- using System.Net;
- using System.Net.Sockets;
- using System.Text;
- using System.Text.Encodings.Web;
- using System.Text.Json;
- using System.Text.Json.Nodes;
- using System.Threading.Tasks;
- using System.Xml.Linq;
- using WCS.Core;
- using WCS.Entity;
- using WCS.WorkEngineering.Extensions;
- using WCS.WorkEngineering.Protocol.BCR;
- using WCS.WorkEngineering.Protocol.SRM;
- using WCS.WorkEngineering.Protocol.Station;
- using WCS.WorkEngineering.WebApi.Controllers;
- using WCS.WorkEngineering.Worlds;
- using static System.Runtime.InteropServices.JavaScript.JSType;
- using DeviceFlags = WCS.WorkEngineering.Extensions.DeviceFlags;
- namespace WCS.WorkEngineering.Systems
- {
- /// <summary>
- /// 装箱区贴标
- /// </summary>
- [BelongTo(typeof(MainWorld))]
- [Description("装箱区贴标")]
- public class 装箱区贴标 : DeviceSystem<Device<IStation520, IStation521, IStation523, IStation91>>
- {
- 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, IStation91> obj)
- {
- obj.入库站点是否满足执行条件();
- SqlSugarHelper.Do(db =>
- {
- //找到对应任务
- var taskInfo = db.Default.Queryable<WCS_TaskInfo>().First(v => v.ID == obj.Data2.TaskNumber || (v.ID == obj.Data2.TaskNumber && v.BusType == "砝码出库"));
- //未找到对应任务
- if (taskInfo == null)
- {
- obj.Data.TaskNumber = obj.Data2.TaskNumber;
- obj.Data.GoodsStart = obj.Entity.Code.ToShort();
- obj.Data.GoodsEnd = 8148;
- obj.Data.VoucherNo++;
- throw new KnownException($"未找到对应WCS任务{obj.Data2.TaskNumber}", LogLevelEnum.High);
- }
- else
- {
- if (taskInfo.AddrNext == "8300")
- {
- //更新任务下一地址
- taskInfo.AddrNext = "8161";
- taskInfo.EditTime = DateTime.Now;
- taskInfo.EedTime = DateTime.Now;
- taskInfo.Weight = (float)Math.Round(obj.Data4.Weight, 2);
- try { WmsApi.WcsUploadInfo(taskInfo.ID,decimal.Parse(taskInfo.Weight.ToString()), taskInfo.BarCode); }
- catch (Exception ex) { throw new KnownException(ex.Message, LogLevelEnum.Mid); }
- db.Default.Updateable(taskInfo).ExecuteCommand();
- }
- else//跟贴标机交互
- {
- 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 js = $"{jsonObj["FN7"]}";
- string jsR = $"{jsonObj["FN6"]}";
- if (string.IsNullOrEmpty(js) || string.IsNullOrEmpty(jsR))
- {
- throw new KnownException($"贴标机打印数据不可为空", LogLevelEnum.High);
- }
- var a = js.Split(",");
- var b = jsR.ToArray();
- var rx = " " + b[jsR.Length - 1].ToString();
- if (string.IsNullOrEmpty(a[1]) || string.IsNullOrEmpty(rx))
- {
- throw new KnownException($"贴标机打印箱号数据或绕向不可为空", LogLevelEnum.High);
- }
- //var conf = db.Default.Ado.SqlQuery<string>("SELECT scontent FROM [WMS_ZT_01CP].[dbo].[sys_config] where code = 'ForbidBoxStockIn'").First();
- string data = $"^XA\r\n^CI27\r\n^FT70,356^BQN,2,20\r\n";
- data += $"^FH\\^{js}^FS\r\n^FT85,500^A0N,71,71^FH\\^CI28^FD{a[1]}{rx}^FS^CI27\r\n^PQ1,0,1,Y\r\n^XZ";
- #region old
- //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";
- //}
- #endregion
- Send(data);
- World.Log($"{obj.Entity.Code},贴标控埋点2,任务号:{taskInfo.ID}", LogLevelEnum.High);
- obj.Data.TaskNumber = obj.Data2.TaskNumber;
- obj.Data.GoodsStart = obj.Entity.Code.ToShort();
- obj.Data.GoodsEnd = taskInfo.AddrNext.ToShort();
- obj.Data.VoucherNo++;
- World.Log($"{obj.Entity.Code},贴标控埋点3,任务号:{taskInfo.ID}", LogLevelEnum.High);
- }
- }
- });
- }
- public void Send(string data)
- {
- try
- {
- IPEndPoint iPEndPoint = new IPEndPoint(IPAddress.Parse("10.30.43.81"), 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 == "8300";
- }
- }
- }
|