liuying
2024-11-30 be14322d1b20857082dd47aeb895bd976dca13e0
Merge branch 'master' of http://222.71.245.114:9086/r/LA24030-LuLI_PackageLine
已添加1个文件
已修改15个文件
788 ■■■■■ 文件已修改
CC/iWareCC_ASRS/App.config 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Common/Helper/MyExtendHelper.cs 404 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/ThreadService/01_BZ01工位(清灰,洗板后工位)/DataProcess_BZ01.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/ThreadService/02_BZ39工位(补板后工位)/DataProcess_RobotBuffer_ModeChange.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/ThreadService/02_BZ39工位(补板后工位)/Inbound/1、DataProcess_BZ39.cs 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/ThreadService/02_BZ39工位(补板后工位)/Inbound/2、DataProcess_RobotBuffer_FinishTask.cs 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/ThreadService/02_BZ39工位(补板后工位)/Outbound/1、DataProcess_RobotBuffer_AutoQiTaoOutbound.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/ThreadService/02_BZ39工位(补板后工位)/Outbound/2、DataProcess_RobotBuffer_IssueOutboundTask.cs 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/ThreadService/02_BZ39工位(补板后工位)/Outbound/3、DataProcess_RobotBuffer_FinishTaskForOutbound.cs 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/ThreadService/04_BZ21(搬运整垛机器人)/DataProcess_BZ21.cs 88 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/ThreadService/05_BZ30(齐套验证)/DataProcess_ValidateQiTao.cs 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DataAccess/TaskHandler.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOperationTask/Dto/UnlineForNGPackageInput.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOperationTask/WmsOperationTaskService.cs 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/App.config 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/4-Station/StationModel/StationEntity.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/App.config
@@ -35,7 +35,7 @@
    <add key="IsEnableNewInStorePlace" value="false"/>
  </appSettings>
  <connectionStrings>
    <add name="WmsDBModel" connectionString="data source=localhost;initial catalog=LA24030_LuLiPackageLine;persist security info=True;user id=sa;password=123abc.com;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient"/>
    <add name="WmsDBModel" connectionString="data source=172.17.1.111;initial catalog=LA24030_LuLiPackageLine;persist security info=True;user id=sa;password=admin@123;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient"/>
 </connectionStrings>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/>
CC/iWareCC_ASRS/Common/Helper/MyExtendHelper.cs
@@ -1,9 +1,11 @@
using iWareCommon.Common.Globle;
using Admin.NET.Application;
using iWareCommon.Common.Globle;
using iWareCommon.Utils;
using iWareModel;
using iWareModel.EnumType.XiGangPublicCommon;
using iWareSql.DataAccess;
using iWareSql.DBModel;
using iWareSql.WmsDBModel;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -20,6 +22,91 @@
    /// </summary>
    public class MyExtendHelper
    {
        /// <summary>
        /// å¤„理 è¡¨ mes_order_gather
        /// </summary>
        /// <param name="wmsDB"></param>
        /// <param name="package"></param>
        /// <param name="qitaoValue"></param>
        /// <param name="_UnlinePerson"></param>
        /// <param name="errMsg"></param>
        /// <returns></returns>
        public static bool HandlerOrderGather(WmsDBModel wmsDB, mes_package_gather package, string qitaoValue, string _UnlinePerson, out string errMsg)
        {
            errMsg = "";
            //处理表  mes_order_gather
            if (package == null) {
                return true;
            }
            var isAddOrder = false;
            var packageList = wmsDB.mes_package_gather.Where(x => x.Info5 == package.Info5).ToList();
            if (packageList == null || packageList?.Count == 0)
            {
                errMsg = $"没有找到生产单号{package.Info5}的汇总数据";
                return false;
            }
            var order = wmsDB.mes_order_gather.Where(x => x.Info5 == package.Info5).FirstOrDefault();
            if (order != null)
            {
            }
            else
            {
                order = new mes_order_gather()
                {
                    Id = Yitter.IdGenerator.YitIdHelper.NextId(),
                    Info5 = package.Info5,
                    OrderId = package.OrderId,
                    PlanNo = package.PlanNo,
                };
                isAddOrder = true;
            }
            order.PackageNum = packageList.Count();
            order.UnLinePackageNum = packageList.Where(x => x.UpiStatus == (int)UpiStatusEnum.已下线).Count();
            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.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();
            if (newLineQueue != null && newLineQueue.Info5 != order.Info5)
            {
                //表示是 åˆ‡æ¢ æ–°è®¢å•了,该订单要更新为 å·²ä¸‹çº¿ã€‚
                order_unLine = true;
            }
            else
            {
                //判断该订单是否已下线
                if (order.PackageNum == order.UnLinePackageNum)
                {
                    order_unLine = true;
                }
            }
            //判断该订单是否已下线
            if (order_unLine)
            {
                order.IsUnline = true;
                order.UnlineTime = DateTime.Now;
                order.UnlinePerson = _UnlinePerson;
            }
            else
            {
                order.IsUnline = false;
            }
            if (isAddOrder)
            {
                wmsDB.mes_order_gather.Add(order);
            }
            return true;
        }
        /// <summary>
        /// é…ç½®ç¼ºæ–™åŽŸå› 
@@ -517,270 +604,6 @@
        #endregion
        /// <summary>
        /// æ–°å»ºè½¬è¿ä»»åŠ¡
        /// </summary>
        /// <param name="flag">1:转移到1014位置 2:转移到立体库中  3:1009到1011 4:立体库到1014位置 </param>
        /// <param name="rgvEDevice">RGV设备号</param>
        /// <param name="user"></param>
        /// <param name="store"></param>
        /// <returns></returns>
        public static FunRetEntity AddTransferTask(AddTransferTaskEnum flag, EDevice rgvEDevice, SysUser user, V_AllStore store)
        {
            FunRetEntity fr = new FunRetEntity();
            var errMsg = "";
            var remark = "新增转运任务";
            try
            {
                #region äº‹åŠ¡
                #endregion
                using (DbModel edm = new DbModel())
                {
                    //增加验证 ã€EditBy shaocx,2022-04-28】
                    switch (flag)
                    {
                        case AddTransferTaskEnum.位置1011转移到1014位置:
                        case AddTransferTaskEnum.位置1011转移到立体库中:
                            //去掉这个验证,前面允许创建任务就创建吧 ã€EditBy shaocx,2022-05-15】
                            /*
                            var isAllow = IsAllowCreateTaskForInStore(edm, ref errMsg);
                                if (!isAllow)
                                {
                                    return FunRetEntity.Fail(errMsg);
                                }
                                //*/
                            break;
                    }
                    using (var trans = edm.Database.BeginTransaction())
                    {
                        try
                        {
                            Task_Main mainTask = new Task_Main();
                            mainTask.IsVirtual = false;//非虚拟入库
                            mainTask.TaskNo = TaskNoHelper.GenerateTaskNo("TR");
                            mainTask.TaskName = "空托转运";
                            #region èŽ·å–ä»»åŠ¡èµ·ç‚¹
                            //起点
                            var realSourcePlace = "";
                            Base_Station sourcePlace = null;
                            if (flag == AddTransferTaskEnum.立体库到1014位置)
                            {//4:立体库到1014位置
                                var srmStore = MyExtendHelper.FindStoreForEmptySalverTo1014(edm, ref errMsg);
                                if (srmStore == null)
                                {
                                    return FunRetEntity.Fail(errMsg);
                                }
                                store = ClassHelper.RotationMapping<V_AllStore, V_Store>(srmStore);
                                sourcePlace = StationHandler.GetPlaceByPlaceId(store.StationId, edm);
                                realSourcePlace = sourcePlace.SrmStationCode;
                                //记录区域 [EditBy shaocx,2022-05-02]
                                var device = BusinessHelper.GetSrmDeviceByPlaceNo(sourcePlace.SrmStationCode);
                                mainTask.Area = ((int)device).ToString();
                            }
                            else if (flag == AddTransferTaskEnum.位置1014到1020)
                            {//5:位置1014到1020
                                sourcePlace = StationHandler.GetPlaceByPlaceId(store.StationId, edm);
                                realSourcePlace = sourcePlace.RgvStationCode;
                            }
                            else
                            {
                                var getSourcePlaceResult = StationHandler.GetTargtStationForAddTransferTask(edm, rgvEDevice, ref errMsg, ref sourcePlace);
                                if (getSourcePlaceResult.result == false) return getSourcePlaceResult;
                                realSourcePlace = sourcePlace.RgvStationCode;
                            }
                            mainTask.SourcePlace = sourcePlace.Id;
                            mainTask.RealSourcePlace = realSourcePlace;
                            #endregion
                            #region èŽ·å–ä¸­é—´ç‚¹å’Œç›®æ ‡ç‚¹
                            Base_Station toPlace = null;
                            Base_Station midPlace = null;
                            var getMidToPlaceResult = MainTaskHandler.GetMidToPlaceForAddTransferTask(sourcePlace, flag, edm, ref errMsg, ref toPlace, ref midPlace, ref mainTask);
                            if (getMidToPlaceResult.result == false) return getMidToPlaceResult;
                            #endregion
                            SetTaskTypeStateAndInOutFlagForMainTask(flag, ref mainTask);
                            Base_Salver salver = null;
                            Base_Material newMaterial = null;
                            if (store == null)
                            {//新建物料,新建托盘,新建绑定关系
                                //绑定托盘和站点的关系
                                //新建物料
                                var salverStackCount = GetSalverStackCountForBackToStore();
                                if (salverStackCount == 0)
                                {
                                    //报错
                                    return FunRetEntity.Fail("根据1009站点的光电获取返回立体库的托盘数为0");
                                }
                                newMaterial = MaterialHandler.CreateEmptySlaverMaterial(edm, "空托盘转运时创建", salverStackCount);
                                //判断托盘是否存在,如果存在,就不需要重建,如果不存在,就新建托盘
                                salver = SalverHandler.CreateVirtualSalver(edm, "空托盘转运");
                                if (!string.IsNullOrEmpty(errMsg))
                                {
                                    return FunRetEntity.Fail(errMsg);
                                }
                                //绑定托盘和物料的关系
                                Salver_Material_Handler.CreateCvIRelation(edm, user.Name, salver, newMaterial, remark);
                                //绑定托盘和站点的关系
                                Salver_Station_Handler.CreateCvPRelation(edm, user.Name, salver, sourcePlace, Salver_V_Station_StateEnum.入库绑定, remark);
                            }
                            else
                            {
                                salver = SalverHandler.GetSalveById(edm, store.SalverId);
                                newMaterial = MaterialHandler.GetMaterialById(edm, store.MaterialId);
                            }
                            mainTask.SalverId = salver.Id;
                            mainTask.SalverCode = salver.SalverCode;
                            mainTask.MaterialId = newMaterial.Id;
                            //物料信息
                            MainTaskHandler.SetMaterialForMainTask(ref mainTask, newMaterial);
                            //序列号和订货号赋值  [Editby shaocx,2022-04-05]
                            mainTask.SerialNumber = "";
                            mainTask.OrderNo = "";
                            mainTask.CreateTime = mainTask.ModifyTime = mainTask.StartTime = DateTime.Now;
                            mainTask.CreateBy = mainTask.ModifyBy = user.Name;
                            mainTask.CreateId = mainTask.ModifyId = user.ID;
                            mainTask.OperationRemark = "添加";
                            string taskSequenceGuid = "";
                            mainTask.TaskSequence = MainTaskHandler.GenerateTaskSequence(edm, ref taskSequenceGuid);//生成任务序列号
                            mainTask.TaskSequenceGuid = taskSequenceGuid;
                            edm.Task_Main.Add(mainTask);
                            edm.SaveChanges();//保存一次,此时mainTask的自增ID就有值了
                            var plcTaskNo = BusinessHelper.CreatePlcTaskIdForSrmTask();
                            var createTime = DateTime.Now;
                            if (flag == AddTransferTaskEnum.位置1011转移到1014位置)
                            {//转移到1014位置
                                //创建RGV任务
                                FunRetEntity fre = PartTaskHandler.CreatePartTask(createTime, plcTaskNo, edm, EDeviceType.RGV, user.Name, 1, DeviceTaskTypeEnum.空托转运到拆盘机入口, mainTask, salver, sourcePlace, toPlace, remark);
                                if (fre.result == false)
                                {
                                    throw new Exception(fr.resMsg);
                                }
                            }
                            else if (flag == AddTransferTaskEnum.位置1011转移到立体库中)
                            {//转移到立体库中
                                //创建RGV任务
                                FunRetEntity fre = PartTaskHandler.CreatePartTask(createTime, plcTaskNo, edm, EDeviceType.RGV, user.Name, 1, DeviceTaskTypeEnum.空托转运到立体库, mainTask, salver, sourcePlace, midPlace, remark);
                                if (fre.result == false)
                                {
                                    throw new Exception(fr.resMsg);
                                }
                                //创建堆垛机任务
                                fre = PartTaskHandler.CreatePartTask(createTime, plcTaskNo, edm, EDeviceType.堆垛机, user.Name, 2, DeviceTaskTypeEnum.空托转运到立体库, mainTask, salver, midPlace, toPlace, remark);
                                if (fre.result == false)
                                {
                                    throw new Exception(fr.resMsg);
                                }
                            }
                            else if (flag == AddTransferTaskEnum.位置1009到位置1011)
                            {// 3:1009到1011
                                //创建RGV任务
                                FunRetEntity fre = PartTaskHandler.CreatePartTask(createTime, plcTaskNo, edm, EDeviceType.RGV, user.Name, 1, DeviceTaskTypeEnum.空托缓存位转运, mainTask, salver, sourcePlace, toPlace, remark);
                                if (fre.result == false)
                                {
                                    throw new Exception(fr.resMsg);
                                }
                            }
                            else if (flag == AddTransferTaskEnum.立体库到1014位置)
                            {//4:立体库到1014位置
                                //创建堆垛机任务
                                FunRetEntity fre = PartTaskHandler.CreatePartTask(createTime, plcTaskNo, edm, EDeviceType.堆垛机, user.Name, 1, DeviceTaskTypeEnum.立库空托到拆盘机入口, mainTask, salver, sourcePlace, midPlace, remark);
                                if (fre.result == false)
                                {
                                    throw new Exception(fr.resMsg);
                                }
                                //创建RGV任务
                                fre = PartTaskHandler.CreatePartTask(createTime, plcTaskNo, edm, EDeviceType.RGV, user.Name, 2, DeviceTaskTypeEnum.立库空托到拆盘机入口, mainTask, salver, midPlace, toPlace, remark);
                                if (fre.result == false)
                                {
                                    throw new Exception(fr.resMsg);
                                }
                            }
                            else if (flag == AddTransferTaskEnum.位置1014到1020)
                            {//5:1014到1020位置
                                //创建RGV任务
                                FunRetEntity fre = PartTaskHandler.CreatePartTask(createTime, plcTaskNo, edm, EDeviceType.RGV, user.Name, 1, DeviceTaskTypeEnum.拆盘机入口到拆盘机, mainTask, salver, sourcePlace, toPlace, remark);
                                if (fre.result == false)
                                {
                                    throw new Exception(fr.resMsg);
                                }
                            }
                            edm.SaveChanges();//第二次保存
                            trans.Commit();//事务提交
                        }
                        catch (Exception ex)
                        {
                            trans.Rollback();
                            throw ex;
                        }
                    }
                    return FunRetEntity.Success("成功");
                }
            }
            catch (System.Exception ex)
            {
                throw ex;
            }
        }
        private static void SetTaskTypeStateAndInOutFlagForMainTask(AddTransferTaskEnum flag, ref Task_Main mainTask)
        {
            var _InOutFlag = default(MainInOutFlagEnum);
            var _taskType = default(MainTaskTypeEnum);
            var _taskState = default(MainTaskStatusEnum);
            switch (flag)
            {
                case AddTransferTaskEnum.立体库到1014位置:
                    _taskType = MainTaskTypeEnum.自动出库;
                    _taskState = MainTaskStatusEnum.出库中;
                    _InOutFlag = MainInOutFlagEnum.出库;
                    break;
                case AddTransferTaskEnum.位置1009到位置1011:
                case AddTransferTaskEnum.位置1011转移到1014位置:
                case AddTransferTaskEnum.位置1014到1020:
                    _taskType = MainTaskTypeEnum.空托转运;
                    _taskState = MainTaskStatusEnum.待转运;
                    _InOutFlag = MainInOutFlagEnum.转运;
                    break;
                case AddTransferTaskEnum.位置1011转移到立体库中:
                    _taskType = MainTaskTypeEnum.自动入库;
                    _taskState = MainTaskStatusEnum.入库中;
                    _InOutFlag = MainInOutFlagEnum.入库;
                    break;
                default:
                    throw new Exception("不支持的类型");
            }
            mainTask.TaskType = Convert.ToInt32(_taskType);
            mainTask.TaskTypeName = _taskType.ToString();
            mainTask.TaskState = Convert.ToInt32(_taskState);
            mainTask.TaskStateName = _taskState.ToString();
            mainTask.InOutFlag = (int)_InOutFlag;
            mainTask.InOutFlagName = _InOutFlag.ToString();
        }
        /// <summary>
        /// æ˜¯å¦å…è®¸ç»™1014发送目标点是1014的任务
        /// </summary>
        /// <param name="context"></param>
@@ -889,58 +712,7 @@
        public static FunRetEntity DoHandler(DbModel context, V_AllStore store, EDevice rgvStationCode)
        {
            try
            {
                SysUser user = new SysUser()
                {
                    ID = 0,
                    Name = SysGloble.WCSSystem
                };
                if (rgvStationCode == EDevice.空托缓存1011)
                {
                    //判断1014是否有空位
                    var queryRgvStationCode = ((int)EDevice.拆盘机入口1014).ToString();
                    V_AllStore my1014Store = null;
                    var isAllow = MyExtendHelper.IsAllowSendTaskToPlace1014(context, queryRgvStationCode, ref my1014Store);
                    if (isAllow)
                    {
                        return AddTransferTask(AddTransferTaskEnum.位置1011转移到1014位置, rgvStationCode, user, store);
                    }
                    else
                    {
                        //寻找立体库是否有库存
                        return AddTransferTask(AddTransferTaskEnum.位置1011转移到立体库中, rgvStationCode, user, store);
                    }
                    //*/
                    //var isGD_HasCatogryForRgvStattion = IsGD_HasCatogryForRgvStattion(queryRgvStationCode);
                    //var store_1014_count = context.V_AllStore.Where(x => x.RgvStationCode == queryRgvStationCode).Count();
                    //if (store_1014_count > 0 || isGD_HasCatogryForRgvStattion)
                    //{
                    //}
                    //else
                    //{//1014无货,创建任务
                    //    return MainTaskHandler.AddTransferTask(AddTransferTaskEnum.转移到1014位置, rgvStationCode, user, store);
                    //}
                }
                else if (rgvStationCode == EDevice.空托缓存1009)
                {
                    return AddTransferTask(AddTransferTaskEnum.位置1009到位置1011, rgvStationCode, user, store);
                }
                else if (rgvStationCode == EDevice.拆盘机入口1014)
                {//拆盘机入口1014处新建从立体库叫托盘任务
                    return AddTransferTask(AddTransferTaskEnum.立体库到1014位置, rgvStationCode, user, store);
                }
                else if (rgvStationCode == EDevice.拆盘机1020)
                {// ä»Ž1014到1020
                    return AddTransferTask(AddTransferTaskEnum.位置1014到1020, rgvStationCode, user, store);
                }
                return null;
            }
            catch (Exception ex)
            {
                return FunRetEntity.Fail("新增空托盘转运任务异常:" + ex.Message);
            }
        }
        /// <summary>
CC/iWareCC_ASRS/ThreadService/01_BZ01¹¤Î»£¨Çå»Ò£¬Ï´°åºó¹¤Î»£©/DataProcess_BZ01.cs
@@ -37,7 +37,7 @@
                SystemWarningMsg._lbl_alert_DataProcess_BZ01 = string.Empty;
                try
                {
                    if (SystemValue.isAllowRuning_DataProcess_BZ01 && SystemValue.isStartedModel)
                    if ( SystemValue.isStartedModel)//SystemValue.isAllowRuning_DataProcess_BZ01 &&
                    {
                        if (FormCC.IsAllowRunOutMode == true)
                        {
CC/iWareCC_ASRS/ThreadService/02_BZ39¹¤Î»£¨²¹°åºó¹¤Î»£©/DataProcess_RobotBuffer_ModeChange.cs
@@ -33,8 +33,8 @@
                Thread.Sleep(2000);//休眠2秒,将休眠写到前面,是为了下面的continue方法执行后不显示错误信息的提示!!!【EditBy shaocx,2022-05-24】
                SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_ModeChange = string.Empty;
                try
                {
                    if (SystemValue.isAllowRuning_DataProcess_RobotBuffer_ModeChange && SystemValue.isStartedModel)
                {//SystemValue.isAllowRuning_DataProcess_RobotBuffer_ModeChange &&
                    if ( SystemValue.isStartedModel)
                    {
                        var rgvLocation = StationLocationEnum.BZ39.ToString();
                        if (FormCC.IsAllowRunOutMode)
CC/iWareCC_ASRS/ThreadService/02_BZ39¹¤Î»£¨²¹°åºó¹¤Î»£©/Inbound/1¡¢DataProcess_BZ39.cs
@@ -34,7 +34,7 @@
                SystemWarningMsg._lbl_alert_DataProcess_BZ39 = string.Empty;
                try
                {
                    if (SystemValue.isAllowRuning_DataProcess_BZ39 && SystemValue.isStartedModel)
                    if ( SystemValue.isStartedModel)//SystemValue.isAllowRuning_DataProcess_BZ39 &&
                    {
                        var rgvLocation = StationLocationEnum.BZ39.ToString();
                        /*
@@ -55,15 +55,15 @@
                            using (WmsDBModel wmsDB = new WmsDBModel())
                            {
                                //不再拦截 
                                /*
                                //要是有已下发的任务,就不要执行
                                var isValidate = TaskHandler.ValidateIssueTaskForRobotBuffer(wmsDB);
                                var isValidate = TaskHandler.ValidateIssueTaskForRobotBuffer(wmsDB,upiCode);
                                if (!isValidate)
                                {
                                    SystemWarningMsg._lbl_alert_DataProcess_BZ39 = $"{rgvLocation.ToString()}-有‘已下发’的任务,不能处理,此次循环结束";
                                    continue;
                                }
                                //*/
                                //
                                var upiObj = wmsDB.mes_batchOrderUPI_new.Where(x => x.UPI == upiCode).FirstOrDefault();
                                if (upiObj == null)
                                {
@@ -112,20 +112,6 @@
                                using (StationServiceClient client = new StationServiceClient())
                                {
                                    //不再拦截
                                    /*
                                    //首先先清理
                                    var res = await client.InboundFinishConfirmAsync((int)EDevice.Station, false, rgvLocation);
                                    if (!res.result)
                                    {
                                        SystemWarningMsg._lbl_alert_DataProcess_BZ39 = $"{rgvLocation.ToString()}-下发入库任务 å¤±è´¥,InboundFinishConfirmAsync è¿”回:{res.resMsg}";
                                        continue;
                                    }
                                    else
                                    {
                                        Log4NetHelper.WriteInfoLog(logType, $"{rgvLocation.ToString()}-下发入库任务 æˆåŠŸ,InboundFinishConfirmAsync,参数: ç«™ç‚¹{rgvLocation}");
                                    }
                                    //*/
                                    var res = await client.WriteInStoreTaskInfoAsync((int)EDevice.Station, rgvLocation, place.PlaceCode,
                                       (short)upiObj.Length,
CC/iWareCC_ASRS/ThreadService/02_BZ39¹¤Î»£¨²¹°åºó¹¤Î»£©/Inbound/2¡¢DataProcess_RobotBuffer_FinishTask.cs
@@ -34,7 +34,7 @@
                SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_FinishTask = string.Empty;
                try
                {
                    if (SystemValue.isAllowRuning_DataProcess_RobotBuffer_FinishTask && SystemValue.isStartedModel)
                    if ( SystemValue.isStartedModel)//SystemValue.isAllowRuning_DataProcess_RobotBuffer_FinishTask &&
                    {
                        var rgvLocation = StationLocationEnum.BZ39.ToString();
                        var obj = FormCC.stationView.R_StationForReadCommList.Where(x => x.StationCode == rgvLocation.ToString()).FirstOrDefault();
@@ -62,11 +62,23 @@
                                var task = wmsDB.wms_rbline_task.Where(x =>
                                 x.TaskNo == obj.R_Inbound_TaskID.ToString()
                                && x.RbTaskType == (int)RbTaskTypeEnum.入库任务
                                && x.TaskStatus == (int)TaskStatusEnum.已下发).FirstOrDefault();
                                ).OrderByDescending(x=>x.Id).FirstOrDefault();
                                if (task == null)
                                {
                                    SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_FinishTask = $"{rgvLocation.ToString()},根据 R_InboundNumber:{obj.R_InboundNumber}没有找到已下发的任务 ";
                                    continue;
                                }
                                else
                                {
                                    if (task.TaskStatus == (int)TaskStatusEnum.已完成)
                                    {
                                        using (StationServiceClient client = new StationServiceClient())
                                        {
                                            var res = await client.InboundFinishConfirmAsync((int)EDevice.Station, true, rgvLocation);
                                        }
                                        continue;
                                    }
                                }
                                var upiCode = task.UPI;
@@ -125,6 +137,18 @@
                                wmsDB.SaveChanges();
                            }
                        }
                        else
                        {
                            //不再拦截
                            //首先先清理
                            using (StationServiceClient client = new StationServiceClient())
                            {
                                var res = await client.InboundFinishConfirmAsync((int)EDevice.Station, false, rgvLocation);
                            }
                        }
                    }
                }
                catch (Exception ex)
CC/iWareCC_ASRS/ThreadService/02_BZ39¹¤Î»£¨²¹°åºó¹¤Î»£©/Outbound/1¡¢DataProcess_RobotBuffer_AutoQiTaoOutbound.cs
@@ -26,8 +26,8 @@
                Thread.Sleep(2000);//休眠2秒,将休眠写到前面,是为了下面的continue方法执行后不显示错误信息的提示!!!【EditBy shaocx,2022-05-24】
                SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_AutoQiTaoOutbound = string.Empty;
                try
                {
                    if (SystemValue.isAllowRuning_DataProcess_RobotBuffer_AutoQiTaoOutbound && SystemValue.isStartedModel)
                {//SystemValue.isAllowRuning_DataProcess_RobotBuffer_AutoQiTaoOutbound &&
                    if (SystemValue.isStartedModel)
                    {
                        using (WmsDBModel wmsDB = new WmsDBModel())
CC/iWareCC_ASRS/ThreadService/02_BZ39¹¤Î»£¨²¹°åºó¹¤Î»£©/Outbound/2¡¢DataProcess_RobotBuffer_IssueOutboundTask.cs
@@ -34,8 +34,8 @@
                Thread.Sleep(1000);//休眠2秒,将休眠写到前面,是为了下面的continue方法执行后不显示错误信息的提示!!!【EditBy shaocx,2022-05-24】
                SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_IssueOutboundTask = string.Empty;
                try
                {
                    if (SystemValue.isAllowRuning_DataProcess_RobotBuffer_IssueOutboundTask && SystemValue.isStartedModel)
                {//SystemValue.isAllowRuning_DataProcess_RobotBuffer_IssueOutboundTask &&
                    if ( SystemValue.isStartedModel)
                    {
                        var rgvLocation = StationLocationEnum.BZ39.ToString();
                        /*
@@ -46,7 +46,7 @@
                        using (WmsDBModel wmsDB = new WmsDBModel())
                        {
                            //要是有已下发的任务,就不要执行
                            var isValidate = TaskHandler.ValidateIssueTaskForRobotBuffer(wmsDB);
                            var isValidate = TaskHandler.ValidateIssueOutTaskForRobotBuffer(wmsDB);
                            if (!isValidate)
                            {
                                SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_IssueOutboundTask = $"{rgvLocation.ToString()}-有‘已下发’的任务,不能处理,此次循环结束";
@@ -98,18 +98,18 @@
                            using (StationServiceClient client = new StationServiceClient())
                            {
                                //首先要清理
                                var res = await client.OutboundFinishConfirmAsync((int)EDevice.Station, false, rgvLocation);
                                if (!res.result)
                                {
                                    SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_FinishTaskForOutbound = $"{rgvLocation.ToString()}-下发出库任务 å¤±è´¥,OutboundFinishConfirmAsync è¿”回:{res.resMsg}";
                                    continue;
                                }
                                else
                                {
                                    Log4NetHelper.WriteInfoLog(logType, $"{rgvLocation.ToString()}-下发出库任务 æˆåŠŸ,OutboundFinishConfirmAsync,参数: ç«™ç‚¹{rgvLocation}");
                                }
                                //var res = await client.OutboundFinishConfirmAsync((int)EDevice.Station, false, rgvLocation);
                                //if (!res.result)
                                //{
                                //    SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_FinishTaskForOutbound = $"{rgvLocation.ToString()}-下发出库任务 å¤±è´¥,OutboundFinishConfirmAsync è¿”回:{res.resMsg}";
                                //    continue;
                                //}
                                //else
                                //{
                                //    Log4NetHelper.WriteInfoLog(logType, $"{rgvLocation.ToString()}-下发出库任务 æˆåŠŸ,OutboundFinishConfirmAsync,参数: ç«™ç‚¹{rgvLocation}");
                                //}
                                res = await client.WriteOutStoreTaskInfoAsync((int)EDevice.Station, rgvLocation, doTask.PlaceCode, Convert.ToInt32(doTask.TaskNo));
                              var  res = await client.WriteOutStoreTaskInfoAsync((int)EDevice.Station, rgvLocation, doTask.PlaceCode, Convert.ToInt32(doTask.TaskNo));
                                if (!res.result)
                                {
                                    SystemWarningMsg._lbl_alert_DataProcess_BZ39 = $"{rgvLocation.ToString()}-下发出库任务 å¤±è´¥,WriteOutStoreTaskInfoAsync è¿”回:{res.resMsg}";
CC/iWareCC_ASRS/ThreadService/02_BZ39¹¤Î»£¨²¹°åºó¹¤Î»£©/Outbound/3¡¢DataProcess_RobotBuffer_FinishTaskForOutbound.cs
@@ -25,8 +25,8 @@
                Thread.Sleep(500);//休眠2秒,将休眠写到前面,是为了下面的continue方法执行后不显示错误信息的提示!!!【EditBy shaocx,2022-05-24】
                SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_FinishTaskForOutbound = string.Empty;
                try
                {
                    if (SystemValue.isAllowRuning_DataProcess_RobotBuffer_FinishTaskForOutbound && SystemValue.isStartedModel)
                {//SystemValue.isAllowRuning_DataProcess_RobotBuffer_FinishTaskForOutbound &&
                    if (SystemValue.isStartedModel)
                    {
                        var rgvLocation = StationLocationEnum.BZ39.ToString();
                        var obj = FormCC.stationView.R_StationForReadCommList.Where(x => x.StationCode == rgvLocation.ToString()).FirstOrDefault();
@@ -53,11 +53,23 @@
                                var task = wmsDB.wms_rbline_task.Where(x =>
                                 x.TaskNo == obj.R_Outbound_TaskID.ToString()
                                && x.RbTaskType == (int)RbTaskTypeEnum.出库任务
                                && x.TaskStatus == (int)TaskStatusEnum.已下发).FirstOrDefault();
                                ).OrderByDescending(x => x.Id).FirstOrDefault();
                                if (task == null)
                                {
                                    SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_FinishTaskForOutbound = $"{rgvLocation.ToString()},根据 R_OutboundNumber:{obj.R_OutboundNumber}没有找到已下发的任务 ";
                                    continue;
                                }
                                else
                                {
                                    if (task.TaskStatus == (int)TaskStatusEnum.已完成)
                                    {
                                        //using (StationServiceClient client = new StationServiceClient())
                                        //{
                                        //    var res = await client.OutboundFinishConfirmAsync((int)EDevice.Station, true, rgvLocation);
                                        //}
                                        continue;
                                    }
                                }
                                var upiCode = task.UPI;
@@ -96,6 +108,10 @@
                                wmsDB.SaveChanges();
                            }
                        }
                        else
                        {
                        }
                    }
                }
                catch (Exception ex)
CC/iWareCC_ASRS/ThreadService/04_BZ21£¨°áÔËÕû¶â»úÆ÷ÈË£©/DataProcess_BZ21.cs
@@ -1,4 +1,5 @@
using Admin.NET.Application;
using iWareCC.Common.Helper;
using iWareCC.StationService;
using iWareCommon.Common.Globle;
using iWareCommon.Utils;
@@ -82,48 +83,48 @@
                                    SystemWarningMsg._lbl_alert_DataProcess_BZ21 = $"{rgvLocation.ToString()},根据UPI:{result}没有找到对象 ";
                                    continue;
                                }
                                string upi = "LS070700101B0001GS";
                                //调用出纸机接口
                                var res =new HTTPService("http://172.17.1.22:44374/api/LuLi/").getContent<Respone>("cartons-machine?PackageCode="+upi, 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 = 0;
                                        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 = 0;
                                        papercut.PushStatus = (int)PushStatusEnum.PushFail;
                                        wmsDB.mes_push_papercut.Add(papercut);
                                    }
                                    continue;
                                }
                                //string upi = "LS070700101B0001GS";
                                ////调用出纸机接口
                                //var res =new HTTPService("http://172.17.1.22:44374/api/LuLi/").getContent<Respone>("cartons-machine?PackageCode="+upi, 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 = 0;
                                //        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 = 0;
                                //        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)
@@ -191,6 +192,7 @@
                                print.PrintNum= 0;
                                print.PrintStatus = (int)PrintStatuEnum.未打印;
                                print.IsAllowPrint= true;
                                print.CreateTime = print.UpdateTime = DateTime.Now;
                                wmsDB.wms_record_print.Add(print);
                                wms_record_print printtwo = print;
                                printtwo.Id= Yitter.IdGenerator.YitIdHelper.NextId();
@@ -203,7 +205,7 @@
                                //处理表  mes_order_gather
                                var errmsg = "";
                                var package = wmsDB.mes_package_gather.Where(x => x.PackageCode == upiObj.PackageCode).FirstOrDefault();
                                var resultAlert = DataProcess_ValidateQiTao.HandlerOrderGather(wmsDB, package, "", "", out errmsg);
                                var resultAlert = MyExtendHelper.HandlerOrderGather(wmsDB, package, "", "", out errmsg);
                                if (resultAlert == false)
                                {
                                    SystemWarningMsg._lbl_alert_DataProcess_BZ21 = errmsg;
CC/iWareCC_ASRS/ThreadService/05_BZ30(ÆëÌ×ÑéÖ¤)/DataProcess_ValidateQiTao.cs
@@ -105,7 +105,7 @@
                            //处理表  mes_order_gather
                            var errmsg = "";
                            var result = HandlerOrderGather(wmsDB, package, qitaoValue, _UnlinePerson, out errmsg);
                            var result = MyExtendHelper.HandlerOrderGather(wmsDB, package, qitaoValue, _UnlinePerson, out errmsg);
                            if (result == false)
                            {
                                SystemWarningMsg._lbl_Alert_DataProcess_ValidateQiTao = errmsg;
@@ -136,86 +136,6 @@
            }
        }
        /// <summary>
        /// å¤„理 è¡¨ mes_order_gather
        /// </summary>
        /// <param name="wmsDB"></param>
        /// <param name="package"></param>
        /// <param name="qitaoValue"></param>
        /// <param name="_UnlinePerson"></param>
        /// <param name="errMsg"></param>
        /// <returns></returns>
        public static bool HandlerOrderGather(WmsDBModel wmsDB, mes_package_gather package, string qitaoValue, string _UnlinePerson, out string errMsg)
        {
            errMsg = "";
            //处理表  mes_order_gather
            var isAddOrder = false;
            var packageList = wmsDB.mes_package_gather.Where(x => x.Info5 == package.Info5).ToList();
            if (packageList == null || packageList?.Count == 0)
            {
                errMsg = $"没有找到生产单号{package.Info5}的汇总数据";
                return false;
            }
            var order = wmsDB.mes_order_gather.Where(x => x.Info5 == package.Info5).FirstOrDefault();
            if (order != null)
            {
            }
            else
            {
                order = new mes_order_gather()
                {
                    Id = Yitter.IdGenerator.YitIdHelper.NextId(),
                    Info5 = package.Info5,
                    OrderId = package.OrderId,
                    PlanNo = package.PlanNo,
                };
                isAddOrder = true;
            }
            order.PackageNum = packageList.Count();
            order.UnLinePackageNum = packageList.Where(x => x.UpiStatus == (int)UpiStatusEnum.已下线).Count();
            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.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();
            if (newLineQueue != null && newLineQueue.Info5 != order.Info5)
            {
                //表示是 åˆ‡æ¢ æ–°è®¢å•了,该订单要更新为 å·²ä¸‹çº¿ã€‚
                order_unLine = true;
            }
            else
            {
                //判断该订单是否已下线
                if (order.PackageNum == order.UnLinePackageNum)
                {
                    order_unLine = true;
                }
            }
            //判断该订单是否已下线
            if (order_unLine)
            {
                order.IsUnline = true;
                order.UnlineTime = DateTime.Now;
                order.UnlinePerson = _UnlinePerson;
            }
            else
            {
                order.IsUnline = false;
            }
            if (isAddOrder)
            {
                wmsDB.mes_order_gather.Add(order);
            }
            return true;
        }
    }
}
CC/iWareSql/DataAccess/TaskHandler.cs
@@ -18,7 +18,28 @@
        /// </summary>
        /// <param name="wmsDB"></param>
        /// <returns></returns>
        public static bool ValidateIssueTaskForRobotBuffer(WmsDBModel.WmsDBModel wmsDB)
        public static bool ValidateIssueTaskForRobotBuffer(WmsDBModel.WmsDBModel wmsDB,string UPI)
        {
            var isExist = wmsDB.wms_rbline_task.Where(x => x.TaskStatus == (int)TaskStatusEnum.已下发
                && (
                  x.RbTaskType == (int)RbTaskTypeEnum.入库任务
                  ||
                   x.RbTaskType == (int)RbTaskTypeEnum.出库任务
                )&&x.UPI== UPI
              ).ToList();
            if (isExist?.Count() > 0)
            {
                return false;
            }
            return true;
        }
        /// <summary>
        /// éªŒè¯ æœºå™¨äººç¼“存岛是否存在已下发的任务
        /// </summary>
        /// <param name="wmsDB"></param>
        /// <returns></returns>
        public static bool ValidateIssueOutTaskForRobotBuffer(WmsDBModel.WmsDBModel wmsDB)
        {
            var isExist = wmsDB.wms_rbline_task.Where(x => x.TaskStatus == (int)TaskStatusEnum.已下发
                && (
@@ -34,7 +55,6 @@
            }
            return true;
        }
        /// <summary>
        /// éªŒè¯ ç æ¿æ˜¯å¦æœ‰æ‰§è¡Œä¸­ä»»åŠ¡
        /// </summary>
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOperationTask/Dto/UnlineForNGPackageInput.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
using Admin.NET.Core;
using System.ComponentModel.DataAnnotations;
namespace Admin.NET.Application;
public class UnlineForNGPackageInput
{
    /// <summary>
    /// åŒ…装号
    /// </summary>
    public virtual string PackageCode { get; set; }
    /// <summary>
    /// NG原因
    /// </summary>
    public virtual string Reason { get; set; }
}
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOperationTask/WmsOperationTaskService.cs
@@ -199,6 +199,51 @@
    }
    /// <summary>
    /// NG包下线
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [HttpPost]
    [ApiDescriptionSettings(Name = "UnlineForNGPackage")]
    [Description("WmsOperationTask/UnlineForNGPackage")]
    public async Task UnlineForNGPackage(UnlineForNGPackageInput input)
    {
        //if (input == null)
        //{
        //    throw Oops.Oh("参数不能为空");
        //}
        //if (string.IsNullOrEmpty(input.PackageCode))
        //{
        //    throw Oops.Oh("包号不能为空");
        //}
        //if (string.IsNullOrEmpty(input.Reason))
        //{
        //    throw Oops.Oh("原因不能为空");
        //}
        //List<WmsStockQuan> updateQuanList = new List<WmsStockQuan>();
        //foreach (var item in input.PackageCodeList)
        //{
        //    var quanList = await _wmsStockQuanRep.AsQueryable().Where(x => x.PackageCode == item).ToListAsync();
        //    var isExist = quanList.Where(x => x.StockStatus == StockStatusEnum.齐包待出库).Count();
        //    if (isExist > 0)
        //    {
        //        throw Oops.Oh($"包{item}中其中有板状态是'{StockStatusEnum.齐包待出库.ToString()}',不允许强制出库");
        //    }
        //    æ›´æ–°çŠ¶æ€
        //    foreach (var quan in quanList)
        //    {
        //        quan.StockStatus = StockStatusEnum.人工强制待出库;
        //        quan.UpdateTime = DateTime.Now;
        //        quan.OperReason = "人工强制待出库";
        //    }
        //    updateQuanList.AddRange(quanList);
        //}
        //await _wmsStockQuanRep.UpdateRangeAsync(updateQuanList);
    }
}
SDA/iWareSda/App.config
@@ -4,8 +4,8 @@
    <!-- è¯­è¨€é…ç½® é…ç½®  0 ä¸­æ–‡ 1 è‹±æ–‡ -->
    <add key="LanguageFlg" value="0"/>
    <!-- ç«™ç‚¹çš„PLC é…ç½® -->
      <!--<add key="Station_Address" value="172.17.51.202"/> -->
     <add key="Station_Address" value="192.168.10.100"/>
      <add key="Station_Address" value="172.17.51.202"/>
     <!--<add key="Station_Address" value="192.168.10.100"/>-->
    <add key="Station_Rack" value="0"/>
    <add key="Station_Slot" value="1"/>
    <add key="Station_Port" value="102"/>
SDA/iWareSda/Devices/4-Station/StationModel/StationEntity.cs
@@ -278,7 +278,8 @@
                    return false;
                }
                if (value)
                {
                b2 = this.plcService.WriteValuePoint(stationObj.W_ReqOut, false, view_stationObj.W_ReqOut);
                if (!b2.result)
                {
@@ -300,6 +301,9 @@
                        stationObj.W_Outbound_TaskID);
                    return false;
                }
                }
                return true;