TBaseStationApp.cs 5.87 KB
using Infrastructure;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using WebRepository;

namespace WebApp
{
    /// <summary>
    /// 
    /// </summary>

    public partial class TBaseStationApp
    {
        private IUnitWork _unitWork;
        public IRepositoryAcs<TBaseStation> _app;
        private static IHostingEnvironment _hostingEnvironment;
        ExcelHelper imp = new ExcelHelper(_hostingEnvironment);
        private ACSDbContext _ACSDbContext;
        public TBaseStationApp(IUnitWork unitWork, IRepositoryAcs<TBaseStation> repository, IHostingEnvironment hostingEnvironment,ACSDbContext acsDbContext)
        {
            _unitWork = unitWork;
            _app = repository;
            _hostingEnvironment = hostingEnvironment;
            _ACSDbContext = acsDbContext;
        }

        public TBaseStationApp SetLoginInfo(LoginInfo loginInfo)
        {
            _app._loginInfo = loginInfo;
            return this;
        }

        public TableData Load(PageReq pageRequest, TBaseStation entity)
        {
            return _app.Load(pageRequest, entity);
        }

        public TableData LoadChargingPileData(PageReq pageRequest, TBaseStation entity)
        {
            var result = new TableData();
            var data = Find(EntityToExpression<TBaseStation>.GetExpressions(entity)).Where(u => new List<int>() { 3, 7 }.Contains(u.StationType.Value));

            GetData(data, result);
            result.count = data.Count();

            return result;
        }

        public void Ins(TBaseStation entity)
        {
            _app.Add(entity);
        }

        public void Upd(TBaseStation entity)
        {
            _app.Update(entity);
        }

        public void DelByIds(long[] ids)
        {
            _app.Delete(u => ids.Contains(u.Id.Value));
        }

        public TBaseStation FindSingle(Expression<Func<TBaseStation, bool>> exp)
        {
            return _app.FindSingle(exp);
        }

        public IQueryable<TBaseStation> Find(Expression<Func<TBaseStation, bool>> exp)
        {
            return _app.Find(exp);
        }

        public Response ImportIn(IFormFile excelfile)
        {
            Response result = new Infrastructure.Response();
            List<TBaseStation> exp = imp.ConvertToModel<TBaseStation>(excelfile);
            string sErrorMsg = "";

            for (int i = 0; i < exp.Count; i++)
            {
                try
                {
                    TBaseStation e = exp[i];
                    e.Id = null;
                    _app.Add(e);
                }
                catch (Exception ex)
                {
                    sErrorMsg += "第" + (i + 2) + "行:" + ex.Message + "<br>";
                    result.Message = sErrorMsg;
                    break;
                }
            }
            if (sErrorMsg.Equals(string.Empty))
            {
                if (exp.Count == 0)
                {
                    sErrorMsg += "没有发现有效数据, 请确定模板是否正确, 或是否有填充数据!";
                    result.Message = sErrorMsg;
                }
                else
                {
                    result.Message = "导入完成";
                }
            }
            else
            {
                result.Status = false;
                result.Message = result.Message;
            }
            return result;
        }

        public TableData ExportData(TBaseStation entity)
        {
            return _app.ExportData(entity);
        }

        public TableData Query(TBaseStation entity)
        {
            var result = new TableData();
            var data = _app.Find(EntityToExpression<TBaseStation>.GetExpressions(entity));

            GetData(data, result);
            result.count = data.Count();

            return result;
        }

        public void GetData(IQueryable<TBaseStation> data, TableData result, PageReq pageRequest = null)
        {
            _app.GetData(data, result, pageRequest);
        }

        public TableData LoadChargingPileInfo(TBaseStation entity)
        {
            var result = new TableData();
            IQueryable<TBaseStation> tBaseStation = Find(EntityToExpression<TBaseStation>.GetExpressions(entity));

            dynamic ChargingPileInfoData = from TBaseStations in tBaseStation
                                           orderby (TBaseStations.StrStationNo) ascending
                                           select new
                                           {
                                               TBaseStations.StrStationNo,
                                               TBaseStations.IsEnable
                                           };

            result.data = ChargingPileInfoData;
            result.count = tBaseStation.Count();

            return result;
        }

        public TableData GetStationInfo()
        {
            var result = new TableData();
            dynamic TBaseStationStateData = from TBaseStations in _ACSDbContext.TBaseStations
                where TBaseStations.StationType == 4
                join TBasePoints in _ACSDbContext.TBasePoints on TBaseStations.StrBarcode equals TBasePoints.StrBarcode into temp1
                from t1 in temp1.DefaultIfEmpty()
                select new
                {
                    StationMap = TBaseStations.StationArea,
                    StationNo = TBaseStations.StrStationNo,
                    StationState = TBaseStations.StationState,
                    StationTim = TBaseStations.StationTim,
                    StationBarcode = TBaseStations.StrBarcode,
                    Left = t1 == null ? 0 : t1.IntX,
                    Top = t1 == null ? 0 : t1.IntY,
                };
            result.data = TBaseStationStateData;
            result.count = 0;
            return result;
        }
    }
}