wanshenmean
2024-11-11 021edcd84d6601249e008141b3027549f864155f
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
@@ -34,6 +34,7 @@
    private readonly IProcessApplyService _processApplyService; //工艺路线
    private readonly IDt_AreaInfoRepository _areaInfoRepository; //区域
    private readonly IAgingInOrOutInputService _agingInOrOutInputService; //静置\陈化
    private readonly IProductionRepository _productionRepository; //生产
    public Dt_TaskService(IDt_TaskRepository BaseDal,
                                IUnitOfWorkManage unitOfWorkManage,
@@ -54,7 +55,8 @@
                                IProcessApplyService processApplyService,
                                IDt_AreaInfoRepository areaInfoRepository,
                                IAgingInOrOutInputService agingInOrOutInputService,
                                IStockInfoDetailRepository stockInfoDetailRepository) : base(BaseDal)
                                IStockInfoDetailRepository stockInfoDetailRepository,
                                IProductionRepository productionRepository) : base(BaseDal)
    {
        _unitOfWorkManage = unitOfWorkManage;
        _outOrderRepository = outOrderRepository;
@@ -75,6 +77,7 @@
        _areaInfoRepository = areaInfoRepository;
        _agingInOrOutInputService = agingInOrOutInputService;
        _stockInfoDetailRepository = stockInfoDetailRepository;
        _productionRepository = productionRepository;
    }
    #region 外部接口方法
@@ -452,7 +455,16 @@
            var result = JsonConvert.DeserializeObject<ResultTrayCellsStatus>(content.Data.ToString());
            if (result.SerialNos.Count <= 0)
                return content.Error(result.MOMMessage);
            // TODO 获取本地料框属性与整盘电芯属性获取的值进行对比,如果一致则继续,否则返回错误信息
            var productions = await _productionRepository.QueryDataAsync(x => result.TrayBarcodePropertys.Select(x => x.TrayBarcodeProperty).ToList().Contains(x.TrayBarcodeProperty));
            if (productions.Count <= 0)
                return content.Error("料框属性不存在");
            // 调用CreateBoxingInfo方法,创建组盘信息
            var boxing = await CreateBoxingInfo(result, input.PalletCode);
            if (boxing == null) return content.Error("组盘失败");
            // 调用GetProcessApplyAsync方法,获取工艺路线
            ProcessApplyDto process = await GetProcessApplyAsync(result);
@@ -460,11 +472,18 @@
            // 如果process为null,则返回content
            if (process == null) return content;
            // 调用GetProcessResponseAsync方法,获取工艺响应
            var processResponse = await GetProcessResponseAsync(process, input.Position);
            // 调用_processApplyService.GetProcessApplyAsync方法,获取工艺申请
            content = await _processApplyService.GetProcessApplyAsync(process);
            // 如果状态为false,则返回null
            if (!content.Status) return content.Error("工艺申请失败");
            //// 调用GetProcessResponseAsync方法,获取工艺响应
            //var processResponse = await GetProcessResponseAsync(process, input.Position);
            List<string> strings = input.Position == "1088" ? new List<string>() { "CHSC01" } : new List<string>() { "JZSC01" };
            // 调用CreateNewTask方法,创建新任务
            content =  await CreateNewTask(input, processResponse);
            content =  await CreateNewTask(input, strings);
            if (content.Status)
            {
                var isBox = await _boxingInfoRepository.AddDataNavAsync(boxing);
@@ -564,7 +583,7 @@
                SerialNumber = serialNoObj.SerialNo,
                OrderNo = serialNoObj.PositionNo.ToString(),
                Status = serialNoObj.SerialNoStatus,
                MaterielCode = serialNoObj.BindCode,
                MaterielCode = result.BindCode,
                Remark = result.TrayBarcodePropertys.ToJsonString(),
            }).ToList()
        };
@@ -1184,20 +1203,12 @@
    /// <param name="areaId">区域ID</param>
    /// <param name="content">响应内容</param>
    /// <returns></returns>
    private async Task<WebResponseContent> CreateNewTask(RequestTaskDto input, List<Dt_EquipmentProcess> process = null, int flag = 0)
    private async Task<WebResponseContent> CreateNewTask(RequestTaskDto input, List<string> process = null, int flag = 0)
    {
        WebResponseContent content = new WebResponseContent();
        List<string> strings = new List<string>();
        if (process != null)
        {
            strings = process.Select(x => x.EquipmentName).ToList();
        }
        else
        {
            strings = input.Position.Split(',').ToList();
        }
        // 获取目标地址
        string ToAddress = await GetRoadWayAsync(strings);
        string ToAddress = await GetRoadWayAsync(process);
        // 创建新任务实例
        var task = new Dt_Task