Пример #1
0
        public JsonResult GetOrderInfoByHTCode(string HTCode)
        {
            var orderChannel = OrderApiClientChannelFactory.GetChannel();
            var res          = orderChannel.GetOrderInfoByHTCode(HTCode);

            return(Json(new { state = 1, data = res }));
        }
Пример #2
0
        public JsonResult ConfirmOrder(Guid id, string supplier, string price, string reason, string remark, string count, string cReason, string cRemark, string isSame)
        {
            // 改数据库状态
            var channel = OrderApiClientChannelFactory.GetChannel();
            var res     = channel.Confirm(id, price, reason, remark, count, cReason, cRemark, isSame);

            if (res > 0)
            {
                var order = channel.FindByID(id);
                // 发用户消息
                WxMessageHandler.GetInstance().SendMessageToUser(order.IsTransfer == 0?CurrentWxUser.UserId:order.TransferUserMUDID, order);

                // 告诉小秘书已经收餐
                //var oponapiChannel = OpenApiChannelFactory.GetChannel();
                //var xmlres = oponapiChannel.finishOrder(order.XmsOrderId, "0", string.Empty);
                var req = new FinishOrderReq()
                {
                    _Channels    = supplier,
                    iPathOrderId = order.XmsOrderId,
                    type         = "0",
                    remark       = string.Empty
                };
                var iPathRes = apiClient.FinishOrder(req);


                return(Json(new { state = 1 }));
            }
            return(Json(new { state = 0, txt = "操作失败", errCode = 9008 }));
        }
Пример #3
0
        public ActionResult OriginalOrder(Guid id, string supplier)
        {
            ViewBag.orderId  = id;
            ViewBag.supplier = supplier;
            var orderChannel = OrderApiClientChannelFactory.GetChannel();
            var order        = orderChannel.FindByID(id);
            var deliverTime  = order.DeliverTime;
            var timeStamp    = (double)(deliverTime - DateTime.Now).TotalHours;

            if (timeStamp > 1.0)
            {
                ViewBag.flag1 = true;
            }
            else
            {
                ViewBag.flag1 = false;
            }
            if (order.IsRetuen == 3)
            {
                ViewBag.flag = true;
            }
            else
            {
                ViewBag.flag = false;
            }
            return(View());
        }
Пример #4
0
        public JsonResult LoadHTOrderInfo(Guid id)
        {
            var channel   = OrderApiClientChannelFactory.GetChannel();
            var orderInfo = channel.FindOldOrderByID(id);

            //var json = orderInfo.Detail;
            //P_Order _orderInfo = JsonConvert.DeserializeObject<P_Order>(json);
            return(Json(new { state = 1, data = orderInfo }));
        }
Пример #5
0
        public JsonResult Load(string end, string state, int year, int month)
        {
            var beginTime = "";
            var endTime   = "";

            if (month == 0)
            {
                beginTime = year + "-01-01";
                year      = year + 1;
                endTime   = year + "-01-01";
            }
            else
            {
                beginTime = year + "-" + month + "-01";
                if (month == 12)
                {
                    year  = year + 1;
                    month = 1;
                }
                else
                {
                    month = month + 1;
                }
                endTime = year + "-" + month + "-01";
            }
            var      channel = OrderApiClientChannelFactory.GetChannel();
            DateTime _begin  = Convert.ToDateTime(beginTime);
            DateTime _end    = Convert.ToDateTime(endTime);
            DateTime __end   = Convert.ToDateTime(end);

            if (__end >= _begin && __end <= _end)
            {
                _end = __end;
            }
            int rows  = 5;
            int page  = 1;
            int total = 0;

            if (state == "4,12")
            {
                var list = channel.LoadReceiveOrderByUserId(CurrentWxUser.UserId, _begin, _end, state, rows, page, out total);
                return(Json(new { state = 1, rows = list }));
            }
            else
            {
                if (year < 2018 || year == 2018 && month < 7)
                {
                    var list = channel.LoadOldOrderByUserId(CurrentWxUser.UserId, _begin, _end, state, rows, page, out total);
                    return(Json(new { state = 1, rows = list }));
                }
                else
                {
                    var list = channel.LoadByUserId(CurrentWxUser.UserId, _begin, _end, state, rows, page, out total);
                    return(Json(new { state = 1, rows = list }));
                }
            }
        }
Пример #6
0
        public JsonResult LoadOrderInfo(Guid id)
        {
            var channel            = OrderApiClientChannelFactory.GetChannel();
            var orderInfo          = channel.FindByID(id);
            var preApprovalChannel = PreApprovalClientChannelFactory.GetChannel();
            var preAproval         = preApprovalChannel.CheckPreApprovalState(orderInfo.CN);

            //var json = orderInfo.Detail;
            //P_Order _orderInfo = JsonConvert.DeserializeObject<P_Order>(json);
            return(Json(new { state = 1, data = orderInfo, preApproval = preAproval }));
        }
Пример #7
0
        /// <summary>
        /// 转到未送达页面
        /// </summary>
        /// <returns></returns>
        public ActionResult Undelivered(Guid id, string resId, string supplier, string htCode)
        {
            ViewBag.OrderId  = id;
            ViewBag.resId    = resId;
            ViewBag.supplier = supplier;
            ViewBag.HTCode   = htCode;
            var channel   = OrderApiClientChannelFactory.GetChannel();
            var orderInfo = channel.FindByID(id);

            ViewBag.OrderState = orderInfo.State;
            return(View());
        }
Пример #8
0
        public ActionResult Confirm(Guid id, string supplier, string price, string count, string htCode)
        {
            ViewBag.OrderID  = id;
            ViewBag.Supplier = supplier;
            ViewBag.Price    = string.Format("{0:N2}", decimal.Parse(price));
            ViewBag.Count    = count;
            ViewBag.HTCode   = htCode;
            var channel   = OrderApiClientChannelFactory.GetChannel();
            var orderInfo = channel.FindByID(id);

            ViewBag.OrderState = orderInfo.State;
            return(View());
        }
Пример #9
0
        /// <summary>
        /// 评论
        /// </summary>
        /// <returns></returns>
        public JsonResult Add(string orderID, string restaurantId, int star, int onTime, string onTimeDiscripion,
                              int isSafe, string safeDiscepion, string safeImage, int health, string healthDiscrpion, string healthImage,
                              int pack, string packDiscrpion, string packImage, int costEffective, string costEffectiveDiscrpion, string costEffectiveImage, string otherDiscrpion)
        {
            P_EVALUATE entity = new P_EVALUATE();

            entity.ID                     = Guid.NewGuid();
            entity.OrderID                = new Guid(orderID);
            entity.RestaurantId           = restaurantId == "" ? "" : restaurantId;
            entity.Star                   = star;
            entity.OnTime                 = onTime;
            entity.OnTimeDiscrpion        = onTimeDiscripion;
            entity.IsSafe                 = isSafe;
            entity.SafeDiscrpion          = safeDiscepion == "" ? "" : safeDiscepion;
            entity.SafeImage              = safeImage == "" ? "" : safeImage;
            entity.Health                 = health;
            entity.HealthDiscrpion        = healthDiscrpion == "" ? "" : healthDiscrpion;
            entity.HealthImage            = healthImage == "" ? "" : healthImage;
            entity.Pack                   = pack;
            entity.PackDiscrpion          = packDiscrpion == "" ? "" : packDiscrpion;
            entity.PackImage              = packImage == "" ? "" : packImage;
            entity.CostEffective          = costEffective;
            entity.CostEffectiveDiscrpion = costEffectiveDiscrpion == "" ? "" : costEffectiveDiscrpion;
            entity.CostEffectiveImage     = costEffectiveImage == "" ? "" : costEffectiveImage;
            entity.OtherDiscrpion         = otherDiscrpion == "" ? "" : otherDiscrpion;
            entity.State                  = 1;
            entity.CreateDate             = DateTime.Now;

            var channel = EvaluateClientChannelFactory.GetChannel();
            int res     = channel.Add(entity);

            if (res == 1)
            {
                var  _channel = OrderApiClientChannelFactory.GetChannel();
                Guid id       = new Guid(orderID);
                var  order    = _channel.FindByID(id);
                // 发用户消息
                WxMessageHandler.GetInstance().SendMessageToUser(CurrentWxUser.UserId, order);

                return(Json(new { state = 1 }));
            }
            else
            {
                return(Json(new { state = 0, errCode = 9008 }));
            }
        }
Пример #10
0
        /// <summary>
        /// 未送达
        /// </summary>
        /// <param name="orderID"></param>
        /// <param name="restaurantId"></param>
        /// <param name="onTimeDiscripion"></param>
        /// <returns></returns>
        public JsonResult AddUndelivered(string orderID, string restaurantId, string onTimeDiscripion, string supplier, int normal)
        {
            P_EVALUATE entity = new P_EVALUATE();

            entity.ID              = Guid.NewGuid();
            entity.OrderID         = new Guid(orderID);
            entity.RestaurantId    = restaurantId;
            entity.OnTime          = 0;
            entity.OnTimeDiscrpion = onTimeDiscripion;
            entity.State           = 1;
            entity.CreateDate      = DateTime.Now;
            entity.Normal          = normal;
            var channel = EvaluateClientChannelFactory.GetChannel();
            int res     = channel.Add(entity);

            if (res == 1)
            {
                var  _channel = OrderApiClientChannelFactory.GetChannel();
                Guid id       = new Guid(orderID);
                var  order    = _channel.FindByID(id);
                // 发用户消息
                WxMessageHandler.GetInstance().SendMessageToUser(CurrentWxUser.UserId, order);

                // 告诉小秘书没收到餐
                Task.Factory.StartNew(() =>
                {
                    //var oponapiChannel = OpenApiChannelFactory.GetChannel();
                    //var xmlres = oponapiChannel.orderDeliveryFailure(order.XmsOrderId, string.Empty);
                    var req = new OrderDeliveryFailureReq()
                    {
                        _Channels    = supplier,
                        iPathOrderId = order.XmsOrderId,
                        remark       = onTimeDiscripion
                    };
                    var iPathRes = apiClient.OrderDeliveryFailure(req);
                });

                return(Json(new { state = 1 }));
            }
            else
            {
                return(Json(new { state = 0, errCode = 9008 }));
            }
        }
        public ActionResult XMSReport()
        {
            var conf = bizConfigService.GetConfig();

            var      _thisTime    = DateTime.Now;
            var      _strToday    = _thisTime.ToString("yyyy-MM-dd");
            var      _strConfTime = _strToday + " " + conf._9_SyncXMSReportTime + ":00";
            DateTime _confTime;

            if (DateTime.TryParse(_strConfTime, out _confTime) == true)
            {
                var      _time    = GetTSTime(TaskScheduler.XMSReport);
                TimeSpan timeSpan = _thisTime - _time;
                if ((_time.DayOfYear < _thisTime.DayOfYear || _time.Year < _thisTime.Year) && _thisTime >= _confTime)
                {
                    Task.Factory.StartNew(() =>
                    {
                        try
                        {
                            var channel = OrderApiClientChannelFactory.GetChannel();
                            var rtnVal  = channel.SyncReport("xms");
                            LogHelper.Info("auto sync XMSReport result:" + rtnVal);
                            SetTSTime(TaskScheduler.XMSReport, _thisTime);
                        }
                        catch (Exception ex)
                        {
                            LogHelper.Error("auto sync XMSReport ERR", ex);
                            throw ex;
                        }
                    });
                    return(Content("sync XMSReport success!the next time at:" + _thisTime.AddDays(1d).ToString("yyyy-MM-dd HH:mm:ss")));
                }
                else
                {
                    return(Content("sync XMSReport not run, !last run time at:" + _time.ToString("yyyy-MM-dd HH:mm:ss")));
                }
            }
            else
            {
                return(Content("sync XMSReport not run, !conf._9_SyncXMSReportTime Err:" + conf._9_SyncXMSReportTime));
            }
        }
        public ActionResult List(string formenu, string supplier, string changeOrder, string sendTime, string changeSendTime)
        {
            ViewBag.isForMenu = formenu == "1";
            //20200214
            if (ViewBag.isForMenu == false && (sendTime == "" || sendTime == null))
            {
                ViewBag.sendTime = "";
            }
            else
            {
                ViewBag.sendTime = sendTime;
            }
            ViewBag.hospitalId     = PreApproval.HospitalAddressCode;
            ViewBag.supplier       = supplier;
            ViewBag.isChange       = changeOrder == "1";
            ViewBag.changeSendTime = changeSendTime;
            ViewBag.restaurantId   = "";
            ViewBag.restaurantName = "";

            if (changeOrder == "1")
            {
                var channelOrder = OrderApiClientChannelFactory.GetChannel();
                var res          = channelOrder.FindOrderByCN(PreApproval.HTCode);
                ViewBag.restaurantId   = res.RestaurantId;
                ViewBag.restaurantName = res.RestaurantName;
            }
            //ViewBag.hospitalId = "64942";
            var channelBase = BaseDataClientChannelFactory.GetChannel();
            var channelUser = UserInfoClientChannelFactory.GetChannel();
            var userInfo    = channelUser.FindByUserId(CurrentWxUser.UserId);
            var listGroup   = channelBase.LoadUserGroup(CurrentWxUser.UserId).Select(a => a.GroupType).ToArray();

            if (listGroup.Contains(GroupType.ServPause))
            {
                userInfo.IsServPause = 1;
            }
            ViewBag.IsServPause = CurrentWxUser.IsServPause;
            return(View());
        }
Пример #13
0
        public JsonResult Refunds(Guid id, string supplier)
        {
            var orderChannel = OrderApiClientChannelFactory.GetChannel();
            var order        = orderChannel.FindByID(id);

            //if (order.State != OrderState.SCHEDULEDSUCCESS)
            //{
            //    return Json(new { state = 0, txt = "当前订单状态不可执行退单操作!" ,errCode = 9009});
            //}

            //var channel = OpenApiChannelFactory.GetChannel();
            //var res = channel.cancleOrder(order.XmsOrderId, string.Empty);

            RefundOrderReq req = new RefundOrderReq()
            {
                _Channels    = supplier,
                iPathOrderId = order.XmsOrderId
            };
            var res = apiClient.RefundOrder(req);

            if (res.errorCode == "0")
            {
                int cancelRes = orderChannel.CancelOrder(id);
                if (cancelRes > 0)
                {
                    // 发用户消息
                    WxMessageHandler.GetInstance().SendMessageToUser(CurrentWxUser.UserId, order);
                    return(Json(new { state = 1 }));
                }
                else
                {
                    return(Json(new { state = 0, txt = "退单请求发送成功,但订单状态更改失败。", errCode = 9010 }));
                }
            }

            return(Json(new { state = 0, txt = "操作失败!", errCode = 9008 }));
        }
Пример #14
0
        public JsonResult OriginalOrderSend(Guid id, string supplier)
        {
            var orderChannel = OrderApiClientChannelFactory.GetChannel();
            var order        = orderChannel.FindByID(id);

            if (!(order.State == OrderState.RETURNFAIL && order.IsRetuen == OrderIsRetuen.FAIL))
            {
                return(Json(new { state = 0, txt = "当前订单状态不可执行该操作!", errCode = 9011 }));
            }

            //var channel = OpenApiChannelFactory.GetChannel();
            //var res = channel.cancleFailOrderFeedBack(order.XmsOrderId, "0", string.Empty);
            var req = new CancleFailOrderFeedBackReq()
            {
                _Channels    = order.Channel,
                type         = "0",
                iPathOrderId = order.XmsOrderId,
                remark       = string.Empty
            };
            var res = apiClient.CancleFailOrderFeedBack(req);

            if (res.errorCode == "0")
            {
                int cancelRes = orderChannel.OriginalOrderSend(id);
                if (cancelRes > 0)
                {
                    // 发用户消息
                    WxMessageHandler.GetInstance().SendMessageToUser(CurrentWxUser.UserId, order);
                    return(Json(new { state = 1 }));
                }
                else
                {
                    return(Json(new { state = 0, txt = "退单请求发送成功,但订单状态更改失败。", errCode = 9010 }));
                }
            }
            return(Json(new { state = 0, txt = "操作失败!", errCode = 9008 }));
        }
Пример #15
0
        public JsonResult Details(P_OrderDetails details)
        {
            details.createTime = DateTime.Now;
            OrderInfo.details  = details;
            int needApprove = -1;

            if (!IsNewOrder)
            {
                // 检查改单是否需要MMCoE审批
                var ID           = ChangeOrderID.Value;
                var orderChannel = OrderApiClientChannelFactory.GetChannel();
                var oldOrder     = orderChannel.FindByID(ID);
                if (oldOrder.MMCoEApproveState == MMCoEApproveState.APPROVESUCCESS)
                {
                    needApprove = 0;
                }
                else
                {
                    needApprove = 1;
                }
            }

            return(Json(new { state = 1, needApprove = needApprove }));
        }
Пример #16
0
        public JsonResult BeginChangeOrder(Guid id)
        {
            WeChatOrderInfo = null;
            ChangeOrderID   = null;
            var orderChannel = OrderApiClientChannelFactory.GetChannel();
            var order        = orderChannel.FindByID(id);

            if (order.State != OrderState.SCHEDULEDSUCCESS && order.State != OrderState.REJECT)
            {
                // 非预定成功并且非审批拒绝的状态,不可改单
                return(Json(new { state = 0, txt = "当前订单状态不允许改单", errCode = 9006 }));
            }
            ChangeOrderID = id;
            if (order.IsChange == OrderIsChange.YES)
            {
                WeChatOrderInfo = JsonConvert.DeserializeObject <P_WeChatOrder>(order.ChangeDetail);
            }
            else
            {
                WeChatOrderInfo = JsonConvert.DeserializeObject <P_WeChatOrder>(order.Detail);
            }
            ChangePreApproval(PreApproval.HTCode);
            return(Json(new { state = 1 }));
        }
        public JsonResult LoadRestaurant(string hospitalId, string supplier, string sendTime)
        {
            System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("zh-cn");
            var channel  = HospitalClientChannelFactory.GetChannel();
            var hospital = channel.FindByCode(hospitalId);

            if (hospital == null || string.IsNullOrEmpty(hospital.Name))
            {
                return(Json(new { state = 0, txt = "载入餐厅列表数据失败!", errCode = 9013 }));
            }

            //var openApiChannel = OpenApiChannelFactory.GetChannel();
            //var res = openApiChannel.queryRes(hospital.ID.ToString(), hospital.Address, hospital.Latitude, hospital.Longitude);
            if (string.IsNullOrEmpty(supplier))
            {
                supplier = "";
            }
            if (string.IsNullOrEmpty(sendTime))
            {
                sendTime = "";
            }
            var req = new SearchRestaurantReq()
            {
                _Channels  = supplier,
                hospitalId = hospital.HospitalCode,
                address    = hospital.Address,
                latitude   = hospital.Latitude,
                longitude  = hospital.Longitude,
                sendTime   = sendTime,
                keyword    = ""
            };
            var res = apiClient.SearchRestaurant(req);

            if (res == null)
            {
                return(Json(new { state = 0, txt = "载入餐厅列表数据失败!", errCode = 9013 }));
            }

            res = res.OrderBy(a => a.resName).ToList();

            #region 对接餐厅管理平台,排除黑名单餐厅
            //比对黑名单数据,对接餐厅管理平台
            try
            {
                if (WebConfigHandler.IsLoadRestaurantData == "1")
                {
                    var baseDataChannel = BaseDataClientChannelFactory.GetChannel();
                    var resstatelist    = baseDataChannel.LoadRestaurantState();
                    var resstateResID   = resstatelist.Select(x => x.ResId).ToList();
                    res          = res.Where(x => resstateResID.Contains(x.resId) || x.resName.Contains("堂食")).ToList();
                    resstatelist = resstatelist.Where(p => p.Status == 0).ToList();
                    foreach (var item in resstatelist)
                    {
                        var inlist = res.FirstOrDefault(p => p.resId == item.ResId);
                        if (inlist != null)
                        {
                            res.Remove(inlist);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                return(Json(new { state = 1, rows = e.Message }));
            }
            #endregion

            //IComparer<SearchRestaurantRes> comparer = new Restaurant();
            //res.Sort(comparer);

            //20200221 修改订单修改餐厅过滤原餐厅
            if (ChangeOrderID != null)
            {
                var    channelOrder = OrderApiClientChannelFactory.GetChannel();
                var    list         = channelOrder.FindOrderByCN(PreApproval.HTCode);
                string restaurantId = list.RestaurantId;
                var    re           = res.Where(a => a.resId != restaurantId).ToList();
                return(Json(new { state = 1, rows = re }));
            }
            return(Json(new { state = 1, rows = res }));
        }
Пример #18
0
        /// <summary>
        /// 改单流程
        /// </summary>
        /// <returns></returns>
        private JsonResult ChangeOrder()
        {
            var ID         = ChangeOrderID.Value;
            var customerID = ConfigurationManager.AppSettings["CustomerID"];
            var ChangeID   = Guid.NewGuid();
            var CreateDate = DateTime.Now;
            var XmsOrderId = string.Empty;
            var _orderInfo = OrderInfo;


            var orderChannel = OrderApiClientChannelFactory.GetChannel();
            var oldOrder     = orderChannel.FindByID(ID);

            #region
            //CreateOrderResponse xmlOrderRes = null;
            //if (_orderInfo.details.attendCount < 60 || oldOrder.MMCoEApproveState == MMCoEApproveState.APPROVESUCCESS)
            //{
            //    // 调用小秘书改单
            //    var openApiChannel = OpenApiChannelFactory.GetChannel();
            //    var _res = openApiChannel.createOrder2(ChangeID.ToString(), oldOrder.XmsOrderId,
            //        string.IsNullOrEmpty(oldOrder.XmsOrderId) ? "0" : "1", _orderInfo);
            //    if (_res.code != "200")
            //    {
            //        return Json(new { state = 0, txt = "改单失败", errCode = _res.code });
            //    }
            //    xmlOrderRes = _res;
            //    if (string.IsNullOrEmpty(oldOrder.XmsOrderId))
            //    {
            //        XmsOrderId = xmlOrderRes.result.xmsOrderId;
            //    }

            //}
            #endregion

            var _enterpriseOrderId = oldOrder.EnterpriseOrderId;
            if (string.IsNullOrEmpty(_enterpriseOrderId))
            {
                int RandKey  = new Random().Next(1, 999);
                var two      = (RandKey < 10 ? "00" + RandKey : (RandKey < 100 ? "0" + RandKey : RandKey.ToString()));
                var _channel = _orderInfo.supplier;
                var _date    = DateTime.Now.ToString("yyMMddHHmmss");
                _enterpriseOrderId = _channel.ToUpper() + "-" + _date + two;
            }

            var foodList = _orderInfo.foods.foods.Select(a => a.ToFoodRequest()).ToArray();
            var foods    = new List <iPathFeast.ApiEntity.Food>();
            foreach (var item in foodList)
            {
                foods.Add(new iPathFeast.ApiEntity.Food()
                {
                    foodId   = item.foodId,
                    foodName = item.foodName,
                    count    = Convert.ToInt32(item.count)
                });
            }
            var type = string.IsNullOrEmpty(oldOrder.XmsOrderId) ? "0" : "1";
            if (_orderInfo.details.attendCount < 60 || oldOrder.MMCoEApproveState == MMCoEApproveState.APPROVESUCCESS)
            {
                // 调用小秘书下单
                //var openApiChannel = OpenApiChannelFactory.GetChannel();
                //var _res = openApiChannel.createOrder2(ID.ToString(), string.Empty, "0", _orderInfo);
                var req = new CreateOrderReq()
                {
                    _Channels         = oldOrder.Channel,
                    enterpriseOrderId = _enterpriseOrderId,
                    oldiPathOrderId   = oldOrder.XmsOrderId,
                    CustomerID        = Guid.Parse(customerID),
                    sendTime          = _orderInfo.details.deliverTime.Value.ToString("yyyy-MM-dd HH:mm:ss"),
                    foodFee           = _orderInfo.foods.foodFee.ToString(),
                    packageFee        = _orderInfo.foods.packageFee.ToString(),
                    sendFee           = _orderInfo.foods.sendFee.ToString(),
                    totalFee          = _orderInfo.foods.allPrice.ToString(),
                    invoiceTitle      = _orderInfo.hospital.invoiceTitle + " - " + _orderInfo.hospital.dutyParagraph,
                    orderTime         = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                    remark            = _orderInfo.details.remark,
                    dinnerName        = _orderInfo.details.consignee,
                    dinnernum         = _orderInfo.details.attendCount.ToString(),
                    phone             = _orderInfo.details.phone,
                    address           = _orderInfo.hospital.address + " - " + _orderInfo.details.deliveryAddress,
                    resId             = _orderInfo.foods.resId,
                    longitude         = _orderInfo.hospital.longitude,
                    latitude          = _orderInfo.hospital.latitude,
                    hospitalId        = _orderInfo.hospital.hospital,
                    foods             = foods,
                    cityId            = _orderInfo.hospital.city,
                    cn       = _orderInfo.CnCode,
                    cnAmount = _orderInfo.meeting.budgetTotal.ToString(),
                    mudId    = _orderInfo.meeting.userId,
                    typeId   = type
                };
                var _res = apiClient.CreateOrder(req);
                if (_res.errorCode != "0")
                {
                    return(Json(new { state = 0, txt = _res.errorMsg, errCode = _res.errorCode }));
                }
                if (string.IsNullOrEmpty(oldOrder.XmsOrderId))
                {
                    XmsOrderId = _res.iPathOrderId;
                }
            }

            // 写入改单后的新数据
            //var res = orderChannel.Change(ID, ChangeID, _orderInfo);
            //if (res > 0)
            //{
            //    OrderInfo = null;
            //    if (!string.IsNullOrEmpty(XmsOrderId))
            //    {
            //        // 从未在小秘书下单过的改单,下单成功后应写入小秘书单号
            //        orderChannel.SaveXmsOrderId(ID, XmsOrderId);
            //    }

            //    oldOrder = orderChannel.FindByID(ID);
            //    WxMessageHandler.GetInstance().SendMessageToUser(CurrentWxUser.UserId, oldOrder);
            //    return Json(new { state = 1, isChange = 1 });
            //}
            return(Json(new { state = 0, txt = "改单失败", errCode = "9001" }));
        }
Пример #19
0
        /// <summary>
        /// 下新单
        /// </summary>
        /// <returns></returns>
        private JsonResult NewOrder()
        {
            var ID                 = Guid.NewGuid();
            var customerID         = ConfigurationManager.AppSettings["CustomerID"];
            var CreateDate         = DateTime.Now;
            var XmsOrderId         = string.Empty;
            var _orderInfo         = OrderInfo;
            int RandKey            = new Random().Next(1, 999);
            var two                = (RandKey < 10 ? "00" + RandKey : (RandKey < 100 ? "0" + RandKey : RandKey.ToString()));
            var _channel           = _orderInfo.supplier;
            var _date              = DateTime.Now.ToString("yyMMddHHmmss");
            var _enterpriseOrderId = _channel.ToUpper() + "-" + _date + two;
            var foodList           = _orderInfo.foods.foods.Select(a => a.ToFoodRequest()).ToArray();
            var foods              = new List <iPathFeast.ApiEntity.Food>();

            foreach (var item in foodList)
            {
                foods.Add(new iPathFeast.ApiEntity.Food()
                {
                    foodId   = item.foodId,
                    foodName = item.foodName,
                    count    = Convert.ToInt32(item.count)
                });
            }

            if (string.IsNullOrEmpty(_orderInfo.mmCoE) && _orderInfo.details.attendCount < 60)
            {
                // 调用小秘书下单
                //var openApiChannel = OpenApiChannelFactory.GetChannel();
                //var _res = openApiChannel.createOrder2(ID.ToString(), string.Empty, "0", _orderInfo);
                var req = new CreateOrderReq()
                {
                    _Channels         = _channel,
                    enterpriseOrderId = _enterpriseOrderId,
                    oldiPathOrderId   = string.Empty,
                    CustomerID        = Guid.Parse(customerID),
                    sendTime          = _orderInfo.details.deliverTime.Value.ToString("yyyy-MM-dd HH:mm:ss"),
                    foodFee           = _orderInfo.foods.foodFee.ToString(),
                    packageFee        = _orderInfo.foods.packageFee.ToString(),
                    sendFee           = _orderInfo.foods.sendFee.ToString(),
                    totalFee          = _orderInfo.foods.allPrice.ToString(),
                    invoiceTitle      = _orderInfo.hospital.invoiceTitle + " - " + _orderInfo.hospital.dutyParagraph,
                    orderTime         = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                    remark            = _orderInfo.details.remark,
                    dinnerName        = _orderInfo.details.consignee,
                    dinnernum         = _orderInfo.details.attendCount.ToString(),
                    phone             = _orderInfo.details.phone,
                    address           = _orderInfo.hospital.address + " - " + _orderInfo.details.deliveryAddress,
                    resId             = _orderInfo.foods.resId,
                    longitude         = _orderInfo.hospital.longitude,
                    latitude          = _orderInfo.hospital.latitude,
                    hospitalId        = _orderInfo.hospital.hospital,
                    foods             = foods,
                    cityId            = _orderInfo.hospital.city,
                    cn       = _orderInfo.CnCode,
                    cnAmount = _orderInfo.meeting.budgetTotal.ToString(),
                    mudId    = _orderInfo.meeting.userId,
                    typeId   = "0"
                };
                var _res = apiClient.CreateOrder(req);
                if (_res.errorCode != "0")
                {
                    return(Json(new { state = 0, txt = _res.errorMsg, errCode = _res.errorCode }));
                }
                XmsOrderId = _res.iPathOrderId;
            }
            // 写入数据库订单记录
            var channel = OrderApiClientChannelFactory.GetChannel();

            //var res = channel.Add(ID, CurrentWxUser.UserId, XmsOrderId, _orderInfo, _enterpriseOrderId,_channel);
            //if (res > 0)
            //{
            //    OrderInfo = null;
            //    var order = channel.FindByID(ID);
            //    WxMessageHandler.GetInstance().SendMessageToUser(CurrentWxUser.UserId, order);
            //    return Json(new { state = 1, isChange = 0 });
            //}
            return(Json(new { state = 0, txt = "下单失败", errCode = "9001" }));
        }
Пример #20
0
        public JsonResult OrderStateChange()
        {
            try
            {
                StreamReader reader = new StreamReader(Request.InputStream);
                var          req    = reader.ReadToEnd();
                LogHelper.Info(req);

                OrderStateChangeCallBack request = JsonConvert.DeserializeObject <OrderStateChangeCallBack>(req);
                var res = request.requestData;
                if (res.status == 2 && res.supplierOrderId == res.oldsupplierOrderId)
                {
                    // 迁就小秘书,把改单失败的状态码,从小秘书2改成我们需要的3
                    res.status = 3;
                }

                var channel = OrderApiClientChannelFactory.GetChannel();
                var orderId = string.IsNullOrEmpty(res.oldsupplierOrderId) ? res.supplierOrderId : res.oldsupplierOrderId;
                var order   = channel.FindByXmlOrderId(orderId);

                if (order.State == 5 || order.State == 11)
                {
                    LogHelper.Info("code=805,无效订单");
                    return(Json(new { code = 805, message = "无效订单,无法继续返回订单状态" }));
                }

                switch (res.status)
                {
                case 2:
                {
                    var timeNow = DateTime.Now;
                    if (timeNow > order.DeliverTime)
                    {
                        LogHelper.Info("code=804");
                        return(Json(new { code = 804, message = "订单状态返回时间超过送餐时间" }));
                    }
                    // 预定成功
                    var i = channel.ScheduledSuccess(res.supplierOrderId, res.CheckCode, res.remark, res.oldsupplierOrderId);
                    if (i > 0)
                    {
                        var _order = channel.FindByXmlOrderId(res.supplierOrderId);
                        if (_order.IsNonHT == 0)
                        {
                            WxMessageHandler.GetInstance().SendMessageToUser(_order.UserId, _order);
                        }
                    }
                }
                break;

                case 3:
                {
                    var timeNow = DateTime.Now;
                    if (timeNow > order.DeliverTime)
                    {
                        LogHelper.Info("code=804");
                        return(Json(new { code = 804, message = "订单状态返回时间超过送餐时间" }));
                    }
                    // 预定失败
                    var i = channel.ScheduledFail(res.supplierOrderId, res.remark, res.oldsupplierOrderId);
                    if (i > 0)
                    {
                        var _order = channel.FindByXmlOrderId(res.supplierOrderId);
                        if (_order.IsNonHT == 0)
                        {
                            WxMessageHandler.GetInstance().SendMessageToUser(_order.UserId, _order);
                        }
                    }
                }
                break;

                case 4:
                {
                    // 配送成功
                    // 配送成功暂时无需进行数据库操作
                }
                break;

                case 5:
                {
                    var timeNow  = DateTime.Now;
                    var dataTime = order.ReturnOrderDate;
                    dataTime = dataTime.AddHours(18);
                    if (order.IsRetuen == 4)
                    {
                        dataTime = order.DeliverTime;
                    }

                    if (timeNow > dataTime)
                    {
                        LogHelper.Info("code=804");
                        return(Json(new { code = 804, message = "订单状态返回时间超过送餐时间" }));
                    }

                    // 退订失败(只送小票 发票)
                    var i = -1;
                    //if (_order.State == OrderState.RETURNING)
                    //{
                    //    i = channel.CancelOrderFail(res.xmsOrderId, res.remark);
                    //}
                    //else if(_order.State == OrderState.RETURNFAIL && _order.IsRetuen== OrderIsRetuen.POSTFOOD)
                    //{
                    //    i = channel.OriginalOrderSendFail(res.xmsOrderId, res.remark);
                    //}

                    if (order.IsRetuen == OrderIsRetuen.POSTFOOD)
                    {
                        i = channel.OriginalOrderSendFail(res.supplierOrderId, res.remark);
                    }
                    else
                    {
                        i = channel.CancelOrderFail(res.supplierOrderId, res.remark);
                    }
                    if (i > 0)
                    {
                        var _order = channel.FindByXmlOrderId(res.supplierOrderId);
                        if (_order.IsNonHT == 0)
                        {
                            WxMessageHandler.GetInstance().SendMessageToUser(_order.UserId, _order);
                        }
                    }
                }
                break;

                case 6:
                {
                    var timeNow  = DateTime.Now;
                    var dataTime = order.ReturnOrderDate;
                    dataTime = dataTime.AddHours(18);
                    if (order.IsRetuen == 4)
                    {
                        dataTime = order.DeliverTime;
                    }

                    if (timeNow > dataTime)
                    {
                        LogHelper.Info("code=804");
                        return(Json(new { code = 804, message = "订单状态返回时间超过送餐时间" }));
                    }

                    // 退订订单
                    var i = channel.CancelOrderSuccess(res.supplierOrderId);
                    if (i > 0)
                    {
                        var _order = channel.FindByXmlOrderId(res.supplierOrderId);
                        if (_order.IsNonHT == 0)
                        {
                            WxMessageHandler.GetInstance().SendMessageToUser(_order.UserId, _order);
                        }
                    }
                }
                break;

                case 7:
                {
                    // 订单未送达
                    // 未送达暂时无需操作
                }
                break;

                case 8:
                {
                    var timeNow  = DateTime.Now;
                    var dataTime = order.ReturnOrderDate;
                    dataTime = dataTime.AddHours(18);
                    if (order.IsRetuen == 4)
                    {
                        dataTime = order.DeliverTime;
                    }

                    if (timeNow > dataTime)
                    {
                        LogHelper.Info("code=804");
                        return(Json(new { code = 804, message = "订单状态返回时间超过送餐时间" }));
                    }
                    var i = -1;
                    // 退订失败(继续配送)
                    if (order.IsRetuen == OrderIsRetuen.POSTFOOD && order.State == OrderState.RETURNFAIL)
                    {
                        i = channel.OriginalOrderSendSuccess(res.supplierOrderId, res.remark);
                    }
                    else
                    {
                        i = channel.OriginalOrderSendSuccess(res.supplierOrderId, res.remark);
                    }
                    //var i = channel.OriginalOrderSendFail(res.xmsOrderId);
                    if (i > 0)
                    {
                        var _order = channel.FindByXmlOrderId(res.supplierOrderId);
                        if (_order.IsNonHT == 0)
                        {
                            WxMessageHandler.GetInstance().SendMessageToUser(_order.UserId, _order);
                        }
                    }
                }
                break;
                }

                return(Json(new { code = 200, message = "ok" }));
            }
            catch (Exception exp)
            {
                LogHelper.Error("Exception OrderStateChange", exp);
                return(Json(new { code = 500, message = "error" }));
            }
        }
Пример #21
0
        public JsonResult OrderFeeChange()
        {
            try
            {
                StreamReader reader = new StreamReader(Request.InputStream);
                var          req    = reader.ReadToEnd();
                LogHelper.Info(req);

                OrderFeeChangeCallBack request = JsonConvert.DeserializeObject <OrderFeeChangeCallBack>(req);

                var channel = OrderApiClientChannelFactory.GetChannel();
                var res     = request.requestData;
                var order   = channel.FindByXmlOrderId(res.supplierOrderId);
                var detail  = (JObject)JsonConvert.DeserializeObject(order.Detail);
                var timeNow = DateTime.Now;

                #region 判断是否超预算
                var baseDataChannel = BaseDataClientChannelFactory.GetChannel();
                var cBudget         = baseDataChannel.FindCityBudget(order.HospitalId);
                if (cBudget.IsOut == 0)
                {
                    if (res.totalFee / order.AttendCount > 60)
                    {
                        LogHelper.Info("code=802");
                        return(Json(new { code = 802, message = "人均实际金额超过60元" }));
                    }
                }
                else
                {
                    if (string.IsNullOrEmpty(cBudget.CityName))
                    {
                        if (res.totalFee / order.AttendCount > 100)
                        {
                            LogHelper.Info("code=802");
                            return(Json(new { code = 802, message = "人均实际金额超过100元" }));
                        }
                    }
                    //一二线城市
                    else
                    {
                        if (res.totalFee / order.AttendCount > 150)
                        {
                            LogHelper.Info("code=802");
                            return(Json(new { code = 802, message = "人均实际金额超过150元" }));
                        }
                    }
                }
                #endregion

                if (timeNow > DateTime.Parse(detail["details"]["deliverTime"].ToString()))
                {
                    LogHelper.Info("code=803");
                    return(Json(new { code = 803, message = "修改实际金额时间超过送餐时间" }));
                }
                else if (res.totalFee > decimal.Parse(detail["preApproval"]["BudgetTotal"].ToString()))
                {
                    LogHelper.Info("code=801");
                    return(Json(new { code = 801, message = "实际金额大于会议预算金额" }));
                }
                else if (res.totalFee > order.TotalPrice)
                {
                    LogHelper.Info("code=804");
                    return(Json(new { code = 804, message = "实际金额大于会议预定金额" }));
                }
                //else if (res.totalFee / order.AttendCount > 60)
                //{
                //    LogHelper.Info("code=802");
                //    return Json(new { code = 802, message = "人均实际金额超过60元" });
                //}
                else
                {
                    int result = channel.XmsChangeTotalFee(res.supplierOrderId, res.totalFee, res.remark);
                    if (result > 0)
                    {
                        if (order.IsNonHT == 0)
                        {
                            WxMessageHandler.GetInstance().SendMessageToUserForChangeFee(res.supplierOrderId);
                        }
                        else
                        {
                            WxMessageHandler.GetInstance().SendNonHTMessageToUserForChangeFee(res.supplierOrderId);
                        }
                        LogHelper.Info("code=200");
                        return(Json(new { code = 200, message = "ok" }));
                    }
                    else
                    {
                        LogHelper.Info("数据库连接超时,更改订单金额失败,code=500");
                        return(Json(new { code = 500, message = "fail" }));
                    }
                }
            }
            catch (Exception exp)
            {
                LogHelper.Error("Exception OrderFeeChange", exp);
                return(Json(new { code = 500, message = "error" }));
            }
        }
Пример #22
0
        public JsonResult _Edit(Guid UploadOrderId, string htCode, string MMCoEImageOne, string MMCoEImageTwo, string MMCoEImageThree, int FileType, int IsAttentSame, string AttentSameReason, string SpecialReason, int IsAddFile, int IsMeetingInfoSame, string MeetingInfoSameReason, string Memo)
        {
            //用户信息
            P_USERINFO userInfo        = Session[MealH5.Util.ConstantHelper.CURRENTWXUSER] as P_USERINFO;
            var        uploadChannel   = UploadOrderApiClientChannelFactory.GetChannel();
            var        userInfoChannel = UserInfoClientChannelFactory.GetChannel();
            var        orderChannel    = OrderApiClientChannelFactory.GetChannel();
            //DM
            var uploadInfo = uploadChannel.FindApproveInfo(userInfo.UserId);

            if (uploadInfo == null || uploadInfo.UserId == null)
            {
                return(Json(new { state = 0, txt = "您的直线经理信息有误,请隔日再尝试提交。", errCode = 6666 }));
            }

            var uploadInfoDMDelegate = userInfoChannel.isAgent(uploadInfo.UserId);
            //RM
            var            uploaderRMInfo     = new WP_QYUSER();
            var            uploaderRDInfo     = new WP_QYUSER();
            P_UserDelegate uploaderRDDelegate = null;

            if (uploadInfo != null && uploadInfo.UserId != null)
            {
                uploaderRMInfo = uploadChannel.FindApproveInfo(uploadInfo.UserId);

                if (uploaderRMInfo != null && uploaderRMInfo.UserId != null)
                {
                    //RD/SD
                    uploaderRDInfo     = uploadChannel.FindApproveInfo(uploaderRMInfo.UserId);
                    uploaderRDDelegate = userInfoChannel.isAgent(uploaderRDInfo.UserId);
                }
            }

            var uploadOrderInfo = uploadChannel.LoadPreUploadOrder(UploadOrderId);
            var orderInfo       = orderChannel.FindOrderByCN(htCode);

            uploadOrderInfo.ModifyDate            = DateTime.Now;                                                                                                                                                                                              //修改日期
            uploadOrderInfo.State                 = "1";
            uploadOrderInfo.BUHeadName            = FileType == 2 ? (uploaderRDDelegate == null ? uploaderRDInfo.Name : uploaderRDDelegate.DelegateUserName) : (uploadInfoDMDelegate == null ? uploadInfo.Name : uploadInfoDMDelegate.DelegateUserName);       //审批人姓名
            uploadOrderInfo.BUHeadMUDID           = FileType == 2 ? (uploaderRDDelegate == null ? uploaderRDInfo.UserId : uploaderRDDelegate.DelegateUserMUDID) : (uploadInfoDMDelegate == null ? uploadInfo.UserId : uploadInfoDMDelegate.DelegateUserMUDID); //审批人ID
            uploadOrderInfo.MMCoEImageOne         = MMCoEImageOne;                                                                                                                                                                                             //上传文件1
            uploadOrderInfo.MMCoEImageTwo         = MMCoEImageTwo;                                                                                                                                                                                             //上传文件2
            uploadOrderInfo.MMCoEImageThree       = MMCoEImageThree;                                                                                                                                                                                           //上传文件2
            uploadOrderInfo.IsAttentSame          = IsAttentSame;
            uploadOrderInfo.AttentSameReason      = AttentSameReason;
            uploadOrderInfo.SpecialReason         = SpecialReason;
            uploadOrderInfo.IsAddFile             = IsAddFile;
            uploadOrderInfo.IsMeetingInfoSame     = IsMeetingInfoSame;
            uploadOrderInfo.MeetingInfoSameReason = MeetingInfoSameReason;
            uploadOrderInfo.Memo = Memo;
            if (orderInfo.IsTransfer == 1)
            {
                uploadOrderInfo.IsTransfer            = orderInfo.IsTransfer;
                uploadOrderInfo.TransferUserName      = orderInfo.TransferUserName;
                uploadOrderInfo.TransferUserMUDID     = orderInfo.TransferUserMUDID;
                uploadOrderInfo.TransferOperatorName  = orderInfo.TransferOperatorName;
                uploadOrderInfo.TransferOperatorMUDID = orderInfo.TransferOperatorMUDID;
                uploadOrderInfo.TransferOperateDate   = orderInfo.TransferOperateDate;
            }
            uploadChannel.Update(uploadOrderInfo);
            P_OrderApproveHistory history = new P_OrderApproveHistory()
            {
                ID          = Guid.NewGuid(),
                PID         = UploadOrderId,
                UserName    = CurrentWxUser.Name,
                UserId      = CurrentWxUser.UserId,
                ActionType  = 4,
                ApproveDate = DateTime.Now,
                type        = 2
            };

            uploadChannel.AddOrderApproveHistory(history);

            WxMessageHandler.GetInstance().SendOrderStateChangeMessageToUser(uploadOrderInfo);
            return(Json(new { state = 1 }));
        }
Пример #23
0
        /// <summary>
        /// MMCoE审批
        /// </summary>
        /// <param name="id"></param>
        /// <param name="state"></param>
        /// <param name="reason"></param>
        /// <returns></returns>
        public JsonResult SaveMMCoEResult(Guid orderId, int state, string reason)
        {
            var channel         = OrderApiClientChannelFactory.GetChannel();
            var evaluateChannel = EvaluateClientChannelFactory.GetChannel();
            var order           = channel.FindByID(orderId);
            var customerID      = ConfigurationManager.AppSettings["CustomerID"];

            //审批驳回
            if (state == 2)
            {
                var res = channel.MMCoEResult(orderId, state, reason);
                if (res == 1)
                {
                    P_ORDER_APPROVE entity = new P_ORDER_APPROVE();
                    entity.ID           = Guid.NewGuid();
                    entity.OrderID      = orderId;
                    entity.CN           = order.CN;
                    entity.UserId       = order.UserId;
                    entity.OldState     = order.State;
                    entity.NewState     = OrderState.REJECT;
                    entity.Result       = 0;
                    entity.Comment      = reason;
                    entity.IsWXClient   = 1;
                    entity.CreateDate   = DateTime.Now;
                    entity.CreateUserId = CurrentWxUser.UserId;
                    //添加审批记录
                    var evaluateRes = evaluateChannel.AddOrderApprove(entity);

                    if (evaluateRes == 0)
                    {
                        LogHelper.Info($"订单状态修改成功,添加审批记录失败 - [{ orderId.ToString()}]");
                    }
                    // 发用户消息
                    WxMessageHandler.GetInstance().SendMessageToUser(order.UserId, order);
                    return(Json(new { state = 1, txt = "订单审批已驳回" }));
                }
                else
                {
                    LogHelper.Info($"(审批驳回)订单状态修改失败 - [{ orderId.ToString()}]");
                }
            }

            //审批通过
            else
            {
                //订单审批
                var _res = channel.MMCoEResult(orderId, state, reason);
                if (_res == 1)
                {
                    //var openApiChannel = OpenApiChannelFactory.GetChannel();
                    //下新单
                    if (order.IsChange == 0)
                    {
                        var     json      = order.Detail;
                        P_Order orderInfo = JsonConvert.DeserializeObject <P_Order>(json);
                        var     foodList  = orderInfo.foods.foods.Select(a => a.ToFoodRequest()).ToArray();
                        var     foods     = new List <iPathFeast.ApiEntity.Food>();
                        foreach (var item in foodList)
                        {
                            foods.Add(new iPathFeast.ApiEntity.Food()
                            {
                                foodId   = item.foodId,
                                foodName = item.foodName,
                                count    = Convert.ToInt32(item.count)
                            });
                        }

                        //调用小秘书下单接口
                        //var openApiRes = openApiChannel.createOrder2(orderId.ToString(), string.Empty, "0", orderInfo);
                        var req = new CreateOrderReq()
                        {
                            _Channels         = order.Channel,
                            enterpriseOrderId = order.EnterpriseOrderId,
                            oldiPathOrderId   = string.Empty,
                            CustomerID        = Guid.Parse(customerID),
                            sendTime          = orderInfo.details.deliverTime.Value.ToString("yyyy-MM-dd HH:mm:ss"),
                            foodFee           = orderInfo.foods.foodFee.ToString(),
                            packageFee        = orderInfo.foods.packageFee.ToString(),
                            sendFee           = orderInfo.foods.sendFee.ToString(),
                            totalFee          = orderInfo.foods.allPrice.ToString(),
                            invoiceTitle      = orderInfo.hospital.invoiceTitle + " - " + orderInfo.hospital.dutyParagraph,
                            orderTime         = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                            remark            = orderInfo.details.remark,
                            dinnerName        = orderInfo.details.consignee,
                            dinnernum         = orderInfo.details.attendCount.ToString(),
                            phone             = orderInfo.details.phone,
                            address           = orderInfo.hospital.address + " - " + orderInfo.details.deliveryAddress,
                            resId             = orderInfo.foods.resId,
                            longitude         = orderInfo.hospital.longitude,
                            latitude          = orderInfo.hospital.latitude,
                            hospitalId        = orderInfo.hospital.hospital,
                            foods             = foods,
                            cityId            = orderInfo.hospital.city,
                            cn       = order.CN,
                            cnAmount = orderInfo.meeting.budgetTotal.ToString(),
                            mudId    = orderInfo.meeting.userId,
                            typeId   = "0"
                        };
                        var openApiRes = apiClient.CreateOrder(req);
                        if (openApiRes.errorCode == "0")
                        {
                            var _channel = OrderApiClientChannelFactory.GetChannel();
                            // 审批下单成功,保存小秘书单号
                            var res = channel.SaveXmsOrderId(orderId, openApiRes.iPathOrderId);
                            if (res > 0)
                            {
                                var _order = channel.FindByID(orderId);

                                P_ORDER_APPROVE entity = new P_ORDER_APPROVE();
                                entity.ID           = Guid.NewGuid();
                                entity.OrderID      = orderId;
                                entity.CN           = _order.CN;
                                entity.UserId       = _order.UserId;
                                entity.OldState     = order.State;
                                entity.NewState     = _order.State;
                                entity.Result       = 1;
                                entity.Comment      = reason;
                                entity.IsWXClient   = 1;
                                entity.CreateDate   = DateTime.Now;
                                entity.CreateUserId = CurrentWxUser.UserId;
                                //添加审批记录
                                var evaluateRes = evaluateChannel.AddOrderApprove(entity);

                                if (evaluateRes == 0)
                                {
                                    LogHelper.Info($"审批通过,下单成功,保存小秘书单号成功,添加审批记录失败 - [{ orderId.ToString()}]");
                                }
                                //发用户消息
                                WxMessageHandler.GetInstance().SendMessageToUser(order.UserId, _order);
                                return(Json(new { state = 1, txt = "订单审批已通过" }));
                            }
                            else
                            {
                                LogHelper.Info("审批通过,下单成功,保存小秘书单号失败");
                            }
                        }
                        else
                        {
                            //审批退回审批前状态
                            var res = channel._MMCoEResult(orderId, 1, "");
                            if (res == 1)
                            {
                                return(Json(new { state = 0, txt = "调用小秘书下单接口失败,订单审批失败", errCode = openApiRes.errorCode }));
                            }
                            else
                            {
                                LogHelper.Info($"订单状态修改成功,调用小秘书下单接口失败,订单审批退回失败 - [{ orderId.ToString()}]");
                            }
                        }
                    }
                    //改单
                    else
                    {
                        var     json       = order.ChangeDetail;
                        P_Order orderInfo  = JsonConvert.DeserializeObject <P_Order>(json);
                        var     ChangeID   = Guid.NewGuid();
                        var     XmsOrderId = string.Empty;
                        var     foodList   = orderInfo.foods.foods.Select(a => a.ToFoodRequest()).ToArray();
                        var     foods      = new List <iPathFeast.ApiEntity.Food>();
                        foreach (var item in foodList)
                        {
                            foods.Add(new iPathFeast.ApiEntity.Food()
                            {
                                foodId   = item.foodId,
                                foodName = item.foodName,
                                count    = Convert.ToInt32(item.count)
                            });
                        }
                        var _enterpriseOrderId = order.EnterpriseOrderId;
                        if (string.IsNullOrEmpty(_enterpriseOrderId))
                        {
                            int RandKey  = new Random().Next(1, 999);
                            var two      = (RandKey < 10 ? "00" + RandKey : (RandKey < 100 ? "0" + RandKey : RandKey.ToString()));
                            var _channel = orderInfo.supplier;
                            var _date    = DateTime.Now.ToString("yyMMddHHmmss");
                            _enterpriseOrderId = _channel.ToUpper() + "-" + _date + two;
                        }
                        var type = string.IsNullOrEmpty(order.XmsOrderId) ? "0" : "1";
                        var req  = new CreateOrderReq()
                        {
                            _Channels         = order.Channel,
                            enterpriseOrderId = _enterpriseOrderId,
                            oldiPathOrderId   = order.XmsOrderId,
                            CustomerID        = Guid.Parse(customerID),
                            sendTime          = orderInfo.details.deliverTime.Value.ToString("yyyy-MM-dd HH:mm:ss"),
                            foodFee           = orderInfo.foods.foodFee.ToString(),
                            packageFee        = orderInfo.foods.packageFee.ToString(),
                            sendFee           = orderInfo.foods.sendFee.ToString(),
                            totalFee          = orderInfo.foods.allPrice.ToString(),
                            invoiceTitle      = orderInfo.hospital.invoiceTitle + " - " + orderInfo.hospital.dutyParagraph,
                            orderTime         = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                            remark            = orderInfo.details.remark,
                            dinnerName        = orderInfo.details.consignee,
                            dinnernum         = orderInfo.details.attendCount.ToString(),
                            phone             = orderInfo.details.phone,
                            address           = orderInfo.hospital.address + " - " + orderInfo.details.deliveryAddress,
                            resId             = orderInfo.foods.resId,
                            longitude         = orderInfo.hospital.longitude,
                            latitude          = orderInfo.hospital.latitude,
                            hospitalId        = orderInfo.hospital.hospital,
                            foods             = foods,
                            cityId            = orderInfo.hospital.city,
                            cn       = orderInfo.CnCode,
                            cnAmount = orderInfo.meeting.budgetTotal.ToString(),
                            mudId    = orderInfo.meeting.userId,
                            typeId   = type
                        };
                        //调用小秘书下单接口
                        //var openApiRes = openApiChannel.createOrder2(order.ChangeID.ToString(), order.XmsOrderId,
                        //    string.IsNullOrEmpty(order.XmsOrderId) ? "0" : "1", orderInfo);
                        var openApiRes = apiClient.CreateOrder(req);

                        if (openApiRes.errorCode == "0")
                        {
                            if (string.IsNullOrEmpty(order.XmsOrderId))
                            {
                                XmsOrderId = openApiRes.iPathOrderId;
                            }
                            var _channel = OrderApiClientChannelFactory.GetChannel();
                            // 写入改单后的新数据
                            //var res = _channel.Change(orderId, ChangeID, orderInfo);
                            //if (res > 0)
                            //{
                            //    if (!string.IsNullOrEmpty(XmsOrderId))
                            //    {
                            //        // 从未在小秘书下单过的改单,下单成功后应写入小秘书单号
                            //        _channel.SaveXmsOrderId(orderId, XmsOrderId);
                            //    }
                            //}
                            OrderInfo = null;
                            var _order = channel.FindByID(orderId);

                            P_ORDER_APPROVE entity = new P_ORDER_APPROVE();
                            entity.ID           = Guid.NewGuid();
                            entity.OrderID      = orderId;
                            entity.CN           = _order.CN;
                            entity.UserId       = _order.UserId;
                            entity.OldState     = order.State;
                            entity.NewState     = _order.State;
                            entity.Result       = 1;
                            entity.Comment      = reason;
                            entity.IsWXClient   = 1;
                            entity.CreateDate   = DateTime.Now;
                            entity.CreateUserId = CurrentWxUser.UserId;
                            //添加审批记录
                            var evaluateRes = evaluateChannel.AddOrderApprove(entity);

                            if (evaluateRes == 0)
                            {
                                LogHelper.Info($"审批通过,(改单)下单成功,保存小秘书单号成功,添加审批记录失败 - [{ orderId.ToString()}]");
                            }

                            //发用户消息
                            WxMessageHandler.GetInstance().SendMessageToUser(order.UserId, _order);
                            return(Json(new { state = 1, txt = "订单审批已通过" }));
                        }
                        else
                        {
                            var res = channel._MMCoEResult(orderId, 1, "");
                            if (res == 1)
                            {
                                return(Json(new { state = 0, txt = openApiRes.errorMsg, errCode = openApiRes.errorCode }));
                            }
                            else
                            {
                                LogHelper.Info($"订单状态修改成功,调用供应商下单接口失败,订单审批退回失败 - [{ orderId.ToString()}]");
                            }
                        }
                    }
                }
                else
                {
                    LogHelper.Info($"(审批通过)订单状态修改失败 - [{ orderId.ToString()}]");
                }
            }

            return(Json(new { state = 0, txt = "订单审批失败,请刷新页面后重试。", errCode = 9007 }));
        }
Пример #24
0
        public JsonResult _Submit(string htCode, string MMCoEImageOne, string MMCoEImageTwo, string MMCoEImageThree, int FileType, int IsAttentSame, string AttentSameReason, string SpecialReason, int IsAddFile, int IsMeetingInfoSame, string MeetingInfoSameReason, string Memo)
        {
            //用户信息
            P_USERINFO userInfo        = Session[MealH5.Util.ConstantHelper.CURRENTWXUSER] as P_USERINFO;
            var        uploadChannel   = UploadOrderApiClientChannelFactory.GetChannel();
            var        userInfoChannel = UserInfoClientChannelFactory.GetChannel();
            var        orderChannel    = OrderApiClientChannelFactory.GetChannel();
            //DM
            var uploadInfo = uploadChannel.FindApproveInfo(userInfo.UserId);


            if (uploadInfo == null || uploadInfo.UserId == null)
            {
                return(Json(new { state = 0, txt = "您的直线经理信息有误,请隔日再尝试提交。", errCode = 6666 }));
            }

            var uploadInfoDMDelegate = userInfoChannel.isAgent(uploadInfo.UserId);
            //RM
            var            uploaderRMInfo     = new WP_QYUSER();
            var            uploaderRDInfo     = new WP_QYUSER();
            P_UserDelegate uploaderRDDelegate = null;

            if (uploadInfo != null && uploadInfo.UserId != null)
            {
                uploaderRMInfo = uploadChannel.FindApproveInfo(uploadInfo.UserId);

                if (uploaderRMInfo != null && uploaderRMInfo.UserId != null)
                {
                    //RD/SD
                    uploaderRDInfo     = uploadChannel.FindApproveInfo(uploaderRMInfo.UserId);
                    uploaderRDDelegate = userInfoChannel.isAgent(uploaderRDInfo.UserId);
                }
            }

            var orderInfo   = orderChannel.FindOrderByCN(htCode);
            var orderUpload = new P_PREUPLOADORDER();

            orderUpload.ID                    = Guid.NewGuid();
            orderUpload.ApplierName           = orderInfo.IsTransfer == 0 ? userInfo.Name : orderInfo.Consignee;                                                                                                                                           //登录人姓名
            orderUpload.ApplierMUDID          = orderInfo.IsTransfer == 0 ? userInfo.UserId : orderInfo.UserId;                                                                                                                                            //登录人ID
            orderUpload.CreateDate            = DateTime.Now;                                                                                                                                                                                              //创建日期
            orderUpload.ModifyDate            = orderUpload.CreateDate;                                                                                                                                                                                    //修改日期
            orderUpload.HTCode                = htCode;                                                                                                                                                                                                    //HT编号
            orderUpload.BUHeadName            = FileType == 2 ? (uploaderRDDelegate == null ? uploaderRDInfo.Name : uploaderRDDelegate.DelegateUserName) : (uploadInfoDMDelegate == null ? uploadInfo.Name : uploadInfoDMDelegate.DelegateUserName);       //审批人姓名
            orderUpload.BUHeadMUDID           = FileType == 2 ? (uploaderRDDelegate == null ? uploaderRDInfo.UserId : uploaderRDDelegate.DelegateUserMUDID) : (uploadInfoDMDelegate == null ? uploadInfo.UserId : uploadInfoDMDelegate.DelegateUserMUDID); //审批人ID
            orderUpload.IsReAssign            = false;                                                                                                                                                                                                     //是否重新分配
            orderUpload.State                 = "1";                                                                                                                                                                                                       //状态
            orderUpload.MMCoEImageOne         = MMCoEImageOne;                                                                                                                                                                                             //上传文件1
            orderUpload.MMCoEImageTwo         = MMCoEImageTwo;                                                                                                                                                                                             //上传文件2
            orderUpload.MMCoEImageThree       = MMCoEImageThree;                                                                                                                                                                                           //上传文件2
            orderUpload.FileType              = FileType;
            orderUpload.IsAttentSame          = IsAttentSame;
            orderUpload.AttentSameReason      = AttentSameReason;
            orderUpload.SpecialReason         = SpecialReason;
            orderUpload.IsAddFile             = IsAddFile;
            orderUpload.IsMeetingInfoSame     = IsMeetingInfoSame;
            orderUpload.MeetingInfoSameReason = MeetingInfoSameReason;
            orderUpload.Memo                  = Memo;
            if (orderInfo.IsTransfer == 1)
            {
                orderUpload.IsTransfer            = orderInfo.IsTransfer;
                orderUpload.TransferUserName      = orderInfo.TransferUserName;
                orderUpload.TransferUserMUDID     = orderInfo.TransferUserMUDID;
                orderUpload.TransferOperatorName  = orderInfo.TransferOperatorName;
                orderUpload.TransferOperatorMUDID = orderInfo.TransferOperatorMUDID;
                orderUpload.TransferOperateDate   = orderInfo.TransferOperateDate;
            }
            var res = uploadChannel.Add(orderUpload);

            if (res > 0)
            {
                P_OrderApproveHistory history = new P_OrderApproveHistory()
                {
                    ID          = Guid.NewGuid(),
                    PID         = orderUpload.ID,
                    UserName    = userInfo.Name,
                    UserId      = userInfo.UserId,
                    ActionType  = 1,
                    ApproveDate = DateTime.Now,
                    type        = 2
                };
                uploadChannel.AddOrderApproveHistory(history);
                WxMessageHandler.GetInstance().SendOrderStateChangeMessageToUser(orderUpload);
                return(Json(new { state = 1 }));
            }
            if (res == 0)
            {
                return(Json(new { state = 0, txt = "您的文件已经提交过,请勿重复提交。", errCode = 5555 }));
            }
            else
            {
                return(Json(new { state = 0 }));
            }
        }