c77d842775720b8c497def6cd8b2abd30cba8903..ac8b13e15a96d757c9e563246fc662e8c186eaac
4 天以前 cdk
Merge branch 'master' of http://43.142.96.171:8080/r/~hyx...
ac8b13 对比 | 目录
4 天以前 cdk
增加一键调拨功能
4c99aa 对比 | 目录
6 天以前 wbc
权限修改
77da07 对比 | 目录
6 天以前 wbc
权限修改1
7f2031 对比 | 目录
已添加1个文件
已修改3个文件
337 ■■■■■ 文件已修改
.gitignore 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Controllers/Warehouse/TransferOutController.cs 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/Warehouse/TransferOutManager.cs 216 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/base/LoginService.cs 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.gitignore
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
################################################################################
# æ­¤ .gitignore æ–‡ä»¶å·²ç”± Microsoft(R) Visual Studio è‡ªåŠ¨åˆ›å»ºã€‚
################################################################################
/.vs
/obj
Controllers/Warehouse/TransferOutController.cs
@@ -1,10 +1,9 @@
using Microsoft.AspNetCore.Mvc;
using System.Dynamic;
using Microsoft.AspNetCore.Mvc;
using NewPdaSqlServer.Dto.service;
using NewPdaSqlServer.service.@base;
using NewPdaSqlServer.service.Warehouse;
using NewPdaSqlServer.util;
using System.Dynamic;
using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
namespace NewPdaSqlServer.Controllers.Warehouse;
@@ -110,12 +109,12 @@
    /// <response code="200">成功获取调拨出库单号列表</response>
    /// <response code="400">获取失败</response>
    [HttpPost("GetTransferOutNoList")]
    public ResponseResult GetTransferOutNoList(WarehouseQuery query)
    public ResponseResult GetTransferOutNoList()
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList = _manager.GetTransferOutNoList(query,RequestInfo);
            resultInfos.tbBillList = _manager.GetTransferOutNoList(RequestInfo);
            return new ResponseResult
            {
                status = 0,
@@ -156,7 +155,7 @@
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList =
                _manager.GetTransferOutDetailListByBillNo(query,RequestInfo);
                _manager.GetTransferOutDetailListByBillNo(query, RequestInfo);
            return new ResponseResult
            {
                status = 0,
@@ -295,4 +294,90 @@
    }
    #endregion
    #region ä¸€é”®è°ƒæ‹¨ä¸šåŠ¡
    /// <summary>
    ///     ä¸€é”®è°ƒæ‹¨å¤„理
    /// </summary>
    /// <param name="query">查询参数</param>
    /// <returns>处理结果</returns>
    /// <remarks>
    ///     è¯·æ±‚示例:
    ///     POST /api/TransferOut/ScanYjdb
    ///     {
    ///     "billNo": "DB202401010001",  // è°ƒæ‹¨å•号(必填)
    ///     "userName": "admin",          // ç”¨æˆ·å(必填)
    ///     "barcode": "BC001",          // æ¡ç å·(必填)
    ///     "sectionCode": "A1-01-01"     // è°ƒå…¥åº“位(必填)
    ///     }
    /// </remarks>
    [HttpPost("ScanYjdb")]
    public ResponseResult ScanYjdb([FromBody] WarehouseQuery query)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList = _manager.ScanYjdb(query);
            if (resultInfos.tbBillList.result == "2")
            {
                return new ResponseResult
                {
                    status = Convert.ToInt32(resultInfos.tbBillList.result),
                    message = resultInfos.tbBillList.strMsg,
                    data = resultInfos
                };
            }
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    /// <summary>
    ///     ä¸€é”®è°ƒæ‹¨å¤„理
    /// </summary>
    /// <param name="query">查询参数</param>
    /// <returns>处理结果</returns>
    /// <remarks>
    ///     è¯·æ±‚示例:
    ///     POST /api/TransferOut/ScanYjdb
    ///     {
    ///     "billNo": "DB202401010001",  // è°ƒæ‹¨å•号(必填)
    ///     "userName": "admin",          // ç”¨æˆ·å(必填)
    ///     "barcode": "BC001",          // æ¡ç å·(必填)
    ///     "sectionCode": "A1-01-01"     // è°ƒå…¥åº“位(必填)
    ///     }
    /// </remarks>
    [HttpPost("ScanYjdbCF")]
    public ResponseResult ScanYjdbCF([FromBody] WarehouseQuery query)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList = new ExpandoObject();
            resultInfos.tbBillList.printInfo = _mCf.getPrintInfo(query);
            var scanResult = _manager.ScanYjdbCF(query);
            resultInfos.tbBillList.cfBarInfo = _mCf.getCfInfo(scanResult);
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    #endregion
}
service/Warehouse/TransferOutManager.cs
@@ -1,11 +1,11 @@
using System.Data;
using System.Data.SqlClient;
using MES.Service.Modes;
using MES.Service.Modes;
using NewPdaSqlServer.DB;
using NewPdaSqlServer.Dto.service;
using NewPdaSqlServer.entity;
using NewPdaSqlServer.entity.Base;
using SqlSugar;
using System.Data;
using System.Data.SqlClient;
namespace NewPdaSqlServer.service.Warehouse;
@@ -19,7 +19,7 @@
    ///     èŽ·å–æœªå®Œæˆçš„è°ƒæ‹¨å‡ºåº“å•å·åˆ—è¡¨
    /// </summary>
    /// <returns>未完成的调拨出库单号列表</returns>
    public List<string> GetTransferOutNoList(WarehouseQuery query, dynamic RequestInfo)
    public List<string> GetTransferOutNoList(dynamic RequestInfo)
    {
        var orgId = RequestInfo.OrgId;
@@ -47,6 +47,7 @@
            throw new Exception($"{ex.Message}");
        }
    }
    /// <summary>
    ///     æ ¹æ®å•据号获取待处理的调拨出库明细列表
@@ -88,7 +89,7 @@
            return new
            {
                //tbBillList = result,
                allList = blDetails,
                blDetails = blDetails.Where(x => x.DSQty > 0).ToList(),
                ysDetails = blDetails.Where(x => x.SQty > 0).ToList(),
                Count = items.Count + ysitems.Count
@@ -274,7 +275,7 @@
                    var barcodeNum = parameters[2].Value.ToString();
                    var splitNum = parameters[3].Value.ToString();
                    var result = Convert.ToInt32(_intSum);
                    if (result <= 0) throw new Exception(_strMsg);
@@ -308,6 +309,112 @@
        }
    }
    /// <summary>
    ///     ä¸€é”®è°ƒæ‹¨å¤„理
    /// </summary>
    /// <param name="query">包含单据号、用户名、条码和库位信息的查询参数</param>
    /// <returns>处理结果</returns>
    public ProductionPickDto ScanYjdb(WarehouseQuery query)
    {
        // å®‰å…¨èŽ·å–dynamic属性值,避免空引用异常
        var p_bill_no = query.billNo?.ToString() ?? string.Empty;
        var p_item_barcode = query.barcode?.ToString() ?? string.Empty;
        var p_kw = query.sectionCode?.ToString() ?? string.Empty;
        var c_user = query.userName?.ToString() ?? string.Empty;
        // éªŒè¯å•据号
        if (string.IsNullOrEmpty(p_bill_no)) throw new Exception("请选取单据号!");
        // éªŒè¯æ¡ç 
        if (string.IsNullOrEmpty(p_item_barcode)) throw new Exception("请扫描条码!");
        // éªŒè¯åº“位
        if (string.IsNullOrEmpty(p_kw)) throw new Exception("请选择库位!");
        // éªŒè¯ç”¨æˆ·å
        if (string.IsNullOrEmpty(c_user)) throw new Exception("用户名不能为空!");
        // æŸ¥è¯¢å‡ºåº“单并验证状态
        var transferOut = Db.Queryable<MesDbck>()
            .Where(x => x.FBillNo == p_bill_no && x.FApproveStatus == 1)
            .First();
        if (transferOut == null) throw new Exception("未找到调拨申请单或者调拨申请单没审核");
        // æŸ¥è¯¢æ¡ç åº“存信息并验证
        var stock = Db.Queryable<MesInvItemStocks>()
            .Where(x => x.ItemBarcode == p_item_barcode
                        && x.Quantity > 0)
            .First();
        if (stock == null) throw new Exception($"库存中无此条码,请核对!{p_item_barcode}");
        // æŸ¥è¯¢ç‰©æ–™ä¿¡æ¯
        var item = Db.Queryable<MesItems>()
            .Where(x => x.Id == stock.ItemId)
            .First();
        if (item == null) throw new Exception("未找到物料");
        var _strMsg = "";
        var _intSum = "";
        var barcode_num = 0m;
        var split_num = 0m;
        using (var conn = new SqlConnection(DbHelperSQL.strConn))
        {
            using (var cmd = new SqlCommand("[prc_pda_YJDB]", conn))
            {
                try
                {
                    conn.Open();
                    cmd.CommandType = CommandType.StoredProcedure;
                    SqlParameter[] parameters =
                    {
                        new("@outMsg", SqlDbType.NVarChar, 2000),
                        new("@outSum", SqlDbType.Int),
                        new("@barcode_num", SqlDbType.Decimal, 18) { Precision = 18, Scale = 10 },
                        new("@split_num", SqlDbType.Decimal, 18) { Precision = 18, Scale = 10 },
                        new("@c_user", c_user),
                        new("@p_bill_no", p_bill_no),
                        new("@p_item_barcode", p_item_barcode),
                        new("@p_kw", p_kw)
                    };
                    parameters[0].Direction = ParameterDirection.Output;
                    parameters[1].Direction = ParameterDirection.Output;
                    parameters[2].Direction = ParameterDirection.Output;
                    parameters[3].Direction = ParameterDirection.Output;
                    foreach (var parameter in parameters)
                        cmd.Parameters.Add(parameter);
                    cmd.ExecuteNonQuery();
                    _strMsg = parameters[0].Value?.ToString() ?? "";
                    _intSum = parameters[1].Value?.ToString() ?? "";
                    barcode_num = parameters[2].Value != DBNull.Value ? Convert.ToDecimal(parameters[2].Value) : 0;
                    split_num = parameters[3].Value != DBNull.Value ? Convert.ToDecimal(parameters[3].Value) : 0;
                    var result = Convert.ToInt32(_intSum);
                    if (result <= 0 && result != 2) throw new Exception(_strMsg);
                    // è¿”回处理结果
                    var dto = new ProductionPickDto
                    {
                        itemNo = item.ItemNo,
                        barcodeNum = barcode_num.ToString(),
                        splitNum = split_num.ToString(),
                        barcode = p_item_barcode,
                        strMsg = _strMsg,
                        result = _intSum
                    };
                    return dto;
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }
                finally
                {
                    conn.Close();
                }
            }
        }
    }
    /// <summary>
    ///     æ‰«ææ¡ç è¿›è¡Œè°ƒæ‹¨å…¥åº“处理
    /// </summary>
@@ -381,7 +488,7 @@
                    var barcodeNum = parameters[2].Value.ToString();
                    var outBillNo = parameters[3].Value.ToString();
                    var result = Convert.ToInt32(_intSum);
                    if (result <= 0) throw new Exception(_strMsg);
@@ -494,4 +601,99 @@
        }
    }
    //一键调拨拆分
    public ProductionPickDto ScanYjdbCF(WarehouseQuery query)
    {
        // å®‰å…¨èŽ·å–dynamic属性值,避免空引用异常
        var p_bill_no = query.daa001?.ToString() ?? string.Empty;
        var p_item_barcode = query.barcode?.ToString() ?? string.Empty;
        var p_kw = query.sectionCode?.ToString() ?? string.Empty;
        var c_user = query.userName?.ToString() ?? string.Empty;
        // éªŒè¯å•据号
        if (string.IsNullOrEmpty(p_bill_no)) throw new Exception("请选取单据号!");
        // éªŒè¯æ¡ç 
        if (string.IsNullOrEmpty(p_item_barcode)) throw new Exception("请扫描条码!");
        // éªŒè¯åº“位
        if (string.IsNullOrEmpty(p_kw)) throw new Exception("请选择库位!");
        // éªŒè¯ç”¨æˆ·å
        if (string.IsNullOrEmpty(c_user)) throw new Exception("用户名不能为空!");
        // æŸ¥è¯¢å‡ºåº“单并验证状态
        var transferOut = Db.Queryable<MesDbck>()
            .Where(x => x.FBillNo == p_bill_no && x.FApproveStatus == 1)
            .First();
        if (transferOut == null) throw new Exception("未找到调拨申请单或者调拨申请单没审核");
        // æŸ¥è¯¢æ¡ç åº“存信息并验证
        var stock = Db.Queryable<MesInvItemStocks>()
            .Where(x => x.ItemBarcode == p_item_barcode
                        && x.Quantity > 0)
            .First();
        if (stock == null) throw new Exception($"库存中无此条码,请核对!{p_item_barcode}");
        // æŸ¥è¯¢ç‰©æ–™ä¿¡æ¯
        var item = Db.Queryable<MesItems>()
            .Where(x => x.Id == stock.ItemId)
            .First();
        if (item == null) throw new Exception("未找到物料");
        var _strMsg = "";
        var _intSum = "";
        var _cfBar = "";
        using (var conn = new SqlConnection(DbHelperSQL.strConn))
        {
            using (var cmd = new SqlCommand("[prc_pda_YJDB_CF]", conn))
            {
                try
                {
                    conn.Open();
                    cmd.CommandType = CommandType.StoredProcedure;
                    SqlParameter[] parameters =
                    {
                        new("@outMsg", SqlDbType.NVarChar, 2000),
                        new("@outSum", SqlDbType.NVarChar, 300),
                        new("@outCfBar", SqlDbType.NVarChar, 300),
                        new("@c_User", c_user),
                        new("@p_biLL_no", p_bill_no),
                        new("@p_item_barcode", p_item_barcode),
                        new("@num", query.Num),
                        new("@p_kw", p_kw)
                    };
                    parameters[0].Direction = ParameterDirection.Output;
                    parameters[1].Direction = ParameterDirection.Output;
                    parameters[2].Direction = ParameterDirection.Output;
                    foreach (var parameter in parameters)
                        cmd.Parameters.Add(parameter);
                    cmd.ExecuteNonQuery();
                    _strMsg = parameters[0].Value.ToString();
                    _intSum = parameters[1].Value.ToString();
                    _cfBar = parameters[2].Value.ToString();
                    var result = Convert.ToInt32(_intSum);
                    if (result <= 0) throw new Exception(_strMsg);
                    var dto = new ProductionPickDto
                    {
                        daa001 = query.daa001,
                        barcode = query.barcode,//原条码
                        cfBarcode = _cfBar//拆分后条码
                    };
                    return dto;
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }
                finally
                {
                    conn.Close();
                }
            }
        }
    }
}
service/base/LoginService.cs
@@ -59,11 +59,19 @@
        }
        else
        {
            string sql = string.Format(@"SELECT A.* FROM MES_SYS_PAGEVIEW A
         LEFT JOIN SYS_USER_BIND B ON CAST(A.guid AS VARCHAR(100)) = B.aboutGuid
         LEFT JOIN SYS_USER C ON C.GUID = B.userGuid
        WHERE C.ACCOUNT = '{0}'", name);
            pageViewList = Db.Ado.SqlQuery<MesSysPageview>(sql);
           //2025-12-17 æ”¹ä¸ºé›†æˆpc和pda
        //    string sql = string.Format(@"SELECT A.* FROM MES_SYS_PAGEVIEW A
        // LEFT JOIN SYS_USER_BIND B ON CAST(A.guid AS VARCHAR(100)) = B.aboutGuid
        // LEFT JOIN SYS_USER C ON C.GUID = B.userGuid
        //WHERE C.ACCOUNT = '{0}'", name);
            System.Text.StringBuilder sbSql = new System.Text.StringBuilder();
            sbSql.Append("  select * from MES_SYS_PAGEVIEW where guid in ");
            sbSql.Append(" ( select MENU_ACTION_GUID from [sys_Role_Menu_Action] ");
            sbSql.Append("  where  [ROLE_GUID]= (select top 1 guid from SYS_USER c where c.ACCOUNT='" + name + "') ");
            sbSql.Append(" ) ");
            pageViewList = Db.Ado.SqlQuery<MesSysPageview>(sbSql.ToString());
        }
        //if(pageViewList.Count < 0)