33
schangxiang@126.com
2024-12-08 68214ef234e825f50ccadeb56fb6893c4262b6cd
CC/iWareCC_ASRS/ThreadService/04_BZ21£¨°áÔËÕû¶â»úÆ÷ÈË£©/1¡¢DataProcess_BZ21.cs
@@ -12,6 +12,7 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics.Contracts;
using System.Linq;
using System.Text;
using System.Threading;
@@ -21,7 +22,7 @@
{
    public class DataProcess_BZ21
    {
        public static void Hander()
        public static async void Hander()
        {
            var alertMsg = "";
            LogType logType = LogType.DataProcess_BZ21;
@@ -39,6 +40,11 @@
                         * 1、从数据库中判断是否齐套
                         * 2、根据齐套结果,推送给PLC
                         */
                        if (FormCC.stationView == null)
                        {
                            SystemWarningMsg._lbl_Alert_DataProcess_BZ21 = $"{rgvLocation.ToString()}-获取PLC对象为null";
                            continue;
                        }
                        var obj = FormCC.stationView.R_StationForReadCommList.Where(x => x.StationCode == rgvLocation.ToString()).FirstOrDefault();
                        if (obj.R_PalletizingAck)
                        {
@@ -48,7 +54,7 @@
                                var res = client.WriteStation_ACK((int)EDevice.Station, false, rgvLocation);
                                if (!res.result)
                                {
                                    SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_FinishTask = $"{rgvLocation.ToString()}-下发码板任务 å¤±è´¥,SetPalletizingTaskFinishAck è¿”回:{res.resMsg}";
                                    SystemWarningMsg._lbl_Alert_DataProcess_BZ21 = $"{rgvLocation.ToString()}-下发码板任务 å¤±è´¥,SetPalletizingTaskFinishAck è¿”回:{res.resMsg}";
                                    continue;
                                }
                                else
@@ -73,25 +79,49 @@
                            using (WmsDBModel wmsDB = new WmsDBModel())
                            {
                                //要是有已下发的任务,就不要执行
                                var isValidate = TaskHandler.ValidateIssueTaskForBZ21(wmsDB, result);
                                var isValidate = TaskHandler.ValidateIssueTaskForNoFinishTaskByUpi(wmsDB, result);
                                if (!isValidate)
                                {
                                    SystemWarningMsg._lbl_alert_DataProcess_BZ21 = $"{rgvLocation.ToString()}-有‘已下发’的任务,不能处理,此次循环结束";
                                    continue;
                                }
                                //增加校验,如果上一个任务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)
                                {
                                    SystemWarningMsg._lbl_alert_DataProcess_BZ21 = $"{rgvLocation.ToString()}-PLC重发此任务,upi:{result},系统不能重复处理,此次循环结束";
                                    continue;
                                }
                                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 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);
                                papercut.Id = Yitter.IdGenerator.YitIdHelper.NextId();
                                papercut.ApiMessage = "";
                                papercut.PushNum = 1;
                                papercut.PushNum = 0;
                                papercut.PushStatus = (int)PushStatusEnum.NotPush;
                                papercut.CreateUserName = papercut.UpdateUserName = SysGloble.WCSSystem;
                                papercut.CreateTime = papercut.UpdateTime = DateTime.Now;
                                wmsDB.mes_push_papercut.Add(papercut);
@@ -123,19 +153,19 @@
                                    PackageCode = upiObj.PackageCode,
                                    PushStatus = 0,
                                    PushNum = 0,
                                    ApiMessage = "待推送",
                                    ApiMessage = "",
                                    CreateTime = DateTime.Now,
                                    CreateUserName = "CC",
                                    CreateUserName = SysGloble.WCSSystem,
                                    UpdateTime = DateTime.Now,
                                    UpdateUserName = "CC",
                                    CreateOrgName = "11"
                                    UpdateUserName = SysGloble.WCSSystem
                                };
                                //新增任务表
                                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,
@@ -144,9 +174,7 @@
                                    OrderId = upiObj.OrderId,
                                    PackageCode = upiObj.PackageCode,
                                    RbTaskType = (int)RbTaskTypeEnum.合包任务,
                                    RbTaskTypeEnumName = RbTaskTypeEnum.合包任务.ToString(),
                                    TaskStatus = (int)TaskStatusEnum.新建,
                                    TaskStatusName = TaskStatusEnum.新建.ToString(),
                                    TaskMsg = "夹板",
                                    CreateTime = DateTime.Now,
                                    CreateUserName = "CC",
@@ -227,5 +255,39 @@
        }
        /// <summary>
        /// éªŒè¯æ˜¯å¦å…è®¸åˆ‡çº¸
        /// </summary>
        /// <returns></returns>
        public static bool ValidateIsAllowCut()
        {
            var rgvLocation = StationLocationEnum.BZ3007.ToString();
            if (FormCC.stationView == null)
            {
                SystemWarningMsg._lbl_Alert_DataProcess_BZ21 = $"{rgvLocation.ToString()}-获取PLC对象为null";
                return false;
            }
            var obj = FormCC.stationView.R_StationForReadCommList.Where(x => x.StationCode == rgvLocation.ToString()).FirstOrDefault();
            if (obj != null)
            {
                if (obj.R_AllowCut)
                {
                    return true;
                }
                else
                {
                    SystemWarningMsg._lbl_Alert_DataProcess_BZ21 = $"{rgvLocation.ToString()}-PLC不允许切纸";
                    return false;
                }
            }
            else
            {
                SystemWarningMsg._lbl_Alert_DataProcess_BZ21 = $"{rgvLocation.ToString()}-获取PLC对象为null";
                return false;
            }
        }
    }
}