huangxiaoqiang
2025-06-11 8c8532db8fc7fa76b7fe4c254a36d67c6af24ace
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/RequestInTaskAsync.cs
@@ -3,7 +3,9 @@
using WIDESEA_Core.Const;
using WIDESEA_DTO.MOM;
using WIDESEA_DTO.WMS;
using WIDESEAWCS_Model.Models;
using WIDESEA_StorageTaskRepository;
//using WIDESEAWCS_Model.Models;
namespace WIDESEA_StorageTaskServices;
@@ -40,63 +42,75 @@
    private async Task<WebResponseContent> ProcessOCVB(DtBoxingInfo boxing, Dt_AreaInfo area, RequestTaskDto input)
    {
        WebResponseContent content = new WebResponseContent();
        // 判断需不需要去包装,不需要就去常温三
        var stationManagers = _stationManagerRepository.QueryData(x => x.stationPLC == "1018" && x.stationArea == "Cache" && x.productLine == input.ProductionLine);
        var STATION = _stationManagerRepository.QueryFirst(x => x.stationChildCode == input.Position);
        //var station = stationManagers.Select(x => x.stationChildCode).ToList();
        //// 获取WCSip地址相关配置
        var wcsIpAddrss = GetWCSIpAddress();
        //if (wcsIpAddrss == null)
        //{
        //    throw new InvalidOperationException("WCS IP 未配置");
        //}
        //var abc = HttpHelper.PostAsync(wcsIpAddrss, station.ToJsonString()).Result;
        //content = JsonConvert.DeserializeObject<WebResponseContent>(abc);
        //var num = content.Data.ObjToInt();
        //如果当前库内存在比当前时间的对应产线的料 则入库至常温3
        DtStockInfo stockInfo = _stockInfoRepository.QueryFirst(x => x.AreaCode == "CWSC3" && x.IsFull == true && x.ProductionLine == STATION.productLine && x.OutboundTime < DateTime.Now);
        if (stockInfo != null)
        try
        {
            var config = _configService.GetByConfigKey("SYS_InStacker", "CW3InStacker");
            var strings = config.ConfigValue.Split(',').ToList();
            // 入库送至常温3
            var resultContent = await CreateNewTask(input, input.ProductionLine, boxing.ProcessCode, strings);
            if (resultContent.Status)
            // 判断需不需要去包装,不需要就去常温三
            var stationManagers = _stationManagerRepository.QueryData(x => x.stationPLC == "1018" && x.stationArea == "Cache" && x.productLine == input.ProductionLine);
            var STATION = _stationManagerRepository.QueryFirst(x => x.stationChildCode == input.Position);
            //var station = stationManagers.Select(x => x.stationChildCode).ToList();
            //// 获取WCSip地址相关配置
            var wcsIpAddrss = GetWCSIpAddress();
            //if (wcsIpAddrss == null)
            //{
            //    throw new InvalidOperationException("WCS IP 未配置");
            //}
            //var abc = HttpHelper.PostAsync(wcsIpAddrss, station.ToJsonString()).Result;
            //content = JsonConvert.DeserializeObject<WebResponseContent>(abc);
            //var num = content.Data.ObjToInt();
            //如果当前库内存在比当前时间的对应产线的料 则入库至常温3
            DtStockInfo stockInfo = _stockInfoRepository.QueryFirst(x => x.AreaCode == "CWSC3" && x.IsFull == true && x.ProductionLine == STATION.productLine && x.OutboundTime < DateTime.Now);
            if (stockInfo != null)
            {
                await _boxingInfoRepository.AddDataNavAsync(boxing);
                var config = _configService.GetByConfigKey("SYS_InStacker", "CW3InStacker");
                var strings = config.ConfigValue.Split(',').ToList();
                // 入库送至常温3
                var resultContent = await CreateNewTask(input, input.ProductionLine, boxing.ProcessCode, strings);
                if (resultContent.Status)
                {
                    await _boxingInfoRepository.AddDataNavAsync(boxing);
                }
                return resultContent;
            }
            return resultContent;
        }
        // TODO 判断在途数量
            // TODO 判断在途数量
        var needBarcode = await SqlSugarHelper.DbWCS.Queryable<dt_needBarcode>().FirstAsync(x => x.productLine == STATION.productLine);
        var needCount = needBarcode.inLineNum;
        //var count = BaseDal.QueryData(x => x.TargetAddress == stationManagers[0].Roadway).Count;
        if (needCount < 2)
        {
            // 送至包装
            List<string> strings = stationManagers.Where(x => x.stationType == 0).Select(x => x.Roadway).ToList();
            var x = await SqlSugarHelper.DbWCS.Updateable<dt_needBarcode>().SetColumns(x => x.inLineNum == x.inLineNum + 1).ExecuteCommandHasChangeAsync();
            ConsoleHelper.WriteSuccessLine($"在途数量添加{(x ? "成功" : "失败")}数量+1");
            return await CreateNewTask(input, input.ProductionLine, boxing.ProcessCode, strings, 3);
        }
        else
        {
            var config = _configService.GetByConfigKey("SYS_InStacker", "CW3InStacker");
            var strings = config.ConfigValue.Split(',').ToList();
            // 入库送至常温3
            var resultContent = await CreateNewTask(input, input.ProductionLine, boxing.ProcessCode, strings);
            if (resultContent.Status)
            var needBarcode = await SqlSugarHelper.DbWCS.Queryable<dt_needBarcode>().FirstAsync(x => x.productLine == STATION.productLine && x.fromArea == "CW");
            var needCount =  BaseDal.QueryData(x => x.TargetAddress == needBarcode.toArea).Count();
            //var count = BaseDal.QueryData(x => x.TargetAddress == stationManagers[0].Roadway).Count;
            if (needCount < needBarcode.cacheNum)
            {
                await _boxingInfoRepository.AddDataNavAsync(boxing);
                // 送至包装
                List<string> strings = stationManagers.Where(x => x.stationType == 0 && x.productLine == input.ProductionLine).Select(x => x.Roadway).ToList();
                var x = await SqlSugarHelper.DbWCS.Updateable<dt_needBarcode>()
                    .SetColumns(x => x.inLineNum == x.inLineNum + 1)
                    .Where(x => x.id == needBarcode.id).ExecuteCommandHasChangeAsync();
                ConsoleHelper.WriteSuccessLine($"在途数量添加{(x ? "成功" : "失败")}数量+1,当前工序{boxing.ProcessCode},产线{input.ProductionLine}");
                LogFactory.GetLog("OCVB").InfoFormat(true, $"在途数量添加{(x ? "成功" : "失败")}数量+1,当前工序{boxing.ProcessCode},产线{input.ProductionLine}", "无参数");
                return await CreateNewTask(input, input.ProductionLine, boxing.ProcessCode, strings, 3);
            }
            return resultContent;
            else
            {
                var config = _configService.GetByConfigKey("SYS_InStacker", "CW3InStacker");
                var strings = config.ConfigValue.Split(',').ToList();
                // 入库送至常温3
                var resultContent = await CreateNewTask(input, input.ProductionLine, boxing.ProcessCode, strings);
                if (resultContent.Status)
                {
                    await _boxingInfoRepository.AddDataNavAsync(boxing);
                }
                return resultContent;
            }
        }
        catch (Exception ex)
        {
            ConsoleHelper.WriteErrorLine(ex.Message);
            LogFactory.GetLog("OCVB").InfoFormat(true, $",异常信息:{ex.Message},{ex.StackTrace}", "无参数");
            return content.Error(ex.Message);
        }
    }
@@ -145,6 +159,19 @@
        {
            throw new Exception("未找到入库站台配置");
        }
        //List<string> strings;
        //if (areaIn == "GWSC1")
        //{
        //    strings = new List<string>
        //    {
        //        (boxing.ProductionLine != null && boxing.ProductionLine == "ZJ-7") ? "GWSC1" : "GWSC2"
        //    };
        //}
        //else
        //{
        //    strings = stationManagers.Roadway.Split(',').ToList();
        //}
        List<string> strings = stationManagers.Roadway.Split(',').ToList();
        var resultContent = await CreateNewTask(input, result.ProductionLine, boxing.ProcessCode, strings);