Example #1
0
        /// <summary>
        /// 删除模板
        /// </summary>
        public virtual async Task <bool> TemplateDelete(string templateCode)
        {
            var template = omsAccessor.Get <RemindTemplateModel>().Include(c => c.TemplateTitle).Include(c => c.UserMessages).Include(c => c.Product).Where(c => c.TemplateCode == templateCode).FirstOrDefault();

            template.Isdelete = true;
            template.RemindTitles.Select(c => c.Isdelete = true).ToList();
            template.UserMessages.Select(c => c.Isdelete = true).ToList();
            template.Product.Isdelete = true;
            return(await omsAccessor.OMSContext.SaveChangesAsync() > 0);
        }
Example #2
0
        public bool Set(object ob)
        {
            var _user = string.Empty; var str = new List <UserDto>(); var dto = ob as SetDto;

            if (dto == null)
            {
                return(false);
            }
            if (dto.User.Count != 0)
            {
                dto.User.ForEach(c => str.Add(new UserDto()
                {
                    Id = c.Id, UserName = c.UserName
                }));
                _user = JsonConvert.SerializeObject(str);
            }

            // 更新规则
            remindNotify.Rule(omsAccessor, dto);

            var _template = dto.Key.Select(c => c.TemplateCode).ToList();

            var templates = omsAccessor.Get <RemindTemplateModel>().Include(c => c.Product).Where(c => _template.Any(d => d == c.TemplateCode)).ToList();

            dto.Key.ForEach(k =>
            {
                var template = templates.Where(c => c.TemplateCode == k.TemplateCode).FirstOrDefault();
                var product  = new RemindProductdto()
                {
                    Name = k.Name, ProductCode = k.ProductCode, En = k.En, Price = k.Price, Stock = k.Stock
                };
                if (template == null)
                {
                    var list = new RemindTemplateDto()
                    {
                        TemplateTitle = string.IsNullOrEmpty(dto.TemplateTitle) ? k.Name + "库存不足{{RemindStock}},可用库存{{Stock}}" : dto.TemplateTitle, User = _user, SaleProductId = k.SaleProductId, Product = product, RemindStock = dto.RemindStock
                    };
                    var entity = new RemindTemplateModel();
                    Mapper.Map(list, entity);
                    entity.Statu = true;
                    omsAccessor.OMSContext.RemindTemplate.Add(entity);
                }
                else
                {
                    template.TemplateTitle = string.IsNullOrEmpty(dto.TemplateTitle) ? k.Name + "库存不足{{RemindStock}},可用库存{{Stock}}" : dto.TemplateTitle;
                    template.User          = _user;
                    template.Product       = Mapper.Map(product, template.Product);
                    template.RemindStock   = dto.RemindStock;
                    template.Statu         = true;
                }
            });

            return(omsAccessor.OMSContext.SaveChangesAsync().Result > 0);
        }
Example #3
0
        /// <summary>
        /// SearchProductDto 条件
        /// </summary>
        public object Search(object ob, out int count, int page, int limit)
        {
            count = 0; var list = new List <SaleProductDto>();
            var            search = ob as SearchProductDto; search.NameCode = search.NameCode?.Trim();

            if (search == null)
            {
                return(null);
            }
            //查询字典
            var productType = omsAccessor.Get <Dictionary>().AsNoTracking().Where(c => c.Value == search.ProductType).Select(c => (int?)c.Id).FirstOrDefault();

            using (var sqlsugar = new SqlSugar(configuration))
            {
                var db = sqlsugar.db;
                count = 0;
                var data = db.Queryable <SaleProductWareHouseStock, SaleProductPrice, SaleProduct, Product>((w, spp, sp, p) => new object[] {
                    JoinType.Inner, w.SaleProductId == spp.SaleProductId,
                    JoinType.Inner, spp.SaleProductId == sp.Id,
                    JoinType.Inner, sp.ProductId == p.Id,
                }).Where((w, spp, sp, p) => sp.Isvalid &&
                         ((search.MaxPrice == null || spp.Price <= search.MaxPrice) && (search.MinPrice == null || spp.Price >= search.MinPrice)) &&
                         (productType == null || p.Type == productType) && (string.IsNullOrEmpty(search.NameCode) || p.Name.Contains(search.NameCode) || p.NameEn.Contains(search.NameCode) || p.Code == search.NameCode)
                         ).GroupBy((w, spp, sp, p) => new { w.SaleProductId, p.Name, p.NameEn, p.Code })
                           .Select((w, spp, sp, p) => new
                {
                    SaleProductId = w.SaleProductId,
                    Price         = SqlFunc.AggregateAvg(spp.Price),
                    Stock         = SqlFunc.AggregateSum(w.Stock - w.LockStock),
                    Name          = p.Name,
                    En            = p.NameEn,
                    ProductCode   = p.Code
                }).ToPageList(page, limit, ref count);

                var _template = omsAccessor.Get <RemindTemplateModel>().Select(c => new { c.TemplateCode, c.Statu, c.SaleProductId }).ToList();
                data.ForEach(c =>
                {
                    var template = _template.FirstOrDefault(d => d.SaleProductId == c.SaleProductId);

                    list.Add(new SaleProductDto()
                    {
                        SaleProductId = c.SaleProductId,
                        Price         = c.Price,
                        Stock         = c.Stock,
                        Name          = c.Name,
                        En            = c.En,
                        ProductCode   = c.ProductCode,
                        TemplateCode  = template?.TemplateCode,
                        Statu         = template == null ? false : template.Statu,
                    });
                });
            }
            return(list);
        }
Example #4
0
        public override void Rule(IDbAccessor omsAccessor, SetDto set)
        {
            var templateCodes = set.Key.Select(c => c.TemplateCode).ToList();
            var templateCode  = omsAccessor.Get <RemindTemplateModel>().Where(c => templateCodes.Any(d => d == c.TemplateCode)).ToList();

            templateCode.ForEach(c =>
            {
                // 标题/提醒库存 不同时,视为更新
                if (c.TemplateTitle != set.TemplateTitle || c.RemindStock != set.RemindStock)
                {
                    c.IsUpdate = true;
                }
            });
        }
Example #5
0
        /// <summary>
        /// SearchDto 标题条件搜索
        /// </summary>
        public object Search(object ob, out int count, int page = 1, int limit = 5)
        {
            count = 0;
            var search = ob as SearchDto;

            if (search == null)
            {
                return(null);
            }
            var list = omsAccessor.Get <RemindTitleModel>().AsNoTracking().Where(c =>
                                                                                 (search.Min == null || search.Min < c.CreateTime) && (search.Max == null || search.Max > c.CreateTime));

            count = list.Count();
            return(Mapper.Map <List <RemindTitleDto> >(list.Skip((page - 1) * limit).Take(limit).ToList()));
        }
Example #6
0
 /// <summary>
 /// 获取商品以及类型
 /// </summary>
 public List <string> GetProductType() => omsAccessor.Get <Dictionary>().Where(c => c.Type == DictionaryType.ProductType).Select(c => c.Value).ToList();
Example #7
0
        public IActionResult SyncOrderDeliveryState([FromBody] OrderDeliveryInfo orderDeliveryInfo)
        {
            if (orderDeliveryInfo != null)
            {
                var zhShopId = _configuration.GetSection("Zhaohang")["shopId"]; //招行店铺号
                var order    = _orderService.GetOrderBySerialNumber(orderDeliveryInfo.OMSSerialNumber);
                if (order == null)
                {
                    _logService.Error(string.Format("订单快递信息同步时未找到订单号为{0}的订单", orderDeliveryInfo.OMSSerialNumber));
                    return(Json(new { State = false, Message = string.Format("OMS中未找到SerialNumber为{0}的订单", orderDeliveryInfo.OMSSerialNumber) }));
                }

                var delivery = _deliveriesService.GetAllDeliveries().Where(r => r.Isvalid && r.Code.Equals(orderDeliveryInfo.DeliveryCode)).FirstOrDefault();
                if (delivery == null)
                {
                    _logService.Error(string.Format("订单号为:{0}的订单在同步快递信息时未找到快递Code为{1}的快递方式", orderDeliveryInfo.OMSSerialNumber, orderDeliveryInfo.DeliveryCode));
                    return(Json(new { State = false, Message = string.Format("OMS中未匹配到Code为{0}的快递", orderDeliveryInfo.DeliveryCode) }));
                }

                if (order != null)
                {
                    order.DeliveryDate   = orderDeliveryInfo.DeliveryDate;
                    order.DeliveryNumber = orderDeliveryInfo.DeliveryNumber;
                    order.DeliveryTypeId = delivery.Id;
                    if (order.Type == OrderType.B2B)
                    {
                        order.State = OrderState.Finished;
                    }
                    else
                    {
                        order.State = OrderState.Delivered;
                    }
                    _orderService.UpdateOrder(order);

                    #region 订单日志(订单发货)
                    OrderLog orderLog = new OrderLog();
                    orderLog.OrderId    = order.Id;
                    orderLog.OrderState = order.State;
                    orderLog.PayState   = order.PayState;
                    orderLog.OptionType = "订单发货";
                    orderLog.Mark       = "订单发货";
                    _logService.InsertOrderLog(orderLog);
                    #endregion
                    _logService.Info(string.Format("OMS订单号为:{0},订单Id为:{1} ,从WMS到OMS同步订单物流发货状态为{2}", order.SerialNumber, order.Id, order.State.Description()));

                    //推送快递信息到订单辅助系统(官方的商城的订单才可以)
                    var orderList = new List <Order>();//需要通知的发货订单集合
                    if (order.Type == OrderType.B2C_XH && order.ShopId == 97)
                    {
                        //正常的订单流程
                        if (order.AppendType == 0)
                        {
                            orderList.Add(order);
                        }
                        //合并的订单
                        if (order.AppendType == AppendType.Combine)
                        {
                            var orderArr = order.OrgionSerialNumber.Split("_", StringSplitOptions.RemoveEmptyEntries);
                            //找出所有合并订单里面的子订单进行通知
                            for (int i = 0; i < orderArr.Length; i++)
                            {
                                var childOrder = _orderService.GetOrderBySerialNumber(orderArr[i].Trim());
                                childOrder.DeliveryNumber = order.DeliveryNumber;
                                if (childOrder != null)
                                {
                                    orderList.Add(childOrder);
                                }
                            }
                        }

                        //拆分的订单
                        if (order.AppendType == AppendType.Split)
                        {
                            //父订单单号
                            var orgionSerialNumber = order.OrgionSerialNumber.Split("(")[0].Trim();
                            if (!string.IsNullOrEmpty(orgionSerialNumber))
                            {
                                //判断拆分成的子订单是否发货,存在未发货的不去通知,子订单全部发货完成之后再进行通知商城订单发货
                                var childOrders = _omsAccessor.Get <Order>().Where(x => x.Isvalid && x.State != OrderState.Delivered && x.OrgionSerialNumber.Contains(orgionSerialNumber));
                                if (childOrders == null || childOrders.Count() == 0)
                                {
                                    var updateOrder = _orderService.GetOrderBySerialNumber(orgionSerialNumber);
                                    updateOrder.DeliveryNumber = childOrders.FirstOrDefault().DeliveryNumber;
                                    if (updateOrder != null)
                                    {
                                        orderList.Add(updateOrder);
                                    }
                                }
                            }
                        }
                        //通知发货状态
                        if (orderList != null && orderList.Count > 0)
                        {
                            SyncOrderDeliveryToAssist(orderList);
                        }
                    }
                    //推送快递信息到招行系统
                    else if (order.Type == OrderType.B2C_XH && order.ShopId == int.Parse(zhShopId))
                    {
                        //正常的订单流程
                        if (order.AppendType == 0)
                        {
                            orderList.Add(order);
                        }
                        //合并的订单
                        if (order.AppendType == AppendType.Combine)
                        {
                            var orderArr = order.OrgionSerialNumber.Split("_", StringSplitOptions.RemoveEmptyEntries);
                            //找出所有合并订单里面的子订单进行通知
                            for (int i = 0; i < orderArr.Length; i++)
                            {
                                var childOrder = _orderService.GetOrderBySerialNumber(orderArr[i].Trim());
                                childOrder.DeliveryNumber = order.DeliveryNumber;
                                childOrder.DeliveryTypeId = order.DeliveryTypeId;
                                if (childOrder != null)
                                {
                                    orderList.Add(childOrder);
                                }
                            }
                        }

                        //拆分的订单
                        if (order.AppendType == AppendType.Split)
                        {
                            //父订单单号
                            var orgionSerialNumber = order.OrgionSerialNumber.Split("(")[0].Trim();
                            if (!string.IsNullOrEmpty(orgionSerialNumber))
                            {
                                //判断拆分成的子订单是否发货,存在未发货的不去通知,子订单全部发货完成之后再进行通知商城订单发货
                                var childOrders = _omsAccessor.Get <Order>().Where(x => x.Isvalid && x.State != OrderState.Delivered && x.OrgionSerialNumber.Contains(orgionSerialNumber));
                                if (childOrders == null || childOrders.Count() == 0)
                                {
                                    var updateOrder = _orderService.GetOrderBySerialNumber(orgionSerialNumber);
                                    updateOrder.DeliveryNumber = childOrders.FirstOrDefault().DeliveryNumber;
                                    updateOrder.DeliveryTypeId = childOrders.FirstOrDefault().DeliveryTypeId;
                                    if (updateOrder != null)
                                    {
                                        orderList.Add(updateOrder);
                                    }
                                }
                            }
                        }
                        //通知发货状态
                        if (orderList != null && orderList.Count > 0)
                        {
                            foreach (var item in orderList)
                            {
                                var result = _cmbService.ReturnDeliverResultToCMB(item);
                            }
                        }
                    }
                    //推送发货状态到线下店
                    else if (order.Type == OrderType.B2C_XH && order.PSerialNumber.Contains("XS"))
                    {
                        //正常的订单流程
                        if (order.AppendType == 0)
                        {
                            orderList.Add(order);
                        }
                        //合并的订单
                        if (order.AppendType == AppendType.Combine)
                        {
                            var orderArr = order.OrgionSerialNumber.Split("_", StringSplitOptions.RemoveEmptyEntries);
                            //找出所有合并订单里面的子订单进行通知
                            for (int i = 0; i < orderArr.Length; i++)
                            {
                                var childOrder = _orderService.GetOrderBySerialNumber(orderArr[i].Trim());
                                childOrder.DeliveryNumber = order.DeliveryNumber;
                                if (childOrder != null)
                                {
                                    orderList.Add(childOrder);
                                }
                            }
                        }

                        //拆分的订单
                        if (order.AppendType == AppendType.Split)
                        {
                            //父订单单号
                            var orgionSerialNumber = order.OrgionSerialNumber.Split("(")[0].Trim();
                            if (!string.IsNullOrEmpty(orgionSerialNumber))
                            {
                                //判断拆分成的子订单是否发货,存在未发货的不去通知,子订单全部发货完成之后再进行通知商城订单发货
                                var childOrders = _omsAccessor.Get <Order>().Where(x => x.Isvalid && x.State != OrderState.Delivered && x.OrgionSerialNumber.Contains(orgionSerialNumber));
                                if (childOrders == null || childOrders.Count() == 0)
                                {
                                    var updateOrder = _orderService.GetOrderBySerialNumber(orgionSerialNumber);
                                    updateOrder.DeliveryNumber = childOrders.FirstOrDefault().DeliveryNumber;
                                    if (updateOrder != null)
                                    {
                                        orderList.Add(updateOrder);
                                    }
                                }
                            }
                        }
                        //通知发货状态
                        if (orderList != null && orderList.Count > 0)
                        {
                            _orderService.ApiReturnOffLineOrderState(orderList);
                        }
                    }
                }

                return(Json(new { State = true, Message = "成功" }));
            }
            else
            {
                return(Json(new { State = false, Message = "no data" }));
            }
        }
Example #8
0
 public User GetById(int id)
 {
     return(_omsAccessor.Get <User>().Where(x => x.Isvalid && x.Id == id).FirstOrDefault());
 }
Example #9
0
 public Account GetByUserName(string userName)
 {
     return(_amsAccessor.Get <Account>().FirstOrDefault(i => i.UserName == userName && i.Isvalid));
 }