schangxiang@126.com
2025-02-20 c9e3a7f0c154892f2327e300e28af53f81e40ad0
CC/iWareCC_ASRS/Common/Helper/MyExtendHelper.cs
@@ -1,4 +1,6 @@
using Admin.NET.Application;
using iWareCC.SrmService;
using iWareCC.StationService;
using iWareCommon.Common.Globle;
using iWareCommon.Utils;
using iWareModel;
@@ -13,7 +15,7 @@
using System.Threading;
using System.Threading.Tasks;
using XiGang.Core.Model;
using LogType = iWareCommon.Utils.LogType;
namespace iWareCC.Common.Helper
{
@@ -22,6 +24,127 @@
    /// </summary>
    public class MyExtendHelper
    {
        /// <summary>
        /// 公共的控制请求对象字典
        /// </summary>
        public static IDictionary<string, ControlRequest> controlRequestDicts = new Dictionary<string, ControlRequest>();
        /// <summary>
        /// 公共的控制请求对象字典赋值
        /// </summary>
        /// <param name="placeNo"></param>
        /// <param name="result"></param>
        /// <param name="msg"></param>
        public static void SetValueControlRequestDicts(string placeNo, bool result, string msg)
        {
            if (controlRequestDicts.ContainsKey(placeNo))
            {
                controlRequestDicts[placeNo].IsSuccess = result;
                controlRequestDicts[placeNo].LastTime = DateTime.Now;
                controlRequestDicts[placeNo].PlaceNo = placeNo;
                if (result)
                {
                    controlRequestDicts[placeNo].Count = 0;
                    controlRequestDicts[placeNo].ErrMsg = "";
                }
                else
                {
                    controlRequestDicts[placeNo].Count++;
                    controlRequestDicts[placeNo].ErrMsg = msg;
                }
            }
            else
            {
                if (result)
                {
                    controlRequestDicts.Add(placeNo, new ControlRequest()
                    {
                        PlaceNo = placeNo,
                        Count = 0,
                        LastTime = DateTime.Now,
                        ErrMsg = msg,
                        IsSuccess = result
                    });
                }
                else
                {
                    controlRequestDicts.Add(placeNo, new ControlRequest()
                    {
                        PlaceNo = placeNo,
                        Count = 1,
                        LastTime = DateTime.Now,
                        ErrMsg = msg,
                        IsSuccess = result
                    });
                }
            }
        }
        /// <summary>
        /// 验证是否允许给PLC发报警
        /// </summary>
        /// <param name="placeNo"></param>
        /// <returns></returns>
        public static bool ValidateIsAllowRequest(string placeNo, LogType logType)
        {
            if (controlRequestDicts.ContainsKey(placeNo))
            {
                if (controlRequestDicts[placeNo].IsSuccess == false)
                {
                    //var diff = DateTime.Now - controlRequestDicts[placeNo].LastTime;
                    //if (diff.Seconds <= 10)
                    //{//如果连续请求在10秒内,则认为 不需要再次请求
                    //    WZ.Useful.Commons.LogTextHelper.WriteLine("CommonControl", "ValidateIsAllowRequest", "如果连续请求在10秒内,则认为 不需要再次请求,间隔" + diff.Seconds + "秒,placeNo:" + placeNo);
                    //    return false;
                    //}
                    if (controlRequestDicts[placeNo].Count <= 5)
                    {//如果连续请求在5次内,则认为 不需要再次请求
                        var msg = "如果连续请求在5次内,则认为 不需要再次请求,间隔" + controlRequestDicts[placeNo].Count + "个,placeNo:" + placeNo;
                        Log4NetHelper.WriteInfoLog(logType, msg);
                        return false;
                    }
                }
            }
            return true;
        }
        /// <summary>
        /// 生成最新的任务号
        /// </summary>
        /// <param name="wmsDB"></param>
        /// <param name="rbTaskTypeEnum"></param>
        /// <param name="plcTaskNo"></param>
        /// <returns></returns>
        public static string GetNewTaskNo(WmsDBModel wmsDB, RbTaskTypeEnum rbTaskTypeEnum, string plcTaskNo)
        {
            //判断如果任务号跟上一个任务号重复,就自动减去1
            var lastTask = wmsDB.wms_rbline_task.Where(x => x.RbTaskType == (int)rbTaskTypeEnum).OrderByDescending(x => x.Id).FirstOrDefault();
            if (lastTask != null && lastTask.TaskNo == plcTaskNo)
            {
                plcTaskNo = (Convert.ToInt32(plcTaskNo) - 1).ToString();
            }
            else
            {
            }
            return plcTaskNo;
        }
        /// <summary>
        /// 写入 报警信息
        /// </summary>
        /// <param name="warningAddress"></param>
        /// <returns></returns>
        public static async Task<iWareCC.StationService.SdaResEntity> WriteBoolPlcDataForWarning(string warningAddress)
        {
            using (StationServiceClient client = new StationServiceClient())
            {
                var res = await client.WriteBoolPlcDataAsync((int)EDevice.Station, "3000|" + warningAddress, true);
                return res;
            }
        }
        /// <summary>
        /// 处理 表 mes_order_gather
@@ -36,7 +159,8 @@
        {
            errMsg = "";
            //处理表  mes_order_gather
            if (package == null) {
            if (package == null)
            {
                return true;
            }
            var isAddOrder = false;
@@ -59,18 +183,35 @@
                    Info5 = package.Info5,
                    OrderId = package.OrderId,
                    PlanNo = package.PlanNo,
                    CreateTime = DateTime.Now,
                    UpdateTime = DateTime.Now,
                    CreateUserName = SysGloble.WCSSystem,
                    UpdateUserName = SysGloble.WCSSystem
                };
                isAddOrder = true;
            }
            order.PackageNum = packageList.Count();
            order.UnLinePackageNum = packageList.Where(x => x.UpiStatus == (int)UpiStatusEnum.已下线).Count();
            if (order.UnLinePackageNum > order.PackageNum)
            {
                order.UnLinePackageNum = order.PackageNum;
            }
            order.NgPackageNum = packageList.Where(x => x.UpiStatus == (int)UpiStatusEnum.已下线 && x.UpiFlag == (int)UpiFlagEnum.NG).Count();
            if (order.NgPackageNum > order.PackageNum)
            {
                order.NgPackageNum = order.PackageNum;
            }
            order.NoUnLinePackageNum = order.PackageNum - order.UnLinePackageNum;
            order.AllPackageArea = packageList.Sum(x => Convert.ToDecimal(x.Info13));
            order.ScanPackageArea = packageList.Where(x => x.UpiStatus == (int)UpiStatusEnum.已下线).Sum(x => Convert.ToDecimal(x.Info13));
            order.ScanPackageArea = packageList.Where(x => x.UpiStatus == (int)UpiStatusEnum.已下线 && x.UpiFlag == (int)UpiFlagEnum.正常).Sum(x => Convert.ToDecimal(x.Info13));
            order.NoScanPackageArea = order.AllPackageArea - order.ScanPackageArea;
            order.IsKitting = qitaoValue == "齐套" ? true : false;
            /*
            var order_unLine = false;
            //查询下一个包是不是属于该订单
            var newLineQueue = wmsDB.mes_package_linequeue.OrderBy(x => x.Id).FirstOrDefault();
@@ -99,6 +240,8 @@
                order.IsUnline = false;
            }
            //*/
            if (isAddOrder)
            {
                wmsDB.mes_order_gather.Add(order);