schangxiang@126.com
2024-12-02 7e469b73ac4f022cb78689c6d2b0c4ddee26d18c
CC/iWareCC_ASRS/ThreadService/04_BZ21£¨°áÔËÕû¶â»úÆ÷ÈË£©/DataProcess_BZ21.cs
@@ -1,12 +1,15 @@
using Admin.NET.Application;
using iWareCC.Common.Helper;
using iWareCC.StationService;
using iWareCommon.Common.Globle;
using iWareCommon.Utils;
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,6 +31,7 @@
                {
                    if (SystemValue.isStartedModel)
                    {
                        var rgvLocation = StationLocationEnum.BZ21.ToString();
                        /*
                         * 1、从数据库中判断是否齐套
@@ -61,51 +65,118 @@
                                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;
                            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;
                                //string upi = "LS070700101B0001GS";
                                //调用出纸机接口
                                var res = new HTTPService("http://172.17.1.22:44374/api/LuLi/").getContent<Respone>("cartons-machine?PackageCode=" + upiObj.PackageCode, 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 = 1;
                                        papercut.PushStatus = (int)PushStatusEnum.PushSuccess;
                                        wmsDB.mes_push_papercut.Add(papercut);
                                    }
                                    //*/
                                    var papercut = ClassHelper.RotationMapping<mes_push_papercut, mes_batchOrderUPI_new>(upiObj);
                                    papercut.Id = Yitter.IdGenerator.YitIdHelper.NextId();
                                    papercut.ApiMessage = res.message;
                                    papercut.PushNum = 1;
                                    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 = 1;
                                        papercut.PushStatus = (int)PushStatusEnum.PushFail;
                                        wmsDB.mes_push_papercut.Add(papercut);
                                    }
                                    //*/
                                    var papercut = ClassHelper.RotationMapping<mes_push_papercut, mes_batchOrderUPI_new>(upiObj);
                                    papercut.Id = Yitter.IdGenerator.YitIdHelper.NextId();
                                    papercut.ApiMessage = res.message;
                                    papercut.PushNum = 1;
                                    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.已合包;
                                }
                                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.合包裁切区;
                                //记录任务
                                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 = _id,
                                    PackageCode=upiObj.PackageCode,
                                    PushStatus=0,
                                    PushNum=0,
                                    ApiMessage="11",
                                    Id = putpakegecodeid,
                                    PackageCode = upiObj.PackageCode,
                                    PushStatus = 0,
                                    PushNum = 0,
                                    ApiMessage = "待推送",
                                    CreateTime = DateTime.Now,
                                    CreateUserName = "CC",
                                    UpdateTime = DateTime.Now,
                                    UpdateUserName = "CC",
                                    CreateOrgName="11"
                                    CreateOrgName = "11"
                                };
                                //新增任务表
                                var task = new wms_rbline_task()
                                {
                                    Id = _id,
@@ -129,17 +200,51 @@
                                    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;
                                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);
                                wmsDB.mes_package_linequeue.Add(mesinequeue);
                                wmsDB.wms_rbline_task.Add(task);
                               // wmsDB.mes_push_packagecode.Add(putpakegecode);
                                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)
                                {
                                    SystemWarningMsg._lbl_alert_DataProcess_BZ21 = errmsg;
                                    continue;
                                }
                                using (StationServiceClient client = new StationServiceClient())
                                {
                                    var res = client.WriteSurroundTaskInfo((int)EDevice.Station, rgvLocation, short.Parse(task.TaskNo),
                                          (short)upiObj.Length, (short)upiObj.Width,cartonhigh,cartonwidth,placeX,placeY);
                                    if (!res.result)
                                    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 è¿”回:{res.resMsg}";
                                        SystemWarningMsg._lbl_alert_DataProcess_BZ12 = $"{rgvLocation.ToString()}-下发入库任务 å¤±è´¥,WriteInStoreTaskInfoAsync è¿”回:{plcres.resMsg}";
                                        continue;
                                    }
                                    else
@@ -155,11 +260,14 @@
                }
                catch (Exception ex)
                {
                    SystemWarningMsg._lbl_alert_DataProcess_BZ39 += " å‡ºçް异叏:" + ex.Message + SysGloble.SPLIT_STR;
                    SystemWarningMsg._lbl_alert_DataProcess_BZ21 += " å‡ºçް异叏:" + ex.Message + SysGloble.SPLIT_STR;
                    Log4NetHelper.WriteErrorLog(logType, " å‡ºçŽ°å¼‚å¸¸ï¼š" + ex.Message, ex);
                }
            }
        }
        /// <summary>
        /// å‘mes推送包装完成
        /// </summary>
        public static void PushPackageCode()
        {
            while (true)
@@ -173,7 +281,22 @@
                        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();
                    }
                }
            }
@@ -187,7 +310,7 @@
            /// <summary>
            /// è¿”回码
            /// </summary>
            public string code { get; set; }
            public int iState { get; set; }
            /// <summary>
            /// è¿”回消息
@@ -195,14 +318,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,
        }
    }
}