duyongjia
2024-12-28 6be2bc8324ca81145830b758c110255d9dfdc00b
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
@@ -218,21 +218,44 @@
                {
                    return WebResponseContent.Instance.Error("未找到任务信息");
                }
                if (task.TaskType == TaskTypeEnum.Outbound.ObjToInt() || task.TaskType == TaskTypeEnum.PalletOutbound.ObjToInt())
                if (task.TaskStatus == 100 || task.TaskStatus == 200)//如果是新建任务状态改为执行中
                {
                    task.TaskStatus = OutTaskStatusEnum.SC_OutExecuting.ObjToInt();
                }
                else if (task.TaskType == TaskTypeEnum.Inbound.ObjToInt() || task.TaskType == TaskTypeEnum.PalletInbound.ObjToInt())
                {
                    task.TaskStatus = InTaskStatusEnum.SC_InExecuting.ObjToInt();
                }
                else if (task.TaskType == TaskTypeEnum.Relocation.ObjToInt())
                {
                    task.TaskStatus = InTaskStatusEnum.RelocationExecuting.ObjToInt();
                    if (task.TaskType == TaskTypeEnum.Outbound.ObjToInt() || task.TaskType == TaskTypeEnum.PalletOutbound.ObjToInt())
                    {
                        task.TaskStatus = OutTaskStatusEnum.SC_OutExecuting.ObjToInt();
                    }
                    else if (task.TaskType == TaskTypeEnum.Inbound.ObjToInt() || task.TaskType == TaskTypeEnum.PalletInbound.ObjToInt() || task.TaskType == TaskTypeEnum.PalletReturnInbound.ObjToInt())
                    {
                        task.TaskStatus = InTaskStatusEnum.SC_InExecuting.ObjToInt();
                    }
                    //else if (task.TaskType == TaskTypeEnum.Relocation.ObjToInt())
                    //{
                    //    task.TaskStatus = InTaskStatusEnum.RelocationExecuting.ObjToInt();
                    //}
                    else
                    {
                        throw new Exception($"任务类型错误,未找到该任务类型,任务号:【{task.TaskNum}】,任务类型:【{task.TaskType}】");
                    }
                }
                else
                {
                    throw new Exception($"任务类型错误,未找到该任务类型,任务号:【{task.TaskNum}】,任务类型:【{task.TaskType}】");
                    if (task.TaskType == TaskTypeEnum.Outbound.ObjToInt() || task.TaskType == TaskTypeEnum.PalletOutbound.ObjToInt())
                    {
                        task.TaskStatus = OutTaskStatusEnum.SC_OutFinish.ObjToInt();
                    }
                    else if (task.TaskType == TaskTypeEnum.Inbound.ObjToInt() || task.TaskType == TaskTypeEnum.PalletInbound.ObjToInt() || task.TaskType == TaskTypeEnum.PalletReturnInbound.ObjToInt())
                    {
                        task.TaskStatus = InTaskStatusEnum.SC_InFinish.ObjToInt();
                    }
                    //else if (task.TaskType == TaskTypeEnum.Relocation.ObjToInt())
                    //{
                    //    task.TaskStatus = InTaskStatusEnum.RelocationExecuting.ObjToInt();
                    //}
                    else
                    {
                        throw new Exception($"任务类型错误,未找到该任务类型,任务号:【{task.TaskNum}】,任务类型:【{task.TaskType}】");
                    }
                }
                _unitOfWorkManage.BeginTran();
                task.Dispatchertime = DateTime.Now;
@@ -354,6 +377,9 @@
        }
        /// <summary>
        /// ç©ºæ‰˜ç›˜å…¥åº“完成处理
        /// </summary>
@@ -399,6 +425,118 @@
            }
        }
        /// <summary>
        /// ä½™æ–™é€€åº“完成处理
        /// </summary>
        /// <param name="task">任务实体对象</param>
        /// <returns>返回处理结果</returns>
        public WebResponseContent PalletReturnInboundTaskCompleted(Dt_Task task)
        {
            try
            {
                _unitOfWorkManage.BeginTran();
                decimal beforeQuantity = 0;
                Dt_LocationInfo locationInfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.TargetAddress);
                Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.GetStockInfo(task.PalletCode);
                CheckCompleted(stockInfo, locationInfo);
                stockInfo.LocationCode = locationInfo.LocationCode;
                stockInfo.StockStatus = StockStatusEmun.已入库.ObjToInt();
                _stockService.StockInfoService.Repository.UpdateData(stockInfo);
                beforeQuantity = stockInfo.Details.Where(x => x.Id != 0).Sum(x => x.StockQuantity);
                int beforeStatus = locationInfo.LocationStatus;
                locationInfo.LocationStatus = LocationStatusEnum.InStock.ObjToInt();
                _basicService.LocationInfoService.UpdateLocationFree(locationInfo, task.TaskNum, StockChangeType.Inbound.ObjToInt(), false);
                _basicService.LocationInfoService.Repository.UpdateData(locationInfo);
                task.TaskStatus = InTaskStatusEnum.InFinish.ObjToInt();
                BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateType.自动完成 : OperateType.人工完成);
                _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, beforeStatus, StockChangeType.Inbound.ObjToInt(), stockInfo.Details.FirstOrDefault()?.OrderNo ?? "", task.TaskNum);
                _recordService.StockQuantityChangeRecordService.AddStockChangeRecord(stockInfo, stockInfo.Details, beforeQuantity, stockInfo.Details.Sum(x => x.StockQuantity) + beforeQuantity, StockChangeType.Inbound, task.TaskNum);
                _unitOfWorkManage.CommitTran();
            }
            catch (Exception ex)
            {
                _unitOfWorkManage.RollbackTran();
                return WebResponseContent.Instance.Error(ex.Message);
            }
            //余料入库完成后,需要将组盘信息调用上游WMS原料上架结果接口
            #region å›žä¼ é€»è¾‘处理
            //try
            //{
            //    PutAwayRequest request = new PutAwayRequest();
            //    List<PutAway> itemData = new List<PutAway>();
            //    request.ITEMDATA = itemData;
            //    request.WERKS = AppSettings.Configuration["WERKS"];
            //    request.WH_NUMBER = AppSettings.Configuration["WERKS"];
            //    request.IZLID = request.WERKS + request.WH_NUMBER + DateTime.Now.ToString("yyyyMMdd") + task.TaskNum.ToString();
            //    request.CREATE_DATE = task.CreateDate.ToString("yyyy-MM-dd HH:mm:ss");
            //    request.PSTNG_DATE = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            //    request.INBOUND_NO = "";//todo:单号要从条码主数据中获取,不然回传会提示:该条码无进仓单数据!
            //    request.RECEIPT_NO = "";//todo:单号要从条码主数据中,不然回传会提示:该条码无进仓单数据!
            //    Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.GetStockInfo(task.PalletCode);
            //    foreach (Dt_StockInfoDetail detail in stockInfo.Details)
            //    {
            //        Dt_LabelMaster labMaster = _labelMasterRepository.QueryFirst(x => x.LABEL_NO == detail.SerialNumber);
            //        if (labMaster != null)
            //        {
            //            if (request.INBOUND_NO == "")
            //            {
            //                request.INBOUND_NO = labMaster.INBOUND_NO;
            //            }
            //            if (request.RECEIPT_NO == "")
            //            {
            //                request.RECEIPT_NO = labMaster.RECEIPT_NO;
            //            }
            //            PutAway putAway = new PutAway();
            //            putAway.MATNR = labMaster.MATNR;
            //            putAway.BATCH = labMaster.BATCH;
            //            putAway.LIFNR = labMaster.LIFNR;
            //            putAway.LIKTX = labMaster.LIKTX;
            //            putAway.RECEIPT_QTY = labMaster.BOX_QTY;
            //            putAway.UNIT = labMaster.UNIT;
            //            putAway.LABEL_NO = labMaster.LABEL_NO;
            //            putAway.PACK_LABEL_NO = labMaster.Pack_LABEL_No;
            //            putAway.PALLET_LABEL_NO = labMaster.Pallet_label_no;
            //            putAway.TPNUM = task.PalletCode;
            //            putAway.FLAG = "0";
            //            putAway.TKTXT = "";
            //            putAway.PO_NO = labMaster.PO_NO;
            //            putAway.PO_ITEM_NO = labMaster.PO_ITEM_NO;
            //            putAway.SOBKZ = labMaster.SOBKZ;
            //            putAway.RECEIPT_ITEM_NO = labMaster.RECEIPT_ITEM_NO;
            //            putAway.INBOUND_NO = task.TaskNum.ToString();
            //            //LABEL _STATUS æ¡ç çŠ¶æ€  02已收料(无需质检)03 å¾…进仓(已质检),并且,QC RESULT CODE质检状态为“02” æ‰å…è®¡ä¸Šæž¶
            //            if (labMaster.QC_RESULT_CODE == "02" && (labMaster.LABEL_STATUS == "02" || labMaster.LABEL_STATUS == "03"))
            //            {
            //                itemData.Add(putAway);
            //            }
            //        }
            //    }
            //    if (itemData.Count > 0)
            //    {
            //        _sys_JobService.CallPutAway(request);
            //    }
            //}
            //catch (Exception ex)
            //{
            //    return WebResponseContent.Instance.Error(ex.Message);
            //}
            #endregion
            return WebResponseContent.Instance.OK();
        }
        /// <summary>
        /// éªŒè¯æ•°æ®
        /// </summary>