11
jinxin
2025-06-23 5c4192f0b813d72a427eaca183d08d42046f1b41
11
7个文件已修改
165 ■■■■■ 已修改文件
C#/HH.WCS.Mobox3.WeiLi/api/ApiHelper.cs 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
C#/HH.WCS.Mobox3.WeiLi/api/ApiModel.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
C#/HH.WCS.Mobox3.WeiLi/core/WCSCore.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
C#/HH.WCS.Mobox3.WeiLi/core/WMSCore.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
C#/HH.WCS.Mobox3.WeiLi/models/TN_Material.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
C#/HH.WCS.Mobox3.WeiLi/process/TaskProcess.cs 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
C#/HH.WCS.Mobox3.WeiLi/wms/WMSHelper.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
C#/HH.WCS.Mobox3.WeiLi/api/ApiHelper.cs
@@ -71,11 +71,15 @@
                        info.S_ITEM_NAME = a.itemName;
                        info.S_IS_MANAGE = a.isManage;
                        info.S_IS_MANAGEDATE = a.isManageDate;
                        db.Updateable<TN_Material>(info).UpdateColumns(it => new { it.S_ITEM_NAME, it.S_IS_MANAGE, it.S_IS_MANAGEDATE }).ExecuteCommand();
                        info.S_UOM = a.unit;
                        db.Updateable<TN_Material>(info).UpdateColumns(it => new { it.S_ITEM_NAME, it.S_IS_MANAGE, it.S_IS_MANAGEDATE,it.S_UOM }).ExecuteCommand();
                        db.Updateable<CntrItemRel>().SetColumns(it => new CntrItemRel() { S_ITEM_NAME = a.itemName , S_UOM = a.unit }).Where(it=>it.S_ITEM_CODE==a.itemCode).ExecuteCommand();
                    }
                    else
                    {
                        db.Insertable(new TN_Material { S_ITEM_CODE = a.itemCode, S_ITEM_NAME = a.itemName, S_IS_MANAGE = a.isManage, S_IS_MANAGEDATE = a.isManageDate }).ExecuteCommand();
                        db.Insertable(new TN_Material { S_ITEM_CODE = a.itemCode, S_ITEM_NAME = a.itemName, S_IS_MANAGE = a.isManage, S_IS_MANAGEDATE = a.isManageDate, S_UOM = a.unit }).ExecuteCommand();
                    }
                    //db.Updateable<TN_Material>().SetColumns(it => new TN_Material() { S_ITEM_NAME = a.itemName }).Where(it => it.S_ITEM_CODE == a.itemCode).ExecuteCommand();
                    //db.Updateable<WHInventory>().SetColumns(it => new WHInventory() { S_ITEM_NAME = a.itemName }).Where(it => it.S_ITEM_CODE == a.itemCode).ExecuteCommand();
@@ -1433,6 +1437,7 @@
                            S_BATCH_NO = a.batchNo,
                            S_OWNER = a.factoryCode,
                            S_ERP_WH_CODE = a.stockLoc,
                            S_UOM=itemName.S_UOM,
                            F_QTY = a.qty,
                            S_SUPPLIER_NO = a.vendorCode,
                            S_SERIAL_NO = a.serialNo,
@@ -3166,6 +3171,7 @@
                                            S_ITEM_NAME = itemName.S_ITEM_NAME,
                                            S_ITEM_CODE = a.itemCode,
                                            S_BATCH_NO = a.batchNo,
                                            S_UOM=itemName.S_UOM,
                                            S_BS_NO=a.inWorkNo,
                                            S_OWNER = a.factoryCode,
                                            S_ERP_WH_CODE = a.stockLocation,
@@ -3371,6 +3377,7 @@
                                        S_CNTR_CODE = model.cntrNo,
                                        S_WU = a.rowID,
                                        S_ITEM_NAME = itemName.S_ITEM_NAME,
                                        S_UOM = itemName.S_UOM,
                                        S_ITEM_CODE = a.itemCode,
                                        S_BATCH_NO = a.batchNo,
                                        S_OWNER = a.factoryCode,
@@ -3516,6 +3523,7 @@
                                            {
                                                S_CNTR_CODE = cntr,
                                                S_ITEM_NAME = itemName.S_ITEM_NAME,
                                                S_UOM = itemName.S_UOM,
                                                S_ITEM_CODE = a.itemCode,
                                                S_BATCH_NO = a.batchNo,
                                                S_OWNER = a.factoryCode,
@@ -3580,6 +3588,7 @@
                                                {
                                                    S_CNTR_CODE = cntr,
                                                    S_ITEM_NAME = itemName.S_ITEM_NAME,
                                                    S_UOM = itemName.S_UOM,
                                                    S_ITEM_CODE = it.itemCode,
                                                    S_BATCH_NO = it.batchNo,
                                                    S_OWNER = it.factoryCode,
C#/HH.WCS.Mobox3.WeiLi/api/ApiModel.cs
@@ -555,6 +555,10 @@
            /// 生产日期管理
            /// </summary>
            public string isManageDate { get; set; } = "Y";
            /// <summary>
            /// 物料单位
            /// </summary>
            public string unit { get; set; } = "kg";
        }
        public class ReceivingNoteModel
        {
C#/HH.WCS.Mobox3.WeiLi/core/WCSCore.cs
@@ -108,8 +108,8 @@
            TaskActionList.ForEach(a =>
            {
                tasks.Add(Task.Run(() =>
                {
                //tasks.Add(Task.Run(() =>
                //{
                    var TN_Task = WCSHelper.GetTask(a.TASK_NO);
                    if (TN_Task != null)
                    {
@@ -123,9 +123,9 @@
                        }
                        db.Deleteable(a).ExecuteCommand();
                    }
                }));
                //}));
            });
            Task.WaitAll(tasks.ToArray(), 3000);
            //Task.WaitAll(tasks.ToArray(), 12000);
        }
C#/HH.WCS.Mobox3.WeiLi/core/WMSCore.cs
@@ -171,7 +171,7 @@
                        var startloc = db.Queryable<Location>().Where(it => it.S_CODE == a.S_LOC_CODE).First();
                        if (startloc != null)
                        {
                            LogHelper.Info($"托盘{a.S_CNTR_CODE} 绑定位置{a.S_LOC_CODE} 锁状态{startloc.S_LOCK_STATE}");
                            LogHelper.Info($"托盘{a.S_CNTR_CODE} 绑定位置{a.S_LOC_CODE} 盘点状态{a.N_B_STATE} 锁状态{startloc.S_LOCK_STATE}");
                            if (a.N_B_STATE == 0 && startloc.S_LOCK_STATE == "其它锁")
                            {
                                if (Settings.LKCodes.Where(it => it.LiKuCode == startloc.S_AREA_CODE).FirstOrDefault() != null)
@@ -430,6 +430,8 @@
                                            S_CNTR_CODE = a.S_CNTR_CODE,
                                        };
                                        var res = true;
                                        if (type == "NDC" && (a.S_OP_DEF_NAME == "出库" || a.S_OP_DEF_NAME == "分拣出" || a.S_OP_DEF_NAME == "空框出库"))
                                        {
                                            string workNo = "";
@@ -464,26 +466,30 @@
                                                {
                                                    LogHelper.Info($"中台返回终点{endbit} 不存在货位信息");
                                                    LocationHelper.UnLockLoc(end.S_CODE);
                                                    break;
                                                    //break;
                                                    res = false;
                                                }
                                            }
                                            else
                                            {
                                                LogHelper.Info($"中台并未返回终点");
                                                LocationHelper.UnLockLoc(end.S_CODE);
                                                break;
                                                res = false;
                                                //break;
                                            }
                                        }
                                        if (WCSHelper.CreateTask(wcsTask))
                                        if (res)
                                        {
                                            LogHelper.Info($"作业{a.S_CODE} 创建任务成功 修改作业状态");
                                            //更新作业状态为执行
                                            a.N_B_STATE = 1;
                                            a.S_B_STATE = "执行";
                                            WMSHelper.UpdateTaskState(a);
                                            if (WCSHelper.CreateTask(wcsTask))
                                            {
                                                LogHelper.Info($"作业{a.S_CODE} 创建任务成功 修改作业状态");
                                                //更新作业状态为执行
                                                a.N_B_STATE = 1;
                                                a.S_B_STATE = "执行";
                                                WMSHelper.UpdateTaskState(a);
                                            }
                                        }
                                    }
                                }
                            }
C#/HH.WCS.Mobox3.WeiLi/models/TN_Material.cs
@@ -31,5 +31,6 @@
        public string S_IS_MANAGE { get; set; }
        public string S_IS_MANAGEDATE { get; set; }
        public string S_AREA_CODE { get; set; } = "";
        public string S_UOM { get; set; } = "kg";
    }
}
C#/HH.WCS.Mobox3.WeiLi/process/TaskProcess.cs
@@ -91,7 +91,7 @@
                {
                    db.Updateable<Location>().SetColumns(it => new Location() { N_CURRENT_NUM = 0 }).Where(a => a.S_CODE == mst.S_START_LOC).ExecuteCommand();
                }
                LocationHelper.UnLockLoc(mst.S_START_LOC);
                LocationHelper.UnLockLoc(mst.S_END_LOC);
@@ -136,12 +136,12 @@
                        db.Updateable(InWorkOrder).UpdateColumns(it => new { it.F_ACC_B_QTY }).ExecuteCommand();
                    }
                }
                else
                else
                {
                    LogHelper.Info($"未找到托盘{wmsTask.S_CNTR_CODE}的物料明细");
                }
            }
            else
            else
            {
                LogHelper.Info($"作业类型为{wmsTask.S_OP_DEF_NAME} 无须降量");
            }
@@ -429,47 +429,52 @@
            if (codeReader != null)
            {
                LogHelper.Info($"agv={codeReader.agv},ip={codeReader.ip}");
                for (int i = 1; i <= 5; i++)
                for (int i = 1; i <= 3; i++)
                {
                    //try
                    //{
                    //var res = OITcpHelper.HexTransit(new OITcpHelper.StrTransitData { data = "4C 4F 4E 0D", host = codeReader.ip, port = 9004 });
                    var res = SendHexOnce(codeReader.ip, codeReader.port, "41");
                    LogHelper.Info($"扫码返回报文{res}");
                    if (string.IsNullOrEmpty(res))
                    {
                        NDCApi.ChangeOrderParam(mst.S_CODE, 6, "3");
                    }
                    else
                    //if (string.IsNullOrEmpty(res))
                    //{
                    //    NDCApi.ChangeOrderParam(mst.S_CODE, 6, "3");
                    //}
                    //else
                    //{
                    if (res.Length >= 18)
                    {
                        res = res.Substring(2, 16);
                        var code = hexToStr(res);
                        Console.WriteLine(code);
                        LogHelper.Info($"托盘信息为={mst.S_CNTR_CODE},扫码结果为={code},结果:{mst.S_CNTR_CODE.Trim() == code.Trim()}");
                        if (res != null && code.Trim() != "ERROR")
                    }
                    var code = hexToStr(res);
                    Console.WriteLine(code);
                    LogHelper.Info($"托盘信息为={mst.S_CNTR_CODE},扫码结果为={code},结果:{mst.S_CNTR_CODE.Trim() == code.Trim()}");
                    if (!string.IsNullOrEmpty(code) && res.Trim() != "022503")
                    {
                        if (mst.S_CNTR_CODE.Trim() == code.Trim())
                        {
                            if (mst.S_CNTR_CODE.Trim() == code.Trim())
                            {
                                NDCApi.ChangeOrderParam(mst.S_CODE, 6, "1");
                            }
                            else
                            {
                                NDCApi.ChangeOrderParam(mst.S_CODE, 6, "2");
                            }
                            return;
                            NDCApi.ChangeOrderParam(mst.S_CODE, 6, "1");
                        }
                        else if (i == 5)
                        else
                        {
                            if (res != null)
                            {
                                NDCApi.ChangeOrderParam(mst.S_CODE, 6, "3");
                            }
                            else
                            {
                                NDCApi.ChangeOrderParam(mst.S_CODE, 6, "4");
                            }
                            NDCApi.ChangeOrderParam(mst.S_CODE, 6, "2");
                        }
                        return;
                    }
                    else if (i == 3)
                    {
                        if (!string.IsNullOrEmpty(code))
                        {
                            NDCApi.ChangeOrderParam(mst.S_CODE, 6, "3");
                        }
                        else
                        {
                            NDCApi.ChangeOrderParam(mst.S_CODE, 6, "4");
                        }
                    }
                    //}
                    //}
                    //catch (Exception ex) 
@@ -496,28 +501,37 @@
        private static string SendHexOnce(string ip, int port, string hex)
        {
            var res = string.Empty;
            Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            client.Connect(ip, port);
            client.ReceiveTimeout = 2000;
            if (client.Connected)
            try
            {
                client.Send(Hex2Bytes(hex));
                byte[] buffer = new byte[1024];
                try
                Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                //client.Connect(ip, port);
                IAsyncResult connectResult = client.BeginConnect(ip, port, null, null);
                if (!connectResult.AsyncWaitHandle.WaitOne(5000))
                {
                    client.Close();
                    return "";
                }
                client.ReceiveTimeout = 2000;
                if (client.Connected)
                {
                    client.Send(Hex2Bytes(hex));
                    byte[] buffer = new byte[1024];
                    var length = client.Receive(buffer, SocketFlags.None);
                    byte[] data = new byte[length];
                    Array.Copy(buffer, data, length);
                    res = BitConverter.ToString(data).Replace("-", "");
                    client.Disconnect(true);
                    client.Dispose();
                }
                catch (Exception ex)
                {
                    LogHelper.Error(ex.Message, ex);
                }
                client.Disconnect(true);
                client.Dispose();
                client = null;
            }
            client = null;
            catch (Exception ex)
            {
                LogHelper.Error(ex.Message, ex);
            }
            return res;
        }
@@ -931,12 +945,12 @@
                }
                var wmsTask = db.Queryable<WMSTask>().Where(a => a.S_CODE == mst.S_OP_CODE).First();
                if (wmsTask != null && wmsTask.N_TRAY_WEIGHT > 0)
                if (wmsTask != null && wmsTask.N_TRAY_WEIGHT > 0)
                {
                    // 1000 2000 3000 4000 5000
                    Trow = (wmsTask.N_TRAY_WEIGHT * 4096).ToString();
                }
                Console.WriteLine($"SendTask {mst.S_CODE}");
                Console.WriteLine("start=" + start);
C#/HH.WCS.Mobox3.WeiLi/wms/WMSHelper.cs
@@ -818,7 +818,7 @@
                        itemCode = it.S_ITEM_CODE,
                        factoryCode = string.IsNullOrEmpty(it.S_OWNER) ? "" : it.S_OWNER,
                        stockCode = string.IsNullOrEmpty(it.S_ERP_WH_CODE) ? "" : it.S_ERP_WH_CODE,
                        qty = Convert.ToInt32(it.F_QTY),
                        qty = it.F_QTY,
                        vendorCode = string.IsNullOrEmpty(it.S_SUPPLIER_NO) ? "" : it.S_SUPPLIER_NO,
                        batchNo = string.IsNullOrEmpty(it.S_BATCH_NO) ? "" : it.S_BATCH_NO,
                        serialNo = string.IsNullOrEmpty(it.S_SERIAL_NO) ? "" : it.S_SERIAL_NO
@@ -1262,7 +1262,8 @@
            var db = new SqlHelper<object>().GetInstance();
            task.T_MODIFY = DateTime.Now;
            task.S_B_STATE = WMSTask.GetStateStr(task.N_B_STATE);
            db.Updateable<WMSTask>(task).UpdateColumns(a => new { a.N_B_STATE, a.S_B_STATE, a.T_MODIFY }).ExecuteCommand();
            var res=db.Updateable<WMSTask>(task).UpdateColumns(a => new { a.N_B_STATE, a.S_B_STATE, a.T_MODIFY }).ExecuteCommand()>0;
            LogHelper.Info($"修改作业状态 作业号{task.S_CODE} 作业状态{task.N_B_STATE} 修改结果{res}");
        }
        internal static bool UpdateTaskEnd(WMSTask a)