cdk
6 天以前 f1d1d3b67316c4dd7d36c15a82df5e66fde74a69
service/Wom/WomdaaManager.cs
@@ -2,6 +2,7 @@
using System.Data.SqlClient;
using System.Text;
using Masuit.Tools;
using Masuit.Tools.Hardware;
using Microsoft.SqlServer.Server;
using NewPdaSqlServer.DB;
using NewPdaSqlServer.Dto.service;
@@ -61,19 +62,19 @@
        // 修复:补充获取 womdaa 对象
        var daa001Value = query.daa001?.ToString();
        var womdaa = Db.Queryable<Womdaa>().Where(s => s.Daa001 == daa001Value).First();
        var womdaa = Db.Ado.SqlQuery<dynamic>("EXEC prc_pda_getDaaInfo @daa001", parameters).First();
        var womcaa = Db.Queryable<Womcaa>().Where(s => s.Guid == womdaa.CaaGuid).First();
        if (womcaa == null)
        if (womdaa == null)
        {
            throw new Exception("生产任务单不存在");
            throw new Exception("该工单信息不存在,请核对!");
        }
        var dto = new ProductionPickDto
        {
            daa001 = query.daa001,
            PlanNo = womcaa.Caa020,
            daaInfo = womdaa,
            PlanNo = womdaa.workNo,
            startTime = womdaa.startTime,
            items = DS_list,
            Ysitems = YS_list
        };
@@ -473,10 +474,11 @@
        if (string.IsNullOrEmpty(query.Kbbarcode?.ToString()))
            throw new ArgumentException("卡板条码不允许为空", nameof(query.userName));
        var sql = string.Format(@"SELECT QUANTITY,
        var sql = string.Format(@"SELECT QUANTITY,agvPostion,
       ISNULL((SELECT COUNT(1) FROM MES_INV_ITEM_BARCODES_TBMX WHERE ABOUT_TB_BARCODE = '{0}'), 0) AS YSum,
       DAA001
FROM MES_INV_ITEM_BARCODES A LEFT JOIN WOMDAA B ON A.ABOUT_GUID = B.guid
left join MES_WORKSHOP_LINE C ON DAA015 = C.id AND iSAgV = 1
WHERE ITEM_BARCODE = '{0}' ",  query.Kbbarcode);
        var ZsBarInfo = Db.Ado.SqlQuery<dynamic>(sql);
@@ -754,7 +756,7 @@
    //根据工单号返回产品型号和待领物料
    public XcslResultDto GetItemsXcsl(WarehouseQuery query)
    public dynamic GetItemsXcsl(WarehouseQuery query)
    {
        if (string.IsNullOrEmpty(query.daa001)) throw new Exception("工单号为空");
@@ -773,73 +775,49 @@
        if (womdaa?.Daa001 == null) throw new Exception("工单号不存在");
        // 使用参数化查询防止SQL注入
        var sqlParams = new List<SugarParameter> { new("@daa001", query.daa001) };
        if (womdaa?.Daa001 == null) throw new Exception("工单号不存在");
        var sql1 = @"SELECT A.item_out_no,
       SUM(B.QUANTITY)         AS BL_Num,
       ISNULL(Sub.JS_Sum, 0) AS JS_Num, -- 使用LEFT JOIN子查询的结果
       C.item_no,
       C.item_name,
       C.item_model,
       D.USER_NAME
FROM MES_INV_ITEM_OUTS A
         LEFT JOIN MES_INV_ITEM_OUT_C_DETAILS B ON A.GUID = B.ITEM_OUT_ID
         LEFT JOIN MES_ITEMS C ON B.ITEM_ID = C.item_id
         LEFT JOIN SYS_USER D ON A.create_by = D.ACCOUNT
-- 新增LEFT JOIN聚合子查询
         LEFT JOIN (SELECT B1.ITEM_ID,
                           SUM(B1.QUANTITY) AS JS_Sum
                    FROM MES_INV_ITEM_OUTS A1
                             LEFT JOIN MES_INV_ITEM_OUT_C_DETAILS B1 ON A1.GUID = B1.ITEM_OUT_ID
                    WHERE A1.out_type = '生产领料'
                      AND A1.task_no = @daa001
                      AND ISNULL(B1.IS_XCSL, '0') = 1
                    GROUP BY B1.ITEM_ID -- 按ITEM_ID提前聚合
) AS Sub ON Sub.ITEM_ID = C.item_id
WHERE A.out_type = '生产领料'
  AND A.task_no = @daa001
GROUP BY A.item_out_no,
         C.item_no,
         C.item_name,
         C.item_model,
         D.USER_NAME,
         C.item_id,
         ISNULL(Sub.JS_Sum, 0);";
        // 使用ADO.NET直接调用存储过程
        var ds = new DataSet();
        var XcslItem = Db.Ado.SqlQuery<dynamic>(sql1, sqlParams);
        // 假设您使用的是SQL Server,创建SqlConnection
        using (var conn = new SqlConnection(DbHelperSQL.strConn))
        {
            conn.Open();
        var sql2 = @"SELECT B.ITEM_BARCODE ,B.QUANTITY,C.item_no,C.item_name,D.USER_NAME,A.create_date
FROM MES_INV_ITEM_OUTS A
LEFT JOIN MES_INV_ITEM_OUT_C_DETAILS B ON A.GUID = B.ITEM_OUT_ID
LEFT JOIN MES_ITEMS C ON B.ITEM_ID = C.item_id
LEFT JOIN SYS_USER D ON A.create_by = D.ACCOUNT
WHERE out_type = '生产领料'
AND A.task_no = @daa001
AND ISNULL(IS_XCSL,'0') = 0";
            using (var cmd = new SqlCommand("prc_pda_xcsl_detailList", conn))
            {
                cmd.CommandType = CommandType.StoredProcedure;
        var XcslWjsBar = Db.Ado.SqlQuery<dynamic>(sql2, sqlParams);
                // 添加参数
                cmd.Parameters.Add(new SqlParameter("@daa001", query.daa001));
                cmd.Parameters.Add(new SqlParameter("@pi_orgId", DBNull.Value));
                cmd.Parameters.Add(new SqlParameter("@inP1", DBNull.Value));
                cmd.Parameters.Add(new SqlParameter("@inP2", DBNull.Value));
                cmd.Parameters.Add(new SqlParameter("@inP3", DBNull.Value));
                cmd.Parameters.Add(new SqlParameter("@inP4", DBNull.Value));
        var sql3 = @"SELECT B.ITEM_BARCODE ,B.QUANTITY,C.item_no,C.item_name,D.USER_NAME,B.XCSL_CREATE_DATE
FROM MES_INV_ITEM_OUTS A
LEFT JOIN MES_INV_ITEM_OUT_C_DETAILS B ON A.GUID = B.ITEM_OUT_ID
LEFT JOIN MES_ITEMS C ON B.ITEM_ID = C.item_id
LEFT JOIN SYS_USER D ON B.XCSL_CREATE_BY = D.ACCOUNT
WHERE out_type = '生产领料'
AND A.task_no = @daa001
AND ISNULL(IS_XCSL,'0') = 1";
                using (var adapter = new System.Data.SqlClient.SqlDataAdapter(cmd))
                {
                    adapter.Fill(ds);
                }
            }
        }
        var XcslYjsBar = Db.Ado.SqlQuery<dynamic>(sql3, sqlParams);
        // 转换结果
        var XcslItem = Db.Utilities.DataTableToDynamic(ds.Tables[0]);
        var XcslWjsBar = Db.Utilities.DataTableToDynamic(ds.Tables[1]);
        var XcslYjsBar = Db.Utilities.DataTableToDynamic(ds.Tables[2]);
        var daaInfo = Db.Utilities.DataTableToDynamic(ds.Tables[3]);
        var dto = new XcslResultDto
        var dto = new
        {
            GD_Num = womdaa.Daa008,
            workNo = womdaa.Daa021,
            XcslItemList = XcslItem,
            XcslWjsBarList = XcslWjsBar,
            XcslYjsBarList = XcslYjsBar
            XcslYjsBarList = XcslYjsBar,
            DaaInfoList = daaInfo
        };
        return dto;
@@ -1012,11 +990,13 @@
        {
            new SugarParameter("@selectKey", unity.selectKey),
            new SugarParameter("@inP1", orgId), // 可选参数
            new SugarParameter("@inP2", null), // 可选参数
            new SugarParameter("@inP2", unity.selDaaType), // 可选参数
            new SugarParameter("@inP3", null), // 可选参数
            new SugarParameter("@inP4", null), // 可选参数
            // ...其他可选参数
        };
        var result = Db.Ado.SqlQuery<dynamic>("EXEC prc_pda_getWorkOrderInfo @selectKey, @inP1, @inP2", parameters);
        var result = Db.Ado.SqlQuery<dynamic>("EXEC prc_pda_getWorkOrderInfo @selectKey, @inP1, @inP2, @inP3, @inP4", parameters);
        return result;
@@ -1442,6 +1422,7 @@
                {
                    new("@pi_user", SqlDbType.NVarChar, 100) { Value = query.userAccount },
                    new("@pi_kb_barcode", SqlDbType.NVarChar, 100) { Value = query.KbBar },
                    new("@in1", SqlDbType.NVarChar, 100) { Value = query.AgvDw },
                    new("@outMsg", SqlDbType.NVarChar, 2500) { Direction = ParameterDirection.Output },
                    new("@outSum", SqlDbType.Int) { Direction = ParameterDirection.Output }
                };