|  |  |  | 
|---|
|  |  |  | using AutoMapper; | 
|---|
|  |  |  | using MailKit.Search; | 
|---|
|  |  |  | using SqlSugar; | 
|---|
|  |  |  | using System; | 
|---|
|  |  |  | using System.Collections.Generic; | 
|---|
|  |  |  | using System.Linq; | 
|---|
|  |  |  | using System.Reflection; | 
|---|
|  |  |  | using System.Text; | 
|---|
|  |  |  | using System.Threading.Tasks; | 
|---|
|  |  |  | using WIDESEA_Common.CommonEnum; | 
|---|
|  |  |  | 
|---|
|  |  |  | using WIDESEA_Core.BaseRepository; | 
|---|
|  |  |  | using WIDESEA_Core.BaseServices; | 
|---|
|  |  |  | using WIDESEA_Core.Helper; | 
|---|
|  |  |  | using WIDESEA_Core.Utilities; | 
|---|
|  |  |  | using WIDESEA_DTO; | 
|---|
|  |  |  | using WIDESEA_DTO.Basic; | 
|---|
|  |  |  | using WIDESEA_DTO.ERP; | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (saveModel.MainData.TryGetValue(nameof(Dt_ReceiveOrder.SuppliersId).FirstLetterToLower(), out object? suppliersId) && suppliersId != null && !string.IsNullOrEmpty(suppliersId.ToString())) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Dt_ReceiveOrder receiveOrder = BaseDal.QueryFirst(x => x.SuppliersId == suppliersId.ToString() && x.WarehouseId == Convert.ToInt32(saveModel.MainData[nameof(Dt_ReceiveOrder.WarehouseId).FirstLetterToLower()])); | 
|---|
|  |  |  | if (receiveOrder != null && receiveOrder.ReceiveOrderStatus != ReceiveOrderStatusEnum.Completed.ObjToInt()) | 
|---|
|  |  |  | Dt_ReceiveOrder receiveOrder = BaseDal.QueryFirst(x => x.SuppliersId == suppliersId.ToString() && x.WarehouseId == Convert.ToInt32(saveModel.MainData[nameof(Dt_ReceiveOrder.WarehouseId).FirstLetterToLower()]) && x.ReceiveOrderStatus< ReceiveOrderStatusEnum.Completed.ObjToInt()); | 
|---|
|  |  |  | if (receiveOrder != null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | return WebResponseContent.Instance.Error("该ä¾åºåææªå®æçæ¶è´§å"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return base.AddData(saveModel); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | public override object GetDetailPage(PageDataOptions pageData) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Type t = typeof(Dt_ReceiveOrder); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (pageData.Value == null) return new PageGridData<object>(total: 0, null); | 
|---|
|  |  |  | string keyName = t.GetKeyName(); | 
|---|
|  |  |  | ////çææ¥è¯¢æ¡ä»¶ | 
|---|
|  |  |  | //Expression<Func<TEntity, bool>> whereExpression = keyName.CreateExpression<TEntity>(pageData.Value, LinqExpressionType.Equal); | 
|---|
|  |  |  | int totalCount = 0; | 
|---|
|  |  |  | PropertyInfo propertyInfo = t.GetProperties().FirstOrDefault(x => x.GetCustomAttribute<Navigate>() != null); | 
|---|
|  |  |  | if (propertyInfo != null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Type detailType = propertyInfo.PropertyType.GetGenericArguments()[0]; | 
|---|
|  |  |  | Navigate navigate = propertyInfo.GetCustomAttribute<Navigate>(); | 
|---|
|  |  |  | List<Dt_ReceiveOrderDetail> list = BaseDal.Db.Queryable<Dt_ReceiveOrderDetail>().Where(navigate.GetName(), "=", pageData.Value).ToPageList(pageData.Page, pageData.Rows, ref totalCount); | 
|---|
|  |  |  | decimal sum = 0; | 
|---|
|  |  |  | list.ForEach(x => | 
|---|
|  |  |  | { | 
|---|
|  |  |  | sum += Convert.ToDecimal(x.ReceivedQuantity); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | PageGridData<Dt_ReceiveOrderDetail> pageGridData = new PageGridData<Dt_ReceiveOrderDetail>() | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Total = totalCount, | 
|---|
|  |  |  | Rows = list, | 
|---|
|  |  |  | Summary = new | 
|---|
|  |  |  | { | 
|---|
|  |  |  | ReceivedQuantity = Math.Round(sum, 3), | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | return pageGridData; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return new PageGridData<object>(total: 0, null); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | /// <summary> | 
|---|
|  |  |  | /// æ¶è´§å®æå¹¶åä¼ ERP | 
|---|
|  |  |  | 
|---|
|  |  |  | 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() && x.WarehouseId == warehouseId).ToPageList(pageNo, 5); | 
|---|
|  |  |  | dt_ReceiveOrders = Db.Queryable<Dt_ReceiveOrder>().Where(x => x.ReceiveOrderStatus < ReceiveOrderStatusEnum.Completed.ObjToInt() && x.WarehouseId == warehouseId).Includes(x=>x.Details).OrderByDescending(x=>x.ReceiveOrderId).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() && x.WarehouseId == warehouseId).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).OrderByDescending(x => x.ReceiveOrderId).Includes(x => x.Details).ToPageList(pageNo, 5); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | content.OK(data: dt_ReceiveOrders); | 
|---|
|  |  |  | 
|---|
|  |  |  | return WebResponseContent.Instance.Error($"该æ¶è´§å对åºçå
¥åºåå·²åå¨"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | #region æ³¨é | 
|---|
|  |  |  | //List<Dt_CheckOrder> checkOrders = _checkOrderRepository.QueryData(x => x.ReceiveOrderNo == receiveOrder.ReceiveOrderNo); | 
|---|
|  |  |  | //if (checkOrders.FirstOrDefault(x => x.CheckOrderStatus == CheckOrderStatusEnum.NotCheck.ObjToInt()) != null) | 
|---|
|  |  |  | //{ | 
|---|
|  |  |  | //    return WebResponseContent.Instance.Error($"该æ¶è´§åæªè´¨æ£å®æ"); | 
|---|
|  |  |  | //} | 
|---|
|  |  |  | List<Dt_CheckOrder> checkOrders = _checkOrderRepository.QueryData(x => x.ReceiveOrderNo == receiveOrder.ReceiveOrderNo); | 
|---|
|  |  |  | if (checkOrders.FirstOrDefault(x => x.CheckOrderStatus == CheckOrderStatusEnum.NotCheck.ObjToInt()) != null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | return WebResponseContent.Instance.Error($"该æ¶è´§åæªè´¨æ£å®æ"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ////if (checkOrders.FirstOrDefault(x => x.AuditStatus != AuditStatusEnum.Agree.ObjToInt()) != null) | 
|---|
|  |  |  | ////{ | 
|---|
|  |  |  | ////    return WebResponseContent.Instance.Error($"该æ¶è´§åè´¨æ£ç»æå®¡æ¹æªå®æ"); | 
|---|
|  |  |  | ////} | 
|---|
|  |  |  | //if (checkOrders.FirstOrDefault(x => x.Result != CheckAcceptEnum.Accept.ToString()) != null) | 
|---|
|  |  |  | //if (checkOrders.FirstOrDefault(x => x.AuditStatus != AuditStatusEnum.Agree.ObjToInt()) != null) | 
|---|
|  |  |  | //{ | 
|---|
|  |  |  | //    return WebResponseContent.Instance.Error($"æ¶è´§æç»ä¸åæè´¨æ£æªéè¿"); | 
|---|
|  |  |  | //    return WebResponseContent.Instance.Error($"该æ¶è´§åè´¨æ£ç»æå®¡æ¹æªå®æ"); | 
|---|
|  |  |  | //} | 
|---|
|  |  |  | if (checkOrders.FirstOrDefault(x => x.Result != CheckAcceptEnum.Accept.ToString()) != null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | return WebResponseContent.Instance.Error($"æ¶è´§æç»ä¸åæè´¨æ£æªéè¿"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | #endregion | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Dt_InboundOrder inboundOrder = new Dt_InboundOrder() | 
|---|
|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | float quantity = item.ReceivedQuantity; | 
|---|
|  |  |  | #region æ³¨é | 
|---|
|  |  |  | //if (item.IfInspection == WhetherEnum.True.ObjToInt()) | 
|---|
|  |  |  | //{ | 
|---|
|  |  |  | //    Dt_CheckOrder? checkOrder = checkOrders.FirstOrDefault(x => x.ReceiveOrderNo == receiveOrder.ReceiveOrderNo && x.ReceiveDetailRowNo == item.RowNo); | 
|---|
|  |  |  | //    if (checkOrder == null) | 
|---|
|  |  |  | //    { | 
|---|
|  |  |  | //        return WebResponseContent.Instance.Error($"è´¨æ£åæ°æ®é误"); | 
|---|
|  |  |  | //    } | 
|---|
|  |  |  | //    quantity = checkOrder.QualifiedQuantity.GetValueOrDefault() + checkOrder.DefectedQuantity.GetValueOrDefault(); | 
|---|
|  |  |  | //} | 
|---|
|  |  |  | if (item.IfInspection == WhetherEnum.True.ObjToInt()) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Dt_CheckOrder? checkOrder = checkOrders.FirstOrDefault(x => x.ReceiveOrderNo == receiveOrder.ReceiveOrderNo && x.ReceiveDetailRowNo == item.RowNo); | 
|---|
|  |  |  | if (checkOrder == null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | return WebResponseContent.Instance.Error($"è´¨æ£åæ°æ®é误"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | quantity = checkOrder.QualifiedQuantity.GetValueOrDefault() + checkOrder.DefectedQuantity.GetValueOrDefault(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | #endregion | 
|---|
|  |  |  | Dt_InboundOrderDetail detail = new Dt_InboundOrderDetail() | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | inboundOrder.Details.Add(detail); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //æ´æ°å
¥åºååå»ºç¶æ | 
|---|
|  |  |  | receiveOrder.CreateInOrderStatus = WhetherEnum.True.ObjToInt(); | 
|---|
|  |  |  | _unitOfWorkManage.BeginTran(); | 
|---|
|  |  |  | BaseDal.UpdateData(receiveOrder); | 
|---|
|  |  |  | _inboundRepository.InboundOrderRepository.Db.InsertNav(inboundOrder).Include(x => x.Details).ExecuteCommand(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | _unitOfWorkManage.CommitTran(); | 
|---|
|  |  |  | return WebResponseContent.Instance.OK(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | catch (Exception ex) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | _unitOfWorkManage.RollbackTran(); | 
|---|
|  |  |  | return WebResponseContent.Instance.Error(ex.Message); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|