MaterialCallService.cs 5 KB
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.Data;
using System.Text;
using System.Threading.Tasks;

namespace Hh.Mes.Service.Material
{
    public class MaterialCallService : RepositorySqlSugar<dynamic>
    {
        /// <summary>
        /// 物料呼叫,需求库位
        /// </summary>
        /// <returns></returns>
        public Task<DataSet> GetSelectData()
        {
            string sql = @" SELECT t1.code, srmCode   FROM [dbo].[base_location] t1 WHERE type = 'A' OR type = 'B'
                            select WorkshopId, WorkshopCode, LineCode, LineName, Id  from Line";

            return base.Context.Ado.GetDataSetAllAsync(sql);
        }

        /// <summary>
        /// 获取物料
        /// </summary>
        public Response GetMaterialList(PageReq pageReq, base_material entity)
        {
            var result = new Response();
            string orderBy = (pageReq == null || string.IsNullOrEmpty(pageReq.field)) ? " id desc" : $"{pageReq.field} {pageReq.order} ";
            string sqlWhere = SqlMateriaWhere(entity);
            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 t2.mtTypeName materialtypeName,t1.*  
                                         from base_material t1 with(nolock)
                                         left join base_material_type t2 with(nolock) on t1.Types=t2.mtTypeCode  
                                         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_material t1 with(nolock)
                                         left join base_material_type t2 with(nolock) on t1.MaterialCategory=t2.mtTypeCode  where {sqlWhere}");
            }

            var parameters = new List<SugarParameter>(){
                new SugarParameter("@mtTypeCode",entity.mtTypeCode),
                new SugarParameter("@materialName",entity.materialName),
                new SugarParameter("@materialCode",entity.materialCode),
                new SugarParameter("@codeOrName",entity.codeOrName)
            };

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

        public string SqlMateriaWhere(base_material model)
        {
            var stringBuilder = new StringBuilder();
            stringBuilder.Append(" 1=1 ");
            if (!string.IsNullOrEmpty(model.mtTypeCode))
            {
                stringBuilder.Append(" and  t1.mtTypeCode = @mtTypeCode ");
            }
            if (!string.IsNullOrEmpty(model.materialName))
            {
                stringBuilder.Append(" and  t1.materialName like '%'+@materialName+'%' ");
            }
            if (!string.IsNullOrEmpty(model.materialCode))
            {
                stringBuilder.Append(" and  t1.materialCode like '%'+@materialCode+'%' ");
            }
            //下拉弹出搜索框
            if (!string.IsNullOrEmpty(model.codeOrName))
            {
                stringBuilder.Append($" and  (t1.materialCode like '%'+@codeOrName+'%' or  t1.materialName like '%'+@codeOrName+'%' )   ");
            }
            return stringBuilder.ToString();
        }


        /// <summary>
        /// 更新 物料线体
        /// </summary>
        public dynamic Upd(base_material model)
        {
            var response = new Response();
            return ExceptionsHelp.Instance.ExecuteT(() =>
            {
                model.updateBy = sysWebUser?.Account;
                model.updateTime = DateTime.Now;
                response.Status = Context.Updateable(model).Where(u => u.id == model.id).ExecuteCommand() > 0;
                if (!response.Status) response.Message = "更新失败";
                return response;
            });
        }



        /// <summary>
        /// 左侧列表  
        /// </summary>
        public DataTable GetTreeList()
        {
            string sql = @"select t1.id,name=t1.mtTypeName ,  t1.mtTypeCode ,t1.keys,parentId=t1.parentTypeId		     
						   from base_material_type t1";
            var dt = base.Context.Ado.GetDataTable(sql);
            return dt == null || dt.Rows.Count == 0 ? null : dt;
        }

    }
}