新框架PC后端代码(祈禧6月初版本)
lg
2025-11-20 b98df034707a61fd2857dbccd5a232605076ca59
WebApi/Gs.BaseInfo/Services/MesItemsManager.cs
@@ -1,7 +1,4 @@
using System.Data;
using System.Data.SqlClient;
using System.Dynamic;
using System.Text;
using Gs.BaseInfo.Models;
using Gs.Entity.BaseInfo;
using Gs.Entity.Sys;
using Gs.Toolbox;
@@ -11,6 +8,10 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using SqlSugar;
using System.Data;
using System.Data.SqlClient;
using System.Dynamic;
using System.Text;
using SqlDataAdapter = System.Data.SqlClient.SqlDataAdapter;
namespace Gs.BaseInfo.Services;
@@ -41,12 +42,12 @@
        try
        {
            var _sbWhere = new StringBuilder(" 1=1" + query.keyWhere);
            var _sbBy =new StringBuilder(query.sortName + " " + query.sortOrder);
            var _sbBy = new StringBuilder(query.sortName + " " + query.sortOrder);
            var totalCount = 0;
            var itemsList = Db
                .Queryable<MesItems, SysOrganization, MesUnit, MesUnit, MesUnit,
                    MesUnit, MesUnit, MesUnit, MesDepots>(
                    (a, org, c, d, e, f, g, h, m) => new object[]
                    MesUnit, MesUnit, MesUnit, MesDepots, MesItemType>(
                    (a, org, c, d, e, f, g, h, m, n) => new object[]
                    {
                        JoinType.Left, a.FSubsidiary == org.Fid,
                        JoinType.Left, a.ItemUnit == c.Id.ToString(),
@@ -55,10 +56,12 @@
                        JoinType.Left, a.Storeunit == f.Id.ToString(),
                        JoinType.Left, a.SubconUnit == g.Id.ToString(),
                        JoinType.Left, a.ProduceUnit == h.Id.ToString(),
                        JoinType.Left, a.DepotCode == m.DepotId.ToString()
                        JoinType.Left, a.DepotCode == m.DepotId.ToString(),
                        JoinType.Left, a.Fmaterialgroup == n.Id.ToString()
                    })
                .Select((a, org, c, d, e, f, g, h, m) => new MesItems
                .Select((a, org, c, d, e, f, g, h, m, n) => new MesItems
                {
                    chkInt = false,
                    FSubsidiary = "(" + org.FNumber + ")" + org.Name,
                    ItemUnit = c.Fname,
                    Fpurchaseunitid = d.Fname,
@@ -67,6 +70,7 @@
                    SubconUnit = g.Fname,
                    ProduceUnit = h.Fname,
                    DepotCode = m.DepotName,
                    Fmaterialgroup = n.Tname,
                    Fforbidstatus = a.Fforbidstatus + ":" + (a.Fforbidstatus == "A" ? "正常" : "禁用"),
                    DataType = a.DataType + ":"
                        + SqlFunc.IF(a.DataType == "Z").Return("暂存")
@@ -93,7 +97,7 @@
        }
    }
    /// <summary>
    ///     读取
    /// </summary>
@@ -130,6 +134,42 @@
        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "读取失败!");
    }
    /// <summary>
    ///
    /// </summary>
    /// <param name="model"></param>
    /// <returns></returns>
    [RequestMethod(RequestMethods.POST)]
    public ReturnDto<ExpandoObject> GetModelByOrg([FromBody] dynamic model)
    {
        string itemNo = model.itemNo;
        string orgId = model.orgId;
        dynamic m = new ExpandoObject();
        SqlParameter[] parameters =
        {
            new("@inItemNo", itemNo),
            new("@inOrgId", orgId),
        };
        var dset = new DataSet();
        try
        {
            dset = DbHelperSQL.RunProcedure("[prc_item_detailByOrg]", parameters, "0");
            if (dset != null && dset.Tables.Count > 0 &&
                dset.Tables[0].Rows.Count > 0)
            {
                var dr = dset.Tables[0].Rows[0];
                m = dr.RowToDynamic();
                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "读取成功!");
            }
            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "读取失败,找不到该物料!");
        }
        catch (Exception ex)
        {
            LogHelper.Debug(ToString(), ex.Message);
            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "读取失败," + ex.Message.ToString());
        }
    }
    /// <summary>
    ///     读取列表,支持分页
@@ -144,6 +184,7 @@
        string sortName = model.sortName;
        string keyWhere = model.keyWhere;
        string keyType = model.keyType;
        string keyWord = model.keyWord;  //这个pguid,作为方案的主键
        var dset = new DataSet();
        try
        {
@@ -161,7 +202,7 @@
                        new("@inSortOrder", ""),
                        new("@inQueryWhere", keyWhere),
                        new("@inP1",keyType),//当为:检验项目,iqc,ipqc,fqc时,免检时 特别加上过滤条件
                        new("@inP2", "")
                        new("@inP2", keyWord) //这个pguid,作为方案的主键
                    };
                    foreach (var parameter in parameters)
                        cmd.Parameters.Add(parameter);
@@ -223,7 +264,7 @@
        System.Text.StringBuilder sbJoin = new StringBuilder();
        sbJoin.Append(" FROM MES_ITEMS [a]");
        sbJoin.Append(" Left JOIN [SYS_ORGANIZATION] [Org] ON ( [a].[FSubsidiary] = [Org].[FID] )");
        sbJoin.Append(" left join SYS_USER_BIND b on (b.userGuid='"+ keyType + "' and b.aboutGuid=a.guid)");
        sbJoin.Append(" left join SYS_USER_BIND b on (b.userGuid='" + keyType + "' and b.aboutGuid=a.item_id and b.fType='物料分区')");
        sbJoin.Append(" where 1=1 ");
        sbJoin.Append(keyWhere);
        var sbSql = new StringBuilder();
@@ -276,4 +317,86 @@
            ReturnCode.Success, "读取成功");
    }
    /// <summary>
    /// 批量设置提前到货日期
    /// </summary>
    /// <param name="model"></param>
    /// <returns></returns>
    [RequestMethod(RequestMethods.POST)]
    public ReturnDto<int?> SetDays([FromBody] dynamic model)
    {
        string guidList = model.guidList;
        string bz10 = model.bz10;
        string percent = model.percent;
        string bz09 = model.bz09;
        if (string.IsNullOrEmpty(bz09))
            bz09 = null;
        int rtnInt = (int)ReturnCode.Default;
        // 构建要更新的字段(只包含非空值)
        var setParts = new List<string>();
        var parameters = new List<SqlParameter>();
        if (!string.IsNullOrWhiteSpace(bz10))
        {
            setParts.Add("bz10 = @bz10");
            parameters.Add(new SqlParameter("@bz10", SqlDbType.NVarChar) { Value = bz10.Trim() });
        }
        if (!string.IsNullOrWhiteSpace(percent))
        {
            setParts.Add("loss_percent = @percent");
            parameters.Add(new SqlParameter("@percent", SqlDbType.NVarChar) { Value = percent.Trim() });
        }
        if (!string.IsNullOrWhiteSpace(bz09))
        {
            setParts.Add("bz09 = @bz09");
            parameters.Add(new SqlParameter("@bz09", SqlDbType.NVarChar) { Value = bz09.Trim() });
        }
        if (setParts.Count == 0)
        {
            // 没有可更新的字段
            return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception, "没有需要更新的字段");
        }
        // 构建 SQL,使用参数化避免注入
        var sql = new StringBuilder();
        sql.Append("UPDATE MES_ITEMS SET ");
        sql.Append(string.Join(", ", setParts));
        sql.Append(" WHERE guid IN (SELECT line FROM dbo.fn_split(@guidList,','))");
        try
        {
            using (var conn = new SqlConnection(DbHelperSQL.strConn))
            using (var cmd = new SqlCommand(sql.ToString(), conn))
            {
                // 添加 guidList 参数
                cmd.Parameters.Add(new SqlParameter("@guidList", SqlDbType.NVarChar) { Value = guidList ?? string.Empty });
                // 添加可能的更新字段参数
                foreach (var p in parameters)
                    cmd.Parameters.Add(p);
                conn.Open();
                var rows = cmd.ExecuteNonQuery();
                rtnInt = rows;
            }
        }
        catch (Exception ex)
        {
            LogHelper.Debug(this.ToString(), "SetDays error:" + ex.Message);
            rtnInt = (int)ReturnCode.Exception;
            return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception, "操作失败," + ex.Message);
        }
        if (rtnInt > 0)
            return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Success, "操作成功!");
        else
            return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception, "操作失败,请重试!");
    }
}