BaseProcedureProblemService.cs 7.78 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.POJO.EnumEntitys;
using MySqlX.XDevAPI.Common;
using System.Collections;
using System.Diagnostics;

namespace Hh.Mes.Service
{
    public class BaseProcedureProblemService : RepositorySqlSugar<base_procedure_problem>
    {
        public dynamic Load(PageReq pageReq, base_procedure_problem entity)
        {

            //return ExceptionsHelp.Instance.ExecuteT(() =>
            //{
            //    var result = new Response();
            //    var expression = LinqWhere(entity);
            //    //先组合查询表达式(多表查询查看IOT 设备列表案例)
            //    var query = Context.Queryable<base_procedure_problem>().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");

            var response = new Response();
            return ExceptionsHelp.Instance.ExecuteT<dynamic>(() =>
            {

                //获取列表
                var list = Context.Queryable<base_qualityStencil_Execute, bus_workOrder_detail, base_qualityStencil_detail>((a, b, c) => new JoinQueryInfos(
                         JoinType.Left, a.workOrderDetailKey == b.bodyKeys, JoinType.Left, a.qualityDetailKey == c.keys))
                         .Where((a, b, c) =>
                             a.executeResult == (int)EnumQualityExecute.不合格
                             && a.state == (int)EnumQuality.启用
                             && a.handleResult == (int)EnumQualityExecute.未执行
                         ).Select((a, b, c) => new
                         {
                             a.id,//id
                             a.executeUser,//处理人
                             a.handleResult,//处理结果
                             a.executeTime,//执行时间
                             b.barCode,//管段码
                             b.designUrl,//图纸
                             b.oprSequenceName,//物料名称
                             b.cutMaterCode,//物料码
                             b.cuttingLength,//长度
                                             //壁厚
                                             //规格
                             c.describe//质检要求
                         }
                         ).ToList();
                response.Result = list;
                return response;
            });


        }

        #region 质检

        /// <summary>
        /// 质检任务查询
        /// </summary>
        /// <param name="workCenterCode">工序code</param>
        /// <param name="barCode">管段码</param>
        /// <returns></returns>
        public dynamic GetqualityStencilList(string workCenterCode, string barCode)
        {
            var response = new Response();
            return ExceptionsHelp.Instance.ExecuteT<dynamic>(() =>
            {

                if (string.IsNullOrEmpty(workCenterCode)) { return response.ResponseError($"工序Code不能为空,请核对!"); }

                //获取列表
                var list = Context.Queryable<base_qualityStencil_Execute, bus_workOrder_detail, base_qualityStencil_detail>((a, b, c) => new JoinQueryInfos(
                         JoinType.Left, a.workOrderDetailKey == b.bodyKeys, JoinType.Left, a.qualityDetailKey == c.keys))
                         .Where((a, b, c) =>
                             a.isExecute == (int)EnumQualityisExecute.
                             && a.state == (int)EnumQuality.启用
                             && b.workCenterCode == workCenterCode
                             && a.executeResult == (int)EnumQualityExecute.未执行
                         ).Select((a, b, c) => new
                         {
                             a.id,
                             a.keys,
                             b.oprSequenceName,
                             b.barCode,
                             c.describe
                         }
                         ).ToList();

                if (!string.IsNullOrEmpty(barCode))
                {
                    list = list.Where(x => x.barCode == barCode).ToList();
                }

                response.Result = list;
                return response;
            });
        }
        #endregion

        public dynamic Ins(base_procedure_problem 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_qualityStencil_Execute entity)
        {
            return ExceptionsHelp.Instance.ExecuteT(() =>
            {
                var response = new Response();
                var quality = Context.Queryable<base_qualityStencil_Execute>().Where(x => x.id == entity.id).First();
                if (quality == null) {
                    return response.ResponseError($"检查项不存在,请核对!");
                }
                quality.handleResult = entity.handleResult;
                quality.handleTime=DateTime.Now;
                quality.handleUser= sysWebUser?.Account;
                quality.updateTime = DateTime.Now;

                response.Status = (Context.Updateable(quality)).ExecuteCommand() > 0;
                if (!response.Status) response.Message = SystemVariable.dataActionError;
                return response;
            });
        }

        public dynamic DelByIds(int[] ids)
        {
            return ExceptionsHelp.Instance.ExecuteT(() =>
            {
                var response = new Response();
                Context.Deleteable<base_procedure_problem>(t => ids.Contains(t.id)).ExecuteCommand();
                return response;
            });
        }

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

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