| | |
| | | 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; |
| | |
| | | _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())) |
| | |
| | | |
| | | 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 |
| | |
| | | PriceInTax = 0, |
| | | PurchaseOrderCode = item.PurchaseOrderNo, |
| | | PurchaseOrderSerno = item.PurchaseOrderDetailRowNo, |
| | | QtyRecieved = item.ReceivedQuantity.ObjToInt(), |
| | | QtyRecieved = item.ReceivedQuantity, |
| | | Serno = item.RowNo, |
| | | Supplotno = "", |
| | | Supplotno = item.LotNo, |
| | | Taxrate = "", |
| | | |
| | | }; |
| | | if (receiveOrder.ReceiveOrderType!=ReceiveOrderTypeEnum.PO.ObjToInt()) |
| | | { |
| | | recevieOrderDetail.Taxrate = "ZZ11"; |
| | | recevieOrderDetail.Currcode = "RMB"; |
| | | } |
| | | recevieOrderDetails.Add(recevieOrderDetail); |
| | | } |
| | | |
| | | 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(); |
| | | //æ¶è´§æ¨éè³ER |
| | | string response = _invokeERPService.InvokeMatReceiveApi(receiveModel); |
| | | ErpRequestContent requestContent = response.DeserializeObject<ErpRequestContent>(); |
| | | if (requestContent.res != 1) |
| | | { |
| | | return WebResponseContent.Instance.Error($"{requestContent.Data}"); |
| | | } |
| | | receiveOrder.UploadStatus = WhetherEnum.True.ObjToInt(); |
| | | BaseDal.UpdateData(receiveOrder); |
| | | if (receiveOrder.Details.FirstOrDefault(x=>x.IfInspection==WhetherEnum.True.ObjToInt())==null) |
| | | { |
| | | //å建å
¥åºå todo:æç»é½æ¯ä¸æ£éªèªå¨å建å
¥åºå |
| | | CreateInboundOrder(orderId); |
| | | } |
| | | return WebResponseContent.Instance.OK(); |
| | | } |
| | | catch (Exception ex) |
| | |
| | | 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); |
| | |
| | | try |
| | | { |
| | | Dt_ReceiveOrder receiveOrder = Db.Queryable<Dt_ReceiveOrder>().Where(x => x.ReceiveOrderId == receiveOrderId).Includes(x => x.Details).First(); |
| | | if (receiveOrder.UploadStatus!= WhetherEnum.True.ObjToInt()) |
| | | { |
| | | return WebResponseContent.Instance.Error($"该æ¶è´§åæ¥æä¸ä¼ ERPå¤±è´¥æ æ³å建å
¥åºåæ®"); |
| | | } |
| | | if (receiveOrder == null) |
| | | { |
| | | return WebResponseContent.Instance.Error($"æªæ¾å°è¯¥æ¶è´§åä¿¡æ¯"); |
| | |
| | | { |
| | | return WebResponseContent.Instance.Error($"该æ¶è´§åæªå®æ"); |
| | | } |
| | | Dt_InboundOrder OldCreateOrder = _inboundRepository.InboundOrderRepository.QueryFirst(x => x.UpperOrderNo == receiveOrder.ReceiveOrderNo); |
| | | if (receiveOrder.CreateInOrderStatus==WhetherEnum.True.ObjToInt() || OldCreateOrder!=null) |
| | | { |
| | | 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) |
| | | { |
| | | return WebResponseContent.Instance.Error($"æ¶è´§æç»ä¸åæè´¨æ£æªéè¿"); |
| | | } |
| | | #endregion |
| | | |
| | | Dt_InboundOrder inboundOrder = new Dt_InboundOrder() |
| | | { |
| | | InboundOrderNo = "TestInboundNo21",//æµè¯ |
| | | UpperOrderNo = receiveOrder.ReceiveOrderNo, |
| | | CreateType = OrderCreateTypeEnum.UpperSystemPush.ObjToInt(), |
| | | OrderStatus = InOrderStatusEnum.æªå¼å§.ObjToInt(), |
| | |
| | | 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; |
| | | #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() |
| | | { |
| | | 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, |
| | |
| | | }; |
| | | 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); |
| | | } |
| | | } |
| | | |
| | | #region æµè¯ |
| | | public WebResponseContent ReceiveAllOrder(int purchaseOrderId, string lotNo) |
| | | { |
| | | try |
| | |
| | | rowNo += 1; |
| | | receiveOrderDetails.Add(receiveOrderDetail); |
| | | #region 注é |
| | | //if (materielInfo.IsCheck == WhetherEnum.True) |
| | | //{ |
| | | // Dt_CheckOrder checkOrder = _mapper.Map<Dt_CheckOrder>(receiveOrderDetail); |
| | | // checkOrder.CheckOrderNo = "TestCheckNo21";//æµè¯ |
| | | // checkOrder.ReceiveOrderNo = ""; |
| | | // checkOrder.QualifiedQuantity = receiveOrderDetail.ReceivedQuantity; |
| | | // checkOrder.ScrappedQuantity = 0; |
| | | // 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 = "TestCheckNo21";//æµè¯ |
| | | checkOrder.ReceiveOrderNo = ""; |
| | | checkOrder.QualifiedQuantity = receiveOrderDetail.ReceivedQuantity; |
| | | checkOrder.ScrappedQuantity = 0; |
| | | checkOrder.ReturnQuantity = 0; |
| | | checkOrder.DefectedQuantity = 0; |
| | | checkOrder.ReceiveDetailRowNo = rowNo; |
| | | checkOrder.UploadStatus = CheckUploadEnum.UploadNo.ObjToInt(); |
| | | checkOrders.Add(checkOrder); |
| | | } |
| | | #endregion |
| | | } |
| | | receiveOrder = new Dt_ReceiveOrder() |
| | | { |
| | | ReceiveOrderNo = "TestReceiveOrderNo21",//æµè¯ |
| | | ReceiveOrderStatus = ReceiveOrderStatusEnum.Receiving.ObjToInt(), |
| | | CustomerId = "", |
| | | DeliveryCode = "/", |
| | |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | } |
| | | #endregion |
| | | } |
| | | } |