啊鑫
2025-09-09 f2b71fe1d3c2b7651d525a5b5bbe66fad602ea06
WebApi/GS.QC/Service/MesDefectCodeManager.cs
@@ -1,4 +1,6 @@
using System.Text;
using System.Data;
using System.Dynamic;
using System.Text;
using GS.QC.Models;
using Gs.Toolbox;
using Gs.Toolbox.ApiCore.Abstract.Mvc;
@@ -7,10 +9,6 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json.Linq;
using System.Data;
using System.Dynamic;
using Microsoft.CodeAnalysis.CSharp.Syntax;
namespace GS.QC.Service;
@@ -35,49 +33,33 @@
    /// <param name="query"></param>
    /// <returns></returns>
    [RequestMethod(RequestMethods.POST)]
    /// <summary>
    /// 分页查询缺陷代码列表数据
    /// </summary>
    /// <param name="query">分页查询参数对象(包含页码、每页条数、排序、查询条件等)</param>
    /// <returns>包含分页数据的返回结果(数据列表、总条数等)</returns>
    public ReturnDto<PageList<MesDefectCode>> GetListPage(PageQuery query)
    {
        // 初始化分页结果对象(默认空列表,后续会填充数据)
        var pageList = new PageList<MesDefectCode>();
        try
        {
            // 1. 构建查询条件(WHERE子句)
            // "1=1" 是万能条件(避免后续拼接条件时需要判断是否加AND),拼接查询参数中的自定义条件(query.keyWhere)
            var _sbWhere = new StringBuilder(" 1=1" + query.keyWhere);
            // 2. 构建排序条件(ORDER BY子句)
            // 拼接排序字段(query.sortName)和排序方向(query.sortOrder,如"ASC"升序、"DESC"降序)
            var _sbBy = new StringBuilder(query.sortName + " " + query.sortOrder);
            // 3. 声明总记录数变量(用于接收查询结果的总条数)
            var _sbBy =
                new StringBuilder(query.sortName + " " + query.sortOrder);
            var totalCount = 0;
            // 4. 执行分页查询
            // 使用数据库访问工具(Db.Queryable)查询MesDefectCode表(别名"a")
            var itemsList = Db.Queryable<MesDefectCode>("a")
                .Where(_sbWhere.ToString()) // 应用WHERE条件
                .OrderBy(_sbBy.ToString()) // 应用排序条件
                                           // 分页查询:当前页码(query.currentPage)、每页条数(query.everyPageSize),总条数通过ref参数返回
                .ToPageList(query.currentPage, query.everyPageSize, ref totalCount);
                .Where(_sbWhere.ToString())
                .OrderBy(_sbBy.ToString())
                .ToPageList(query.currentPage, query.everyPageSize,
                    ref totalCount);
            // 5. 组装分页结果对象
            // 包含当前页数据(itemsList)、总条数(totalCount)、每页条数(query.everyPageSize)
            pageList = new PageList<MesDefectCode>(itemsList, totalCount, query.everyPageSize);
            // 6. 返回成功结果:包含分页数据、成功状态码、提示信息
            return ReturnDto<PageList<MesDefectCode>>.QuickReturn(pageList, ReturnCode.Success, "读取成功");
            pageList = new PageList<MesDefectCode>(itemsList, totalCount,
                query.everyPageSize);
            return ReturnDto<PageList<MesDefectCode>>.QuickReturn(pageList,
                ReturnCode.Success, "读取成功");
        }
        catch (Exception ex)
        {
            // 捕获异常时,返回空分页结果、默认错误码、异常信息
            return ReturnDto<PageList<MesDefectCode>>.QuickReturn(pageList, ReturnCode.Default, ex.Message);
            return ReturnDto<PageList<MesDefectCode>>.QuickReturn(pageList,
                ReturnCode.Default, ex.Message);
        }
    }
    /// <summary>
    ///     读取
    /// </summary>
@@ -87,10 +69,11 @@
    public ReturnDto<MesDefectCode> GetModel([FromBody] MesDefectCode model)
    {
        var m = base.GetById(model.Guid);
        System.Text.StringBuilder sb = new StringBuilder();
        sb.Append(" select max(defect_code)+1  from [dbo].[MES_DEFECT_CODE] w ");
        var sb = new StringBuilder();
        sb.Append(
            " select max(defect_code)+1  from [dbo].[MES_DEFECT_CODE] w ");
        sb.Append(" where pid='" + m.Guid + "'");
        string maxNo = "";
        var maxNo = "";
        try
        {
            var obj = DbHelperSQL.GetSingle(sb.ToString());
@@ -103,6 +86,7 @@
        {
            LogHelper.Debug(ToString(), "EditModel error:" + ex.Message);
        }
        m.MaxNo = maxNo;
        if (m != null)
            return ReturnDto<MesDefectCode>.QuickReturn(m, ReturnCode.Success,
@@ -144,10 +128,12 @@
        {
            LogHelper.Debug(ToString(), "EditModel error:" + ex.Message);
            Db.Ado.RollbackTran();
            return ReturnDto<string>.QuickReturn("", ReturnCode.Exception, ex.Message);
            return ReturnDto<string>.QuickReturn("", ReturnCode.Exception,
                ex.Message);
        }
        return ReturnDto<string>.QuickReturn(model.Guid.ToString(), ReturnCode.Success, "操作成功!");
        return ReturnDto<string>.QuickReturn(model.Guid.ToString(),
            ReturnCode.Success, "操作成功!");
    }
    /// <summary>
@@ -159,42 +145,44 @@
    public ReturnDto<int?> DeleteModel([FromBody] JArray guidList)
    {
        var intArray = guidList.ToObject<string[]>();
        string guid = intArray[0];
        int it = 0;
        var guid = intArray[0];
        var it = 0;
        int? rtnInt = 0;
        //根项不能删除
        string pid = "";
        var pid = "";
        try
        {
            pid = DbHelperSQL.GetSingle("select top 1 pid from MES_DEFECT_CODE where guid='" + guid + "' ").ToString();
            pid = DbHelperSQL
                .GetSingle(
                    "select top 1 pid from MES_DEFECT_CODE where guid='" +
                    guid + "' ").ToString();
        }
        catch (Exception ex)
        {
            return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Exception,
             "删除失败:" + ex.Message);
                "删除失败:" + ex.Message);
        }
        if (pid == "00000000-0000-0000-0000-000000000000")
        {
            return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Exception,
            "该项目为根目录,不能删除!");
        }
                "该项目为根目录,不能删除!");
        //有子项不能删除
        System.Text.StringBuilder sbSql = new StringBuilder();
        sbSql.Append(" select count(1) from [MES_DEFECT_CODE] where pid='" + guid + "' ");
        var sbSql = new StringBuilder();
        sbSql.Append(" select count(1) from [MES_DEFECT_CODE] where pid='" +
                     guid + "' ");
        try
        {
            it = int.Parse(Gs.Toolbox.DbHelperSQL.GetSingle(sbSql.ToString()).ToString());
            it = int.Parse(DbHelperSQL.GetSingle(sbSql.ToString()).ToString());
        }
        catch (Exception ex)
        {
            LogHelper.Debug(ToString(), "DeleteModel error:" + ex.Message);
        }
        if (it > 0)
        {
            return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Exception,
              "删除失败,该项目存在子项!");
        }
                "删除失败,该项目存在子项!");
        rtnInt = base.DeleteById(intArray) ? intArray.Length : 0;
        if (rtnInt > 0)
            return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Success,
@@ -204,7 +192,6 @@
    }
    /// <summary>
    ///
    /// </summary>
    /// <param name="guidList"></param>
    /// <returns></returns>
@@ -214,19 +201,21 @@
        string strWhere = model.strWhere;
        var lst = new List<dynamic>();
        var dset = new DataSet();
        System.Text.StringBuilder sbSql = new StringBuilder();
        sbSql.Append("select  [type_memo] from [dbo].[MES_DEFECT_TYPE] a where 1=1");
        var sbSql = new StringBuilder();
        sbSql.Append(
            "select  [type_memo] from [dbo].[MES_DEFECT_TYPE] a where 1=1");
        if (!string.IsNullOrEmpty(strWhere))
            sbSql.Append(strWhere);
        sbSql.Append(" order by [type_memo] asc");
        try
        {
            dset = Gs.Toolbox.DbHelperSQL.Query(sbSql.ToString());
            dset = DbHelperSQL.Query(sbSql.ToString());
        }
        catch (Exception ex)
        {
            LogHelper.Debug(this.ToString(), "EditModel error:" + ex.Message);
            LogHelper.Debug(ToString(), "EditModel error:" + ex.Message);
        }
        if (dset != null && dset.Tables.Count > 0 &&
            dset.Tables[0].Rows.Count > 0) //有数据
            lst = dset.Tables[0].TableToDynamicList();
@@ -248,18 +237,41 @@
        m.list = new List<dynamic>();
        m.list2 = new List<dynamic>();
        var dset = new DataSet();
        System.Text.StringBuilder sbSql = new StringBuilder();
        sbSql.Append(" select * from [dbo].[MES_DEFECT_CODE] where guid='" + guid + "'");
        sbSql.Append(" select bind.guid,bind.fType ,u.ACCOUNT,u.USER_NAME,org.NAME as orgName,q.defect_name from [dbo].[SYS_USER_BIND] bind");
        var sbSql = new StringBuilder();
        sbSql.Append(" select * from [dbo].[MES_DEFECT_CODE] where guid='" +
                     guid + "'");
        sbSql.Append(
            " select bind.guid,bind.fType ,u.ACCOUNT,u.USER_NAME,org.NAME as orgName,q.defect_name from [dbo].[SYS_USER_BIND] bind");
        sbSql.Append(" left join SYS_USER u on bind.aboutGuid=u.guid");
        sbSql.Append(" left join mes_staff f on u.STAFF_ID=f.id left join [dbo].[MES_DEFECT_CODE] q on bind.userGuid=q.guid");
        sbSql.Append(" left join [dbo].[SYS_ORGANIZATION] org on org.FID=f.FSubsidiary");
        sbSql.Append(" where 1=1 and bind.userGuid='" + guid + "' and bind.fType='员工分区'");
        sbSql.Append(" select bind.guid,bind.fType ,f.item_id,f.item_no,f.item_name,org.NAME as orgName,q.defect_name");
        sbSql.Append(" from [dbo].[SYS_USER_BIND] bind left join MES_ITEMS f on bind.aboutGuid=f.guid");
        sbSql.Append(" left join [dbo].[MES_DEFECT_CODE] q on bind.userGuid=q.guid");
        sbSql.Append(" left join [dbo].[SYS_ORGANIZATION] org on org.FID=f.FSubsidiary");
        sbSql.Append(" where 1=1 and bind.userGuid='" + guid + "' and bind.fType='物料分区'");
        sbSql.Append(
            " left join mes_staff f on u.STAFF_ID=f.id left join [dbo].[MES_DEFECT_CODE] q on bind.userGuid=q.guid");
        sbSql.Append(
            " left join [dbo].[SYS_ORGANIZATION] org on org.FID=f.FSubsidiary");
        sbSql.Append(" where 1=1 and bind.userGuid='" + guid +
                     "' and bind.fType='员工分区'");
        sbSql.Append(
            " select bind.guid,bind.fType ,f.item_id,f.item_no,f.item_name,org.NAME as orgName,q.defect_name");
        sbSql.Append(
            " from [dbo].[SYS_USER_BIND] bind left join MES_ITEMS f on bind.aboutGuid=f.item_id");
        sbSql.Append(
            " left join [dbo].[MES_DEFECT_CODE] q on bind.userGuid=q.guid");
        sbSql.Append(
            " left join [dbo].[SYS_ORGANIZATION] org on org.FID=f.FSubsidiary");
        sbSql.Append(" where 1=1 and bind.userGuid='" + guid +
                     "' and bind.fType='物料分区'");
        sbSql.Append(
            "  select bind.guid,bind.fType  ,u.depot_section_code,u.depot_section_name");
        sbSql.Append(
            "  ,org.NAME as orgName ,q.defect_name from [dbo].[SYS_USER_BIND] bind ");
        sbSql.Append(
            "  left join MES_DEPOT_SECTIONS u on bind.aboutGuid=u.depot_section_code ");
        sbSql.Append("  left join MES_DEPOTS f on u.depot_guid=f.depot_id");
        sbSql.Append(
            " left join [dbo].[MES_DEFECT_CODE] q on bind.userGuid=q.guid ");
        sbSql.Append(
            " left join [dbo].[SYS_ORGANIZATION] org on org.FID=f.FSubsidiary ");
        sbSql.Append(" where 1=1 and bind.userGuid='" + guid +
                     "' and bind.fType='库位'");
        try
        {
            dset = DbHelperSQL.Query(sbSql.ToString());
@@ -272,12 +284,15 @@
                m.list = _tb;
                var _tb2 = dset.Tables[2].TableToDynamicList();
                m.list2 = _tb2;
                var _tb3 = dset.Tables[3].TableToDynamicList();
                m.list3 = _tb3;
            }
        }
        catch (Exception ex)
        {
            LogHelper.Debug(ToString(), ex.Message);
        }
        if (m != null)
            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success,
                "读取成功!");