11
啊鑫
2025-01-08 7e4085b2b97386abb8b7dc5626953dc79b1f1b45
11
已添加4个文件
已修改9个文件
680 ■■■■ 文件已修改
Controllers/Warehouse/MesCgthSqController.cs 234 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Controllers/Warehouse/MesItemBlController.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Controllers/Warehouse/TransferOutController.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Dto/service/OutItemDto.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
entity/MesCgthSq.cs 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
entity/MesCgthSqDetail.cs 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
entity/MesInvItemArn.cs 补丁 | 查看 | 原始文档 | blame | 历史
entity/MesInvItemIns.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/Warehouse/MesCgthSqManager.cs 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/Warehouse/MesInvItemInCDetailsManager.cs 补丁 | 查看 | 原始文档 | blame | 历史
service/Warehouse/MesInvItemOutsManager.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/Warehouse/MesItemTblManager.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/Warehouse/TransferOutManager.cs 45 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Controllers/Warehouse/MesCgthSqController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,234 @@
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 MesCgthSqController : ControllerBase
{
    private readonly MesCgthSqManager m = new();
    /// <summary>
    ///     èŽ·å–æ‰€æœ‰å·²ç»å®¡æ ¸çš„ç”³è¯·å•
    /// </summary>
    /// <returns></returns>
    [HttpPost("GetMesCgthSq")]
    public ResponseResult GetMesCgthSq()
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList = m.GetMesCgthSq();
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    /// <summary>
    ///     èŽ·å–æ‰€æœ‰å·²ç»å®¡æ ¸çš„ç”³è¯·å•
    /// </summary>
    /// <returns></returns>
    [HttpPost("GetSumItem")]
    public ResponseResult GetSumItem(WarehouseQuery query)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList = m.GetSumItem(query);
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    //ScanCode
    /// <summary>
    ///     èŽ·å–æ‰€æœ‰å·²ç»å®¡æ ¸çš„ç”³è¯·å•
    /// </summary>
    /// <returns></returns>
    [HttpPost("ScanCode")]
    public ResponseResult ScanCode(WarehouseQuery query)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList = m.ScanCode(query);
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    /// <summary>
    ///     èŽ·å–æ‰€æœ‰
    /// </summary>
    /// <returns></returns>
    [HttpPost("GetList")]
    public ResponseResult GetList()
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList = m.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 = m.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 = m.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] MesCgthSq data)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList = m.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] MesCgthSq data)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList = m.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] MesCgthSq data)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList = m.Update(data);
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
}
Controllers/Warehouse/MesItemBlController.cs
@@ -169,7 +169,6 @@
    /// <returns>拆分结果和待处理列表</returns>
    /// <remarks>
    /// è¯·æ±‚示例:
    ///
    ///     POST /api/MesItemBl/SplitBarcode
    ///     {
    ///         "billNo": "WO202401010001",  // å·¥å•号(必填)
@@ -178,14 +177,12 @@
    ///         "blNo": "BL202401010001",    // è¡¥æ–™å•号(必填)
    ///         "Num": 10                    // æ‹†åˆ†æ•°é‡(必填,必须大于0)
    ///     }
    ///
    /// ä¸šåŠ¡å¤„ç†ï¼š
    /// - éªŒè¯è¡¥æ–™å•状态
    /// - éªŒè¯æ¡ç åº“存信息
    /// - éªŒè¯æ‹†åˆ†æ•°é‡æ˜¯å¦åˆç†
    /// - æ‰§è¡Œæ¡ç æ‹†åˆ†äº‹åŠ¡å¤„ç†
    /// - æ›´æ–°å·¥å•和补料单相关数量
    ///
    /// è¿”回数据包含:
    /// - success: æ‹†åˆ†æ˜¯å¦æˆåŠŸ
    /// - pendingList: å¾…处理明细列表,包含:
Controllers/Warehouse/TransferOutController.cs
@@ -81,12 +81,10 @@
    /// <returns>待处理的调拨出库明细列表</returns>
    /// <remarks>
    /// è¯·æ±‚示例:
    ///
    ///     POST /api/TransferOut/GetTransferOutDetailListByBillNo
    ///     {
    ///         "billNo": "DB202401010001"  // è°ƒæ‹¨å•号(必填)
    ///     }
    ///
    /// è¿”回未完成的明细记录(ShNum-YsNum>0),包含:
    /// - ItemNo: ç‰©æ–™ç¼–号
    /// - ItemModel: ç‰©æ–™è§„æ ¼
@@ -96,12 +94,14 @@
    /// <response code="200">成功获取调拨出库明细</response>
    /// <response code="400">获取失败,返回具体错误信息</response>
    [HttpPost("GetTransferOutDetailListByBillNo")]
    public ResponseResult GetTransferOutDetailListByBillNo([FromBody] WarehouseQuery query)
    public ResponseResult GetTransferOutDetailListByBillNo(
        [FromBody] WarehouseQuery query)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList = _manager.GetTransferOutDetailListByBillNo(query);
            resultInfos.tbBillList =
                _manager.GetTransferOutDetailListByBillNo(query);
            return new ResponseResult
            {
                status = 0,
@@ -122,21 +122,18 @@
    /// <returns>处理结果和待处理明细</returns>
    /// <remarks>
    /// è¯·æ±‚示例:
    ///
    ///     POST /api/TransferOut/ScanMoveBarcode
    ///     {
    ///         "billNo": "DB202401010001",  // è°ƒæ‹¨å•号(必填)
    ///         "userName": "admin",          // ç”¨æˆ·å(必填)
    ///         "barcode": "BC001"           // æ¡ç å·(必填)
    ///     }
    ///
    /// ä¸šåŠ¡å¤„ç†ï¼š
    /// - éªŒè¯è°ƒæ‹¨å•状态
    /// - éªŒè¯æ¡ç åº“存信息
    /// - éªŒè¯ä»“库一致性
    /// - éªŒè¯æ•°é‡æ˜¯å¦è¶…出未扫数量
    /// - æ‰§è¡Œè°ƒæ‹¨å‡ºåº“事务处理
    ///
    /// è¿”回数据包含:
    /// - form: å¤„理结果表单
    /// - items: å¾…处理明细列表
Dto/service/OutItemDto.cs
@@ -12,5 +12,5 @@
    public decimal? Quantity { get; set; }
    public List<MesInvItemOutItems>? SumItem { get; set; }
    public List<MesCgthSqDetail>? SumItem { get; set; }
}
entity/MesCgthSq.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,113 @@
using SqlSugar;
namespace NewPdaSqlServer.entity;
/// <summary>
///     é‡‡è´­é€€è´§ç”³è¯·
/// </summary>
[SugarTable("MES_CGTH_SQ")]
public class MesCgthSq
{
    /// <summary>
    /// </summary>
    [SugarColumn(ColumnName = "ID")]
    public Guid Id { get; set; }
    /// <summary>
    ///     å•据编码
    /// </summary>
    [SugarColumn(ColumnName = "BILL_NO")]
    public string BillNo { get; set; }
    /// <summary>
    ///     åˆ›å»ºäºº
    /// </summary>
    [SugarColumn(ColumnName = "CREATE_BY")]
    public string CreateBy { get; set; }
    /// <summary>
    ///     åˆ›å»ºæ—¶é—´
    /// </summary>
    [SugarColumn(ColumnName = "CREATE_DATE")]
    public DateTime? CreateDate { get; set; }
    /// <summary>
    ///     æœ€åŽè·Ÿæ–°äºº
    /// </summary>
    [SugarColumn(ColumnName = "LAST_UPDATE_USER")]
    public string LastUpdateUser { get; set; }
    /// <summary>
    ///     æœ€åŽä¿®æ”¹æ—¶é—´
    /// </summary>
    [SugarColumn(ColumnName = "LAST_UPDATE_TIME")]
    public DateTime? LastUpdateTime { get; set; }
    /// <summary>
    ///     å®¡æ ¸äºº
    /// </summary>
    [SugarColumn(ColumnName = "CHECK_USER")]
    public string CheckUser { get; set; }
    /// <summary>
    ///     å®¡æ ¸æ—¶é—´
    /// </summary>
    [SugarColumn(ColumnName = "CHECK_DATE")]
    public DateTime? CheckDate { get; set; }
    /// <summary>
    ///     å®¡æ ¸çŠ¶æ€
    ///     é»˜è®¤å€¼: ((0))
    /// </summary>
    [SugarColumn(ColumnName = "STATUS")]
    public bool? Status { get; set; }
    /// <summary>
    ///     æ˜¯å¦å®Œæˆ
    ///     é»˜è®¤å€¼: ((0))
    /// </summary>
    [SugarColumn(ColumnName = "IS_FINISH")]
    public bool? IsFinish { get; set; }
    /// <summary>
    ///     é€€æ–™æ–¹å¼
    /// </summary>
    [SugarColumn(ColumnName = "RETURN_METHOD")]
    public string ReturnMethod { get; set; }
    /// <summary>
    ///     é€€æ–™ç±»åž‹
    /// </summary>
    [SugarColumn(ColumnName = "RETURN_TYPE")]
    public string ReturnType { get; set; }
    /// <summary>
    ///     ä»“库id
    /// </summary>
    [SugarColumn(ColumnName = "DEPOT_ID")]
    public int? DepotId { get; set; }
    /// <summary>
    ///     ä¾›åº”商id
    /// </summary>
    [SugarColumn(ColumnName = "SUPP_ID")]
    public int? SuppId { get; set; }
    /// <summary>
    ///     å¤‡æ³¨
    /// </summary>
    [SugarColumn(ColumnName = "REMARK")]
    public string Remark { get; set; }
    /// <summary>
    ///     å§”外标识
    /// </summary>
    [SugarColumn(ColumnName = "IS_OUT")]
    public bool? IsOut { get; set; }
    /// <summary>
    ///     é€€è´§ç»„织ID
    /// </summary>
    [SugarColumn(ColumnName = "TH_ORG_ID")]
    public string ThOrgId { get; set; }
}
entity/MesCgthSqDetail.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,97 @@
using SqlSugar;
namespace NewPdaSqlServer.entity;
/// <summary>
///     é‡‡è´­é€€è´§ç”³è¯·æ˜Žç»†
/// </summary>
[SugarTable("MES_CGTH_SQ_DETAIL")]
public class MesCgthSqDetail
{
    /// <summary>
    /// </summary>
    [SugarColumn(ColumnName = "ID", IsPrimaryKey = true)]
    public Guid Id { get; set; }
    /// <summary>
    /// </summary>
    [SugarColumn(ColumnName = "MID")]
    public Guid? Mid { get; set; }
    /// <summary>
    ///     å…¥åº“单号
    /// </summary>
    [SugarColumn(ColumnName = "INV_BILL_NO")]
    public string InvBillNo { get; set; }
    /// <summary>
    ///     å…¥åº“单行号
    /// </summary>
    [SugarColumn(ColumnName = "INV_WORK_LINE")]
    public int? InvWorkLine { get; set; }
    /// <summary>
    ///     é‡‡è´­è®¢å•
    /// </summary>
    [SugarColumn(ColumnName = "EBELN")]
    public string Ebeln { get; set; }
    /// <summary>
    ///     é‡‡è´­è®¢å•id
    /// </summary>
    [SugarColumn(ColumnName = "EID")]
    public int? Eid { get; set; }
    /// <summary>
    ///     é‡‡è´­è®¢å•行id
    /// </summary>
    [SugarColumn(ColumnName = "ERPID")]
    public int? Erpid { get; set; }
    /// <summary>
    ///     ç‰©æ–™id
    /// </summary>
    [SugarColumn(ColumnName = "ITEM_ID")]
    public int? ItemId { get; set; }
    /// <summary>
    ///     ç”³è¯·æ•°é‡
    /// </summary>
    [SugarColumn(ColumnName = "SQ_NUM")]
    public decimal? SqNum { get; set; }
    /// <summary>
    ///     å·²æ‰«æ•°é‡
    /// </summary>
    [SugarColumn(ColumnName = "YS_NUM")]
    public decimal? YsNum { get; set; }
    /// <summary>
    ///     å¤‡æ³¨
    /// </summary>
    [SugarColumn(ColumnName = "REMARK")]
    public string Remark { get; set; }
    /// <summary>
    ///     æ˜¯å¦å®Œæˆ
    /// </summary>
    [SugarColumn(ColumnName = "IS_FINISH")]
    public bool? IsFinish { get; set; }
    /// <summary>
    ///     åºå·
    /// </summary>
    [SugarColumn(ColumnName = "ORDER_NO")]
    public int? OrderNo { get; set; }
    /// <summary>
    ///     å…¥åº“明细的guid
    /// </summary>
    [SugarColumn(ColumnName = "RKMX_GUID")]
    public Guid? RkmxGuid { get; set; }
    [SugarColumn(IsIgnore = true)] public string? ItemName { get; set; }
    [SugarColumn(IsIgnore = true)] public string? ItemModel { get; set; }
    [SugarColumn(IsIgnore = true)] public string? ItemNo { get; set; }
}
entity/MesInvItemArn.cs
entity/MesInvItemIns.cs
@@ -101,61 +101,51 @@
    public string? CheckUser { get; set; }
    /// <summary>
    ///
    ///</summary>
    [SugarColumn(ColumnName = "CHECK_DATE")]
    public DateTime? CheckDate { get; set; }
    /// <summary>
    ///
    ///</summary>
    [SugarColumn(ColumnName = "TASK_NO")]
    public string? TaskNo { get; set; }
    /// <summary>
    ///
    ///</summary>
    [SugarColumn(ColumnName = "INS_DATE")]
    public DateTime? InsDate { get; set; }
    /// <summary>
    ///
    ///</summary>
    [SugarColumn(ColumnName = "CHECK_RES")]
    public string? CheckRes { get; set; }
    /// <summary>
    ///
    ///</summary>
    [SugarColumn(ColumnName = "CHECK_QTY")]
    public long? CheckQty { get; set; }
    /// <summary>
    ///
    ///</summary>
    [SugarColumn(ColumnName = "MMLIST")]
    public string? Mmlist { get; set; }
    /// <summary>
    ///
    ///</summary>
    [SugarColumn(ColumnName = "EBELN")]
    public string? Ebeln { get; set; }
    /// <summary>
    ///
    ///</summary>
    [SugarColumn(ColumnName = "DEPOTS_CODE")]
    public string? DepotsCode { get; set; }
    /// <summary>
    ///
    ///</summary>
    [SugarColumn(ColumnName = "TRANSCTION_NO")]
    public string? TransctionNo { get; set; }
    /// <summary>
    ///
    ///</summary>
    [SugarColumn(ColumnName = "SUPP_NO")]
    public string? SuppNo { get; set; }
@@ -168,70 +158,59 @@
    public byte? Fstatus { get; set; }
    /// <summary>
    ///
    ///</summary>
    [SugarColumn(ColumnName = "FACTORY")]
    public string? Factory { get; set; }
    /// <summary>
    ///
    /// é»˜è®¤å€¼: ((0))
    ///</summary>
    [SugarColumn(ColumnName = "SAPSTATUS")]
    public byte? Sapstatus { get; set; }
    /// <summary>
    ///
    ///</summary>
    [SugarColumn(ColumnName = "SAPNO")]
    public string? Sapno { get; set; }
    /// <summary>
    ///
    ///</summary>
    [SugarColumn(ColumnName = "SAPYEAR")]
    public short? Sapyear { get; set; }
    /// <summary>
    ///
    ///</summary>
    [SugarColumn(ColumnName = "SAPTEXT")]
    public string? Saptext { get; set; }
    /// <summary>
    ///
    ///</summary>
    [SugarColumn(ColumnName = "ISCHECK")]
    public byte? Ischeck { get; set; }
    /// <summary>
    ///
    ///</summary>
    [SugarColumn(ColumnName = "INSBY")]
    public string? Insby { get; set; }
    /// <summary>
    ///
    /// é»˜è®¤å€¼: ((0))
    ///</summary>
    [SugarColumn(ColumnName = "IS_VISUAL")]
    public byte? IsVisual { get; set; }
    /// <summary>
    ///
    ///</summary>
    [SugarColumn(ColumnName = "COMPANY")]
    public string? Company { get; set; }
    /// <summary>
    ///
    /// é»˜è®¤å€¼: ((0))
    ///</summary>
    [SugarColumn(ColumnName = "URGENT_FLAG")]
    public byte? UrgentFlag { get; set; }
    /// <summary>
    ///
    ///</summary>
    [SugarColumn(ColumnName = "LINE_NO")]
    public string? LineNo { get; set; }
@@ -316,7 +295,6 @@
    public string? Bgr { get; set; }
    /// <summary>
    ///
    ///</summary>
    [SugarColumn(ColumnName = "SUPP_ID")]
    public string? SuppId { get; set; }
service/Warehouse/MesCgthSqManager.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,145 @@
using System.Data;
using System.Data.SqlClient;
using Masuit.Tools;
using NewPdaSqlServer.DB;
using NewPdaSqlServer.Dto.service;
using NewPdaSqlServer.entity;
using SqlSugar;
namespace NewPdaSqlServer.service.Warehouse;
public class MesCgthSqManager : Repository<MesCgthSq>
{
    public List<MesCgthSq> GetMesCgthSq()
    {
        return Db.Queryable<MesCgthSq>()
            .Where(s => s.Status == true)
            .ToList();
    }
    public OutItemDto GetSumItem(WarehouseQuery query)
    {
        var mesInvItemOuts = base.GetSingle(it => it.BillNo == query.billNo);
        if (mesInvItemOuts == null) throw new Exception("采购退货申请单不存在");
        var dto = new OutItemDto();
        dto.SumItem = GetItems(query);
        var mesInvItemStocks = Db.Queryable<MesInvItemStocks>()
            .Where(a => a.ItemBarcode == query.barcode).Single();
        if (mesInvItemStocks == null) return dto;
        var mesItems = Db.Queryable<MesItems>()
            .Where(s => s.Id == mesInvItemStocks.ItemId).Single();
        dto.ItemNo = mesItems.ItemNo;
        dto.Quantity = mesInvItemStocks.Quantity;
        return dto;
    }
    public List<MesCgthSqDetail> GetItems(WarehouseQuery query)
    {
        // å°è¯•å°†query.id转换为Guid类型,如果转换失败,则抛出异常
        var parsedGuid = Guid.Empty;
        if (string.IsNullOrEmpty(query.id))
            return new List<MesCgthSqDetail>(); // å¦‚æžœquery.id为空,则返回空列表
        var isValid = Guid.TryParse(query.id, out parsedGuid);
        if (!isValid)
            throw new ApplicationException("GUID转换错误"); // å¦‚果转换失败,则抛出异常
        // ä½¿ç”¨SqlSugar框架查询MesInvItemOutItems和MesItems表,根据ItemId进行内连接
        var mesInvItemOutItemsList = Db.Queryable<MesCgthSqDetail, MesItems>(
                (c, s) => new object[]
                {
                    JoinType.Inner, c.ItemId == s.Id // å†…连接条件
                }).Where((c, s) => c.Mid == parsedGuid) // æ ¹æ®ItemOutId过滤
            .Select<MesCgthSqDetail>((c, s) =>
                new MesCgthSqDetail // é€‰æ‹©å¹¶æ˜ å°„到MesInvItemOutItems对象
                {
                    Id = c.Id,
                    Mid = c.Mid,
                    InvBillNo = c.InvBillNo,
                    InvWorkLine = c.InvWorkLine,
                    Ebeln = c.Ebeln,
                    Eid = c.Eid,
                    Erpid = c.Erpid,
                    SqNum = c.SqNum,
                    YsNum = c.YsNum,
                    RkmxGuid = c.RkmxGuid,
                    Remark = c.Remark,
                    ItemNo = s.ItemNo, // ä»ŽMesItems表中获取ItemNo
                    ItemName = s.ItemName, // ä»ŽMesItems表中获取ItemName
                    ItemModel = s.ItemModel, // ä»ŽMesItems表中获取ItemModel
                    ItemId = c.ItemId,
                }).ToList(); // å°†æŸ¥è¯¢ç»“果转换为列表
        return mesInvItemOutItemsList; // è¿”回处理后的列表
    }
    public ProductionPickDto ScanCode(WarehouseQuery query)
    {
        var _strMsg = "";
        var _intSum = "";
        using (var conn = new SqlConnection(DbHelperSQL.strConn))
        {
            if (query.userName.IsNullOrEmpty()) throw new Exception("用户名不允许为空");
            if (query.billNo.IsNullOrEmpty()) throw new Exception("领料单号不允许为空");
            if (query.barcode.IsNullOrEmpty()) throw new Exception("条码不允许为空");
            using (var cmd = new SqlCommand("[prc_pda_CGTH]", conn))
            {
                try
                {
                    conn.Open();
                    cmd.CommandType = CommandType.StoredProcedure;
                    SqlParameter[] parameters =
                    {
                        new("@outMsg", SqlDbType.NVarChar, 300),
                        new("@outSum", SqlDbType.NVarChar, 300),
                        new("@barcode_num", SqlDbType.NVarChar, 300),
                        new("@split_num", SqlDbType.NVarChar, 300),
                        new("@c_User", query.userName),
                        new("@p_biLL_no", query.billNo),
                        new("@p_item_barcode", query.barcode)
                    };
                    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();
                    var barcodeNum = parameters[2].Value.ToString();
                    var splitNum = parameters[3].Value.ToString();
                    var result = Convert.ToInt32(_intSum);
                    if (result <= 0) throw new Exception(_strMsg);
                    var dto = new ProductionPickDto
                    {
                        daa001 = query.daa001,
                        barcodeNum = barcodeNum,
                        splitNum = splitNum,
                        barcode = query.barcode
                    };
                    return dto;
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }
                finally
                {
                    conn.Close();
                }
            }
        }
    }
}
service/Warehouse/MesInvItemInCDetailsManager.cs
service/Warehouse/MesInvItemOutsManager.cs
@@ -405,7 +405,7 @@
        var dto = new OutItemDto();
        dto.SumItem = GetItems(query);
        //dto.SumItem = GetItems(query);
        var mesInvItemStocks = Db.Queryable<MesInvItemStocks>()
            .Where(a => a.ItemBarcode == query.barcode).Single();
service/Warehouse/MesItemTblManager.cs
@@ -446,7 +446,8 @@
            // æ£€æŸ¥å¿…要的插入操作是否都成功执行
            var minimumExpectedOperations = 3; // è‡³å°‘需要执行的插入操作数
            if (totalResult < minimumExpectedOperations) 
                throw new Exception($"关键数据插入失败,预期至少{minimumExpectedOperations}个操作,实际执行{totalResult}个操作");
                throw new Exception(
                    $"关键数据插入失败,预期至少{minimumExpectedOperations}个操作,实际执行{totalResult}个操作");
            return totalResult;
        });
@@ -812,7 +813,8 @@
            // æ£€æŸ¥å¿…要的插入操作是否都成功执行
            var minimumExpectedOperations = 3; // è‡³å°‘需要执行的插入操作数
            if (totalResult < minimumExpectedOperations) 
                throw new Exception($"关键数据插入失败,预期至少{minimumExpectedOperations}个操作,实际执行{totalResult}个操作");
                throw new Exception(
                    $"关键数据插入失败,预期至少{minimumExpectedOperations}个操作,实际执行{totalResult}个操作");
            return totalResult;
        });
service/Warehouse/TransferOutManager.cs
@@ -98,19 +98,13 @@
        var p_transaction_no = 301;    // äº¤æ˜“编号
        // éªŒè¯å•据号
        if (string.IsNullOrEmpty(p_bill_no))
        {
            throw new Exception("请选取单据号!");
        }
        if (string.IsNullOrEmpty(p_bill_no)) throw new Exception("请选取单据号!");
        // æŸ¥è¯¢å‡ºåº“单并验证状态
        var transferOut = Db.Queryable<TransferOut>()
            .Where(x => x.BillNo == p_bill_no && x.Status == 1)
            .First();
        if (transferOut == null)
        {
            throw new Exception("未找到调拨申请单或者调拨申请单没审核");
        }
        if (transferOut == null) throw new Exception("未找到调拨申请单或者调拨申请单没审核");
        // æŸ¥è¯¢æ¡ç åº“存信息并验证
        var stock = Db.Queryable<MesInvItemStocks>()
@@ -118,41 +112,28 @@
                        && x.Quantity > 0
                        && !string.IsNullOrEmpty(x.DepotsCode))
            .First();
        if (stock == null)
        {
            throw new Exception($"库存中无此条码,请核对!{p_item_barcode}");
        }
        if (stock == null) throw new Exception($"库存中无此条码,请核对!{p_item_barcode}");
        // éªŒè¯ä»“库一致性
        if (stock.DepotsCode != transferOut.InvCode)
        {
            throw new Exception(
                $"条码库存仓库{stock.DepotsCode}和申请仓库不一致{transferOut.InvCode}");
        }
        // æŸ¥è¯¢ç‰©æ–™ä¿¡æ¯
        var item = Db.Queryable<MesItems>()
            .Where(x => x.Id == stock.ItemId)
            .First();
        if (item == null)
        {
            throw new Exception("未找到物料");
        }
        if (item == null) throw new Exception("未找到物料");
        // æŸ¥è¯¢è°ƒæ‹¨æ˜Žç»†å¹¶éªŒè¯
        var detail = Db.Queryable<TransferOutDetail>()
            .Where(x => x.ItemId == stock.ItemId && x.Pid == transferOut.Guid)
            .First();
        if (detail == null)
        {
            throw new Exception("未找到条码物料相应的调拨申请");
        }
        if (detail == null) throw new Exception("未找到条码物料相应的调拨申请");
        // éªŒè¯æ•°é‡æ˜¯å¦è¶…出未扫数量
        if ((detail.ShNum ?? 0) - (detail.YsNum ?? 0) < stock.Quantity)
        {
            throw new Exception("条码数量大于申请未扫数量,请拆分了再扫码");
        }
        
        // ä½¿ç”¨äº‹åŠ¡å¤„ç†æ•°æ®æ›´æ–°
        UseTransaction(db =>
@@ -241,7 +222,7 @@
                SuppNo = stock.SuppNo,
                ItemId = stock.ItemId,
                EbelnK3id = stock.EbelnK3id,
                LineK3id = stock.LineK3id,
                LineK3id = stock.LineK3id
                // RkDepot = transferOut.RkDepot,
                // CkDepot = transferOut.CkDepot
            };
@@ -284,7 +265,7 @@
                SuppNo = stock.SuppNo,
                ItemId = (int)stock.ItemId,
                EbelnK3id = stock.EbelnK3id,
                LineK3id = stock.LineK3id,
                LineK3id = stock.LineK3id
                // RkDepot = transferOut.RkDepot,
                // CkDepot = transferOut.CkDepot
            };
@@ -321,7 +302,7 @@
                    WorkLine = stock.WorkLine,
                    EbelnK3id = (int)stock.EbelnK3id,
                    LineK3id = (int)stock.LineK3id,
                    Quantity = stock.Quantity,
                    Quantity = stock.Quantity
                    // Unit = stock.ItemUnit
                };
@@ -347,7 +328,8 @@
            var totals = db.Queryable<TransferOutDetail, TransferOut>((b, a) => 
                new JoinQueryInfos(JoinType.Left, b.Pid == a.Guid))
                .Where((b, a) => a.BillNo == p_bill_no)
                .Select((b, a) => new {
                .Select((b, a) => new
                {
                    ShNum = SqlFunc.AggregateSum(b.ShNum),  // ç”³è¯·æ€»æ•°é‡
                    YsNum = SqlFunc.AggregateSum(b.YsNum)   // å·²æ‰«æ€»æ•°é‡
                })
@@ -355,22 +337,17 @@
            // å¦‚果申请数量等于已扫数量,更新单据完成状态
            if (totals.ShNum == totals.YsNum)
            {
                commit += db.Updateable<TransferOut>()
                    .SetColumns(x => x.IsWc == 1)
                    .Where(x => x.BillNo == p_bill_no)
                    .ExecuteCommand();
            }
            
            // æ›´æ–°è¿”回参数
            query.itemNo = item.ItemNo;
            query.Num = stock.Quantity;
            
            // éªŒè¯æ›´æ–°æ“ä½œæ˜¯å¦å…¨éƒ¨æˆåŠŸ
            if (commit < 4)
            {
                throw new Exception("更新失败");
            }
            if (commit < 4) throw new Exception("更新失败");
            return commit;
        });