| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 | 
							- using Microsoft.Data.SqlClient.Server;
 
- using Newtonsoft.Json;
 
- using Org.BouncyCastle.Bcpg;
 
- using PlcSiemens.Core.Extension;
 
- using ServiceCenter.SqlSugars;
 
- using SqlSugar;
 
- using System;
 
- using System.Collections.Generic;
 
- using System.ComponentModel;
 
- using System.Linq;
 
- using System.Text;
 
- using System.Threading.Tasks;
 
- using WCS.Core;
 
- using WCS.Entity;
 
- using WCS.Entity.Protocol.Protocol.Robot;
 
- using WCS.Entity.Protocol.Robot;
 
- using WCS.Entity.Protocol.Station;
 
- using WCS.WorkEngineering.Extensions;
 
- using WCS.WorkEngineering.WebApi.Models.WCS.Request;
 
- using WCS.WorkEngineering.Worlds;
 
- namespace WCS.WorkEngineering.Systems
 
- {
 
-     [BelongTo(typeof(MainWorld))]
 
-     [Description("码垛位")]
 
-     public class 码垛位 : DeviceSystem<Device<IRobot530, IRobot531,IStation521>>
 
-     {
 
-         protected override bool ParallelDo => true;
 
-          
 
-         public override void Do(Device<IRobot530, IRobot531, IStation521> obj)
 
-         {
 
-            
 
-             if (obj.Data.VoucherNo != obj.Data2.VoucherNo)
 
-                 return;
 
-             if (obj.Entity.Code == "8090" && obj.Data.PalletID == 485161 && obj.Data.VoucherNo == -32601 && obj.Data.Cmd != 0)
 
-             {
 
-                 obj.Data.Cmd = 0;
 
-             }
 
-             if (obj.Data2.Rqst == RobotStationRqst.完成码垛)
 
-             {
 
-                 World.Log($"码垛位{obj.Entity.Code}整垛完成交互开始时间: " + DateTime.Now.ToString("yyyyMMddHHmmss"));
 
-                 //调WMS接口
 
-                 var res = WMS.码垛完成(obj.Entity.Code);
 
-                 long leftPalletizingID = 0;
 
-                 if (!res.Success)
 
-                 {
 
-                     //兼容wms处理成功,wcs处理失败的情况
 
-                     if (!string.IsNullOrEmpty(res.Memo1))
 
-                     {
 
-                         leftPalletizingID = long.Parse(res.Memo1);
 
-                     }
 
-                     else
 
-                     {
 
-                         MainWorld.Redis.Set($"Sx:WCSErrorInfo:{obj.Entity.Code}", JsonConvert.SerializeObject(new RedisError() { Equip = obj.Entity.Code, Con = obj.Entity.Code + res.ResMsg, Time = DateTime.Now }));
 
-                         throw new Exception(res.ResMsg);
 
-                     }
 
-                 }
 
-                 
 
-                 SqlSugarHelper.Do(db =>
 
-                 {
 
-                     var pallet = db.Default.Queryable<Palletizing>().With(SqlWith.NoLock).Where(v => v.TaskNum == obj.Data2.PalletID).First();
 
-                     if (pallet == null && leftPalletizingID == 0)
 
-                     {
 
-                         MainWorld.Redis.Set($"Sx:WCSErrorInfo:{obj.Entity.Code}", JsonConvert.SerializeObject(new RedisError() { Equip = obj.Entity.Code, Con = $"{obj.Entity.Code},{obj.Data2.PalletID}无码垛位信息", Time = DateTime.Now }));
 
-                         throw new Exception("无码垛位信息");
 
-                     }
 
-                     var tempPalletizingID = pallet.ID;
 
-                     if (leftPalletizingID > 0)
 
-                     {
 
-                         tempPalletizingID = leftPalletizingID;
 
-                     }
 
-                     db.Default.Updateable<WCS_TaskOld>()
 
-                     .SetColumns(v => new WCS_TaskOld { Status = Entity.TaskStatus.Finish, EditTime = SqlFunc.GetDate() })
 
-                     .Where(v => v.Type == TaskType.OutDepot && v.BusType == "装箱码垛")
 
-                     .Where(v => v.Status == Entity.TaskStatus.码垛抓取完成)
 
-                     .Where(v => v.PalletizingID == tempPalletizingID)
 
-                     .SplitTable(v => v.Take(2))
 
-                     .ExecuteCommand();
 
-                     db.Default.Deleteable<WCS_TaskInfo>().Where(v => v.Type == TaskType.OutDepot && v.BusType == "装箱码垛")
 
-                     .Where(v => v.Status == Entity.TaskStatus.码垛抓取完成)
 
-                     .Where(v => v.PalletizingID == tempPalletizingID)
 
-                     .ExecuteCommand();
 
-                     if (obj.Data.VoucherNo == -1)
 
-                     {
 
-                         obj.Data.Cmd = RobotStationCmd.完成确认;
 
-                         obj.Data.VoucherNo = 1;
 
-                     }
 
-                     else
 
-                     {
 
-                         obj.Data.Cmd = RobotStationCmd.完成确认;
 
-                         obj.Data.VoucherNo++;
 
-                     }
 
-                 });
 
-                 World.Log($"码垛位{obj.Entity.Code}整垛完成交互结束时间: " + DateTime.Now.ToString("yyyyMMddHHmmss"));
 
-                 return;
 
-             }
 
-             if (obj.Data2.PalletID == 0)
 
-             {
 
-                 SqlSugarHelper.Do(db =>
 
-                 {
 
-                     var pallet = db.Default.Queryable<Palletizing>().Where(v => v.PalletizState == 0)
 
-                     .Where(v => v.TaskNum == obj.Data3.TaskNumber).First();
 
-                     if (pallet == null)
 
-                         return;
 
-                     obj.Data.PalletID = pallet.TaskNum;
 
-                     obj.Data.Type = (short)pallet.GoodsType;
 
-                     obj.Data.MaxQty = (short)pallet.PalletMax;
 
-                     obj.Data.Cmd = RobotStationCmd.开始码垛;
 
-                     if (obj.Data.VoucherNo == -1)
 
-                     {
 
-                         obj.Data.VoucherNo = 1;
 
-                     }
 
-                     else
 
-                     {
 
-                         obj.Data.VoucherNo++;
 
-                     }
 
-                 });
 
-             }
 
-             else
 
-             {
 
-                 if (obj.Data3.TaskNumber == 0)
 
-                 {
 
-                     World.Log("托盘未到位");
 
-                     MainWorld.Redis.Set($"Sx:WCSErrorInfo:{obj.Entity.Code}", JsonConvert.SerializeObject(new RedisError() { Equip = obj.Entity.Code, Con = $"{obj.Entity.Code},{obj.Data3.TaskNumber}请检查托盘是否到位以及电控触摸屏上的任务号是否被清掉", Time = DateTime.Now }));
 
-                     return;
 
-                 }
 
-                 SqlSugarHelper.Do(db =>
 
-                 {
 
-                     var pallet = db.Default.Queryable<Palletizing>().Where(v => v.PalletizState == 0 && v.Count < v.Finish)
 
-                     .Where(v => v.TaskNum == obj.Data3.TaskNumber).First();
 
-                     if (pallet == null)
 
-                     {
 
-                         MainWorld.Redis.Set($"Sx:WCSErrorInfo:{obj.Entity.Code}", JsonConvert.SerializeObject(new RedisError() { Equip = obj.Entity.Code, Con = $"{obj.Entity.Code},{obj.Data3.TaskNumber}未找到对应的码垛信息", Time = DateTime.Now }));
 
-                         return;
 
-                     }
 
-                     var flag = db.Default.Queryable<WCS_TaskInfo>()
 
-                     .Where(v => v.PalletizingID == pallet.ID)
 
-                     .Where(v => v.Status == Entity.TaskStatus.码垛抓取扫码 || v.Status == Entity.TaskStatus.码垛抓取中)
 
-                     .Any();
 
-                     if (flag)
 
-                         throw new Exception("有等待抓取的货物,无法执行强制完成");
 
-                     pallet.Count = pallet.Finish;
 
-                     db.Default.Updateable(pallet).ExecuteCommand();
 
-                     obj.Data.Cmd = RobotStationCmd.强制完成;
 
-                     if (obj.Data.VoucherNo == -1)
 
-                     {
 
-                         obj.Data.VoucherNo = 1;
 
-                     }
 
-                     else
 
-                     {
 
-                         obj.Data.VoucherNo++;
 
-                     }
 
-                 });
 
-             }
 
-         }
 
-         public override bool Select(Device dev)
 
-         {
 
-             return true;// "" dev.Code == "8090" || dev.Code == "8092"||dev.Code=="8096";
 
-         }
 
-     }
 
- }
 
 
  |