南骏 池
2025-05-21 c6239213a60120d4f3f8d2105f48b6fa715a99ed
1.获取携客云信息返回结构优化
2.SRM送货单扫码收料-PDA
3.OA->MES新增字段
已添加2个文件
已修改3个文件
287 ■■■■■ 文件已修改
Controllers/Warehouse/MesXkyController.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Controllers/Warehouse/MesXkyShdController.cs 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/QC/OaApi.cs 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/Warehouse/MesXkyService.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/Warehouse/MesXkyShdManager.cs 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Controllers/Warehouse/MesXkyController.cs
@@ -41,7 +41,7 @@
            {
                status = 0,
                message = "OK",
                data = tbBillList
                data = ""
            };
        }
        catch (Exception ex)
@@ -62,7 +62,7 @@
            {
                status = 0,
                message = "OK",
                data = tbBillList
                data = ""
            };
        }
        catch (Exception ex)
@@ -83,7 +83,7 @@
            {
                status = 0,
                message = "OK",
                data = tbBillList
                data = ""
            };
        }
        catch (Exception ex)
Controllers/Warehouse/MesXkyShdController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,98 @@
using System.Dynamic;
using Microsoft.AspNetCore.Mvc;
using NewPdaSqlServer.Dto.service;
using NewPdaSqlServer.entity;
using NewPdaSqlServer.service.Warehouse;
using NewPdaSqlServer.util;
namespace NewPdaSqlServer.Controllers.Warehouse;
[ApiController]
[Route("api/[controller]")]
public class MesXkyShdController : ControllerBase
{
    private readonly MesXkyShdManager m = new();
    /// <summary>
    ///     èŽ·å–æ¡ç ä¿¡æ¯å’Œç‰©æ–™ä¿¡æ¯
    /// </summary>
    /// <returns></returns>
    [HttpPost("GetShdhItems")]
    public ResponseResult GetShdhItems(dynamic unity)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList = m.GetShdhItems(unity);
            resultInfos.tbMesItems = m.GetShdhBar(unity);
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    /// <summary>
    ///     èŽ·å–æ¡ç ä¿¡æ¯å’Œç‰©æ–™ä¿¡æ¯
    /// </summary>
    /// <returns></returns>
    [HttpPost("GetBarInfo")]
    public ResponseResult GetBarInfo(WarehouseQuery unity)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList = m.GetBarInfo(unity);
            if(resultInfos.tbBillList == null)
            {
                return new ResponseResult
                {
                    status = -1,
                    message = "此条码不存在!!!",
                    data = resultInfos
                };
            }
            resultInfos.tbMesItems = m.GetItemNo(resultInfos.tbBillList.ItemId);
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    /// <summary>
    ///     åˆ°è´§å•æ”¶è´§
    /// </summary>
    /// <returns></returns>
    [HttpPost("ScanBar")]
    public ResponseResult ScanBar(dynamic unity)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList = m.ScanBar(unity);
            return new ResponseResult
            {
                status = 0,
                message = resultInfos.tbBillList,
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
}
service/QC/OaApi.cs
@@ -185,21 +185,7 @@
    private JArray BuildMainData(dynamic queryObj)
    {
        // ä½¿ç”¨å‚数化查询防止SQL注入
        const string mainSql = @"
SELECT TOP 1
    A.fBillNo AS ycczdh,
    C.item_no   AS wlbm,
    C.item_name AS jzmcwlmc,
    D.supp_name AS khgys,
    B.bill_no   AS dhdhmes,
    (SELECT  STRING_AGG(releaseNo+':' + mx.fng_desc+'\n', ',') AS OrderIDs
FROM [Mes_QC_Exceptional_Detail] mx  where mx.pGuid=a.guid
)     AS bhgpqxms
FROM Mes_QC_Exceptional A
LEFT JOIN MES_INV_ITEM_ARN B ON A.aboutGuid = b.guid
LEFT JOIN MES_ITEMS C ON A.itemId = c.item_id
LEFT JOIN MES_SUPPLIER D ON B.supp_id = D.id
WHERE a.guid = @guid";
        const string mainSql = @"EXEC select_oa_BuildMainData @guid";
        var mainData = Db.Ado.SqlQuery<dynamic>(mainSql, new { guid = queryObj.qcczdGuid });
@@ -375,8 +361,10 @@
    {
        // ä½¿ç”¨å‚数化查询获取明细数据
        const string mainSql = @"select ROW_NUMBER() over (ORDER BY Jy_Date) AS xh,releaseNo AS jydh, Jy_Date AS jydrq, batchQty as sjsl,
               chouQty AS cys, badQty AS bls, badProb AS bll
            from [Mes_QC_Exceptional_Detail]
               chouQty AS cys, badQty AS bls, badProb AS bll,C.USER_NAME AS jyr
            from Mes_QC_Exceptional_Detail A
            LEFT JOIN MES_QA_ITEMS_DETECT_01 B ON A.releaseNo = B.release_no
            LEFT JOIN SYS_USER C ON C.ACCOUNT = B.fcheck_by
            WHERE pGuid = @guid";
    
        var details = Db.Ado.SqlQuery<dynamic>(mainSql, new { guid = queryObj.qcczdGuid });
@@ -391,6 +379,7 @@
            {
                //new JObject { ["fieldName"] = "xh", ["fieldValue"] = record.xh?.ToString() ?? "" },
                new JObject { ["fieldName"] = "jydh", ["fieldValue"] = record.jydh?.ToString() ?? "" },
                 new JObject { ["fieldName"] = "jyr", ["fieldValue"] = record.jyr?.ToString() ?? "" },
                new JObject { 
                    ["fieldName"] = "jydrq", 
                    // æ ¼å¼åŒ–为"yyyy-MM-dd"字符串
@@ -403,7 +392,7 @@
                new JObject { ["fieldName"] = "sjsl", ["fieldValue"] = (float)(record.sjsl ?? 0m) },
                new JObject { ["fieldName"] = "cys", ["fieldValue"] = (float)(record.cys ?? 0) },
                new JObject { ["fieldName"] = "bls", ["fieldValue"] = (float)(record.bls ?? 0) },
                new JObject { ["fieldName"] = "bll", ["fieldValue"] = 1 }
                new JObject { ["fieldName"] = "bll", ["fieldValue"] = 1, }
            };
    
            tableRecords.Add(new JObject
service/Warehouse/MesXkyService.cs
@@ -152,7 +152,7 @@
        // æ–°å¢žåˆ—表空值检查
        if (noticeList == null || !noticeList.Any() || noticeList.Count < 1)
        {
            _logMessageDhdBar += $"本次获取收货单数据为空";
            _logMessageDHD += $"本次获取收货单数据为空";
            return result;
        }
service/Warehouse/MesXkyShdManager.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,156 @@
using System.Data;
using System.Data.SqlClient;
using Masuit.Tools;
using NewPdaSqlServer.DB;
using NewPdaSqlServer.Dto.service;
using NewPdaSqlServer.entity;
using SqlSugar;
using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
namespace NewPdaSqlServer.service.Warehouse;
public class MesXkyShdManager : Repository<MesCgthSq>
{
    public dynamic GetShdhItems(dynamic unity)
    {
        //// ä½¿ç”¨å‚数化查询防止SQL注入
        var sqlParams = new List<SugarParameter> { new("@shdh", unity.shdh) };
        var sql1 = @"select 1 from DELIVERY_NOTICE WHERE delivery_no = @shdh ";
        var shdh = Db.Ado.SqlQuery<dynamic>(sql1, sqlParams);
        if (shdh.Count < 1)
            throw new Exception($"送货单号【{unity.shdh}】不存在或未同步!");
        var sql2 = @"select D.item_no,
       D.item_name,
       D.item_model,
       A.delivery_qty                         AS shsl,
       ISNULL(E.quantity, 0)                  as ysl,
       A.delivery_qty - ISNULL(E.quantity, 0) as dssl,
       A.po_erp_no,
       C.PURCHASE_ORDER_LINE_NUMBER,
       B.GUID AS DDHID
from DELIVERY_NOTICE_DETAIL A
         LEFT JOIN dbo.MES_INV_ITEM_ARN B on B.paper_bill_no = A.delivery_no
         LEFT JOIN MES_ROH_IN_DATA C ON A.po_line_no = C.EBELN_K3ID
         LEFT JOIN MES_ITEMS D ON C.ITEM_ID = D.item_id
         LEFT JOIN dbo.MES_INV_ITEM_ARN_DETAIL E on E.parent_Guid = B.guid AND E.line_k3id = A.po_line_no
WHERE A.delivery_no = @shdh";
        var XcslItem = Db.Ado.SqlQuery<dynamic>(sql2, sqlParams);
        if (XcslItem.Count < 1)
            throw new Exception($"送货单号【{unity.shdh}】送货明细不存在或未同步!");
        return XcslItem; // è¿”回第一行数据,如果没有则返回 null
    }
    public dynamic GetShdhBar(dynamic unity)
    {
        //// ä½¿ç”¨å‚数化查询防止SQL注入
        var sqlParams = new List<SugarParameter> { new("@shdh", unity.shdh) };
        var sql2 = @"SELECT A.small_barcode,
        D.item_no,
       D.item_name,
       D.item_model,
       A.include_qty,
       A.po_erp_no,
       ISNULL(B.OLDQTY,0) AS ysl
FROM TBL_BARCODE_INFORMATION A
         LEFT JOIN MES_INV_ITEM_BARCODES B ON a.small_barcode = b.ITEM_BARCODE
         LEFT JOIN MES_ROH_IN_DATA C ON C.EBELN_K3ID = A.po_line_no
         LEFT JOIN MES_ITEMS D ON D.item_id = C.item_id
WHERE A.delivery_no =  @shdh";
        var XcslItem = Db.Ado.SqlQuery<dynamic>(sql2, sqlParams);
        if (XcslItem.Count < 1)
            throw new Exception($"送货单号【{unity.shdh}】条码明细不存在或未同步!");
        return XcslItem; // è¿”回第一行数据,如果没有则返回 null
    }
    public MesInvItemBarcodes GetBarInfo(WarehouseQuery unity)
    {
        return Db.Queryable<MesInvItemBarcodes>()
            .Where(s => s.ItemBarcode == unity.barcode)
            .First(); // è¿”回第一行数据,如果没有则返回 null
    }
    public MesItems GetItemNo(decimal strItemId)
    {
        return Db.Queryable<MesItems>()
            .Where(s => s.Id == strItemId)
            .First();
    }
    public string ScanBar(dynamic unity)
    {
        var _strMsg = "";
        var _intSum = "";
        using (var conn = new SqlConnection(DbHelperSQL.strConn))
        {
            // æ–°å¢žç©ºå¯¹è±¡æ ¡éªŒ
            if (unity == null) throw new ArgumentNullException(nameof(unity), "参数对象不能为 null");
            // å‚数校验增强
            if (string.IsNullOrEmpty(unity.userName?.ToString()))
                throw new ArgumentException("用户账户不允许为空", nameof(unity.userName));
            if (string.IsNullOrEmpty(unity.shdh?.ToString()))
                throw new ArgumentException("送货单号不允许为空", nameof(unity.shdh));
            if (string.IsNullOrEmpty(unity.barcode?.ToString()))
                throw new ArgumentException("条码不允许为空", nameof(unity.barcode));
            using (var cmd = new SqlCommand("[prc_pda_inv_dhdsh]", conn))
            {
                try
                {
                    conn.Open();
                    cmd.CommandType = CommandType.StoredProcedure;
                    SqlParameter[] parameters =
                    {
                        new("@po_outMsg", SqlDbType.NVarChar, 300) { Direction = ParameterDirection.Output },
                        new("@po_outSum", SqlDbType.NVarChar, 300) { Direction = ParameterDirection.Output },
                        new("@pi_user", SqlDbType.NVarChar) { Value = unity.userName.ToString() }, // æ˜¾å¼ç±»åž‹è½¬æ¢
                        new("@pi_barcode", SqlDbType.NVarChar) { Value = unity.barcode.ToString() },
                        new("@pi_shdh", SqlDbType.NVarChar) { Value = unity.shdh.ToString() }
                    };
                    parameters[0].Direction = ParameterDirection.Output;
                    parameters[1].Direction = ParameterDirection.Output;
                    foreach (var parameter in parameters)
                        cmd.Parameters.Add(parameter);
                    cmd.ExecuteNonQuery();
                    _strMsg = parameters[0].Value.ToString();
                    _intSum = parameters[1].Value.ToString();
                    var result = Convert.ToInt32(_intSum);
                    if (result <= 0) throw new Exception(_strMsg);
                    return _strMsg;
                    //return 0;
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }
                finally
                {
                    conn.Close();
                }
            }
        }
    }
}