222
schangxiang@126.com
2024-12-23 1e1047443c6fa2dd2c30d2147166fc9076917936
CC/iWareCC_ASRS/ThreadService/04_BZ21£¨°áÔËÕû¶â»úÆ÷ÈË£©/1¡¢DataProcess_BZ21.cs
@@ -10,6 +10,7 @@
using iWareSql.WmsDBModel;
using Newtonsoft.Json.Linq;
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics.Contracts;
@@ -22,14 +23,14 @@
{
    public class DataProcess_BZ21
    {
        public static void Hander()
        public static async void Hander()
        {
            var alertMsg = "";
            LogType logType = LogType.DataProcess_BZ21;
            while (true)
            {
                Thread.Sleep(2000);//休眠2秒,将休眠写到前面,是为了下面的continue方法执行后不显示错误信息的提示!!!【EditBy shaocx,2022-05-24】
                SystemWarningMsg._lbl_alert_DataProcess_BZ21 = string.Empty;
                try
                {
                    if (SystemValue.isStartedModel)
@@ -88,7 +89,7 @@
                                //增加校验,如果上一个任务upi跟本次upi一致,就报错 ã€Editby shaocx,2024-12-03】
                                var lastTask = wmsDB.wms_rbline_task.Where(x => x.RbTaskType == (int)RbTaskTypeEnum.合包任务).OrderByDescending(x => x.Id).FirstOrDefault();
                                if (lastTask != null && lastTask.UPI == result)
                                if (lastTask != null && lastTask.Upi == result)
                                {
                                    SystemWarningMsg._lbl_alert_DataProcess_BZ21 = $"{rgvLocation.ToString()}-PLC重发此任务,upi:{result},系统不能重复处理,此次循环结束";
                                    continue;
@@ -97,7 +98,17 @@
                                var upiObj = wmsDB.mes_batchOrderUPI_new.Where(x => x.UPI == result).FirstOrDefault();
                                if (upiObj == null)
                                {
                                    //写入报警信息
                                    await MyExtendHelper.WriteBoolPlcDataForWarning(PlcWarningAddressGloble.Num_BZ21_1);
                                    SystemWarningMsg._lbl_alert_DataProcess_BZ21 = $"{rgvLocation.ToString()},根据UPI:{result}没有找到对象 ";
                                    continue;
                                }
                                var package = wmsDB.mes_package_gather.Where(x => x.PackageCode == upiObj.PackageCode).FirstOrDefault();
                                if (package == null)
                                {
                                    SystemWarningMsg._lbl_alert_DataProcess_BZ21 = $"{rgvLocation.ToString()},根据包号:{upiObj.PackageCode}没有找到对象 ";
                                    continue;
                                }
@@ -105,61 +116,85 @@
                                var validteReslt = ValidateIsAllowCut();
                                if (validteReslt == false)
                                {
                                    //写入报警信息
                                    await MyExtendHelper.WriteBoolPlcDataForWarning(PlcWarningAddressGloble.Num_BZ21_2);
                                    continue;
                                }
                                //string upi = "LS070700101B0001GS";
                                //调用出纸机接口
                                var papercut = ClassHelper.RotationMapping<mes_push_papercut, mes_batchOrderUPI_new>(upiObj);
                                var papercut = ClassHelper.RotationMapping<mes_push_papercut, mes_package_gather>(package);
                                papercut.Id = Yitter.IdGenerator.YitIdHelper.NextId();
                                papercut.ApiMessage = "";
                                papercut.PushNum = 0;
                                papercut.PushStatus = (int)PushStatusEnum.NotPush;
                                papercut.CreateUserName = papercut.UpdateUserName = "调度系统";
                                papercut.CreateUserName = papercut.UpdateUserName = SysGloble.WCSSystem;
                                papercut.CreateTime = papercut.UpdateTime = DateTime.Now;
                                wmsDB.mes_push_papercut.Add(papercut);
                                AreaCodeEnum setAreaCode = AreaCodeEnum.合包裁切区;
                                UpiStatusEnum setUpiStatus = UpiStatusEnum.已合包;
                                var ngFlag = false;
                                var queryFlag = (int)UpiFlagEnum.NG;
                                var upilist = wmsDB.mes_batchOrderUPI_new.Where(x => x.PackageCode == upiObj.PackageCode).ToList();
                                var ngCount = upilist.Count(x => x.UpiFlag == queryFlag);
                                if (ngCount > 0)
                                {
                                    ngFlag = true;
                                    setUpiStatus = UpiStatusEnum.已下线;
                                    setAreaCode = AreaCodeEnum.下线区域;
                                }
                                else
                                {//不是NG
                                 //新增mes推送表
                                    var putpakegecodeid = Yitter.IdGenerator.YitIdHelper.NextId();
                                    var putpakegecode = new mes_push_packagecode()
                                    {
                                        Id = putpakegecodeid,
                                        PackageCode = upiObj.PackageCode,
                                        PushStatus = 0,
                                        PushNum = 0,
                                        ApiMessage = "",
                                        CreateTime = DateTime.Now,
                                        CreateUserName = SysGloble.WCSSystem,
                                        UpdateTime = DateTime.Now,
                                        UpdateUserName = SysGloble.WCSSystem
                                    };
                                    wmsDB.mes_push_packagecode.Add(putpakegecode);
                                    //新增表
                                    var mesinequeue = ClassHelper.RotationMapping<mes_package_linequeue, mes_package_gather>(package);
                                    mesinequeue.Id = Yitter.IdGenerator.YitIdHelper.NextId();
                                    mesinequeue.CreateTime = mesinequeue.UpdateTime = DateTime.Now;
                                    wmsDB.mes_package_linequeue.Add(mesinequeue);
                                }
                                //更新表
                                var mesgather = wmsDB.mes_package_gather.Where(x => x.PackageCode == upiObj.PackageCode).FirstOrDefault();
                                if (mesgather != null)
                                {
                                    mesgather.AreaCode = (int)AreaCodeEnum.合包裁切区;
                                    mesgather.UpiStatus = (int)UpiStatusEnum.已合包;
                                    mesgather.AreaCode = (int)setAreaCode;
                                    mesgather.UpiStatus = (int)setUpiStatus;
                                }
                                //var upilist = wmsDB.mes_batchOrderUPI_new.Where(x => x.PackageCode == upiObj.PackageCode).ToList();
                                //var upilength = upilist.Max(x => x.Length);
                                //var upiwidth = upilist.Max(x => x.Width);
                                //cartonhigh = (short)upiObj.Info3;
                                //cartonwidth = (short)upiObj.Info2;
                                upiObj.UpiStatus = (int)UpiStatusEnum.已合包;
                                upiObj.AreaCode = (int)AreaCodeEnum.合包裁切区;
                                upiObj.UpiStatus = (int)setUpiStatus;
                                upiObj.AreaCode = (int)setAreaCode;
                                //记录任务
                                var _id = Yitter.IdGenerator.YitIdHelper.NextId();
                                var putpakegecodeid = Yitter.IdGenerator.YitIdHelper.NextId();
                                var plcTaskNo = BusinessHelper.CreatePlcTaskIdForSrmTask();
                                //新增表
                                var mesinequeue = ClassHelper.RotationMapping<mes_package_linequeue, mes_batchOrderUPI_new>(upiObj);
                                mesinequeue.Id = Yitter.IdGenerator.YitIdHelper.NextId();
                                //新增mes推送表
                                var putpakegecode = new mes_push_packagecode()
                                {
                                    Id = putpakegecodeid,
                                    PackageCode = upiObj.PackageCode,
                                    PushStatus = 0,
                                    PushNum = 0,
                                    ApiMessage = "",
                                    CreateTime = DateTime.Now,
                                    CreateUserName = "调度系统",
                                    UpdateTime = DateTime.Now,
                                    UpdateUserName = "调度系统",
                                };
                                var plcTaskNo = BusinessHelper.CreatePlcTaskId();
                                plcTaskNo = MyExtendHelper.GetNewTaskNo(wmsDB, RbTaskTypeEnum.合包任务, plcTaskNo);
                                //新增任务表
                                var task = new wms_rbline_task()
                                {
                                    Id = _id,
                                    TaskNo = plcTaskNo,
                                    UPI = upiObj.UPI,
                                    Upi = upiObj.UPI,
                                    Length = upiObj.Length,
                                    Width = upiObj.Width,
                                    Thk = upiObj.Thk,
@@ -168,19 +203,17 @@
                                    OrderId = upiObj.OrderId,
                                    PackageCode = upiObj.PackageCode,
                                    RbTaskType = (int)RbTaskTypeEnum.合包任务,
                                    RbTaskTypeEnumName = RbTaskTypeEnum.合包任务.ToString(),
                                    TaskStatus = (int)TaskStatusEnum.新建,
                                    TaskStatusName = TaskStatusEnum.新建.ToString(),
                                    TaskMsg = "夹板",
                                    CreateTime = DateTime.Now,
                                    CreateUserName = "CC",
                                    CreateUserName = SysGloble.WCSSystem,
                                    UpdateTime = DateTime.Now,
                                    UpdateUserName = "CC",
                                    UpdateUserName = SysGloble.WCSSystem,
                                    PlaceCode = place
                                };
                                //新增打印表
                                var printid = Yitter.IdGenerator.YitIdHelper.NextId();
                                var print = ClassHelper.RotationMapping<wms_record_print, mes_batchOrderUPI_new>(upiObj);
                                var print = ClassHelper.RotationMapping<wms_record_print, mes_package_gather>(package);
                                print.Id = printid;
                                print.PrintType = (int)PrintTypeEnum.包装条码;
                                print.PrintSource = (int)PrintSourceEnum.包装条码打印;
@@ -190,24 +223,24 @@
                                print.IsAllowPrint = true;
                                print.CreateTime = print.UpdateTime = DateTime.Now;
                                wmsDB.wms_record_print.Add(print);
                                var printtwo = ClassHelper.RotationMapping<wms_record_print, mes_batchOrderUPI_new>(upiObj);
                                printtwo.PrintType = (int)PrintTypeEnum.包装条码;
                                printtwo.PrintSource = (int)PrintSourceEnum.包装条码打印;
                                printtwo.PrintSheetNum = 1;
                                printtwo.PrintNum = 0;
                                printtwo.PrintStatus = (int)PrintStatuEnum.未打印;
                                printtwo.IsAllowPrint = true;
                                printtwo.CreateTime = print.UpdateTime = DateTime.Now;
                                printtwo.Id = Yitter.IdGenerator.YitIdHelper.NextId();
                                wmsDB.wms_record_print.Add(printtwo);
                                //var printtwo = ClassHelper.RotationMapping<wms_record_print, mes_batchOrderUPI_new>(upiObj);
                                //printtwo.PrintType = (int)PrintTypeEnum.包装条码;
                                //printtwo.PrintSource = (int)PrintSourceEnum.包装条码打印;
                                //printtwo.PrintSheetNum = 1;
                                //printtwo.PrintNum = 0;
                                //printtwo.PrintStatus = (int)PrintStatuEnum.未打印;
                                //printtwo.IsAllowPrint = true;
                                //printtwo.CreateTime = print.UpdateTime = DateTime.Now;
                                //printtwo.Id = Yitter.IdGenerator.YitIdHelper.NextId();
                                //wmsDB.wms_record_print.Add(printtwo);
                                wmsDB.mes_package_linequeue.Add(mesinequeue);
                                wmsDB.wms_rbline_task.Add(task);
                                wmsDB.mes_push_packagecode.Add(putpakegecode);
                                //处理表  mes_order_gather
                                var errmsg = "";
                                var package = wmsDB.mes_package_gather.Where(x => x.PackageCode == upiObj.PackageCode).FirstOrDefault();
                                var resultAlert = MyExtendHelper.HandlerOrderGather(wmsDB, package, "", "", out errmsg);
                                if (resultAlert == false)
                                {
@@ -215,31 +248,17 @@
                                    continue;
                                }
                                /*
                                using (StationServiceClient client = new StationServiceClient())
                                {
                                    var plcres = client.WriteSurroundTaskInfo((int)EDevice.Station, rgvLocation, short.Parse(task.TaskNo),
                                          (short)upilength, (short)upiwidth, cartonhigh, cartonwidth, 0, 0);
                                    if (!plcres.result)
                                    {
                                        SystemWarningMsg._lbl_alert_DataProcess_BZ12 = $"{rgvLocation.ToString()}-下发入库任务 å¤±è´¥,WriteInStoreTaskInfoAsync è¿”回:{plcres.resMsg}";
                                        continue;
                                    }
                                    else
                                    {
                                        Log4NetHelper.WriteInfoLog(logType, $"{rgvLocation.ToString()}-下发入库任务 æˆåŠŸ,WriteInStoreTaskInfoAsync,参数: ç«™ç‚¹{rgvLocation}");
                                    }
                                }
                                //*/
                                WmsRecordUpiProcessHandler.SaveWmsRecordUpiProcess(wmsDB, upiObj, "BZ21", "合包");
                                WmsRecordUpiProcessHandler.SaveWmsRecordPackageProcess(wmsDB, upiObj, "BZ21", "合包");
                                WmsRecordUpiProcessHandler.SaveWmsRecordPackageProcess(wmsDB, package, "BZ21", "合包");
                                wmsDB.SaveChanges();
                            }
                        }
                        else
                        {
                            SystemWarningMsg._lbl_Alert_DataProcess_BZ21 = $"{rgvLocation.ToString()}-没有要处理的数据";
                        }
                    }
                }
                catch (Exception ex)