1
pulg
2025-07-05 aa9f03add1c43871c1fa7ad66d8122c8c8d161e0
1
7个文件已修改
125 ■■■■■ 已修改文件
HH.WCS.QingXiNongfu/Program.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.QingXiNongfu/api/AgvController.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.QingXiNongfu/core/Monitor.cs 60 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.QingXiNongfu/core/TaskCore.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.QingXiNongfu/process/DeviceProcess.cs 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.QingXiNongfu/process/TaskProcess.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.QingXiNongfu/wms/WCSModel.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.QingXiNongfu/Program.cs
@@ -760,7 +760,7 @@
                    GetTask(Monitor.AutoRunABD),
                    GetTask(Monitor.AutoRun13TSJ),
                    GetTask(Monitor.ZdzyABArea),
                      GetTask(Monitor.Qchc),
                     // GetTask(Monitor.Qchc),
                    
                    //GetTask(Monitor.AutoTK_PE),//提扣 - PE膜出入库
HH.WCS.QingXiNongfu/api/AgvController.cs
@@ -25,7 +25,7 @@
        public ReturnResult AGVCallbackCancel(AgvTaskState model)
        {
            LogHelper.Warn("AGVCallbackCancel Request:" + JsonConvert.SerializeObject(model), "HosttoagvTask");
            LogHelper.Info("AGVCallbackCancel Request:" + JsonConvert.SerializeObject(model), "HosttoagvTask");
            //TaskCore.OperateTaskStatus(model);
            var R = NDCHelper.CancelS(model.No);
            //指定任务已经完成或取消,无法再处理
HH.WCS.QingXiNongfu/core/Monitor.cs
@@ -1197,47 +1197,7 @@
                                            if (CDlist.Contains(EdnRarea))
                                            {
                                                isCd = true;
                                                //inlockLis = LocationHelper.GetList<RowLock>(x => x.S_AREA_CODE == EdnRarea && x.S_LOCK_SRC == cir1.S_ITEM_CODE + cir1.S_ITEM_NAME + cir1.S_CJ_NAME && x.S_LOCK_STATE == "入库锁").ToList();
                                                //if (inlockLis.Count() > 0)
                                                //{
                                                //    inlock = inlockLis.FirstOrDefault();
                                                //}
                                                inlock = RGRow.FirstOrDefault();
                                                if (inlock != null)
                                                {
                                                    //当入库的任务能放满一排并且还有余的时候 开第二排
                                                    //先判断起点有多少相同的 能入的物料
                                                    if (_cl.S_AREA_CODE == "YWLRGDD")//判断起点是否是人工堆叠区
                                                    {
                                                        inlockLis = RGRow.FindAll(e => e.S_AREA_CODE == EdnRarea && e.S_LOCK_SRC == cir1.S_ITEM_CODE + cir1.S_ITEM_NAME + cir1.S_CJ_NAME).ToList();
                                                        //然后判断人工堆叠区需要入库多少托同品种物料 startMum
                                                        //货位 托盘 物料表联查
                                                        LogHelper.Info($"查起点有多少同品种的物料 开始");
                                                        var ca = Expressionable.Create<Location, LocCntrRel, CntrItemRel>();
                                                        ca.And((o, p, t) => o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "无" && t.S_ITEM_CODE == cir1.S_ITEM_CODE && t.S_ITEM_NAME == cir1.S_ITEM_NAME && t.S_CJ_NAME == cir1.S_CJ_NAME && o.S_AREA_CODE == "YWLRGDD" && p.S_TYPE == _clrel0.S_TYPE);
                                                        var lstCanOutL = dbll.Queryable<Location>().InnerJoin<LocCntrRel>((o, p) => o.S_LOC_CODE == p.S_LOC_CODE).InnerJoin<CntrItemRel>((o, p, t) => p.S_CNTR_CODE == t.S_CNTR_CODE).Where(ca.ToExpression()).ToList();
                                                        LogHelper.Info($"起点要入CD的有多少托盘数量为{lstCanOutL.Count()}");
                                                        //判断终点排能入多少  少于入库托盘数则多开一排 EndMum
                                                        var EndMum = dbll.Queryable<Location>().Where(l => l.S_AREA_CODE == EdnRarea && l.N_CURRENT_NUM == 0 && l.S_LOCK_STATE == "无" && inlockLis.Select(e => e.N_ROW).ToList().Contains(l.N_ROW)).ToList();
                                                        LogHelper.Info($"终点CD排有多少空托能入{lstCanOutL.Count()}");
                                                        if (lstCanOutL.Count <= EndMum.Count())
                                                        {
                                                            arloclist = arloclist.FindAll(x => inlockLis.Select(e => e.N_ROW).ToList().Contains(x.N_ROW)).ToList();
                                                        }
                                                        else
                                                        {
                                                            arloclist = arloclist.FindAll(x => !inlockLis.Select(e => e.N_ROW).ToList().Contains(x.N_ROW)).ToList();
                                                            inlock = null;
                                                        }
                                                        LogHelper.Info($"查起点有多少同品种的物料 结束");
                                                    }
                                                    else
                                                    {
                                                        arloclist = arloclist.FindAll(x => x.N_ROW == inlock.N_ROW).ToList();
                                                    }
                                                }
                                                else
                                                {
                                                    if (_cl.S_AREA_CODE == "YWLRGDD")
                                                    {
                                                        //查询是否有已经入了的排
@@ -1251,7 +1211,16 @@
                                                        var lstCanOutLSta = dbll.Queryable<Location>().InnerJoin<LocCntrRel>((o, p) => o.S_LOC_CODE == p.S_LOC_CODE).InnerJoin<CntrItemRel>((o, p, t) => p.S_CNTR_CODE == t.S_CNTR_CODE).Where(ca1.ToExpression()).ToList();
                                                        if (lstCanOutL.Count() > 0)
                                                        {
                                                        var ProRow = lstCanOutLSta.GroupBy(e => e.N_ROW).Select(f => f.First()).ToList();
                                                        //这些排能入的货位数
                                                            var EndMum = dbll.Queryable<Location>().Where(l => l.S_AREA_CODE == EdnRarea && l.N_CURRENT_NUM == 0 && l.S_LOCK_STATE == "无" && lstCanOutL.Select(e => e.N_ROW).ToList().Contains(l.N_ROW)).ToList();
                                                        //查询每一排最大的列 小于这些列的 不允许入
                                                        foreach (var item in ProRow)
                                                        {
                                                            var MaxCol = lstCanOutLSta.FindAll(d => d.N_ROW == item.N_ROW).OrderByDescending(f => f.N_COL).First();
                                                            EndMum.RemoveAll(f => f.N_ROW == item.N_ROW && f.N_COL < MaxCol.N_COL);
                                                        }
                                                            if (EndMum.Count() > 0)
                                                            {
                                                                if (lstCanOutL.Count() <= EndMum.Count())
@@ -1260,8 +1229,6 @@
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                            foreach (var rss in arloclist.GroupBy(x => x.N_ROW).OrderByDescending(x => x.Count(y => y.N_CURRENT_NUM > 0)).ThenBy(x => x.Key))
@@ -1485,6 +1452,7 @@
                    }
                }
                var locsFirst = locsFirstA.FindAll(x => x.S_NOTE.Contains("标签-") && x.S_TYPE == WJ_BQ.RK_BBHJQ);
                var SblocsFirst = locsFirstA.FindAll(x => x.S_NOTE.Contains("标签-") && x.S_NOTE.Contains("水") && x.S_TYPE == WJ_BQ.RK_BBHJQ);
                var SlocsFirst = locsFirstA.FindAll(x => x.S_NOTE.Contains("标签-") && x.S_TYPE == SX_BQ.RK_BBHJQ);
                var TKlocsFirst = locsFirstA.FindAll(x => x.S_NOTE.Contains("提扣-"));
                var PElocsFirst = locsFirstA.FindAll(x => x.S_NOTE.Contains("收缩膜-"));
@@ -1513,7 +1481,6 @@
                            // 标签出库。货架直接出到线边
                            YwlBQ_CreWJOutOrder();
                        }
                        // 标签无菌退库。 
                        YwlBQ_CreWJTK();
                    }
@@ -1531,7 +1498,8 @@
                        var yuworders = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == "中水标签出库" && x.WorkType == 6 && x.SQL_State == "执行中").FindAll(x => x.OutNum > 0).OrderBy(x => x.TagOverTime).ToList();
                        if (LocLock(SX_BQ.RK_BBHJQ))
                        {
                            YwlBQ_CreInwork(locsFirst, SX_BQ.RK_BQDDQ, SX_BQ.RK_BBHJQ);
                            //水标入库
                            YwlBQ_CreInwork(SblocsFirst, SX_BQ.RK_BQDDQ, SX_BQ.RK_BBHJQ);
                        }
                        if (yuworders.Any())
                        {
@@ -1562,7 +1530,7 @@
                        if (LocLock(SX_BQ.RK_BBHJQ))
                        {
                            //水线标签入库
                            YwlBQ_CreInwork(SlocsFirst, SX_BQ.RK_BQDDQ, SX_BQ.RK_BBHJQ);
                            YwlBQ_CreInwork(SblocsFirst, SX_BQ.RK_BQDDQ, SX_BQ.RK_BBHJQ);
                        }
                        if (tklist.Count() > 0)
                        {
HH.WCS.QingXiNongfu/core/TaskCore.cs
@@ -98,7 +98,7 @@
                                    TaskHelper.BeEnd(wmsTask);
                                break;
                            case 9://强制取消  //起点解绑锁释放 终点锁释放
                                var R = NDCHelper.CancelS(model.No);
                                   // var R = NDCHelper.CancelS(model.No);
                                r = TaskProcess.OperateStatus(wmsTask, 9);
                                if (r.ResultCode != -1)
                                {
HH.WCS.QingXiNongfu/process/DeviceProcess.cs
@@ -1733,9 +1733,42 @@
               状态2    送空完成之后为状态2
               状态3    满托取走,送空之前为状态3,开机默认状态也为状态3
           */
            //3F 00 12 22 0D 0A--无任务信号
            //3F 00 11 22 0D 0A--A口工作信号
            //3F 00 12 21 0D 0A--B口信号
            //3F 00 11 21 0D 0A--A、B口工作信号
            //A口复位信号 - 3F 00 10 0D 0A
            //B口复位信号 - 3F 00 20 0D 0A
            if (data.Length == 4)
            {
                //if (data == "1122")//A口工作信号
                //{
                //    if (BottlePEMInfoFullTwo(plc, plc.location[0]))
                //    {
                //    }
                //}
                //else if (data == "1221")//B口工作信号
                //{
                //    if (BottlePEMInfoFullTwo(plc, plc.location[1]))
                //    {
                //    }
                //}
                //else if (data == "1121")//B口工作信号
                //{
                //    if (BottlePEMInfoFullTwo(plc, plc.location[0]))
                //    {
                //    }
                //    if (BottlePEMInfoFullTwo(plc, plc.location[1]))
                //    {
                //    }
                //}
                if (data.Substring(1, 1) == "1")
                {
                    if (BottlePEMInfoFull(plc, plc.location[0]))
@@ -1964,6 +1997,26 @@
                }
            }
        }
        static bool BottlePEMInfoFullTwo(Settings.deviceInfo plc, string location)
        {
            try
            {
                if (location != "")
                {
                    var workOrder = WCSHelper.GetWorkOrder(plc.deviceName);
                    if (workOrder == null)
                    {
                        LogHelper.Info(plc.deviceName + "没有【执行中】的工单");
                        return false;
                    }
                }
                return false;
            }
            catch (Exception ex)
            {
                return false;
            }
        }
        //瓶坯满入库
HH.WCS.QingXiNongfu/process/TaskProcess.cs
@@ -399,7 +399,6 @@
            //new List<string> { "成品满框-入库", "" }
            if (state == 6 || state == 5)
            {
                LogHelper.Info($"任务类型:{mst.S_TYPE}- 动作:{state}. 是否5算6?{mst.S_TYPE.Contains("成品满框") || mst.S_TYPE.Contains("备货")} ");
                if (mst.S_TYPE.Contains("备货"))
                {
HH.WCS.QingXiNongfu/wms/WCSModel.cs
@@ -285,6 +285,11 @@
        public string S_CJ_NAME { get; set; }
    }
    [SuGG("半成品区域表")]
    public class BcpQyOrder : BaseModel
    {
    }
    [SuGG("厂家时间表")]
    public class CjTimeOrder : BaseModel
    {