wankeda
2025-02-21 092f6e9efb6e4c2bc401ec134391ab0a25773b47
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderService.cs
@@ -42,7 +42,16 @@
            _basicRepository = basicRepository;
            _invokeERPService = invokeERPService;
        }
        public override PageGridData<Dt_ReceiveOrder> GetPageData(PageDataOptions options)
        {
            PageGridData<Dt_ReceiveOrder> pageGridData = base.GetPageData(options);
            //foreach (var item in pageGridData.Rows)
            //{
            //    //获取收货明细
            //    item.PurchaseOrderNo
            //}
            return pageGridData;
        }
        public override WebResponseContent AddData(SaveModel saveModel)
        {
            if (saveModel.MainData.ContainsKey(nameof(Dt_ReceiveOrder.ReceiveOrderStatus).FirstLetterToLower()))
@@ -95,7 +104,7 @@
                {
                    return WebResponseContent.Instance.Error($"未找到收货单");
                }
                if (receiveOrder.ReceiveOrderStatus==ReceiveOrderStatusEnum.Completed.ObjToInt())
                if (receiveOrder.ReceiveOrderStatus == ReceiveOrderStatusEnum.Completed.ObjToInt())
                {
                    return WebResponseContent.Instance.Error($"收货单已完成");
                }
@@ -126,7 +135,7 @@
                        Serno = item.RowNo,
                        Supplotno = "",
                        Taxrate = "",
                    };
                    recevieOrderDetails.Add(recevieOrderDetail);
                }
@@ -134,31 +143,27 @@
                ERPReceiveModel receiveModel = new ERPReceiveModel()
                {
                    Code = receiveOrder.ReceiveOrderNo,
                    CompanyId = "HATC",
                    DeliveryCode = receiveOrder.DeliveryCode,
                    CustomerId = receiveOrder.CustomerId,
                    CreatorId = "TC20082",//测试 receiveOrder.Creater
                    CreatorId = receiveOrder.Creater,
                    EntDate = receiveOrder.CreateDate.ToString("yyyy-MM-dd HH:mm:ss"),
                    ReceiveDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                    PlantsId = "HA02",
                    SuppliersId = receiveOrder.SuppliersId,
                    Type = Enum.GetName(typeof(ReceiveOrderTypeEnum),receiveOrder.ReceiveOrderType),
                    Type = Enum.GetName(typeof(ReceiveOrderTypeEnum), receiveOrder.ReceiveOrderType) ?? throw new Exception($"采购单类型错误"),
                    UniqueTag = receiveOrder.ReceiveOrderId.ToString(),
                    WarehouseCode = warehouse.WarehouseCode,
                    Way = 1,
                    Details = recevieOrderDetails
                };
                //收货推送至ERP
                string Content = _invokeERPService.InvokeMatReceiveApi(receiveModel);
                ErpRequestContent erpRequest=Content.DeserializeObject<ErpRequestContent>();
                if (erpRequest.res==0)
                {
                    return WebResponseContent.Instance.Error(erpRequest.Data);
                }
                //更新收货单信息
                receiveOrder.ReceiveOrderStatus = ReceiveOrderStatusEnum.Completed.ObjToInt();
                receiveOrder.UploadStatus = WhetherEnum.True.ObjToInt();
                BaseDal.UpdateData(receiveOrder);
                //创建入库单
                CreateInboundOrder(orderId);
                //收货推送至ERP æµ‹è¯•注释
                _invokeERPService.InvokeMatReceiveApi(receiveModel);
                return WebResponseContent.Instance.OK();
            }
            catch (Exception ex)
@@ -173,15 +178,16 @@
            try
            {
                int pageNo = saveModel.MainData["pageNo"].ObjToInt();
                int warehouseId = saveModel.MainData["warehouseId"].ObjToInt();
                string orderNo = saveModel.MainData["orderNo"].ToString();
                List<Dt_ReceiveOrder> dt_ReceiveOrders = new List<Dt_ReceiveOrder>();
                if (string.IsNullOrEmpty(orderNo))
                {
                    dt_ReceiveOrders = Db.Queryable<Dt_ReceiveOrder>().Where(x => x.ReceiveOrderStatus < ReceiveOrderStatusEnum.Completed.ObjToInt()).ToPageList(pageNo, 5);
                    dt_ReceiveOrders = Db.Queryable<Dt_ReceiveOrder>().Where(x => x.ReceiveOrderStatus < ReceiveOrderStatusEnum.Completed.ObjToInt() && x.WarehouseId == warehouseId).ToPageList(pageNo, 5);
                }
                else
                {
                    dt_ReceiveOrders = Db.Queryable<Dt_ReceiveOrder>().Where(x => (x.ReceiveOrderNo.Contains(orderNo) || x.SuppliersId.Contains(orderNo)) && x.ReceiveOrderStatus < ReceiveOrderStatusEnum.Completed.ObjToInt()).ToPageList(pageNo, 5);
                    dt_ReceiveOrders = Db.Queryable<Dt_ReceiveOrder>().Where(x => (x.ReceiveOrderNo.Contains(orderNo) || x.SuppliersId.Contains(orderNo)) && x.ReceiveOrderStatus < ReceiveOrderStatusEnum.Completed.ObjToInt() && x.WarehouseId == warehouseId).ToPageList(pageNo, 5);
                }
                content.OK(data: dt_ReceiveOrders);
@@ -230,7 +236,6 @@
                Dt_InboundOrder inboundOrder = new Dt_InboundOrder()
                {
                    InboundOrderNo="TestInboundNo21",//测试
                    UpperOrderNo = receiveOrder.ReceiveOrderNo,
                    CreateType = OrderCreateTypeEnum.UpperSystemPush.ObjToInt(),
                    OrderStatus = InOrderStatusEnum.未开始.ObjToInt(),
@@ -239,7 +244,7 @@
                    SupplierId = receiveOrder.SuppliersId,
                    Details = new List<Dt_InboundOrderDetail>()
                };
                List<Dt_MaterielInfo> materielCodeInfos = _basicRepository.MaterielInfoRepository.QueryData(x => receiveOrder.Details.Select(x => x.MaterielCode).ToList().Contains(x.MaterielCode));
                foreach (var item in receiveOrder.Details)
                {
                    float quantity = item.ReceivedQuantity;
@@ -257,6 +262,8 @@
                    Dt_InboundOrderDetail detail = new Dt_InboundOrderDetail()
                    {
                        MaterielCode = item.MaterielCode,
                        MaterielName = materielCodeInfos.FirstOrDefault(x => x.MaterielCode == item.MaterielCode)?.MaterielName ?? "",
                        MaterielSpec= materielCodeInfos.FirstOrDefault(x => x.MaterielCode == item.MaterielCode)?.MaterielSpec ?? "",
                        OrderDetailStatus = OrderDetailStatusEnum.New.ObjToInt(),
                        OrderQuantity = quantity,
                        OverInQuantity = 0,
@@ -352,7 +359,6 @@
                    }
                    receiveOrder = new Dt_ReceiveOrder()
                    {
                        ReceiveOrderNo= "TestReceiveOrderNo21",//测试
                        ReceiveOrderStatus = ReceiveOrderStatusEnum.Receiving.ObjToInt(),
                        CustomerId = "",
                        DeliveryCode = "/",
@@ -399,19 +405,19 @@
                        rowNo += 1;
                        receiveOrderDetails.Add(receiveOrderDetail);
                        if (materielInfo.IsCheck == WhetherEnum.True)
                        {
                            Dt_CheckOrder checkOrder = _mapper.Map<Dt_CheckOrder>(receiveOrderDetail);
                            checkOrder.CheckOrderNo = "Test-CheckNo1";//测试
                            checkOrder.QualifiedQuantity = receiveOrderDetail.ReceivedQuantity;
                            checkOrder.ScrappedQuantity = 0;
                            checkOrder.ReceiveOrderNo = receiveOrder.ReceiveOrderNo;
                            checkOrder.ReturnQuantity = 0;
                            checkOrder.DefectedQuantity = 0;
                            checkOrder.ReceiveDetailRowNo = rowNo;
                            checkOrder.UploadStatus = CheckUploadEnum.UploadNo.ObjToInt();
                            checkOrders.Add(checkOrder);
                        }
                        //if (materielInfo.IsCheck == WhetherEnum.True)
                        //{
                        //    Dt_CheckOrder checkOrder = _mapper.Map<Dt_CheckOrder>(receiveOrderDetail);
                        //    checkOrder.CheckOrderNo = "Test-CheckNo1";//测试
                        //    checkOrder.QualifiedQuantity = receiveOrderDetail.ReceivedQuantity;
                        //    checkOrder.ScrappedQuantity = 0;
                        //    checkOrder.ReceiveOrderNo = receiveOrder.ReceiveOrderNo;
                        //    checkOrder.ReturnQuantity = 0;
                        //    checkOrder.DefectedQuantity = 0;
                        //    checkOrder.ReceiveDetailRowNo = rowNo;
                        //    checkOrder.UploadStatus = CheckUploadEnum.UploadNo.ObjToInt();
                        //    checkOrders.Add(checkOrder);
                        //}
                    }
                }
@@ -428,10 +434,10 @@
                    Db.InsertNav(receiveOrder).Include(x => x.Details).ExecuteCommand();
                    checkOrders.ForEach(x => x.ReceiveOrderNo = receiveOrder.ReceiveOrderNo);
                }
                if (checkOrders.Count > 0)
                {
                    _checkOrderRepository.AddData(checkOrders);
                }
                //if (checkOrders.Count > 0)
                //{
                //    _checkOrderRepository.AddData(checkOrders);
                //}
                _inboundRepository.PurchaseOrderRepository.UpdateData(purchaseOrder);
                _inboundRepository.PurchaseOrderDetailRepository.UpdateData(purchaseOrder.Details);
                _unitOfWorkManage.CommitTran();