add
zongzhibin
2024-11-29 35df4146b88a841aca11404aeeb8da35a20ab992
CC/iWareCC_ASRS/ThreadService/04_BZ21£¨°áÔËÕû¶â»úÆ÷ÈË£©/DataProcess_BZ21.cs
@@ -5,8 +5,10 @@
using iWareModel;
using iWareSql.DataAccess;
using iWareSql.WmsDBModel;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading;
@@ -28,12 +30,32 @@
                {
                    if (SystemValue.isStartedModel)
                    {
                        var rgvLocation = StationLocationEnum.BZ21.ToString();
                        /*
                         * 1、从数据库中判断是否齐套
                         * 2、根据齐套结果,推送给PLC
                         */
                        var obj = FormCC.stationView.R_StationForReadCommList.Where(x => x.StationCode == rgvLocation.ToString()).FirstOrDefault();
                        if (obj.R_PalletizingAck)
                        {
                            //给PLC推送任务完接收完成复位信号
                            using (StationServiceClient client = new StationServiceClient())
                            {
                                var res = client.WriteStation_ACK((int)EDevice.Station, false, rgvLocation);
                                if (!res.result)
                                {
                                    SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_FinishTask = $"{rgvLocation.ToString()}-下发码板任务 å¤±è´¥,SetPalletizingTaskFinishAck è¿”回:{res.resMsg}";
                                    continue;
                                }
                                else
                                {
                                    Log4NetHelper.WriteInfoLog(logType, $"{rgvLocation.ToString()}-下发入库任务 æˆåŠŸ,SetPalletizingTaskFinishAck,参数: ç«™ç‚¹{rgvLocation}");
                                }
                            }
                        }
                        if (obj.R_ReqParseData)
                        {
                            var result = obj.R_ReadCodeResult;
@@ -42,48 +64,100 @@
                                SystemWarningMsg._lbl_alert_DataProcess_BZ21 = $"{rgvLocation.ToString()}-请求了解码,但是结果是空的,此次循环结束";
                                continue;
                            }
                            var upiCode = result.Replace("/r", ""); ;
                            short cartonwidth = 0;//是否末板
                            short cartonhigh = 0;//是否旋转
                            short placeX = 0;
                            short placeY = 0;
                            short placeZ = 0;
                            string place = "";
                            short cartonwidth = 0;//纸箱宽
                            short cartonhigh = 0;//纸箱高
                            string place = "22";
                            using (WmsDBModel wmsDB = new WmsDBModel())
                            {
                                //要是有已下发的任务,就不要执行
                                var isValidate = TaskHandler.ValidateIssueTaskForBZ21(wmsDB,result);
                                var isValidate = TaskHandler.ValidateIssueTaskForBZ21(wmsDB, result);
                                if (!isValidate)
                                {
                                    SystemWarningMsg._lbl_alert_DataProcess_BZ21 = $"{rgvLocation.ToString()}-有‘已下发’的任务,不能处理,此次循环结束";
                                    continue;
                                }
                                var upiObj = wmsDB.mes_batchOrderUPI_new.Where(x => x.UPI == upiCode).FirstOrDefault();
                                var upiObj = wmsDB.mes_batchOrderUPI_new.Where(x => x.UPI == result).FirstOrDefault();
                                if (upiObj == null)
                                {
                                    SystemWarningMsg._lbl_alert_DataProcess_BZ21 = $"{rgvLocation.ToString()},根据UPI:{upiCode}没有找到对象 ";
                                    SystemWarningMsg._lbl_alert_DataProcess_BZ21 = $"{rgvLocation.ToString()},根据UPI:{result}没有找到对象 ";
                                    continue;
                                }
                                placeX = (short)upiObj.MachineXCenter;
                                placeY = (short)upiObj.MachineYCenter;
                                placeZ = (short)upiObj.MachineZCenter;
                                cartonhigh = (short)upiObj.Info1;
                                cartonwidth = (short)upiObj.Info2;
                                string upi = "LS070700101B0001GS";
                                //调用出纸机接口
                                var res =new HTTPService("http://172.17.1.22:44374/api/LuLi/").getContent<Respone>("cartons-machine?PackageCode="+upi, Guid.NewGuid(),10000);
                                if (res.iState == 0)
                                {
                                    var papertable = wmsDB.mes_push_papercut.Where(x => x.PackageCode == upiObj.PackageCode).OrderByDescending(x => x.Id).FirstOrDefault();
                                    if (papertable != null)
                                    {
                                        papertable.PushStatus = (int)PushStatusEnum.PushSuccess;
                                        papertable.ApiMessage = res.message;
                                        papertable.PushNum++;
                                    }
                                    else
                                    {
                                        var papercut = ClassHelper.RotationMapping<mes_push_papercut, mes_batchOrderUPI_new>(upiObj);
                                        papercut.Id = Yitter.IdGenerator.YitIdHelper.NextId();
                                        papercut.ApiMessage = res.message;
                                        papercut.PushNum = 0;
                                        papercut.PushStatus = (int)PushStatusEnum.PushSuccess;
                                        wmsDB.mes_push_papercut.Add(papercut);
                                    }
                                }
                                else
                                {
                                    var papertable = wmsDB.mes_push_papercut.Where(x => x.PackageCode == upiObj.PackageCode).OrderByDescending(x => x.Id).FirstOrDefault();
                                    if (papertable != null)
                                    {
                                        papertable.PushStatus = (int)PushStatusEnum.PushFail;
                                        papertable.ApiMessage = res.message;
                                        papertable.PushNum++;
                                    }
                                    else
                                    {
                                        var papercut = ClassHelper.RotationMapping<mes_push_papercut, mes_batchOrderUPI_new>(upiObj);
                                        papercut.Id = Yitter.IdGenerator.YitIdHelper.NextId();
                                        papercut.ApiMessage = res.message;
                                        papercut.PushNum = 0;
                                        papercut.PushStatus = (int)PushStatusEnum.PushFail;
                                        wmsDB.mes_push_papercut.Add(papercut);
                                    }
                                    continue;
                                }
                                //更新表
                                var mesgather = wmsDB.mes_package_gather.Where(x => x.PackageCode == upiObj.PackageCode).FirstOrDefault();
                                if (mesgather != null)
                                {
                                    mesgather.AreaCode = (int)AreaCodeEnum.合包裁切区;
                                    mesgather.UpiStatus = (int)UpiStatusEnum.已合包;
                                }
                                cartonhigh = (short)upiObj.Info3;
                                cartonwidth = (short)upiObj.Info2;
                                upiObj.UpiStatus = (int)UpiStatusEnum.已合包;
                                upiObj.AreaCode = (int)AreaCodeEnum.合包裁切区;
                                //记录任务
                                var _id = Yitter.IdGenerator.YitIdHelper.NextId();
                                var putpakegecodeid = Yitter.IdGenerator.YitIdHelper.NextId();
                                var plcTaskNo = BusinessHelper.CreatePlcTaskIdForSrmTask();
                                var putpakegecode = new mes_PushPackageCode()
                                //新增表
                                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 = _id,
                                    PackageCode=upiObj.PackageCode,
                                    PushStatus=0,
                                    PushNum=0,
                                    Id = putpakegecodeid,
                                    PackageCode = upiObj.PackageCode,
                                    PushStatus = 0,
                                    PushNum = 0,
                                    ApiMessage = "待推送",
                                    CreateTime = DateTime.Now,
                                    CreateUserName = "CC",
                                    UpdateTime = DateTime.Now,
                                    UpdateUserName = "CC",
                                    CreateOrgName = "11"
                                };
                                //新增任务表
                                var task = new wms_rbline_task()
                                {
                                    Id = _id,
@@ -97,27 +171,42 @@
                                    OrderId = upiObj.OrderId,
                                    PackageCode = upiObj.PackageCode,
                                    RbTaskType = (int)RbTaskTypeEnum.夹板任务,
                                    RbTaskTypeEnumName = RbTaskTypeEnum.码板任务.ToString(),
                                    RbTaskTypeEnumName = RbTaskTypeEnum.夹板任务.ToString(),
                                    TaskStatus = (int)TaskStatusEnum.已下发,
                                    TaskStatusName = TaskStatusEnum.已下发.ToString(),
                                    TaskMsg = "码板",
                                    TaskMsg = "夹板",
                                    CreateTime = DateTime.Now,
                                    CreateUserName = "CC",
                                    UpdateTime = DateTime.Now,
                                    UpdateUserName = "CC",
                                    PlaceCode = place
                                };
                                //新增打印表
                                var printid= Yitter.IdGenerator.YitIdHelper.NextId();
                                var print = ClassHelper.RotationMapping<wms_record_print, mes_batchOrderUPI_new>(upiObj);
                                print.Id = printid;
                                print.PrintType = (int)PrintTypeEnum.包装条码;
                                print.PrintSource = (int)PrintSourceEnum.包装条码打印;
                                print.PrintSheetNum = 1;
                                print.PrintNum= 0;
                                print.PrintStatus = (int)PrintStatuEnum.未打印;
                                print.IsAllowPrint= true;
                                wmsDB.wms_record_print.Add(print);
                                wms_record_print printtwo = print;
                                printtwo.Id= Yitter.IdGenerator.YitIdHelper.NextId();
                                wmsDB.wms_record_print.Add(printtwo);
                                wmsDB.wms_rbline_task.Add(task);
                                wmsDB.mes_PushPackageCode.Add(putpakegecode);
                                wmsDB.mes_package_linequeue.Add(mesinequeue);
                                wmsDB.wms_rbline_task.Add(task);
                                wmsDB.mes_push_packagecode.Add(putpakegecode);
                                using (StationServiceClient client = new StationServiceClient())
                                {
                                    var res = client.WriteSurroundTaskInfo((int)EDevice.Station, rgvLocation, Convert.ToInt32(task.TaskNo),
                                          (short)upiObj.Info1, (short)upiObj.Info2,cartonhigh,cartonwidth,placeX,placeY);
                                    if (!res.result)
                                    var plcres = client.WriteSurroundTaskInfo((int)EDevice.Station, rgvLocation, short.Parse(task.TaskNo),
                                          (short)upiObj.Length, (short)upiObj.Width, cartonhigh, cartonwidth, 0, 0);
                                    if (!plcres.result)
                                    {
                                        SystemWarningMsg._lbl_alert_DataProcess_BZ12 = $"{rgvLocation.ToString()}-下发入库任务 å¤±è´¥,WriteInStoreTaskInfoAsync è¿”回:{res.resMsg}";
                                        SystemWarningMsg._lbl_alert_DataProcess_BZ12 = $"{rgvLocation.ToString()}-下发入库任务 å¤±è´¥,WriteInStoreTaskInfoAsync è¿”回:{plcres.resMsg}";
                                        continue;
                                    }
                                    else
@@ -138,6 +227,9 @@
                }
            }
        }
        /// <summary>
        /// å‘mes推送包装完成
        /// </summary>
        public static void PushPackageCode()
        {
            while (true)
@@ -145,13 +237,28 @@
                Thread.Sleep(2000);
                using (WmsDBModel edm = new WmsDBModel())
                {
                    var value = edm.mes_PushPackageCode.Where(x => x.PushStatus == 0 || x.PushStatus == 1).FirstOrDefault();
                    var value = edm.mes_push_packagecode.Where(x => x.PushStatus == 0 || x.PushStatus == 1).FirstOrDefault();
                    if (value != null)
                    {
                        PushPackageCodeInput input = new PushPackageCodeInput();
                        input.PackageCode = value.PackageCode;
                        var res = HttpHelper.GetHttpResponse<PushPackageCodeInput, Respone>(" ", input, 10000);
                        if (res.iState == 0)
                        {
                            value.PushStatus = (int)PushStatusEnum.PushSuccess;
                            value.ApiMessage = res.message;
                        }
                        else
                        {
                            value.PushStatus = (int)PushStatusEnum.Pushing;
                            value.PushNum++;
                            value.ApiMessage+= res.message;
                            if (value.PushNum == 3)
                            {
                                value.PushStatus = (int)PushStatusEnum.PushFail;
                            }
                        }
                        edm.SaveChanges();
                    }
                }
            }
@@ -165,7 +272,7 @@
            /// <summary>
            /// è¿”回码
            /// </summary>
            public string code { get; set; }
            public int iState { get; set; }
            /// <summary>
            /// è¿”回消息
@@ -173,14 +280,38 @@
            public string message { get; set; }
            /// <summary>
            /// è¯·æ±‚编号
            /// </summary>
            public string reqCode { get; set; }
            /// <summary>
            /// è‡ªå®šä¹‰è¿”回(返回任务单号)
            /// è‡ªå®šä¹‰è¿”回
            /// </summary>
            public string data { get; set; }
        }
        /// <summary>
        /// æŽ¨é€çŠ¶æ€
        /// </summary>
        public enum PushStatusEnum
        {
            /// <summary>
            /// æœªæŽ¨é€
            /// </summary>
            [Description("未推送")]
            NotPush = 0,
            /// <summary>
            /// æŽ¨é€ä¸­
            /// </summary>
            [Description("推送中")]
            Pushing = 1,
            /// <summary>
            /// æŽ¨é€æˆåŠŸ
            /// </summary>
            [Description("推送成功")]
            PushSuccess = 2,
            /// <summary>
            /// æŽ¨é€å¤±è´¥
            /// </summary>
            [Description("推送失败")]
            PushFail = 3,
        }
    }
}