BaseClientInfoService.cs 6.48 KB
using Hh.Mes.Common.Infrastructure;
using Hh.Mes.Common.log;
using Hh.Mes.Common.Request;
using Hh.Mes.POJO.Entity;
using Hh.Mes.POJO.Response;
using Hh.Mes.Service.Repository;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using Hh.Mes.Pojo.System;
using Hh.Mes.Common;
using Hh.Mes.POJO.EnumEntitys;
using Hh.Mes.Service.SystemAuth;
using System.Data;
using Hh.Mes.Common.config;

namespace Hh.Mes.Service.Configure
{
    public class BaseClientInfoService : RepositorySqlSugar<base_project_client_info>
    {
        private readonly IAuth _auth;

        public BaseClientInfoService(IAuth auth)
        {
            _auth = auth;
        }

        #region 列表
        public dynamic Load(PageReq pageReq, base_project_client_info entity)
        {
            return ExceptionsHelp.Instance.ExecuteT(() =>
            {
				var result = new Response();
				var expression = LinqWhere(entity);
				//先组合查询表达式(多表查询查看IOT 设备列表案例)
				var query = Context.Queryable<base_project_client_info>().Where(expression);
				//Exel false 分页
				if (!entity.Exel)
				{
					int total = 0;
					result.Result = query.ToOffsetPage(pageReq.page, pageReq.limit, ref total);
					result.Count = total;
				}
				else
				{
					result.Result = query.ToList();
					result.Count = result.Result.Count;
				}
				return result;
			}, catchRetrunValue: "list");
        }


        //private List<base_project_client_info> DataHandle(List<base_project_client_info> data)
        //{
        //    var clientKeys = data.Select(item => item.keys).ToList();
        //    var projectQuery = Context.Queryable<base_project_client_info, base_project_client_rel, sys_user_client_rel, base_project>((client,  proClient, uClient, pro) =>
        //                                        new JoinQueryInfos(
        //                                            JoinType.Left, proClient.clientKeys == client.keys,
        //                                            JoinType.Left, uClient.clientKeys == client.keys,
        //                                            JoinType.Left, pro.keys == proClient.projectKeys))
        //                                        .Where((client, proClient, uClient, pro) => clientKeys.Contains(client.keys))
        //                                        .Select((client, proClient, uClient, pro) => new
        //                                        {
        //                                            client.keys,
        //                                            pro.projectName,

        //                                            uClient.userAccount,
        //                                        })
        //                                        .ToList();
        //    //给项目 赋值 登入用户、项目关联绑定客户信息
        //    foreach (var item in data)
        //    {
        //        var projectUsers = projectQuery.Where(x => x.keys == item.keys)
        //                                       .Select(x => x.userAccount)
        //                                       .ToArray();
        //        item.projectUsers = string.Join(",", projectUsers);

        //        var projectNames = projectQuery.Where(x => x.keys == item.keys)
        //                                         .Select(x => x.projectName)
        //                                         .Distinct()
        //                                         .ToArray();
        //        item.projectNames = string.Join(",", projectNames);
        //    }

        //    return data;
        //} 
        #endregion



        public dynamic Ins(base_project_client_info entity)
        {
            return ExceptionsHelp.Instance.ExecuteT(() =>
            {
				var response = new Response();
				entity.createBy = sysWebUser.Account;
				entity.createTime = DateTime.Now;
				response.Status = Add(entity);
				if (!response.Status) response.Message = SystemVariable.dataActionError;
				return response;
			});
        }

        public dynamic Upd(base_project_client_info entity)
        {
            return ExceptionsHelp.Instance.ExecuteT(() =>
            {
                var response = new Response();
                entity.setupDate = DateTime.Now;
                //entity.updateBy = sysWebUser?.Account;
                //entity.updateTime = DateTime.Now;
                response.Status = Update(entity);
                if (!response.Status) response.Message = SystemVariable.dataActionError;
                return response;
            });
        }

        public dynamic DelByIds(Guid[] keys)
        {
            return ExceptionsHelp.Instance.ExecuteT(() =>
            {
                var response = new Response();

                //项目工商信息表绑定项目,不允许删除
                if (Context.Queryable<base_project>().Any(x => keys.Contains(x.projectClientInfoKeys)))
                {
                    return response.ResponseError("项目工商信息绑定了项目,不能直接删除,请先解除绑定后再试!");
                }
                Context.Deleteable<base_project_client_info>(t => keys.Contains(t.keys)).ExecuteCommand();
                return response;
            });
        }

        public Response ExportData(base_project_client_info entity)
        {
            return Load(null, entity);
        }

        public Expression<Func<base_project_client_info, bool>> LinqWhere(base_project_client_info model)
        {
            try
            {
                var exp = Expressionable.Create<base_project_client_info>();
                //数据过滤条件
                //if (!string.IsNullOrWhiteSpace(model.XXX)) exp.And(x => x.XXX.Contains(model.XXX));
                if (!string.IsNullOrWhiteSpace(model.clientName))
                {
                    exp.And((c) => c.clientName.Contains(model.clientName));
                }
                if (!string.IsNullOrWhiteSpace(model.legalRepresentative))
                {
                    exp.And((c) => c.legalRepresentative.Contains(model.legalRepresentative));
                }
                if (!string.IsNullOrWhiteSpace(model.unifiedSocialCreditCode))
                {
                    exp.And((c) => c.unifiedSocialCreditCode.Contains(model.unifiedSocialCreditCode));
                }
                return exp.ToExpression();//拼接表达式
            }
            catch (Exception ex)
            {
                throw new Exception($"{ex.Message}");
            }
        }

    }
}