CY_ECommercePlatform/CY.BLL/EC/EC_OrderBasicBLL.cs
@@ -29,6 +29,9 @@
using CY.Model;
using CY.IDAL;
using CY.Infrastructure.Query;
using CY.Model.Inquiry;
using CY.Infrastructure.Common;
using CY.IDAL.EC;
namespace CY.BLL.EC
{
@@ -38,10 +41,15 @@
    public class EC_OrderBasicBLL
    {
        IEC_OrderBasicDAL _eC_OrderBasicDAL = null;
        IEC_OrderPrintParameterDAL _eC_OrderPrintParameterDAL = null;
        IEC_OrderExtendDAL _eC_OrderExtendDAL = null;
        IPay_TradingSingleDAL _pay_TradingSingleDAL = null;
        public EC_OrderBasicBLL()
        {
            _eC_OrderBasicDAL = AbstractFactory.Factory.GetDALByInterfaceName(AbstractFactory.DALInterface.IEC_OrderBasicDAL) as IEC_OrderBasicDAL;
            _eC_OrderPrintParameterDAL = AbstractFactory.Factory.GetDALByInterfaceName(AbstractFactory.DALInterface.IEC_OrderPrintParameterDAL) as IEC_OrderPrintParameterDAL;
            _eC_OrderExtendDAL = AbstractFactory.Factory.GetDALByInterfaceName(AbstractFactory.DALInterface.IEC_OrderExtendDAL) as IEC_OrderExtendDAL;
            _pay_TradingSingleDAL = AbstractFactory.Factory.GetDALByInterfaceName(AbstractFactory.DALInterface.IPay_TradingSingleDAL) as IPay_TradingSingleDAL;
        }
        /// <summary>
@@ -64,6 +72,29 @@
        public IEnumerable<EC_OrderBasic> SelectModelPage_Seller(Infrastructure.Query.Pagination pagination, Dictionary<int, object> searchParam)
        {
            return _eC_OrderBasicDAL.SelectModelPage_Seller(pagination, searchParam);
        }
        /// <summary>
        /// 分页查询
        /// </summary>
        /// <param name="pagination"></param>
        /// <param name="MemberId"></param>
        /// <returns></returns>
        public IEnumerable<Model.EC_OrderBasic> SelectModelPageSheji(Infrastructure.Query.Pagination pagination, Guid MemberId, string BeginCreateTime, string EndCreateTime, string SellerOrderId, string PrintTypeId, string BusinessManagerId, string Shejirenyuan, string BuyerName, string DocumentName, string ShejiStatus)
        {
            return _eC_OrderBasicDAL.SelectModelPageSheji(pagination, MemberId,  BeginCreateTime,  EndCreateTime,  SellerOrderId,  PrintTypeId,  BusinessManagerId,  Shejirenyuan,  BuyerName,  DocumentName,  ShejiStatus);
        }
        /// <summary>
        /// 作业本送货分页查询
        /// </summary>
        /// <param name="pagination"></param>
        /// <returns></returns>
        public IEnumerable<EC_OrderBasic> SelectModelPageWorkBook(Infrastructure.Query.Pagination pagination, Guid _MemberID, string txtBeginDate, string txtEndDate, string txtOrderId, string txtSearchyjname, string selCustormerManager, string selBusinessManager, string selOrderStates)
        {
            return _eC_OrderBasicDAL.SelectModelPageWorkBook(pagination, _MemberID, txtBeginDate, txtEndDate, txtOrderId, txtSearchyjname, selCustormerManager, selBusinessManager, selOrderStates);
        }
        /// <summary>
@@ -122,6 +153,17 @@
        }
        /// <summary>
        /// 锁定订单
        /// </summary>
        /// <param name="orderId">订单编号</param>
        /// <param name="operator">操作人</param>
        /// <returns></returns>
        public bool SuodingOrder(int orderId, string operater)
        {
            return _eC_OrderBasicDAL.SuodingOrder(orderId, operater);
        }
        /// <summary>
        /// 批量受理订单
        /// </summary>
        /// <param name="orderIds"></param>
@@ -140,6 +182,16 @@
        public bool UpdateOrderState(params  EC_OrderOperate[] orderOperates)
        {
            return _eC_OrderBasicDAL.UpdateOrderState(orderOperates);
        }
        /// <summary>
        /// 修改订单状态(非支付状态且不可修改为未受理和已受理)
        /// </summary>
        /// <param name="orderOperate">订单操作</param>
        /// <returns></returns>
        public bool UpSurplusPrintNum(int? Keyid, int? SurplusPrintNum, string Operator)
        {
            return _eC_OrderExtendDAL.UpSurplusPrintNumsql(Keyid, SurplusPrintNum, Operator);
        }
        /// <summary>
@@ -171,6 +223,40 @@
        public EC_OrderBasic SelectModelById(int orderId)
        {
            return _eC_OrderBasicDAL.SelectModelById(orderId);
        }
        /// <summary>
        /// 根据编号获取订单信息
        /// </summary>
        /// <param name="orderId">订单唯一编号</param>
        /// <returns></returns>
        public Pay_TradingSingle GetPayTradingById(int orderId)
        {
            return _pay_TradingSingleDAL.GetOrderByIds(orderId).FirstOrDefault();
        }
        /// <summary>
        /// 根据编号获取订单信息
        /// </summary>
        /// <param name="orderId">订单唯一编号</param>
        /// <returns></returns>
        public EC_OrderExtend GetModelByKeyid(int orderId)
        {
            return _eC_OrderExtendDAL.GetModelByKeyid(orderId);
        }
        /// <summary>
        /// 根据订单编号获取订单
        /// </summary>
        /// <param name="orderIds">订单编号</param>
        /// <returns></returns>
        public IEnumerable<EC_OrderBasic> GetOrderByIds(string orderIds)
        {
            return _eC_OrderBasicDAL.GetOrderByIds(orderIds);
        }
        /// <summary>
@@ -245,6 +331,18 @@
        public bool ReceiveMoneyToAccount(int orderId, OA_FirmAccountRecord firmAccountRecord)
        {
            return _eC_OrderBasicDAL.ReceiveMoneyToAccount(orderId, firmAccountRecord);
        }
        /// <summary>
        /// 收款(线下转账、现金)
        /// </summary>
        /// <param name="orderId">订单编号</param>
        /// <param name="firmAccountRecord">操作记录</param>
        /// <returns></returns>
        public bool ReceiveMoneyToQueren(int orderId, OA_FirmAccountRecord firmAccountRecord)
        {
            return _eC_OrderBasicDAL.ReceiveMoneyToQueren(orderId, firmAccountRecord);
        }
        /// <summary>
@@ -401,9 +499,9 @@
        /// <param name="OutOrderId"></param>
        /// <param name="RelationType"></param>
        /// <returns></returns>
        public IEnumerable<EC_OrderBasic> SelectAferOfOutOrder(Infrastructure.Query.Pagination pagination, Guid MemberId, DateTime? StartCreatTime, DateTime? EndCreatTime, DateTime? StartReturnTime, DateTime? EndReturnTime, string Creater, string OutFirm, string WorkStates, string OutOrderId, int? RelationType)
        public IEnumerable<EC_OrderBasic> SelectAferOfOutOrder(Infrastructure.Query.Pagination pagination, Guid MemberId, DateTime? StartCreatTime, DateTime? EndCreatTime, DateTime? StartReturnTime, DateTime? EndReturnTime, string Creater, string OutFirm, string WorkStates, string OutOrderId, int? RelationType, string PayState = null)
        {
            return _eC_OrderBasicDAL.SelectAferOfOutOrder(pagination, MemberId, StartCreatTime, EndCreatTime, StartReturnTime, EndReturnTime, Creater, OutFirm, WorkStates, OutOrderId, RelationType);
            return _eC_OrderBasicDAL.SelectAferOfOutOrder(pagination, MemberId, StartCreatTime, EndCreatTime, StartReturnTime, EndReturnTime, Creater, OutFirm, WorkStates, OutOrderId, RelationType, PayState);
        }
        /// <summary>
@@ -413,6 +511,16 @@
        public void UpdatePrintState(int orderId)
        {
            _eC_OrderBasicDAL.UpdatePrintState(orderId);
        }
        /// <summary>
        /// 修改打印状态
        /// </summary>
        /// <param name="orderId"></param>
        public void UpdatePrintfengqianState(int orderId)
        {
            _eC_OrderBasicDAL.UpdatePrintfengqianState(orderId);
        }
        /// <summary>
@@ -457,6 +565,16 @@
        }
        /// <summary>
        /// 判断某订单是否是另一订单的自动外协订单
        /// </summary>
        /// <param name="orderId"></param>
        /// <returns></returns>
        public bool UpShejiStatus(int Keyid, int ShejiStatus, string Operator)
        {
            return _eC_OrderExtendDAL.UpShejiStatus(Keyid, ShejiStatus, Operator);
        }
        /// <summary>
        /// WEB服务自动完成订单
        /// </summary>
        public void AutoCompleteOrderByWebService()
@@ -473,6 +591,18 @@
        {
            return _eC_OrderBasicDAL.DeleteOutOrder(OrderId);
        }
        /// <summary>
        /// 删除外协订单
        /// </summary>
        /// <param name="OrderId"></param>
        /// <returns></returns>
        public bool UpdateOldOrderSurplusPrintNum(int outOrderId)
        {
            return _eC_OrderBasicDAL.UpdateOldOrderSurplusPrintNum(outOrderId);
        }
        /// <summary>
        /// 根据新增订单操作,并修改订单状态
@@ -503,7 +633,7 @@
        /// <returns></returns>
        public IEnumerable<EC_OrderBasic> GetModelPageListForPrepayments(Pagination pa, string DeliveryTime, string Province, string City, string County, string BuyerName, string BusinessManagerId, string SellerOrderId, string DocumentName, Guid SellerId)
        {
            string Condition = " and ( ob.[OrderState] ='2' or ob.[OrderState] ='3' and SellerId='"+ SellerId + "'  )";
            string Condition = " and ( ob.[OrderState] ='1' or ob.[OrderState] ='2' or ob.[OrderState] ='3'  ) and SellerId='" + SellerId + "' ";
            if (!string.IsNullOrEmpty(DeliveryTime))
            {
@@ -538,6 +668,10 @@
                else if (DeliveryTime == "一周后")
                {
                    Condition += " and  (  DATEDIFF(DAY,GETDATE(),ob.[DeliveryTime]) >7 or  DATEDIFF(DAY,GETDATE(),oe.[DelayTime])>7 )";
                }
                else if (DeliveryTime == "逾期")
                {
                    Condition += " and (  DATEDIFF(DAY,GETDATE(),ob.[DeliveryTime])<=0 or  DATEDIFF(DAY,GETDATE(),oe.[DelayTime])<=0 )";
                }
            }
@@ -586,6 +720,100 @@
        /// <summary>
        /// 查询客户预付款列表
        /// </summary>
        /// <param name="pa"></param>
        /// <returns></returns>
        public IEnumerable<EC_OrderBasic> GetModelPageListForSonghuoyanchis(Pagination pa, string DeliveryTime, string Province, string City, string County, string BuyerName, string BusinessManagerId, string SellerOrderId, string DocumentName, Guid SellerId)
        {
            string Condition = " and ( ob.[OrderState] ='1' or ob.[OrderState] ='2' or ob.[OrderState] ='3'  or ob.[OrderState] ='4' ) and SellerId='" + SellerId + "' ";
            if (!string.IsNullOrEmpty(DeliveryTime))
            {
                if (DeliveryTime == "明天")
                {
                    Condition += " and (  DATEDIFF(DAY,GETDATE(),ob.[DeliveryTime])=1 or  DATEDIFF(DAY,GETDATE(),oe.[DelayTime])=1 )";
                }
                else if (DeliveryTime == "后天")
                {
                    Condition += " and  (  DATEDIFF(DAY,GETDATE(),ob.[DeliveryTime])=2 or  DATEDIFF(DAY,GETDATE(),oe.[DelayTime])=2 )";
                }
                else if (DeliveryTime == "3天")
                {
                    Condition += " and  (  DATEDIFF(DAY,GETDATE(),ob.[DeliveryTime])=3 or  DATEDIFF(DAY,GETDATE(),oe.[DelayTime])=3 )";
                }
                else if (DeliveryTime == "4天")
                {
                    Condition += " and  (  DATEDIFF(DAY,GETDATE(),ob.[DeliveryTime])=4 or  DATEDIFF(DAY,GETDATE(),oe.[DelayTime])=4 )";
                }
                else if (DeliveryTime == "5天")
                {
                    Condition += " and (   DATEDIFF(DAY,GETDATE(),ob.[DeliveryTime])=5 or  DATEDIFF(DAY,GETDATE(),oe.[DelayTime])=5) ";
                }
                else if (DeliveryTime == "6天")
                {
                    Condition += " and  (  DATEDIFF(DAY,GETDATE(),ob.[DeliveryTime])=6 or  DATEDIFF(DAY,GETDATE(),oe.[DelayTime])=6) ";
                }
                else if (DeliveryTime == "7天")
                {
                    Condition += " and  (  DATEDIFF(DAY,GETDATE(),ob.[DeliveryTime])=7 or  DATEDIFF(DAY,GETDATE(),oe.[DelayTime])=7 )";
                }
                else if (DeliveryTime == "一周后")
                {
                    Condition += " and  (  DATEDIFF(DAY,GETDATE(),ob.[DeliveryTime]) >7 or  DATEDIFF(DAY,GETDATE(),oe.[DelayTime])>7 )";
                }
                else if (DeliveryTime == "逾期")
                {
                    Condition += " and (  DATEDIFF(DAY,GETDATE(),ob.[DeliveryTime])<=0 or  DATEDIFF(DAY,GETDATE(),oe.[DelayTime])<=0 )";
                }
            }
            if (!string.IsNullOrEmpty(Province))
                Condition += string.Format(" and CustomerCommunications.Province='{0}'", Province);
            if (!string.IsNullOrEmpty(City))
                Condition += string.Format(" and CustomerCommunications.City='{0}'", City);
            if (!string.IsNullOrEmpty(County))
                Condition += string.Format(" and CustomerCommunications.County='{0}'", County);
            if (!string.IsNullOrEmpty(BuyerName))
            {
                Condition += " and  ob.BuyerName like '%" + BuyerName + "%'";
            }
            if (!string.IsNullOrEmpty(BusinessManagerId))
            {
                Condition += string.Format(" and oe.BusinessManagerId='{0}'", BusinessManagerId);
            }
            if (!string.IsNullOrEmpty(SellerOrderId))
            {
                Condition += " and  ob.SellerOrderId like '%" + SellerOrderId + "%'"; ;
            }
            if (!string.IsNullOrEmpty(DocumentName))
            {
                Condition += " and  ob.DocumentName like '%" + DocumentName + "%'"; ;
            }
            Query query = new Query();
            IList<Criterion> criterias = new List<Criterion>()
            {
                new Criterion("", Condition),
                new Criterion("orderBy","   [DeliveryTime] DESC ")
            };
            query.Criteria = criterias;
            return _eC_OrderBasicDAL.SelectModelPage_weiwangong(query, pa);
        }
        /// <summary>
        /// 根据新增订单操作,并修改订单状态
@@ -610,5 +838,82 @@
        {
            return _eC_OrderBasicDAL.GetEC_OrderBasicListBydeliverorderId(deliverorderId, FirmId);
        }
        /// <summary>
        /// 重新计算订单的金额
        /// </summary>
        /// <param name="orderOperate"></param>
        /// <returns></returns>
        public bool UpdateorderJine(int orderId)
        {
            CoreCmsPlanOrderBLL _PlanOrderBLL = new CoreCmsPlanOrderBLL();
            CoreCmsPlanOrderItemBLL _coreCmsPlanOrderItemBLL = new CoreCmsPlanOrderItemBLL();
            var  eC_OrderBasic  = this.SelectModelById(orderId);
            EC_OrderPrintParameterBLL _OrderPrintParameterBLL = new EC_OrderPrintParameterBLL();
            var eC_OrderPrintParameter = _OrderPrintParameterBLL.GetModel(orderId);
           InquiryCommonModel model = SerializationHelper.DeSerialize(typeof(InquiryCommonModel), eC_OrderPrintParameter.PrintParameter) as InquiryCommonModel;
            //eC_OrderBasic.SumPrice =12 ;
            //eC_OrderBasic.UnitPrice = 12;
            var sss = model.InquiryWorkBookList;
            var coreCmsPlanOrders = _PlanOrderBLL.GetModelByorderid(orderId).ToList();
            decimal SumPrice = 0;
            int num = 0;
            var coreCmsPlanOrders2 = new List<CoreCmsPlanOrderItem>();
            foreach (var coreCmsPlanOrder  in coreCmsPlanOrders)
            {
                var coreCmsPlanOrders1  = _coreCmsPlanOrderItemBLL.GetModelsByOrderid(coreCmsPlanOrder.id).ToList();
                coreCmsPlanOrders2.AddRange(coreCmsPlanOrders1);
                num += coreCmsPlanOrders1.Sum(x=>x.nums);
                SumPrice += coreCmsPlanOrders1.Sum(x => x.amount);
            }
            eC_OrderBasic.SumPrice = SumPrice;
            if (num > 0)
            {
                eC_OrderBasic.UnitPrice = Math.Round(SumPrice / new decimal(num), 4);
            }
            else
            {
                eC_OrderBasic.UnitPrice = 0;
            }
            model.PrintCount = num;
            foreach ( var inquiryWorkBookModel in model.InquiryWorkBookList)
            {
                var sssssss = coreCmsPlanOrders2.Where(x => x.name == inquiryWorkBookModel.WorkBookNameTxt && x.specification == inquiryWorkBookModel.WorkBookSizeTxt).ToList();
                inquiryWorkBookModel.WorkBookCount = sssssss.Sum(x=>x.nums).ToString2();
                inquiryWorkBookModel.WorkBookMoney = sssssss.Sum(x=>x.amount).ToString2();
            }
            var isWin = _eC_OrderBasicDAL.Updatejinedanjia(eC_OrderBasic.Keyid.Value, eC_OrderBasic.SumPrice.Value, eC_OrderBasic.UnitPrice.Value, num);
            eC_OrderPrintParameter.PrintParameter = SerializationHelper.Serialize(model);
            isWin = _eC_OrderPrintParameterDAL.UpdateModel(eC_OrderPrintParameter);
            var pay_TradingSingles = _pay_TradingSingleDAL.GetOrderByIds(eC_OrderBasic.Keyid.Value).FirstOrDefault() ;
            if (pay_TradingSingles != null)
            {
                pay_TradingSingles.TradingMoney = eC_OrderBasic.SumPrice.Value;
                pay_TradingSingles.PayableMoney = eC_OrderBasic.SumPrice.Value;
                isWin = _pay_TradingSingleDAL.UpdateModel(pay_TradingSingles);
            }
            return isWin;
        }
    }
}