EbomService.cs 10 KB
using Hh.Mes.Common.log;
using Hh.Mes.Common.Request;
using Hh.Mes.Pojo.System;
using Hh.Mes.POJO.Entity;
using Hh.Mes.POJO.EnumEntitys;
using Hh.Mes.POJO.Response;
using Hh.Mes.Service.Repository;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Hh.Mes.Service.WebService.Configure
{

    public class EbomService : RepositorySqlSugar<base_ebom_header>
    {
        #region 头表
        /// <summary>
        /// //获取列表
        /// </summary>
        public Response GetEbomHeaderList(PageReq pageReq, base_ebom_header entity)
        {
            var result = new Response();
            string orderBy = (pageReq == null || string.IsNullOrEmpty(pageReq.field)) ? "  t1.createTime desc" : $"{pageReq.field} {pageReq.order} ";
            string sqlWhere = SqlWhere(entity);
            //工艺路线过滤已绑定的产品
            //string sqlWhereProcessRoute = " ";
            //if (entity.productCodeOrProductName == "no_process_product_rel") sqlWhereProcessRoute = " t1.productCode not in (select productCode from base_process_product_rel  ) ";
            var stringBuilder = new StringBuilder();
            //页码,页数
            //Exel ture 不分页
            if (!entity.Exel && pageReq != null)
            {
                stringBuilder.Append("declare @pageIndex int,@pageSize int,@offset int");
                stringBuilder.AppendLine($"  select @pageIndex={pageReq.page}, @pageSize={pageReq.limit}, @offset=(@pageIndex - 1) * @pageSize");
            }

            stringBuilder.AppendLine($@" select  t1.* 
                                         from [dbo].[base_ebom_header] t1    with(nolock)
                                         where {sqlWhere}  
                                         order by {orderBy} ");

            //Exel ture 不分页
            if (!entity.Exel)
            {
                stringBuilder.AppendLine("  offset @offset row fetch next @pageSize row only ");
                stringBuilder.Append($" select rowTotal= count(*) from base_ebom_header  t1  with(nolock) where {sqlWhere}");
            }
            var parameters = new List<SugarParameter>(){
                new SugarParameter("@itemCode",entity.itemCode),
                new SugarParameter("@children",entity.children)
            };

            var ds = base.Context.Ado.GetDataSetAllAsync(stringBuilder.ToString(), parameters);
            result.Result = ds.Result.Tables[0];
            result.Count = entity.Exel ? (int)result.Result.Rows.Count : (int)ds.Result.Tables[1].Rows[0]["rowTotal"];
            return result;
        }

        public string SqlWhere(base_ebom_header model)
        {
            var stringBuilder = new StringBuilder();
            stringBuilder.Append("1=1");
            if (!string.IsNullOrEmpty(model.itemCode))
            {
                stringBuilder.Append(" and  t1.itemCode like '%'+@itemCode+'%' ");
            }
            if (!string.IsNullOrEmpty(model.children))
            {
                stringBuilder.Append(" and  t1.children like '%'+@children+'%' ");
            }
            //下拉弹出搜索框
            if (!string.IsNullOrEmpty(model.itemCode) && model.children != "no_process_product_rel")
            {
                stringBuilder.Append(" and  (t1.itemCode like   '%'+@itemCode+'%' or  t1.children like  '%'+@children+'%' )  ");
            }
            return stringBuilder.ToString();
        }

        public ISqlSugarClient GetContext()
        {
            return base.Context;
        }




        /// <summary>
        /// 新增  code = 字典前缀+对应表标识最大值
        /// </summary>
        /// <returns></returns>
        public dynamic Ins(base_ebom_header model)
        {
            var response = new Response();
            return ExceptionsHelp.Instance.ExecuteT(() =>
            {
                model.createBy = sysWebUser?.Account;
                model.createTime = DateTime.Now;
                // model.keys = Guid.NewGuid();
                if (string.IsNullOrEmpty(model.itemCode))
                {
                    var prefix = base.GetDictionaryDictValue("base_ebom_header");
                    var maxValue = GetTableMaxValue<base_ebom_header>("id");
                    model.itemCode = prefix + maxValue;
                }

                //model.isDelete = SystemVariable.AddOrUpdateFlag;
                response.Status = Add(model);
                if (!response.Status) response.Message = SystemVariable.dataActionError;
                return response;
            });
        }


        /// <summary>
        /// 根据主键数组 删除
        /// </summary>
        public dynamic DelByIds(int[] ids)
        {
            return ExceptionsHelp.Instance.ExecuteT(() =>
            {
                var Result = new Response();
                Result.Message = "";

                Context.Deleteable<base_ebom_detail>().In(x => x.bomHeaderId, ids).AddQueue();
                Context.Deleteable<base_ebom_header>().In(x => x.id, ids).AddQueue();
                var result = Context.SaveQueues() > 0;
                if (!result)
                {
                    Result.Code = 500;
                    Result.Message = SystemVariable.dataActionError;
                }
                return Result;
            });
        }

        /// <summary>
        /// 更新
        /// </summary>
        public dynamic Upd(base_ebom_header model)
        {
            var response = new Response();
            return ExceptionsHelp.Instance.ExecuteT(() =>
            {
                model.updateBy = sysWebUser?.Account;
                model.updateTime = DateTime.Now;
                response.Status = Update(model);
                if (!response.Status) response.Message = SystemVariable.dataActionError;
                return response;
            });
        }


        /// <summary>
        /// 导出
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public dynamic ExportData(base_ebom_header entity)
        {
            return ExceptionsHelp.Instance.ExecuteT(() =>
            {
                var result = GetEbomHeaderList(null, entity);
                if (result.Count == 0)
                {
                    result.Result = "[]";
                    result.Count = 0;
                }
                return result;
            }, catchRetrunValue: "list");

        }

        #endregion

        #region 明细
        /// <summary>
        /// 查询方法明细
        /// </summary>
        public Response LoadDesc(PageReq pageReq, base_ebom_header model)
        {
            var totalCount = 0;
            var result = new Response();
            //var query = Context.Queryable<base_ebom_detail, base_material>((t1, t2) =>
            //                      new JoinQueryInfos(JoinType.Left, t1.materialCode == t2.materialCode))
            //                     .Select((t1, t2) => new
            //                     {
            //                         t1.id,
            //                         t1.bomHeaderId,
            //                         t1.materialCode,
            //                         t1.createBy,
            //                         t1.createTime,

            //                         t2.materialName,
            //                         t2.mtClassify,
            //                         t2.mtTypeCode,
            //                         t2.unitCode,
            //                         t2.thickness,
            //                         t2.diameter,
            //                         t2.types
            //                     });
            var query = Context.Queryable<base_ebom_detail>();

            var data = query.Where(t1 => t1.bomHeaderId == model.id).OrderBy(t1 => t1.id).ToOffsetPage(pageReq.page, pageReq.limit, ref totalCount);
            //页码,页数
            result.Result = data;
            result.Count = totalCount;
            return result;
        }

        /// <summary>
        /// 添加
        /// </summary>
        /// <param name="model">参数</param>
        /// <returns></returns>
        public dynamic InsDesc(base_ebom_detail model)
        {
            var response = new Response();
            return ExceptionsHelp.Instance.ExecuteT(() =>
            {
                model.createBy = sysWebUser?.Account;
                model.createTime = DateTime.Now;
                response.Status = Add(model);
                if (!response.Status)
                {
                    response.Message = SystemVariable.dataActionError;
                }
                return response;
            });
        }

        /// <summary>
        /// 编辑方法
        /// </summary>
        /// <param name="model">参数</param>
        /// <returns></returns>

        public dynamic UpdDesc(base_ebom_detail model)
        {
            var response = new Response();
            return ExceptionsHelp.Instance.ExecuteT(() =>
            {
                model.updateBy = sysWebUser?.Account;
                model.updateTime = DateTime.Now;
                response.Status = base.Context.Updateable(model).IgnoreColumns(it => new { it.createBy, it.createTime }).ExecuteCommand() > 0;
                if (!response.Status)
                {
                    response.Message = SystemVariable.dataActionError;
                }
                return response;
            });
        }

        /// <summary>
        /// 删除方法
        /// </summary>
        /// <param name="ids">需要删除的id</param>
        /// <returns></returns>
        public dynamic DelByIdsDesc(int[] ids)
        {
            var response = new Response();
            return ExceptionsHelp.Instance.ExecuteT(() =>
            {
                Context.Deleteable<base_ebom_detail>().In(ids).AddQueue();
                response.Status = Context.SaveQueues() > 0;
                if (!response.Status)
                {
                    response.Message = SystemVariable.dataActionError;
                }
                return response;

            });
        }

        #endregion}
    }

}