Esempio n. 1
0
        /// <summary>
        /// 发送铺线任务
        /// </summary>
        /// <returns></returns>
        public bool SendInitDistributeTask()
        {
            bool isSuccess = false;

            try
            {
                using (GeelyPtlEntities dbContext = new GeelyPtlEntities())
                {
                    List <DST_DistributeTask> distributeTasks   = null;
                    DistributeReqTypes        distributeReqType = DistributeReqTypes.PickAreaInit;

                    //获取未响应的铺线任务
                    if (distributeReqType == DistributeReqTypes.PickAreaInit) //拣料区铺线
                    {
                        distributeTasks = dbContext.DST_DistributeTasks.
                                          Where(t => !t.isResponse && t.DistributeReqTypes == DistributeReqTypes.PickAreaInit && t.sendErrorCount < 5).
                                          OrderBy(t => t.reqTime).ToList();
                    }

                    //if (distributeTasks.Count == 0)
                    //{
                    //    distributeReqType = DistributeReqTypes.ProductAreaInit;

                    //    if (distributeReqType == DistributeReqTypes.ProductAreaInit) //生产线边铺线
                    //    {
                    //        distributeTasks = dbContext.DST_DistributeTasks.
                    //            Where(t => !t.isResponse && t.DistributeReqTypes == DistributeReqTypes.ProductAreaInit && t.sendErrorCount < 5).
                    //            OrderBy(t => t.reqTime).ToList();
                    //    }
                    //}

                    if (distributeTasks.Count == 0)
                    {
                        return(false);
                    }

                    //已经设置成运输开始的寻车任务ID集合
                    //List<long> listNeedBlinkFndTask = new List<long>();

                    //发送信息
                    string sendInfo = "";
                    //AGV服务地址
                    string sURL = ptlToAgvServiceUrl + "/genAgvSchedulingTask";
                    //HTTP响应结果
                    string result = "";

                    foreach (DST_DistributeTask distributeTask in distributeTasks)
                    {
                        //绑定配送任务
                        DST_DistributeTaskDto distributeTaskDto = new DST_DistributeTaskDto();
                        distributeTaskDto.reqCode          = distributeTask.reqCode;
                        distributeTaskDto.reqTime          = distributeTask.reqTime.ToString("yyyy-MM-dd HH:mm:ss");
                        distributeTaskDto.clientCode       = distributeTask.clientCode;
                        distributeTaskDto.tokenCode        = distributeTask.tokenCode;
                        distributeTaskDto.taskTyp          = distributeTask.taskTyp;
                        distributeTaskDto.userCallCode     = distributeTask.userCallCode;
                        distributeTaskDto.userCallCodePath = new List <string>();
                        distributeTaskDto.userCallCodePath.AddRange(new string[] { distributeTask.startPosition, distributeTask.endPosition });
                        distributeTaskDto.podCode   = distributeTask.podCode;
                        distributeTaskDto.robotCode = distributeTask.robotCode;
                        distributeTaskDto.taskCode  = distributeTask.taskCode;
                        distributeTaskDto.data      = distributeTask.data;

                        //发送信息
                        sendInfo = JsonConvert.SerializeObject(distributeTaskDto);
                        //发送HTTP请求,并返回响应结果
                        result = HttpService.HttpPost(sURL, sendInfo);

                        if (string.IsNullOrEmpty(result))
                        {
                            isSuccess = false;
                            distributeTask.sendErrorCount = distributeTask.sendErrorCount + 1;
                        }
                        else
                        {
                            //实例化HTTP响应结果
                            DST_DistributeTaskResultDto distributeTaskResultDto = JsonConvert.DeserializeObject <DST_DistributeTaskResultDto>(result);
                            if (distributeTaskResultDto == null)
                            {
                                isSuccess = false;
                                distributeTask.sendErrorCount = distributeTask.sendErrorCount + 1;
                            }
                            else
                            {
                                //新增配送任务结果
                                DST_DistributeTaskResult distributeTaskResult = new DST_DistributeTaskResult();
                                distributeTaskResult.code        = distributeTaskResultDto.code;
                                distributeTaskResult.message     = distributeTaskResultDto.message;
                                distributeTaskResult.reqCode     = distributeTaskResultDto.reqCode;
                                distributeTaskResult.data        = distributeTaskResultDto.data;
                                distributeTaskResult.receiveTime = DateTime.Now;

                                dbContext.DST_DistributeTaskResults.Add(distributeTaskResult);

                                //更新配送任务响应值
                                if (distributeTaskResultDto.code.Equals("0"))
                                {
                                    distributeTask.isResponse = true;

                                    //if (distributeTask.DistributeReqTypes == DistributeReqTypes.ProductAreaInit)
                                    //{
                                    //    string sWorkStationCode = distributeTask.startPosition;
                                    //    FND_Task fndTask = dbContext.FND_Tasks.Where(t => t.CFG_WorkStation.Code.Equals(sWorkStationCode)
                                    //        && (t.FindingStatus == FindingStatus.New || t.FindingStatus == FindingStatus.NeedDisplay || t.FindingStatus == FindingStatus.Displaying)
                                    //        && (t.CFG_Cart.CartStatus == CartStatus.NeedToWorkStation || t.CFG_Cart.CartStatus == CartStatus.WaitingToWorkStation)
                                    //        && !listNeedBlinkFndTask.Contains(t.Id)).
                                    //        OrderBy(t => t.BatchCode).ThenByDescending(t => t.FindingStatus).FirstOrDefault();
                                    //    if (fndTask != null)
                                    //    {
                                    //        if (fndTask.FindingStatus == FindingStatus.New)
                                    //        {
                                    //            fndTask.CFG_EmployeeId = 1;
                                    //            fndTask.DisplayTime = DateTime.Now;

                                    //            fndTask.CFG_Cart.CartStatus = CartStatus.WaitingToWorkStation;
                                    //        }
                                    //        fndTask.FindingStatus = FindingStatus.NeedBlink;
                                    //        fndTask.CFG_Cart.CartStatus = CartStatus.InCarriageToWorkStation;

                                    //        listNeedBlinkFndTask.Add(fndTask.Id);
                                    //    }
                                    //}
                                }
                                else
                                {
                                    distributeTask.sendErrorCount = distributeTask.sendErrorCount + 1;
                                }
                            }
                        }
                    }

                    //更新数据库
                    isSuccess = dbContext.SaveChanges() > 0 ? true : false;
                }
            }
            catch (Exception)
            {
                isSuccess = false;
            }
            return(isSuccess);
        }
Esempio n. 2
0
        /// <summary>
        /// 发送拣料区配送任务
        /// </summary>
        /// <returns></returns>
        private bool SendPickAreaDistributeTask()
        {
            bool isSuccess = false;

            try
            {
                using (GeelyPtlEntities dbContext = new GeelyPtlEntities())
                {
                    #region 注释
                    ////获取物料超市已满4辆车的工位
                    //List<string> NoDistributeWorkStationCode = new List<string>();
                    //Hashtable htWorkStation = new Hashtable();

                    //List<CFG_Cart> cfgCarts = dbContext.CFG_Carts.Where(t => (t.CartStatus == CartStatus.ArrivedAtBufferArea
                    //    || t.CartStatus == CartStatus.NeedToWorkStation
                    //    || t.CartStatus == CartStatus.WaitingToWorkStation)
                    //    && t.FND_Tasks.FirstOrDefault(f => f.FindingStatus == FindingStatus.New
                    //        || f.FindingStatus == FindingStatus.NeedDisplay
                    //        || f.FindingStatus == FindingStatus.Displaying) != null).ToList();
                    //foreach (CFG_Cart cfgCart in cfgCarts)
                    //{
                    //    CFG_CartCurrentMaterial firstNotEmptyCfgCartCurrentMaterial = cfgCart.CFG_CartCurrentMaterials
                    //                                                                  .FirstOrDefault(ccm => ccm.AST_CartTaskItemId != null);
                    //    if (firstNotEmptyCfgCartCurrentMaterial != null)
                    //    {
                    //        string sWorkStationCode = firstNotEmptyCfgCartCurrentMaterial.CFG_WorkStation.Code;
                    //        if (!htWorkStation.Contains(sWorkStationCode))
                    //        {
                    //            htWorkStation.Add(sWorkStationCode, 1);
                    //        }
                    //        else
                    //        {
                    //            htWorkStation[sWorkStationCode] = Convert.ToInt32(htWorkStation[sWorkStationCode]) + 1;
                    //            if (Convert.ToInt32(htWorkStation[sWorkStationCode]) > 2)
                    //            {
                    //                NoDistributeWorkStationCode.Add(sWorkStationCode);
                    //            }
                    //        }
                    //    }
                    //}

                    //获取未响应的配送任务
                    //List<DST_DistributeTask> distributeTasks = dbContext.DST_DistributeTasks.
                    //        Where(t => !t.isResponse &&
                    //            (t.DistributeReqTypes == DistributeReqTypes.PickAreaDistribute
                    //            || t.DistributeReqTypes == DistributeReqTypes.NullCartAreaDistribute)
                    //            && !NoDistributeWorkStationCode.Contains(t.endPosition)
                    //            && t.sendErrorCount < 5).
                    //        OrderBy(t => t.reqTime).ToList();
                    #endregion

                    List <DST_DistributeTask> distributeTasks = dbContext.DST_DistributeTasks.
                                                                Where(t => !t.isResponse &&
                                                                      (t.DistributeReqTypes == DistributeReqTypes.PickAreaDistribute ||
                                                                       t.DistributeReqTypes == DistributeReqTypes.NullCartAreaDistribute ||
                                                                       t.DistributeReqTypes == DistributeReqTypes.PointToPointDistribute) &&
                                                                      t.sendErrorCount < 5).
                                                                OrderBy(t => t.reqTime).ToList();

                    if (distributeTasks.Count == 0)
                    {
                        return(false);
                    }

                    //发送信息
                    string sendInfo = "";
                    //AGV服务地址
                    string sURL = ptlToAgvServiceUrl + "/genAgvSchedulingTask";
                    //HTTP响应结果
                    string    result     = "";
                    ArrayList arrChannel = new ArrayList();

                    foreach (DST_DistributeTask distributeTask in distributeTasks)
                    {
                        if (distributeTask.DistributeReqTypes == DistributeReqTypes.PickAreaDistribute) //拣料区配送
                        {
                            //查询巷道对应一侧的物料超市停靠的车辆信息
                            string[] arrPosition = distributeTask.startPosition.Replace("H", "").Replace("P", ",").Split(',');
                            int      nChannelId  = Convert.ToInt32(arrPosition[0]); //巷道
                            int      nPosition   = Convert.ToInt32(arrPosition[1]); //车位

                            if (arrChannel.Contains(nChannelId))
                            {
                                continue;
                            }
                            arrChannel.Add(nChannelId);

                            int nMaxPosition = 0;
                            int nMinPosition = 0;
                            if (nPosition <= 2)
                            {
                                nMinPosition = 1;
                                nMaxPosition = 2;
                            }
                            else
                            {
                                nMinPosition = 3;
                                nMaxPosition = 4;
                            }
                            string sWorkStationCode = distributeTask.endPosition;

                            CFG_CartCurrentMaterial firstCurDisCartCurrentMaterial = dbContext.CFG_CartCurrentMaterials.FirstOrDefault(t => t.CFG_Cart.Code.Equals(distributeTask.podCode) && t.AST_CartTaskItemId != null);
                            if (firstCurDisCartCurrentMaterial != null)
                            {
                                //查询拣料区正在往物料超市配送的料架的批次跟需配送的巷道的料架的批次是否一致
                                List <string>             arrPodCodes         = new List <string>();
                                List <DST_DistributeTask> pickDistributeTasks = dbContext.DST_DistributeTasks.Where(t => t.DistributeReqTypes == DistributeReqTypes.PickAreaDistribute &&
                                                                                                                    t.isResponse && t.sendErrorCount < 5 && t.arriveTime == null &&
                                                                                                                    !t.reqCode.Equals(distributeTask.reqCode) &&
                                                                                                                    t.endPosition.Equals(sWorkStationCode)).ToList();

                                int nPickStartPosition = 0;
                                foreach (DST_DistributeTask pickDistributeTask in pickDistributeTasks)
                                {
                                    nPickStartPosition = Convert.ToInt32(pickDistributeTask.startPosition.Split('P')[1]);
                                    if (nPickStartPosition >= nMinPosition && nPickStartPosition <= nMaxPosition)
                                    {
                                        arrPodCodes.Add(pickDistributeTask.podCode);
                                    }
                                }

                                if (dbContext.CFG_CartCurrentMaterials.Any(t => arrPodCodes.Contains(t.CFG_Cart.Code) && t.AST_CartTaskItemId != null && t.BatchCode != firstCurDisCartCurrentMaterial.BatchCode))
                                {
                                    continue;
                                }
                            }
                            List <MarketZone> marketZones = dbContext.MarketZones.Where(t => t.AreaId.Equals(sWorkStationCode) &&
                                                                                        t.CFG_CartId != null &&
                                                                                        t.Position >= nMinPosition && t.Position <= nMaxPosition).ToList();

                            //string sWorkStationCode = distributeTask.endPosition;
                            //List<MarketZone> marketZones = dbContext.MarketZones.Where(t => t.AreaId.Equals(sWorkStationCode)
                            //    && t.CFG_CartId != null).ToList();
                            if (marketZones.Count > 0)
                            {
                                //物料超市对应一侧已停满
                                if (marketZones.Count >= 2)
                                {
                                    continue;
                                }

                                //物料超市停靠的车+正在配送的车>=2时,拣料区对应工位相应一侧不再配送
                                string sql = string.Format(@"select count(*) from DST_DistributeTask a
inner join DST_DistributeTaskResult b on a.reqCode=b.reqCode
where a.DistributeReqTypes=3 and a.isResponse=1 and a.sendErrorCount<5 and a.arriveTime is null
and b.data not in(select taskCode from DST_DistributeArriveTask where method='OutFromBin')
and ((a.startPosition='{0}'+'L' and {1}<=2) or (a.startPosition='{0}'+'R' and {1}>2))", sWorkStationCode, nPosition);
                                int    nNoCompleteDistributeCount = dbContext.Database.SqlQuery <int>(sql).FirstOrDefault();

                                if (marketZones.Count + nNoCompleteDistributeCount >= 2)
                                {
                                    continue;
                                }

                                //查询需配送的巷道的料架和物料超市的料架批次是否一致
                                if (firstCurDisCartCurrentMaterial != null)
                                {
                                    int nFirstMarketCartId = Convert.ToInt32(marketZones[0].CFG_CartId);
                                    CFG_CartCurrentMaterial firstDockCartCurrentMaterial = dbContext.CFG_CartCurrentMaterials.FirstOrDefault(t => t.CFG_CartId == nFirstMarketCartId && t.AST_CartTaskItemId != null);
                                    if (firstDockCartCurrentMaterial != null)
                                    {
                                        if (!firstCurDisCartCurrentMaterial.BatchCode.Equals(firstDockCartCurrentMaterial.BatchCode))
                                        {
                                            continue;
                                        }
                                    }
                                }

                                //if (marketZones.Count >= 4)
                                //{
                                //    continue;
                                //}

                                //CFG_CartCurrentMaterial firstCurDisCartCurrentMaterial = dbContext.CFG_CartCurrentMaterials.FirstOrDefault(t => t.CFG_Cart.Code.Equals(distributeTask.podCode) && t.AST_CartTaskItemId != null);
                                //if (firstCurDisCartCurrentMaterial != null)
                                //{
                                //    List<int?> ListCartId = new List<int?>();
                                //    foreach (MarketZone marketZone in marketZones)
                                //    {
                                //        ListCartId.Add(marketZone.CFG_CartId);
                                //    }

                                //    CFG_CartCurrentMaterial firstDockCartCurrentMaterial = dbContext.CFG_CartCurrentMaterials.FirstOrDefault(t => ListCartId.Contains(t.CFG_CartId)
                                //        && t.AST_CartTaskItemId != null
                                //        && !t.BatchCode.Equals(firstCurDisCartCurrentMaterial.BatchCode));
                                //    if (firstDockCartCurrentMaterial != null)
                                //    {
                                //        continue;
                                //    }
                                //}
                            }
                        }
                        else if (distributeTask.DistributeReqTypes == DistributeReqTypes.NullCartAreaDistribute) //空料架缓冲区配送
                        {
                            string[] arrPosition = distributeTask.endPosition.Replace("H", "").Replace("P", ",").Split(',');
                            int      nChannelId  = Convert.ToInt32(arrPosition[0]); //巷道
                            int      nPosition   = Convert.ToInt32(arrPosition[1]); //车位

                            //如果对应巷道车位上停靠了料架,则先不补空料架
                            CFG_ChannelCurrentCart cfgChannelCurrentCart = dbContext.CFG_ChannelCurrentCarts.FirstOrDefault(ccc => ccc.CFG_ChannelId == nChannelId && ccc.Position == nPosition && ccc.CFG_CartId != null);
                            if (cfgChannelCurrentCart != null)
                            {
                                continue;
                            }
                        }

                        //绑定配送任务
                        DST_DistributeTaskDto distributeTaskDto = new DST_DistributeTaskDto();
                        distributeTaskDto.reqCode          = distributeTask.reqCode;
                        distributeTaskDto.reqTime          = distributeTask.reqTime.ToString("yyyy-MM-dd HH:mm:ss");
                        distributeTaskDto.clientCode       = distributeTask.clientCode;
                        distributeTaskDto.tokenCode        = distributeTask.tokenCode;
                        distributeTaskDto.taskTyp          = distributeTask.taskTyp;
                        distributeTaskDto.userCallCode     = distributeTask.userCallCode;
                        distributeTaskDto.userCallCodePath = new List <string>();
                        distributeTaskDto.userCallCodePath.AddRange(new string[] { distributeTask.startPosition, distributeTask.endPosition });
                        distributeTaskDto.podCode   = distributeTask.podCode;
                        distributeTaskDto.robotCode = distributeTask.robotCode;
                        distributeTaskDto.taskCode  = distributeTask.taskCode;
                        distributeTaskDto.data      = distributeTask.data;

                        //发送信息
                        sendInfo = JsonConvert.SerializeObject(distributeTaskDto);
                        //发送HTTP请求,并返回响应结果
                        result = HttpService.HttpPost(sURL, sendInfo);

                        if (!string.IsNullOrEmpty(result))
                        {
                            //实例化HTTP响应结果
                            DST_DistributeTaskResultDto distributeTaskResultDto = JsonConvert.DeserializeObject <DST_DistributeTaskResultDto>(result);
                            if (distributeTaskResultDto != null)
                            {
                                //新增配送任务结果
                                DST_DistributeTaskResult distributeTaskResult = new DST_DistributeTaskResult();
                                distributeTaskResult.code        = distributeTaskResultDto.code;
                                distributeTaskResult.message     = distributeTaskResultDto.message;
                                distributeTaskResult.reqCode     = distributeTaskResultDto.reqCode;
                                distributeTaskResult.data        = distributeTaskResultDto.data;
                                distributeTaskResult.receiveTime = DateTime.Now;

                                dbContext.DST_DistributeTaskResults.Add(distributeTaskResult);

                                //更新配送任务响应值
                                if (distributeTaskResultDto.code.Equals("0"))
                                {
                                    distributeTask.isResponse = true;

                                    if (distributeTask.DistributeReqTypes == DistributeReqTypes.PickAreaDistribute) //拣料区配送
                                    {
                                        //解绑巷道停靠
                                        CFG_ChannelCurrentCart cfgChannelCurrentCart = dbContext.CFG_ChannelCurrentCarts.FirstOrDefault(ccc => ccc.CFG_Cart.Code.Equals(distributeTask.podCode));
                                        if (cfgChannelCurrentCart != null)
                                        {
                                            cfgChannelCurrentCart.CFG_CartId = null;
                                            cfgChannelCurrentCart.DockedTime = null;
                                        }
                                    }
                                }
                                else
                                {
                                    distributeTask.sendErrorCount = distributeTask.sendErrorCount + 1;
                                }
                            }
                        }
                    }

                    //更新数据库
                    isSuccess = dbContext.SaveChanges() > 0 ? true : false;
                }
            }
            catch (Exception)
            {
                isSuccess = false;
            }
            return(isSuccess);
        }
Esempio n. 3
0
        /// <summary>
        /// 发送生产线边配送任务
        /// </summary>
        /// <returns></returns>
        private bool SendProductAreaDistributeTask()
        {
            bool isSuccess = false;

            try
            {
                ExeConfigurationFileMap map = new ExeConfigurationFileMap {
                    ExeConfigFilename = @"服务控制台.exe.Config"
                };
                Configuration configuration = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
                string        StartMaterialMarketDistributeFlag = configuration.AppSettings.Settings["StartMaterialMarketDistribute"].Value;

                using (GeelyPtlEntities dbContext = new GeelyPtlEntities())
                {
                    //获取未响应的配送任务
                    List <DST_DistributeTask> distributeTasks = dbContext.DST_DistributeTasks.
                                                                Where(t => !t.isResponse &&
                                                                      (t.DistributeReqTypes == DistributeReqTypes.ProductCartSwitch ||
                                                                       t.DistributeReqTypes == DistributeReqTypes.ProductNullCartBack ||
                                                                       t.DistributeReqTypes == DistributeReqTypes.MaterialMarketDistribute ||
                                                                       t.DistributeReqTypes == DistributeReqTypes.ProductOutToIn ||
                                                                       t.DistributeReqTypes == DistributeReqTypes.ProductInToOut
                                                                      ) && t.sendErrorCount < 5).
                                                                OrderBy(t => t.reqTime).ToList();

                    //List<DST_DistributeTask> distributeTasks = new List<DST_DistributeTask>();

                    if (distributeTasks.Count == 0)
                    {
                        return(false);
                    }

                    //已经设置成运输开始的寻车任务ID集合
                    //List<long> listNeedBlinkFndTask = new List<long>();

                    //发送信息
                    string sendInfo = "";
                    //AGV服务地址
                    string sURL = ptlToAgvServiceUrl + "/genAgvSchedulingTask";
                    //HTTP响应结果
                    string result = "";

                    foreach (DST_DistributeTask distributeTask in distributeTasks)
                    {
                        if (StartMaterialMarketDistributeFlag.Equals("no"))
                        {
                            if (distributeTask.DistributeReqTypes == DistributeReqTypes.MaterialMarketDistribute)
                            {
                                distributeTask.sendErrorCount = 5;
                                continue;
                            }
                        }

                        if (distributeTask.DistributeReqTypes == DistributeReqTypes.MaterialMarketDistribute)
                        {
                            Thread.Sleep(500);
                        }

                        //绑定配送任务
                        DST_DistributeTaskDto distributeTaskDto = new DST_DistributeTaskDto();
                        distributeTaskDto.reqCode          = distributeTask.reqCode;
                        distributeTaskDto.reqTime          = distributeTask.reqTime.ToString("yyyy-MM-dd HH:mm:ss");
                        distributeTaskDto.clientCode       = distributeTask.clientCode;
                        distributeTaskDto.tokenCode        = distributeTask.tokenCode;
                        distributeTaskDto.taskTyp          = distributeTask.taskTyp;
                        distributeTaskDto.userCallCode     = distributeTask.userCallCode;
                        distributeTaskDto.userCallCodePath = new List <string>();
                        distributeTaskDto.userCallCodePath.AddRange(new string[] { distributeTask.startPosition, distributeTask.endPosition });
                        distributeTaskDto.podCode   = distributeTask.podCode;
                        distributeTaskDto.robotCode = distributeTask.robotCode;
                        distributeTaskDto.taskCode  = distributeTask.taskCode;
                        distributeTaskDto.data      = distributeTask.data;

                        //发送信息
                        sendInfo = JsonConvert.SerializeObject(distributeTaskDto);
                        //发送HTTP请求,并返回响应结果
                        result = HttpService.HttpPost(sURL, sendInfo);

                        if (!string.IsNullOrEmpty(result))
                        {
                            //实例化HTTP响应结果
                            DST_DistributeTaskResultDto distributeTaskResultDto = JsonConvert.DeserializeObject <DST_DistributeTaskResultDto>(result);
                            if (distributeTaskResultDto != null)
                            {
                                //新增配送任务结果
                                DST_DistributeTaskResult distributeTaskResult = new DST_DistributeTaskResult();
                                distributeTaskResult.code        = distributeTaskResultDto.code;
                                distributeTaskResult.message     = distributeTaskResultDto.message;
                                distributeTaskResult.reqCode     = distributeTaskResultDto.reqCode;
                                distributeTaskResult.data        = distributeTaskResultDto.data;
                                distributeTaskResult.receiveTime = DateTime.Now;

                                dbContext.DST_DistributeTaskResults.Add(distributeTaskResult);

                                //更新配送任务响应值
                                if (distributeTaskResultDto.code.Equals("0"))
                                {
                                    distributeTask.isResponse = true;

                                    //if (distributeTask.DistributeReqTypes == DistributeReqTypes.MaterialMarketDistribute)
                                    //{
                                    //    string sWorkStationCode = distributeTask.startPosition;
                                    //    //string sWorkStationCode = distributeTask.endPosition.Split('-')[0];
                                    //    FND_Task fndTask = dbContext.FND_Tasks.Where(t => t.CFG_WorkStation.Code.Equals(sWorkStationCode)
                                    //        && (t.FindingStatus == FindingStatus.New || t.FindingStatus == FindingStatus.NeedDisplay || t.FindingStatus == FindingStatus.Displaying)
                                    //        && (t.CFG_Cart.CartStatus == CartStatus.NeedToWorkStation || t.CFG_Cart.CartStatus == CartStatus.WaitingToWorkStation)
                                    //        && !listNeedBlinkFndTask.Contains(t.Id)).
                                    //        OrderBy(t => t.BatchCode).ThenByDescending(t => t.FindingStatus).FirstOrDefault();
                                    //    if (fndTask != null)
                                    //    {
                                    //        if (fndTask.FindingStatus == FindingStatus.New)
                                    //        {
                                    //            fndTask.CFG_EmployeeId = 1;
                                    //            fndTask.DisplayTime = DateTime.Now;

                                    //            fndTask.CFG_Cart.CartStatus = CartStatus.WaitingToWorkStation;
                                    //        }
                                    //        fndTask.FindingStatus = FindingStatus.NeedBlink;
                                    //        fndTask.CFG_Cart.CartStatus = CartStatus.InCarriageToWorkStation;

                                    //        listNeedBlinkFndTask.Add(fndTask.Id);
                                    //    }
                                    //}
                                    if (distributeTask.DistributeReqTypes == DistributeReqTypes.ProductCartSwitch ||
                                        distributeTask.DistributeReqTypes == DistributeReqTypes.ProductNullCartBack ||
                                        distributeTask.DistributeReqTypes == DistributeReqTypes.ProductOutToIn ||
                                        distributeTask.DistributeReqTypes == DistributeReqTypes.ProductInToOut)
                                    {
                                        string[] arrStartPosition = distributeTask.startPosition.Split('-');
                                        string   sWorkStationCode = arrStartPosition[0];
                                        int      nPosition        = Convert.ToInt32(arrStartPosition[1]);

                                        //解除线边停靠
                                        CFG_WorkStationCurrentCart cfgWorkStationCurrentCart = dbContext.CFG_WorkStationCurrentCarts
                                                                                               .FirstOrDefault(wscc => wscc.CFG_WorkStation.Code.Equals(sWorkStationCode) && wscc.Position == nPosition);
                                        if (cfgWorkStationCurrentCart != null)
                                        {
                                            if (distributeTask.DistributeReqTypes == DistributeReqTypes.ProductNullCartBack)
                                            {
                                                //清空小车上的物料
                                                CFG_Cart cfgCart = cfgWorkStationCurrentCart.CFG_Cart;
                                                if (cfgCart != null)
                                                {
                                                    List <CFG_CartCurrentMaterial> cfgCartCurrentMaterials = cfgCart.CFG_CartCurrentMaterials.Where(t => t.AST_CartTaskItemId != null).ToList();
                                                    foreach (CFG_CartCurrentMaterial cfgCartCurrentMaterial in cfgCartCurrentMaterials)
                                                    {
                                                        cfgCartCurrentMaterial.AST_CartTaskItemId = null;
                                                        cfgCartCurrentMaterial.ProjectCode        = null;
                                                        cfgCartCurrentMaterial.WbsId              = null;
                                                        cfgCartCurrentMaterial.ProjectStep        = null;
                                                        cfgCartCurrentMaterial.CFG_WorkStationId  = null;
                                                        cfgCartCurrentMaterial.BatchCode          = null;
                                                        cfgCartCurrentMaterial.CFG_ChannelId      = null;
                                                        cfgCartCurrentMaterial.CFG_PalletId       = null;
                                                        cfgCartCurrentMaterial.BoxCode            = null;
                                                        cfgCartCurrentMaterial.FromPalletPosition = null;
                                                        cfgCartCurrentMaterial.MaterialCode       = null;
                                                        cfgCartCurrentMaterial.MaterialName       = null;
                                                        cfgCartCurrentMaterial.MaterialBarcode    = null;
                                                        cfgCartCurrentMaterial.Quantity           = null;
                                                        cfgCartCurrentMaterial.AssortedTime       = null;
                                                        cfgCartCurrentMaterial.CFG_EmployeeId     = null;
                                                        if (cfgCartCurrentMaterial.Usability != CartPositionUsability.DisableByOffLineDevice)
                                                        {
                                                            cfgCartCurrentMaterial.Usability = CartPositionUsability.Enable;
                                                        }
                                                    }
                                                }
                                            }

                                            //解除线边位置停靠
                                            cfgWorkStationCurrentCart.CFG_CartId = null;
                                            cfgWorkStationCurrentCart.DockedTime = null;
                                        }
                                    }
                                }
                                else
                                {
                                    distributeTask.sendErrorCount = distributeTask.sendErrorCount + 1;
                                }
                            }
                        }
                    }

                    //更新数据库
                    isSuccess = dbContext.SaveChanges() > 0 ? true : false;
                }
            }
            catch (Exception)
            {
                isSuccess = false;
            }
            return(isSuccess);
        }