南骏 池
2025-03-29 99b5d3d7c950a8332f81d3ca07be9f2d5957f58c
1.期初入库优化
已添加1个文件
已重命名1个文件
已修改2个文件
148 ■■■■ 文件已修改
Controllers/base/WmsBaseController.cs 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/Warehouse/InventoryManager.cs 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/Warehouse/MesBarCFManager.cs 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/base/WmsBaseMangeer.cs 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Controllers/base/WmsBaseController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
using System.Dynamic;
using Microsoft.AspNetCore.Mvc;
using NewPdaSqlServer.Dto.service;
using NewPdaSqlServer.service.@base;
using NewPdaSqlServer.service.Warehouse;
using NewPdaSqlServer.util;
namespace NewPdaSqlServer.Controllers.@base;
[ApiController]
[Route("api/[controller]")]
public class WmsBaseController : ControllerBase
{
    private readonly WmsBaseMangeer m = new();
    /// <summary>
    ///     èŽ·å–æ¡ç ä¿¡æ¯å’Œç‰©æ–™ä¿¡æ¯
    /// </summary>
    /// <returns></returns>
    [HttpPost("GetBarInfo")]
    public ResponseResult GetBarInfo(WarehouseQuery unity)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList = m.GetBarInfo(unity);
            resultInfos.tbMesItems = m.GetItemNo(resultInfos.tbBillList.ItemId);
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
}
service/Warehouse/InventoryManager.cs
@@ -1,6 +1,7 @@
using NewPdaSqlServer.DB;
using NewPdaSqlServer.Dto.service;
using NewPdaSqlServer.entity;
using NewPdaSqlServer.service.@base;
using NewPdaSqlServer.util;
using SqlSugar;
@@ -47,8 +48,8 @@
        var p_transction_no = 601;
        // æ£€æŸ¥åº“位代码是否为空
        if (string.IsNullOrEmpty(p_section_code))
            throw new Exception("002[请扫库位条码!");
        // if (string.IsNullOrEmpty(p_section_code))
        //     throw new Exception("002[请扫库位条码!");
        // æŸ¥è¯¢åº“区库位信息
        var depotSection = Db.Queryable<MesDepotSections, MesDepots>((a, b) =>
@@ -61,36 +62,52 @@
            .Single();
        // å¦‚果库位代码不存在,则返回错误信息
        if (depotSection == null)
            throw new Exception("库位编码 " + p_section_code + " ä¸å­˜åœ¨ï¼Œè¯·ç¡®è®¤ï¼");
        // if (depotSection == null)
        //     throw new Exception("库位编码 " + p_section_code + " ä¸å­˜åœ¨ï¼Œè¯·ç¡®è®¤ï¼");
        // æ£€æŸ¥æ˜¯å¦å·²ç»æ”¶è´§
        var c_num = Db.Queryable<MesInvItemIns, MesInvItemInCDetails>((a, b) =>
                new JoinQueryInfos(
                    JoinType.Inner, a.Guid == b.ItemInId
                ))
            .Where((a, b) => b.ItemBarcode == p_item_barcode)
            .Count();
        // var c_num = Db.Queryable<MesInvItemIns, MesInvItemInCDetails>((a, b) =>
        //         new JoinQueryInfos(
        //             JoinType.Inner, a.Guid == b.ItemInId
        //         ))
        //     .Where((a, b) => b.ItemBarcode == p_item_barcode)
        //     .Count();
        if (c_num > 0) throw new Exception("002[条码重复扫描,请核对!");
        // if (c_num > 0) throw new Exception("002[条码重复扫描,请核对!");
        // æŸ¥è¯¢æ¡ç ä¿¡æ¯
        c_num = Db.Queryable<MesInvItemStocks>()
            .Where(t => t.ItemBarcode == p_item_barcode)
            .Count();
        // c_num = Db.Queryable<MesInvItemStocks>()
        //     .Where(t => t.ItemBarcode == p_item_barcode)
        //     .Count();
        if (c_num > 0) throw new Exception("002[条码已在库存中,请核对!");
        // if (c_num > 0) throw new Exception("002[条码已在库存中,请核对!");
        // æŸ¥è¯¢æ¡ç è¯¦ç»†ä¿¡æ¯
        var c_mes_inv_item_barcodes = Db.Queryable<MesInvItemBarcodes>()
            .Where(t => t.ItemBarcode == p_item_barcode)
            .Single();
        if (c_mes_inv_item_barcodes == null)
            throw new Exception("002[条码不存在,请核对!");
        // if (c_mes_inv_item_barcodes == null)
        //     throw new Exception("002[条码不存在,请核对!");
        if (c_mes_inv_item_barcodes.ComeFlg != 0)
        if (c_mes_inv_item_barcodes.Memo != "期初")
            throw new Exception("002[条码不是期初条码,无法用期初入库!");
        var wmsManager = new WmsBaseMangeer();
        // æ–°å¢žå…¥åº“校验(调用存储过程)
        var checkResult = wmsManager.pdaInvJY(
            db: Db,
            edtUserNo: query.userName,
            barcode: p_item_barcode,
            sectionCode: p_section_code,
            stockId: depotSection.DepotId.ToString(),
            stockOrgId: depotSection.FSubsidiary,
            billNo: "", // æ ¹æ®å®žé™…单据号传值
            transactionNo: "601" // äº‹åŠ¡ç±»åž‹ä¸Žå­˜å‚¨è¿‡ç¨‹åŒ¹é…
        );
        if (checkResult.result < "1")
            throw new Exception($"入库校验失败:{checkResult.strMsg}");
        UseTransaction(db =>
        {
@@ -135,6 +152,7 @@
                    CbillNo = c_mes_inv_item_barcodes.BillNo,
                    Fstatus = 0,
                    ReceiveOrgId = depotSection.FSubsidiary,
                    InType = "期初入库",
                };
                db.Insertable(newMesInvItemIns)
                    .IgnoreColumns(true)
service/Warehouse/MesBarCFManager.cs
@@ -1,6 +1,7 @@
using System.Data;
using System.Data.SqlClient;
using Masuit.Tools;
using Masuit.Tools.Hardware;
using NewPdaSqlServer.DB;
using NewPdaSqlServer.Dto.service;
using NewPdaSqlServer.entity;
@@ -13,16 +14,22 @@
{
    public MesInvItemStocks GetBarInfo(WarehouseQuery unity)
    {
        return Db.Queryable<MesInvItemStocks>()
        var barInfo =  Db.Queryable<MesInvItemStocks>()
            .Where(s => s.ItemBarcode == unity.barcode)
            .First(); // è¿”回第一行数据,如果没有则返回 null
            .First();
        if (barInfo is null) throw new Exception("该条码库存不存在!");
        return barInfo; // è¿”回第一行数据,如果没有则返回 null
    }
    public MesItems GetItemNo(decimal strItemId)
    {
        return Db.Queryable<MesItems>()
            .Where(s => s.Id == strItemId)
        var itemInfo = Db.Queryable<MesItems>()
            .Where(s => s.Id == strItemId && s.Fforbidstatus == "A")
            .First();
        if (itemInfo is null) throw new Exception("该条码对应物料信息不存在或已禁用!");
        return itemInfo;
    }
    public string BarCF(WarehouseQuery unity)
service/base/WmsBaseMangeer.cs
ÎļþÃû´Ó service/base/PdaJyMangeer.cs ÐÞ¸Ä
@@ -1,4 +1,4 @@
namespace NewPdaSqlServer.util
namespace NewPdaSqlServer.service.@base
{
    using NewPdaSqlServer.Dto.service;
    using NewPdaSqlServer.entity;
@@ -9,9 +9,10 @@
    using NewPdaSqlServer.DB;
    using System.Data;
    using System.Data.SqlClient;
    using Microsoft.EntityFrameworkCore.Metadata.Internal;
    public class PdaJyMangeer
    public class WmsBaseMangeer : Repository<dynamic>
    {
        /// <summary>
@@ -26,7 +27,7 @@
        /// <param name="billNo">申请单号</param>
        /// <param name="transactionNo">事务类型</param>
        /// <returns>包含校验结果的数据传输对象</returns>
        public ProductionPickDto SalesReturnCheck(SqlSugarScope db, string edtUserNo,
        public dynamic pdaInvJY(SqlSugarScope db, string edtUserNo,
            string barcode, string sectionCode, string stockId, string stockOrgId,
            string billNo, string transactionNo)
        {
@@ -80,5 +81,37 @@
                }
            }
        }
        /// <summary>
        /// èŽ·å–æ¡ç ä¿¡æ¯
        /// </summary>
        /// <param name="unity"></param>
        /// <returns></returns>
        /// <exception cref="Exception"></exception>
        public MesInvItemBarcodes GetBarInfo(WarehouseQuery unity)
        {
            var barInfo = Db.Queryable<MesInvItemBarcodes>()
                .Where(s => s.ItemBarcode == unity.barcode)
                .First();
            if (barInfo is null) throw new Exception("该条码库存不存在!");
            return barInfo; // è¿”回第一行数据,如果没有则返回 null
        }
        /// <summary>
        /// èŽ·å–ç‰©æ–™ä¿¡æ¯
        /// </summary>
        /// <param name="strItemId"></param>
        /// <returns></returns>
        /// <exception cref="Exception"></exception>
        public MesItems GetItemNo(decimal strItemId)
        {
            var itemInfo = Db.Queryable<MesItems>()
                .Where(s => s.Id == strItemId && s.Fforbidstatus == "A")
                .First();
            if (itemInfo is null) throw new Exception("该条码对应物料信息不存在或已禁用!");
            return itemInfo;
        }
    }
}