BaseEquipmentGroupService.cs 4.33 KB
using Hh.Mes.Common.log;
using Hh.Mes.Common.Request;
using Hh.Mes.POJO.Response;
using Hh.Mes.POJO.WebEntity;
using Hh.Mes.Service.Repository;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;

namespace Hh.Mes.Service.WebService.Equipment
{
    public class BaseEquipmentGroupService : RepositorySqlSugar<BaseEquipmentGroup>
    {
        public dynamic DelByIds(int[] ids)
        {
            return ExceptionsHelp.Instance.ExecuteT(() =>
            {
                var response = new Response();
                foreach (int id in ids)
                {
                    DeleteChildren(id);
                    Context.Deleteable<BaseEquipmentGroup>().Where(x => x.id == id).ExecuteCommand();
                }
                return response.ResponseSuccess();
            });
        }

        private void DeleteChildren(int parentId)
        {
            var children = Context.Queryable<BaseEquipmentGroup>().Where(x => x.parentId == parentId).ToList();
            foreach (var child in children)
            {
                DeleteChildren(child.id);
                Context.Deleteable<BaseEquipmentGroup>().Where(x => x.id == child.id).ExecuteCommand();
            }
        }

        public dynamic Ins(BaseEquipmentGroup baseEquipmentGroup)
        {
            return ExceptionsHelp.Instance.ExecuteT(() =>
            {
                var response = new Response();
                Context.Insertable(baseEquipmentGroup).ExecuteCommand();
                return response.ResponseSuccess();
            });
        }

        public dynamic Load(PageReq pageReq, BaseEquipmentGroup entity)
        {
            return ExceptionsHelp.Instance.ExecuteT(() =>
            {
                var result = new Response<List<BaseEquipmentGroup>>();
                var query = Context.Queryable<BaseEquipmentGroup>().Where(LinqWhere(entity));
                //Exel为ture就不分页,因为导出的话是全部导出
                if (pageReq != null)
                {
                    int total = 0;
                    result.Result = query.Select(x => new BaseEquipmentGroup
                    {
                        id = x.id,
                        code = x.code,
                        name = x.name,
                        parentId = x.parentId,
                        parentName = SqlFunc.Subqueryable<BaseEquipmentGroup>().Where(s => s.id == x.parentId).Select(s => s.name),
                        remark = x.remark
                    }).ToOffsetPage(pageReq.page, pageReq.limit, ref total);
                    result.Count = total;
                }
                else
                {
                    result.Result = query.ToList();
                    result.Count = result.Result.Count;
                }
                return result;
            }, "list");
        }

        public List<BaseEquipmentGroup> LoadAll()
        {
            return Context.Queryable<BaseEquipmentGroup>().ToList();
        }

        public dynamic Upd(BaseEquipmentGroup baseEquipmentGroup)
        {
            return ExceptionsHelp.Instance.ExecuteT(() =>
            {
                var response = new Response();
                Context.Updateable<BaseEquipmentGroup>().SetColumns(x => new BaseEquipmentGroup
                {
                    code = baseEquipmentGroup.code,
                    name = baseEquipmentGroup.name,
                    remark = baseEquipmentGroup.remark,
                    parentId = baseEquipmentGroup.parentId,
                }).Where(x => x.id == baseEquipmentGroup.id).ExecuteCommand();
                return response.ResponseSuccess();
            });
        }

        public Expression<Func<BaseEquipmentGroup, bool>> LinqWhere(BaseEquipmentGroup model)
        {
            var exp = Expressionable.Create<BaseEquipmentGroup>();
            //数据过滤条件
            if (!string.IsNullOrWhiteSpace(model.code))
            {
                exp.And(x => x.code.Contains(model.code));
            }
            if (!string.IsNullOrWhiteSpace(model.name))
            {
                exp.And(x => x.name.Contains(model.name));
            }
            if (model.parentId != default)
            {
                exp.And(x => x.parentId == model.parentId || x.id == model.parentId);
            }
            return exp.ToExpression();//拼接表达式
        }
    }
}