南骏 池
2025-03-06 567b9c89e3a8a7812a668909354f9fa634972278
1.销售退货初步功能完成(后续新增防呆)
已添加4个文件
836 ■■■■■ 文件已修改
Controllers/Warehouse/MesXsthController.cs 255 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
entity/SalesReturnNotice.cs 268 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
entity/SalesReturnNoticeDetail.cs 184 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/Warehouse/MesXsthManager.cs 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Controllers/Warehouse/MesXsthController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,255 @@
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;
/// <summary>
///     ç”Ÿäº§è¡¥æ–™ç›¸å…³æŽ¥å£
/// </summary>
[Route("api/[controller]")]
[ApiController]
public class MesXsthController : ControllerBase
{
    private readonly MesXsthManager _manager = new();
    #region åŸºç¡€
    /***进入模版管理可以修改模版***/
    /// <summary>
    ///     èŽ·å–æ‰€æœ‰
    /// </summary>
    /// <returns></returns>
    [HttpPost("GetList")]
    public ResponseResult GetList()
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList = _manager.GetList();
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    /// <summary>
    ///     æ ¹æ®ä¸»é”®èŽ·å–
    /// </summary>
    /// <returns></returns>
    [HttpPost("GetById")]
    public ResponseResult GetById(int id)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList = _manager.GetById(id);
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    /// <summary>
    ///     æ ¹æ®ä¸»é”®åˆ é™¤
    /// </summary>
    /// <returns></returns>
    [HttpPost("DeleteByIds")]
    public ResponseResult DeleteByIds([FromBody] object[] ids)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList = _manager.DeleteByIds(ids);
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    /// <summary>
    ///     æ·»åŠ 
    /// </summary>
    /// <returns></returns>
    [HttpPost("Insert")]
    public ResponseResult Add([FromBody] MesItemBl data)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList = _manager.Insert(data);
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    /// <summary>
    ///     æ·»åŠ è¿”å›žè‡ªå¢ž
    /// </summary>
    /// <returns></returns>
    [HttpPost("InsertReturnIdentity")]
    public ResponseResult InsertReturnIdentity([FromBody] MesItemBl data)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList = _manager.InsertReturnIdentity(data);
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    /// <summary>
    ///     ä¿®æ”¹
    /// </summary>
    /// <returns></returns>
    [HttpPost("Update")]
    public ResponseResult Update([FromBody] MesItemBl data)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList = _manager.Update(data);
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    #endregion
    /// <summary>
    ///     èŽ·å–é”€å”®é€€è´§ç”³è¯·åˆ—è¡¨
    /// </summary>
    /// <returns>销售退货申请列表</returns>
    [HttpPost("GetXsthBillNo")]
    public ResponseResult GetXsthBillNo(WarehouseQuery query)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList = _manager.GetXsthBillNo(query);
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    /// <summary>
    ///     æ ¹æ®å•号获取销售退货单明细
    /// </summary>
    /// <param name="query">查询参数</param>
    /// <returns>销售退货单明细列表</returns>
    [HttpPost("GetMesItemDetailByBillNo")]
    public ResponseResult GetMesItemDetailByBillNo(
        [FromBody] WarehouseQuery query)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList = _manager.GetMesItemDetailByBillNo(query);
            if (resultInfos.tbBillList.Count < 1)
            {
                return new ResponseResult
                {
                    status = 1,
                    message = "该申请单号不存在或未审核!!!",
                    data = ""
                };
            }
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    /// <summary>
    ///     èŽ·å–æ¡ç ä¿¡æ¯å’Œç‰©æ–™ä¿¡æ¯
    /// </summary>
    /// <returns></returns>
    [HttpPost("XsthScanBarcode")]
    public ResponseResult XsthScanBarcode(WarehouseQuery unity)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList = _manager.XsthScanBarcode(unity);
            return new ResponseResult
            {
                status = 0,
                message = resultInfos.tbBillList,
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
}
entity/SalesReturnNotice.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,268 @@
using SqlSugar;
namespace MES.Service.Modes;
/// <summary>
///     é”€å”®é€€è´§ç”³è¯·å•
/// </summary>
[SugarTable("SALES_RETURN_NOTICE")]
public class SalesReturnNotice
{
    /// <summary>
    ///     ä¸»é”®
    /// </summary>
    [SugarColumn(ColumnName = "ID", IsPrimaryKey = true)]
    public Guid? Id { get; set; }
    /// <summary>
    ///     å•据类型
    /// </summary>
    [SugarColumn(ColumnName = "BILL_TYPE")]
    public string? BillType { get; set; }
    /// <summary>
    ///     å•据编号
    /// </summary>
    [SugarColumn(ColumnName = "BILL_NO")]
    public string? BillNo { get; set; }
    /// <summary>
    ///     æ—¥æœŸ
    /// </summary>
    [SugarColumn(ColumnName = "F_DATE")]
    public DateTime? FDate { get; set; }
    /// <summary>
    ///     ç»“算币别
    /// </summary>
    [SugarColumn(ColumnName = "CURRENCY")]
    public string? Currency { get; set; }
    /// <summary>
    ///     é”€å”®ç»„织
    /// </summary>
    [SugarColumn(ColumnName = "SALES_ORG")]
    public string? SalesOrg { get; set; }
    /// <summary>
    ///     é”€å”®éƒ¨é—¨
    /// </summary>
    [SugarColumn(ColumnName = "SALES_DEPT")]
    public string? SalesDept { get; set; }
    /// <summary>
    ///     å®¢æˆ·è®¢å•
    /// </summary>
    [SugarColumn(ColumnName = "CUSTOMER_ORDER_NO")]
    public string? CustomerOrderNo { get; set; }
    /// <summary>
    ///     é€€è´§å®¢æˆ·
    /// </summary>
    [SugarColumn(ColumnName = "RETURN_CUSTOMER")]
    public string? ReturnCustomer { get; set; }
    /// <summary>
    ///     æ·˜å®å®¢æˆ·å¤‡æ³¨
    /// </summary>
    [SugarColumn(ColumnName = "TAOBAO_REMARK")]
    public string? TaobaoRemark { get; set; }
    /// <summary>
    ///     é€€è´§åŽŸå› 
    /// </summary>
    [SugarColumn(ColumnName = "RETURN_REASON")]
    public string? ReturnReason { get; set; }
    /// <summary>
    ///     äº¤è´§åœ°ç‚¹
    /// </summary>
    [SugarColumn(ColumnName = "DELIVERY_LOCATION")]
    public string? DeliveryLocation { get; set; }
    /// <summary>
    ///     åº“存组织
    /// </summary>
    [SugarColumn(ColumnName = "INVENTORY_ORG")]
    public string? InventoryOrg { get; set; }
    /// <summary>
    ///     åº“存部门
    /// </summary>
    [SugarColumn(ColumnName = "INVENTORY_DEPT")]
    public string? InventoryDept { get; set; }
    /// <summary>
    ///     åº“存组
    /// </summary>
    [SugarColumn(ColumnName = "INVENTORY_GROUP")]
    public string? InventoryGroup { get; set; }
    /// <summary>
    ///     ä»“管员
    /// </summary>
    [SugarColumn(ColumnName = "WAREHOUSE_MANAGER")]
    public string? WarehouseManager { get; set; }
    /// <summary>
    ///     é”€å”®ç»„
    /// </summary>
    [SugarColumn(ColumnName = "SALES_GROUP")]
    public string? SalesGroup { get; set; }
    /// <summary>
    ///     é”€å”®å‘˜
    /// </summary>
    [SugarColumn(ColumnName = "SALES_PERSON")]
    public string? SalesPerson { get; set; }
    /// <summary>
    ///     å¿«é€’单号
    /// </summary>
    [SugarColumn(ColumnName = "EXPRESS_NO")]
    public string? ExpressNo { get; set; }
    /// <summary>
    ///     æ”¶è´§æ–¹
    /// </summary>
    [SugarColumn(ColumnName = "RECEIVER")]
    public string? Receiver { get; set; }
    /// <summary>
    ///     æ”¶è´§æ–¹è”系人
    /// </summary>
    [SugarColumn(ColumnName = "RECEIVER_CONTACT")]
    public string? ReceiverContact { get; set; }
    /// <summary>
    ///     æ”¶è´§æ–¹åœ°å€
    /// </summary>
    [SugarColumn(ColumnName = "RECEIVER_ADDRESS")]
    public string? ReceiverAddress { get; set; }
    /// <summary>
    ///     æ”¶è´§æ–¹å§“名
    /// </summary>
    [SugarColumn(ColumnName = "RECEIVER_NAME")]
    public string? ReceiverName { get; set; }
    /// <summary>
    ///     ç»“ç®—æ–¹
    /// </summary>
    [SugarColumn(ColumnName = "SETTLE_PARTY")]
    public string? SettleParty { get; set; }
    /// <summary>
    ///     åˆ›å»ºäºº
    /// </summary>
    [SugarColumn(ColumnName = "CREATED_BY")]
    public string? CreatedBy { get; set; }
    /// <summary>
    ///     åˆ›å»ºæ—¶é—´
    /// </summary>
    [SugarColumn(ColumnName = "CREATED_DATE")]
    public DateTime? CreatedDate { get; set; }
    /// <summary>
    ///     ä¿®æ”¹äºº
    /// </summary>
    [SugarColumn(ColumnName = "MODIFIED_BY")]
    public string? ModifiedBy { get; set; }
    /// <summary>
    ///     ä¿®æ”¹æ—¶é—´
    /// </summary>
    [SugarColumn(ColumnName = "MODIFIED_DATE")]
    public DateTime? ModifiedDate { get; set; }
    /// <summary>
    ///     å…³é—­äºº
    /// </summary>
    [SugarColumn(ColumnName = "CLOSED_BY")]
    public string? ClosedBy { get; set; }
    /// <summary>
    ///     å…³é—­åŽŸå› 
    /// </summary>
    [SugarColumn(ColumnName = "CLOSE_REASON")]
    public string? CloseReason { get; set; }
    /// <summary>
    ///     å…³é—­æ—¥æœŸ
    /// </summary>
    [SugarColumn(ColumnName = "CLOSE_DATE")]
    public DateTime? CloseDate { get; set; }
    /// <summary>
    ///     å®¡æ ¸äºº
    /// </summary>
    [SugarColumn(ColumnName = "APPROVED_BY")]
    public string? ApprovedBy { get; set; }
    /// <summary>
    ///     å®¡æ ¸æ—¥æœŸ
    /// </summary>
    [SugarColumn(ColumnName = "APPROVED_DATE")]
    public DateTime? ApprovedDate { get; set; }
    /// <summary>
    ///     ä½œåºŸçŠ¶æ€
    /// </summary>
    [SugarColumn(ColumnName = "CANCEL_STATUS")]
    public string? CancelStatus { get; set; }
    /// <summary>
    ///     ä½œåºŸäºº
    /// </summary>
    [SugarColumn(ColumnName = "CANCELLED_BY")]
    public string? CancelledBy { get; set; }
    /// <summary>
    ///     ä½œåºŸæ—¥æœŸ
    /// </summary>
    [SugarColumn(ColumnName = "CANCEL_DATE")]
    public DateTime? CancelDate { get; set; }
    /// <summary>
    ///     å…³é—­çŠ¶æ€
    /// </summary>
    [SugarColumn(ColumnName = "CLOSE_STATUS")]
    public string? CloseStatus { get; set; }
    /// <summary>
    ///     æ˜¯å¦æ‰‹åЍ关闭
    /// </summary>
    [SugarColumn(ColumnName = "MANUAL_CLOSE_FLAG")]
    public string? ManualCloseFlag { get; set; }
    /// <summary>
    ///     ERP头ID
    /// </summary>
    [SugarColumn(ColumnName = "ERP_ID")]
    public string? ErpId { get; set; }
    /// <summary>
    ///     å•据状态
    /// </summary>
    [SugarColumn(ColumnName = "BILL_STATUS")]
    public string? BillStatus { get; set; }
    /// <summary>
    ///     æ£€æŸ¥çŠ¶æ€
    /// </summary>
    [SugarColumn(ColumnName = "checkStatus")]
    public bool? CheckStatus { get; set; }
    /// <summary>
    ///     å®Œç»“状态
    /// </summary>
    [SugarColumn(ColumnName = "finishStatus")]
    public bool? FinishStatus { get; set; }
    /// <summary>
    ///     é”€å”®è®¢å•号
    /// </summary>
    [SugarColumn(ColumnName = "SALES_ORDER_ID")]
    public Guid? SalesOrderId { get; set; }
}
entity/SalesReturnNoticeDetail.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,184 @@
using SqlSugar;
namespace MES.Service.Modes;
/// <summary>
///     é”€å”®é€€è´§é€šçŸ¥å•明细表
/// </summary>
[SugarTable("SALES_RETURN_NOTICE_DETAIL")]
public class SalesReturnNoticeDetail
{
    /// <summary>
    ///     ä¸»é”®
    /// </summary>
    [SugarColumn(ColumnName = "ID", IsPrimaryKey = true)]
    public Guid? Id { get; set; }
    /// <summary>
    ///     ç”³è¯·å•主键
    /// </summary>
    [SugarColumn(ColumnName = "pid")]
    public Guid? Pid { get; set; }
    /// <summary>
    ///     ç‰©æ–™ID
    /// </summary>
    [SugarColumn(ColumnName = "MATERIAL_ID")]
    public string? MaterialId { get; set; }
    /// <summary>
    ///     ç‰©æ–™åç§°
    /// </summary>
    [SugarColumn(ColumnName = "MATERIAL_NAME")]
    public string? MaterialName { get; set; }
    /// <summary>
    ///     ç‰©æ–™è§„æ ¼
    /// </summary>
    [SugarColumn(ColumnName = "MATERIAL_SPECIFICATION")]
    public string? MaterialSpecification { get; set; }
    /// <summary>
    ///     é”€å”®å•位
    /// </summary>
    [SugarColumn(ColumnName = "SALES_UNIT_ID")]
    public string? SalesUnitId { get; set; }
    /// <summary>
    ///     é”€å”®æ•°é‡
    /// </summary>
    [SugarColumn(ColumnName = "SALES_QUANTITY")]
    public decimal? SalesQuantity { get; set; }
    /// <summary>
    ///     æ˜¯å¦èµ å“
    /// </summary>
    [SugarColumn(ColumnName = "IS_FREE")]
    public bool? IsFree { get; set; }
    /// <summary>
    ///     é€€è´§æ—¥æœŸ
    /// </summary>
    [SugarColumn(ColumnName = "RETURN_DATE")]
    public DateTime? ReturnDate { get; set; }
    /// <summary>
    ///     ä»“库
    /// </summary>
    [SugarColumn(ColumnName = "WAREHOUSE")]
    public string? Warehouse { get; set; }
    /// <summary>
    ///     è®¡åˆ’跟踪号
    /// </summary>
    [SugarColumn(ColumnName = "PLAN_TRACKING_NUMBER")]
    public string? PlanTrackingNumber { get; set; }
    /// <summary>
    ///     æ‰¹å·
    /// </summary>
    [SugarColumn(ColumnName = "LOT_NUMBER")]
    public string? LotNumber { get; set; }
    /// <summary>
    ///     å¤‡æ³¨
    /// </summary>
    [SugarColumn(ColumnName = "NOTE")]
    public string? Note { get; set; }
    /// <summary>
    ///     é€€è´§ç±»åž‹
    /// </summary>
    [SugarColumn(ColumnName = "RETURN_TYPE")]
    public string? ReturnType { get; set; }
    /// <summary>
    ///     è·Ÿå•员
    /// </summary>
    [SugarColumn(ColumnName = "SALES_CLERK")]
    public string? SalesClerk { get; set; }
    /// <summary>
    ///     åº“存单位
    /// </summary>
    [SugarColumn(ColumnName = "INVENTORY_UNIT")]
    public string? InventoryUnit { get; set; }
    /// <summary>
    ///     åº“存数量
    /// </summary>
    [SugarColumn(ColumnName = "INVENTORY_QUANTITY")]
    public decimal? InventoryQuantity { get; set; }
    /// <summary>
    ///     ç‰©æ–™ç±»åˆ«
    /// </summary>
    [SugarColumn(ColumnName = "MATERIAL_CATEGORY")]
    public string? MaterialCategory { get; set; }
    /// <summary>
    ///     è´§ä¸»ç±»åž‹
    /// </summary>
    [SugarColumn(ColumnName = "OWNER_TYPE_ID")]
    public string? OwnerTypeId { get; set; }
    /// <summary>
    ///     è´§ä¸»
    /// </summary>
    [SugarColumn(ColumnName = "OWNER_ID")]
    public string? OwnerId { get; set; }
    /// <summary>
    ///     æºå•类型
    /// </summary>
    [SugarColumn(ColumnName = "SOURCE_BILL_TYPE")]
    public string? SourceBillType { get; set; }
    /// <summary>
    ///     æºå•单号
    /// </summary>
    [SugarColumn(ColumnName = "SOURCE_BILL_NO")]
    public string? SourceBillNo { get; set; }
    /// <summary>
    ///     è®¢å•单号
    /// </summary>
    [SugarColumn(ColumnName = "ORDER_BILL_NO")]
    public string? OrderBillNo { get; set; }
    /// <summary>
    ///     ERP行ID
    /// </summary>
    [SugarColumn(ColumnName = "ERP_LINE_ID")]
    public string? ErpLineId { get; set; }
    /// <summary>
    ///     ERP头ID
    /// </summary>
    [SugarColumn(ColumnName = "ERP_HEAD_ID")]
    public string? ErpHeadId { get; set; }
    /// <summary>
    ///     ç”³è¯·æ•°é‡
    /// </summary>
    [SugarColumn(ColumnName = "SQ_Qty")]
    public decimal? SqQty { get; set; }
    /// <summary>
    ///     å·²æ‰«æ•°é‡
    /// </summary>
    [SugarColumn(ColumnName = "YS_Qty")]
    public decimal? YsQty { get; set; }
    /// <summary>
    ///     é€è´§å•明细GUID
    /// </summary>
    [SugarColumn(ColumnName = "DELIVE_DETAIL_GUID")]
    public Guid? DeliverDetailGuid { get; set; }
    /// <summary>
    ///     åºå·
    /// </summary>
    [SugarColumn(ColumnName = "FSEQ")]
    public int? FSeq { get; set; }
}
service/Warehouse/MesXsthManager.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,129 @@
using Masuit.Tools;
using MES.Service.Modes;
using NewPdaSqlServer.DB;
using NewPdaSqlServer.Dto.service;
using NewPdaSqlServer.entity;
using NewPdaSqlServer.util;
using OracleInternal.Sharding;
using SqlSugar;
using SqlSugar.Extensions;
using System.Data;
using System.Data.SqlClient;
namespace NewPdaSqlServer.service.Warehouse;
public class MesXsthManager : Repository<MesItemBl>
{
    /// <summary>
    ///     èŽ·å–é”€å”®é€€è´§ç”³è¯·åˆ—è¡¨
    /// </summary>
    /// <returns>销售退货申请列表</returns>
    public List<string> GetXsthBillNo(WarehouseQuery query)
    {
        var list = Db.Queryable<SalesReturnNotice>()
            .Where(s => s.CheckStatus == true)
            .Select(s => s.BillNo).ToList();
        return list;
    }
    /// <summary>
    ///     æ ¹æ®å•号获取MES物料表明细
    /// </summary>
    /// <param name="query">仓库查询参数</param>
    /// <returns>物料明细列表</returns>
    public List<ItemDetailModel> GetMesItemDetailByBillNo(
        WarehouseQuery query)
    {
        // å…³è”查询物料表、物料明细表和物料基础信息表
        var mesItemTblDetails = Db
            .Queryable<SalesReturnNotice, SalesReturnNoticeDetail, MesItems>(
                (a, b, c) => new JoinQueryInfos(
                    JoinType.Left,
                    a.Id == b.Pid,
                    JoinType.Left,
                    b.MaterialId == c.Id.ToString())
            ).Where((a, b, c) => a.BillNo == query.billNo && a.CheckStatus == true)
            .Select<ItemDetailModel>((a, b, c) => new ItemDetailModel
            {
                ItemNo = c.ItemNo,
                ItemName = c.ItemName,
                ItemModel = c.ItemModel,
                FQty = b.SqQty, // ç”³è¯·æ•°é‡
                SQty = b.YsQty, // å·²æ‰«æ•°é‡
                Pid = b.Pid.ToString(),
                FMaterialId = b.MaterialId,
                Id = b.Id.ToString()
            }).ToList();
        // ç­›é€‰å‡ºå¾…退数量大于已退数量的记录
        //var itemTblDetails = mesItemTblDetails
        //    .Where(s => (s.Tld005 ?? 0) - (s.Tld006 ?? 0) > 0).ToList();
        return mesItemTblDetails;
    }
    /// <summary>
    /// é”€å”®é€€è´§å…¥åº“
    /// </summary>
    /// <param name="unity"></param>
    /// <returns></returns>
    /// <exception cref="Exception"></exception>
    public string XsthScanBarcode(WarehouseQuery unity)
    {
        var _strMsg = "";
        var _intSum = "";
        using (var conn = new SqlConnection(DbHelperSQL.strConn))
        {
            if (unity.userName.IsNullOrEmpty()) throw new Exception("用户名不允许为空");
            if (unity.sectionCode.IsNullOrEmpty()) throw new Exception("库位编号不允许为空");
            if (unity.barcode.IsNullOrEmpty()) throw new Exception("条码不允许为空");
            if (unity.billNo.IsNullOrEmpty()) throw new Exception("申请单号不允许为空");
            using (var cmd = new SqlCommand("[prc_pda_inv_xsth]", conn))
            {
                try
                {
                    conn.Open();
                    cmd.CommandType = CommandType.StoredProcedure;
                    SqlParameter[] parameters =
                    {
                        new("@po_outMsg", SqlDbType.NVarChar, 300),
                        new("@po_outSum", SqlDbType.NVarChar, 300),
                        //new("@po_womInBarSum", SqlDbType.NVarChar, 300),
                        new("@pi_user", unity.userName),
                        new("@pi_barcode", unity.barcode),
                        new("@pi_sectionCode", unity.sectionCode),
                        new("@pi_billno", unity.billNo),
                    };
                    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();
                    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();
                }
            }
        }
    }
}