南骏 池
7 天以前 bfa01e00dc6b89cbba901175689a2199b8f82da4
service/Wom/WomdaaManager.cs
@@ -17,7 +17,7 @@
    //这里面写的代码不会给覆盖,如果要重新生成请删除 WomdaaManager.cs
    //获取工单号
    public List<string> GetProductionPickDaa001(WarehouseQuery query)
    public List<string> GetProductionPickDaa001(WarehouseQuery query, dynamic requestInfo)
    {
        var sql =
            "SELECT DAA001 FROM WOMDAA A LEFT JOIN (SELECT COUNT(1) UN_NUM, PID FROM WOMDAB  WHERE DAB006 > DAB007 GROUP BY DAB002) B ON A.GUID = B.daaGuid WHERE DAA001 = " +
@@ -28,9 +28,58 @@
    }
    //根据工单号返回产品型号和待领物料
    public ProductionPickDto GetItemsByDaa001(WarehouseQuery query)
    public dynamic GetItemsByDaa001(WarehouseQuery query, dynamic requestInfo)
    {
        return getDaa001(query);
        if (string.IsNullOrEmpty(query.daa001))
            throw new Exception("请选工单号!");
        if (query == null)
            throw new ArgumentNullException(nameof(query), "参数对象不能为null");
        if (string.IsNullOrEmpty(query.daa001?.ToString()))
            throw new ArgumentException("工单号不能为空", nameof(query.daa001));
        var orgId = requestInfo.OrgId;
        if (orgId == null)
            throw new Exception("组织不存在!");
        // 调用存储过程获取物料明细
        var parameters = new[]
        {
            new SugarParameter("@daa001", query.daa001),
            new SugarParameter("@pi_orgId",orgId),
            new SugarParameter("@inP1", null),
            new SugarParameter("@inP2", null),
            new SugarParameter("@inP3", null),
            new SugarParameter("@inP4", null)
        };
        var womdabs = Db.Ado.SqlQuery<ItemDetailModel>("EXEC prc_pda_scll_detailList @daa001", parameters);
        var DS_list = womdabs.Where(s => s.DSQty > 0).ToList();
        var YS_list = womdabs.Where(s => s.SQty > 0).ToList();
        // 修复:补充获取 womdaa 对象
        var daa001Value = query.daa001?.ToString();
        var womdaa = Db.Queryable<Womdaa>().Where(s => s.Daa001 == daa001Value).First();
        var womcaa = Db.Queryable<Womcaa>().Where(s => s.Guid == womdaa.CaaGuid).First();
        if (womcaa == null)
        {
            throw new Exception("生产任务单不存在");
        }
        var dto = new ProductionPickDto
        {
            daa001 = query.daa001,
            PlanNo = womcaa.Caa020,
            startTime = womdaa.mesStartProd,
            items = DS_list,
            Ysitems = YS_list
        };
        return dto;
    }
    public ProductionPickDto ScanCode(WarehouseQuery query)
@@ -203,7 +252,7 @@
        //    })
        //    .ToList();
        var sql =string.Format(@"SELECT c.item_no ItemNo,c.item_name ItemName,c.item_model ItemModel,b.dab006 FQty,b.dab007 SQty,b.dab006 - b.dab007 DSQty ,
        var sql =string.Format(@"SELECT c.item_no ItemNo,c.item_name ItemName,c.item_model ItemModel,b.dab006 FQty,b.dab007 SQty,b.dab006 - b.dab007 DSQty ,C.item_id FMaterialId ,
       dbo.F_QX_GETRECODEPOTSE(B.dab003,'','','') as RecoKw
    FROM WOMDAB B
    LEFT JOIN WOMDAA A ON A.guid = B.daaGuid
@@ -265,32 +314,41 @@
    /// <returns></returns>
    public dynamic getZsBarInfo(dynamic query)
    {
        if (query == null)
            throw new ArgumentNullException(nameof(query), "参数对象不能为null");
        var sql = string.Format(@"SELECT TOP 1 A.barCode AS zsBarcode,
             D.name AS lineName,
             D.line_no,
             B.daa001,
             C.item_no,
             C.item_name,
             C.item_model,
             A.quantity as barQty,
             B.daa008 as sumQty,
             isnull((SELECT count(1) FROM WORK_COLLECT WHERE processNo = '{0}' AND ABOUT_GUID = A.ABOUT_GUID),0) AS finQty,
             isnull((SELECT TOP 1 processNo FROM WORK_COLLECT WHERE  WORK_COLLECT.barCode = '{1}' AND checkResult = '√' ORDER BY WORK_COLLECT.createDate DESC ),'') AS lastGx
FROM WORK_TRAC_CODE A
         LEFT JOIN WOMDAA B ON A.ABOUT_GUID = B.guid
         LEFT JOIN MES_ITEMS C ON B.daa002 = C.item_id
         LEFT JOIN MES_WORKSHOP_LINE D ON A.lineId = D.id
WHERE A.barCode = '{1}'", query.GX, query.Zsbarcode);
        if (string.IsNullOrEmpty(query.Zsbarcode?.ToString()))
            throw new ArgumentException("追溯码不能为空", nameof(query.Zsbarcode));
        var ZsBarInfo = Db.Ado.SqlQuery<dynamic>(sql);
        if (string.IsNullOrEmpty(query.GX?.ToString()))
            throw new ArgumentException("工序不能为空", nameof(query.GX));
        if (ZsBarInfo.Count < 1)
        var parameters = new[]
    {
        new SugarParameter("@pi_trac_barcode", query.Zsbarcode),
        new SugarParameter("@pi_gx", query.GX),
        new SugarParameter("@inP1", null),
        new SugarParameter("@inP2", null),
        new SugarParameter("@inP3", null),
        new SugarParameter("@inP4", null)
    };
        try
        {
            throw new Exception($"该追溯码{query.Zsbarcode}不存在不存在");
        }
            var ZsBarInfo = Db.Ado.SqlQuery<dynamic>("EXEC prc_pda_scll_selZsBarInfo @pi_trac_barcode,@pi_gx,@inP1,@inP2,@inP3,@inP4", parameters);
        return ZsBarInfo;
            if (ZsBarInfo.Count < 1)
            {
                throw new Exception($"该追溯码{query.Zsbarcode}不存在或已绑定");
            }
            return ZsBarInfo;
        }
        catch (Exception ex)
        {
            // 保留原有异常处理逻辑
            throw new Exception($"{ex.Message}");
        }
    }
    //获取生产
@@ -308,6 +366,37 @@
        return Traceability;
    }
    /// <summary>
    /// 获取物料相关条码信息
    /// </summary>
    /// <param name="unity"></param>
    /// <returns></returns>
    /// <exception cref="Exception"></exception>
    public dynamic GetBarKwByItem(dynamic unity)
    {
        if (unity == null)
            throw new ArgumentNullException(nameof(unity), "参数对象不能为null");
        if (string.IsNullOrEmpty(unity.itemId?.ToString()))
            throw new ArgumentException("物料ID不能为空", nameof(unity.itemId));
        try
        {
            var parameters = new List<SugarParameter>
            {
                new SugarParameter("@itemId", unity.itemId)
            };
            return Db.Ado.SqlQuery<dynamic>("EXEC prc_pda_scll_selBarMx @itemId", parameters);
        }
        catch (Exception ex)
        {
            throw new Exception($"获取条码信息失败:{ex.Message}");
        }
    }
    public dynamic ProductBinding(dynamic query)
    {
@@ -895,32 +984,43 @@
        }
    }
    public dynamic GetXcslDaa(dynamic unity)
    public dynamic GetXcslDaa(dynamic unity,dynamic RequestInfo)
    {
        var sqlParams = new List<SugarParameter> { };
        //var sqlParams = new List<SugarParameter> { };
        var sql2 = new StringBuilder(@"
        SELECT '['+DAA001+']['+DAA021+']' AS daaInfo,DAA001,DAA021
        FROM WOMDAA
        WHERE daa018 <>'W:完工'");
        //var sql2 = new StringBuilder(@"
        //SELECT '['+DAA001+']['+DAA021+']' AS daaInfo,DAA001,DAA021
        //FROM WOMDAA
        //WHERE daa018 <>'W:完工'");
        if (!string.IsNullOrWhiteSpace(unity.selectKey?.ToString()))
        //if (!string.IsNullOrWhiteSpace(unity.selectKey?.ToString()))
        //{
        //    sqlParams.Add(new("@selectKey", unity.selectKey));
        //    sql2.Append(@"
        //    AND (DAA001 LIKE '%' + @selectKey + '%'
        //    OR DAA021 LIKE '%' + @selectKey + '%')");
        //}
        //var XcslItem = Db.Ado.SqlQuery<dynamic>(sql2.ToString(), sqlParams);
        //if (XcslItem == null)
        //{
        //    throw new Exception("该条件下无对应工单信息,请重新输入!");
        //}
        var orgId = RequestInfo.OrgId;
        var parameters = new List<SugarParameter>
        {
            sqlParams.Add(new("@selectKey", unity.selectKey));
            sql2.Append(@"
            AND (DAA001 LIKE '%' + @selectKey + '%'
            OR DAA021 LIKE '%' + @selectKey + '%')");
        }
            new SugarParameter("@selectKey", unity.selectKey),
            new SugarParameter("@inP1", orgId), // 可选参数
            new SugarParameter("@inP2", null), // 可选参数
            // ...其他可选参数
        };
        var XcslItem = Db.Ado.SqlQuery<dynamic>(sql2.ToString(), sqlParams);
        var result = Db.Ado.SqlQuery<dynamic>("EXEC prc_pda_getWorkOrderInfo @selectKey, @inP1, @inP2", parameters);
        if (XcslItem == null)
        {
            throw new Exception("该条件下无对应工单信息,请重新输入!");
        }
        return XcslItem;
        return result;
    }
@@ -1302,7 +1402,8 @@
        var sqlParams = new List<SugarParameter> { };
        var sql2 = new StringBuilder(@"SELECT NAME,line_no FROM MES_WORKSHOP_LINE WHERE isAgv = 1 ORDER BY line_no");
        var sql2 = new StringBuilder(@"
SELECT NAME,line_no FROM MES_WORKSHOP_LINE WHERE isAgv = 1 ORDER BY line_no");
        var XtItem = Db.Ado.SqlQuery<dynamic>(sql2.ToString(), sqlParams);