cnf
2025-08-14 7f21c52c4b834869fdedd948580a5ac8e5d28301
service/Wom/WomdaahbManager.cs
@@ -11,7 +11,7 @@
namespace NewPdaSqlServer.service.Wom;
public class WomdaaManager : Repository<Womdaa>
public class WomdaahbManager : Repository<Womdaa>
{
    //当前类已经继承了 Repository 增、删、查、改的方法
    //这里面写的代码不会给覆盖,如果要重新生成请删除 WomdaaManager.cs
@@ -20,9 +20,9 @@
    public List<string> GetProductionPickDaa001(WarehouseQuery query)
    {
        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 = " +
            query.daa001 +
            " and DAA018 != '完工' AND DAA022 = 1 AND UN_NUM > 0 AND ROWNUM <= 10 order by a.id desc";
            "SELECT DAAhb001 FROM WOMDAAhb A  WHERE DAAHB001 = " +
            query.hbNo +
            " and FSTATUS=1 order by a.CREATE_DATE desc";
        return Db.Ado.SqlQuery<string>(sql);
    }
@@ -40,10 +40,10 @@
        using (var conn = new SqlConnection(DbHelperSQL.strConn))
        {
            if (query.userName.IsNullOrEmpty()) throw new Exception("用户名不允许为空");
            if (query.daa001.IsNullOrEmpty()) throw new Exception("领料单号不允许为空");
            if (query.hbNo.IsNullOrEmpty()) throw new Exception("合并领料单号不允许为空");
            if (query.barcode.IsNullOrEmpty()) throw new Exception("条码不允许为空");
            using (var cmd = new SqlCommand("[prc_pda_SCLL]", conn))
            using (var cmd = new SqlCommand("[prc_pda_SCLLHB]", conn))
            {
                try
                {
@@ -56,7 +56,7 @@
                        new("@barcode_num", SqlDbType.NVarChar, 300),
                        new("@split_num", SqlDbType.NVarChar, 300),
                        new("@c_User", query.userName),
                        new("@p_biLL_no", query.daa001),
                        new("@p_biLL_no", query.hbNo),
                        new("@p_item_barcode", query.barcode)
                    };
                    parameters[0].Direction = ParameterDirection.Output;
@@ -77,7 +77,7 @@
                    var dto = new ProductionPickDto
                    {
                        daa001 = query.daa001,
                        daa001 = query.hbNo,
                        barcodeNum = barcodeNum,
                        splitNum = splitNum,
                        barcode = query.barcode,
@@ -103,7 +103,7 @@
    public ProductionPickDto ScanCodeCF(WarehouseQuery query)
    {
        if (query.userName.IsNullOrEmpty()) throw new Exception("用户名不允许为空");
        if (query.daa001.IsNullOrEmpty()) throw new Exception("领料单号不允许为空");
        if (query.hbNo.IsNullOrEmpty()) throw new Exception("合并领料单号不允许为空");
        if (query.barcode.IsNullOrEmpty()) throw new Exception("条码不允许为空");
        if (query.Num is null or 0) throw new Exception("条码拆分数不允许为空或者为0");
@@ -113,7 +113,7 @@
        var _cfBar = "";//拆分后条码
        using (var conn = new SqlConnection(DbHelperSQL.strConn))
        {
            using (var cmd = new SqlCommand("[prc_pda_SCLL_CF]", conn))
            using (var cmd = new SqlCommand("[prc_pda_SCLLHB_CF]", conn))
            {
                try
                {
@@ -125,7 +125,7 @@
                        new("@outSum", SqlDbType.NVarChar, 300),
                        new("@outCfBar", SqlDbType.NVarChar, 300),
                        new("@c_User", query.userName),
                        new("@p_biLL_no", query.daa001),
                        new("@p_biLL_no", query.hbNo),
                        new("@p_item_barcode", query.barcode),
                        new("@num", query.Num)
                    };
@@ -145,7 +145,7 @@
                    var dto = new ProductionPickDto
                    {
                        daa001 = query.daa001,
                        daa001 = query.hbNo,
                        barcode = query.barcode,//原条码
                        cfBarcode = _cfBar//拆分后条码
                    };
@@ -166,19 +166,33 @@
    private ProductionPickDto getDaa001(WarehouseQuery query)
    {
        if (string.IsNullOrEmpty(query.daa001)) throw new Exception("工单号为空");
        if (string.IsNullOrEmpty(query.hbNo)) throw new Exception("合并单号为空");
        var womdaa = Db.Queryable<Womdaa, MesItems>((a, i) =>
                new JoinQueryInfos(JoinType.Left,
                    a.Daa002 == i.ItemId.ToString()))
            .Where((a, i) => a.Daa001 == query.daa001
                    && a.Fstatus == 1)
            .Select((a, i) => new
            {
                a.Daa001, a.CaaGuid
            }).First();
        var queryResult = Db.Queryable<Womdaahb, Womdaa, MesItems>(
           (b, a, i) => new JoinQueryInfos(
               JoinType.Left, b.OrgId.ToString() == a.ErpSczz,  // Womdaahb ↔ Womdaa 关联
               JoinType.Left, a.Daa002 == i.ItemId.ToString())  // Womdaa ↔ MesItems 关联
       )
       .Where((b, a, i) =>
           (b.Daah009 != null && a.Daa021 != null) &&  // 防止null异常
           (
               b.Daah009.Contains("," + a.Daa021 + ",") ||  // 匹配中间值
               b.Daah009.StartsWith(a.Daa021 + ",") ||     // 匹配开头值
               b.Daah009.EndsWith("," + a.Daa021) ||        // 匹配结尾值
               b.Daah009 == a.Daa021                        // 完全匹配
           )
       )
       .Where((b, a, i) => b.Daahb001 == query.hbNo && b.Fstatus == 1)  // 其他条件
       .Select((b, a, i) => new
       {
           b.Daahb001,
           a.Daa001,    // 工单号
           a.CaaGuid,   // Womdaa 的 GUID
           i.ItemName   // MesItems 的字段
       })
       .First();
        if (womdaa?.Daa001 == null) throw new Exception("工单号不存在");
        if (queryResult?.Daahb001 == null) throw new Exception("合并单号不存在");
        //var womdabs = Db.Queryable<Womdaa, Womdab, MesItems, Womcab>(
        //        (a, b, c, d) =>
@@ -203,13 +217,31 @@
        //    })
        //    .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 ,
       dbo.F_QX_GETRECODEPOTSE(B.dab003,'','','') as RecoKw
    FROM WOMDAB B
    LEFT JOIN WOMDAA A ON A.guid = B.daaGuid
    LEFT JOIN MES_ITEMS C ON  B.dab003 = C.item_id
    LEFT JOIN WOMCAB D ON B.erpid = D.ERPID
    WHERE daa001 = '{0}' AND ISSUE_TYPE = 1 ORDER BY DAB002", query.daa001);
        var sql =string.Format(@"SELECT max(ahb.GUID)     as hbguid,
                        m.item_no         as itemNo,
                        max(m.item_name)  as itemName,
                        max(m.item_model) as itemModel,
                        sum(b.dab006)     as FQty,
                        sum(b.dab007)     as SQty,
                        sum(b.dab006) - sum(b.dab007) as DSQty,
                        sum(b.dab020)     as slsl,
                        max(u.fname)      as dw,
                        max(ahb.DAAHB001) as hbdh,
                        dbo.F_QX_GETRECODEPOTSE(MAX(B.DAB003),'','','') AS RecoKw
                        FROM WOMDAAHB ahb
                          left join WOMDAAHB_LIST ahbl on ahb.GUID = ahbl.MID
                          left join WOMDAA A on ahbl.PWORK_NO = a.daa021 and ahb.org_id = a.erp_sczz
                          left join WOMDAB b on b.daaGuid = a.guid
                          left join WOMCAA ca on a.caaGuid = ca.guid
                          LEFT JOIN WOMCAB D ON B.erpid = D.ERPID
                          LEFT JOIN MES_WORKSHOP_LINE WL ON WL.ID = A.DAA015
                          left join mes_items m on M.ID = b.dab003
                          left join MES_UNIT u on u.id = ahbl.UNIT
                          left join [dbo].[v_caa] v on v.guid = a.guid
                          WHERE ahb.daahb001 = '{0}' AND D.ISSUE_TYPE = 1
                          group by m.item_no
                          ORDER BY m.item_no
                          ", query.hbNo);
        var womdabs = Db.Ado.SqlQuery<ItemDetailModel>(sql);
@@ -238,7 +270,7 @@
            })
            .ToList();
        var womcaa = Db.Queryable<Womcaa>().Where(s => s.Guid == womdaa.CaaGuid)
        var womcaa = Db.Queryable<Womcaa>().Where(s => s.Guid == queryResult.CaaGuid)
            .First();
        if (womcaa == null)
@@ -248,8 +280,8 @@
        var dto = new ProductionPickDto
        {
            daa001 = womdaa.Daa001,
            PlanNo = womcaa.Caa020,
            daa001 = queryResult.Daahb001,
            //PlanNo = womcaa.Caa020,
            items = DS_list,
            Ysitems = YS_list
            // yisao = mesInvItemOutCDetailsList
@@ -900,16 +932,15 @@
        var sqlParams = new List<SugarParameter> { };
        var sql2 = new StringBuilder(@"
        SELECT '['+DAA001+']['+DAA021+']' AS daaInfo,DAA001,DAA021
        FROM WOMDAA
        WHERE daa018 <>'W:完工'");
        SELECT daahb001 as daaInfo,daahb001 as daa001
        FROM WOMDAAHB
        WHERE FSTATUS = 1 and COMPLETE_STATUS=0");
        if (!string.IsNullOrWhiteSpace(unity.selectKey?.ToString()))
        {
            sqlParams.Add(new("@selectKey", unity.selectKey));
            sql2.Append(@"
            AND (DAA001 LIKE '%' + @selectKey + '%'
            OR DAA021 LIKE '%' + @selectKey + '%')");
            AND (DAAHB001 LIKE '%' + @selectKey + '%' ");
        }
        var XcslItem = Db.Ado.SqlQuery<dynamic>(sql2.ToString(), sqlParams);