南骏 池
2025-08-31 850acf915061b9c40e486e35f88d2f24e013da22
1.销售退货优化——hyx
2.销售出库优化——hyx
3.库位查询——cdk
已修改2个文件
已添加2个文件
354 ■■■■ 文件已修改
Controllers/Warehouse/MesKwcxController.cs 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/Warehouse/MesKwcxManager.cs 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/Warehouse/MesXsckManager.cs 59 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/Warehouse/MesXsthManager.cs 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Controllers/Warehouse/MesKwcxController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,132 @@
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 MesKwcxController : BaseController
{
    private readonly MesKwcxManager m = new();
    /// <summary>
    ///     èŽ·å–æ¡ç ä¿¡æ¯å’Œç‰©æ–™ä¿¡æ¯
    /// </summary>
    /// <returns></returns>
    [HttpPost("GetBarInfoList")]
    public ResponseResult GetBarInfoList([FromBody] dynamic query)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBarInfoList = m.GetBarInfoList(query);
            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([FromBody] dynamic query)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBarInfo = m.GetBarInfo(query);
            if(resultInfos.tbBarInfo == null)
            {
                return new ResponseResult
                {
                    status = -1,
                    message = "此条码不存在!!!",
                    data = resultInfos
                };
            }
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    [HttpPost("GetKWList")]
    public ResponseResult GetKWList([FromBody] dynamic query)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbKWList = m.GetKWList(query);
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    [HttpPost("GetKWInfo")]
    public ResponseResult GetKWInfo([FromBody] dynamic query)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbKWInfo = m.GetKWInfo(query);
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    [HttpPost("GetItemInfoList")]
    public ResponseResult GetItemInfoList([FromBody] dynamic query)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbItemInfo = m.GetItemInfoList(query,RequestInfo);
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
}
service/Warehouse/MesKwcxManager.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,99 @@
using Masuit.Tools;
using NewPdaSqlServer.DB;
using NewPdaSqlServer.Dto.service;
using NewPdaSqlServer.entity;
using SqlSugar;
using System.Data;
using System.Data.SqlClient;
using System.Text;
using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
namespace NewPdaSqlServer.service.Warehouse;
public class MesKwcxManager : Repository<MesInvItemInCDetails>
{
    public dynamic GetBarInfoList(dynamic unity)
    {
        var sqlParams = new List<SugarParameter>
    {
        new("@deptSectionCode", unity.deptSectionCode),
        new("@rkDate", string.IsNullOrWhiteSpace(unity.rkDate?.ToString()) ? DBNull.Value : unity.rkDate),
        new("@zkChecked", unity.zkChecked?.ToString() == "True" ? 1 : unity.zkChecked?.ToString() == "False" ? 0 : DBNull.Value)
    };
        var sql2 = new StringBuilder("exec prc_pda_kwcx_barInfoList @deptSectionCode, @rkDate, @zkChecked");
        var list = Db.Ado.SqlQuery<dynamic>(sql2.ToString(), sqlParams);
        if (list.Count < 1)
        {
            throw new Exception("该条件下无对应库位信息!");
        }
        return list;
    }
    public dynamic GetBarInfo(dynamic unity)
    {
        var sqlParams = new List<SugarParameter> { };
        var sql2 = new StringBuilder(@"exec prc_pda_kwcx_barInfo @BARCODE");
        sqlParams.Add(new("@BARCODE", unity.barcode));
        var list = Db.Ado.SqlQuery<dynamic>(sql2.ToString(), sqlParams);
        if (list.Count < 1)
        {
            throw new Exception("该条件下无对应条码信息!");
        }
        return list[0];
    }
    public dynamic GetKWList(dynamic unity)
    {
        var sqlParams = new List<SugarParameter> { };
        var sql2 = new StringBuilder(@"
         select depot_code as code, depot_name as name from MES_DEPOTS");
        var XcslItem = Db.Ado.SqlQuery<dynamic>(sql2.ToString(), sqlParams);
        return XcslItem;
    }
    public dynamic GetKWInfo(dynamic unity)
    {
        var sqlParams = new List<SugarParameter>
    {
        new("@depot_code", unity.code)
    };
        var sql2 = new StringBuilder("exec prc_pda_kwcx_kwInfo @depot_code");
        var KWInfo = Db.Ado.SqlQuery<dynamic>(sql2.ToString(), sqlParams);
        return KWInfo;
    }
    public dynamic GetItemInfoList(dynamic unity,dynamic RequestInfo)
    {
        var sqlParams = new List<SugarParameter> { };
        var orgId = RequestInfo.OrgId;
        var sql2 = new StringBuilder(@"exec prc_pda_kwcx_itemInfo @barCode,@itemNo,@orgId");
        sqlParams.Add(new("@barCode", unity.barCode));
        sqlParams.Add(new("@itemNo", unity.itemNo));
        sqlParams.Add(new("@orgId", unity.orgId));
        var list = Db.Ado.SqlQuery<dynamic>(sql2.ToString(), sqlParams);
        if (list.Count < 1)
        {
            throw new Exception("该条件下无对应条码信息!");
        }
        return list;
    }
}
service/Warehouse/MesXsckManager.cs
@@ -33,44 +33,43 @@
    ///     æ ¹æ®å‘货通知单获取对应代发货明细  prc_rf_pda_scan_zout_showbl
    /// </summary>
    /// <returns>发货通知单明细列表</returns>
    public List<ItemDetailModel> GetMesItemFHTZetailByBillNo(
            WarehouseQuery query)
    public dynamic GetMesItemFHTZetailByBillNo(dynamic query)
    {
        if (string.IsNullOrEmpty(query.billNo))
            throw new Exception("请选单据号!");
        // æ£€æŸ¥å‘货通知单是否存在且审核
        var mesItem = Db.Queryable<SalesDeliver>()
            .Where(a => a.BillNo == query.billNo && a.FApproverStatus == true)
            .First();
        if (query == null)
            throw new ArgumentNullException(nameof(query), "参数对象不能为null");
        if (mesItem == null)
            throw new Exception("单据号不存在或未审核!");
        if (mesItem.FinishStatus == true)
            throw new Exception("单据号已完结!");
        if (string.IsNullOrEmpty(query.billNo?.ToString()))
            throw new ArgumentException("单据号不能为空", nameof(query.billNo));
        // èŽ·å–æœªå®Œæˆçš„å‘è´§é€šçŸ¥å•æ˜Žç»†
        var blDetails = Db.Queryable<SalesDeliver, SalesDeliverDetail, SalesOrderDetail,MesItems>((a, b, c, d) =>
                new JoinQueryInfos(JoinType.Left, a.Id == b.Pid,
                JoinType.Left, b.SalesDetailId == c.Id,
                JoinType.Left, c.MaterialId == d.ItemId.ToString()))
            .Where((a, b) => a.BillNo == query.billNo
                             && (b.FMustQty ?? 0) - (b.FRealQty ?? 0) > 0)
            .Select((a, b, c, d) => new ItemDetailModel
        var parameters = new[]
{
        new SugarParameter("@billNo", query.billNo),
        new SugarParameter("@inP1", null),
        new SugarParameter("@inP2", null),
        new SugarParameter("@inP3", null),
        new SugarParameter("@inP4", null)
    };
        try
        {
            List<dynamic>? blDetails = Db.Ado.SqlQuery<dynamic>(
                "EXEC Get_Mes_Item_FHTZetail_By_BillNo @billNo,@inP1,@inP2,@inP3,@inP4", parameters);
            var items = blDetails.Where(x => x.DSQty > 0).ToList();    // å¾…扫物料
            var ysitems = blDetails.Where(x => x.SQty > 0).ToList();   // å·²æ‰«ç‰©æ–™
            return new
            {
                ItemNo = d.ItemNo,
                ItemName = d.ItemName,
                ItemModel = d.ItemModel,
                FQty = b.FMustQty,
                SQty = b.FRealQty,
                FMaterialId = d.ItemId.ToString(),
                Id = b.Id.ToString()
            })
            .ToList();
        return  blDetails;
                items = items,
                ysitems = ysitems
            };
        }
        catch (Exception ex)
        {
            // ä¿ç•™åŽŸæœ‰å¼‚å¸¸å¤„ç†é€»è¾‘
            throw new Exception($"{ex.Message}");
        }
    }
    /// <summary>
service/Warehouse/MesXsthManager.cs
@@ -33,35 +33,45 @@
    /// </summary>
    /// <param name="query">仓库查询参数</param>
    /// <returns>物料明细列表</returns>
    public List<ItemDetailModel> GetMesItemDetailByBillNo(
        WarehouseQuery query)
    public dynamic GetMesItemDetailByBillNo(dynamic 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
        if (string.IsNullOrEmpty(query.billNo))
            throw new Exception("请选单据号!");
        if (query == null)
            throw new ArgumentNullException(nameof(query), "参数对象不能为null");
        if (string.IsNullOrEmpty(query.billNo?.ToString()))
            throw new ArgumentException("单据号不能为空", nameof(query.billNo));
        // èŽ·å–æœªå®Œæˆçš„é”€å”®é€€è´§æ˜Žç»†
        var parameters = new[]
{
        new SugarParameter("@billNo", query.billNo),
        new SugarParameter("@pi_orgId",null),
        new SugarParameter("@inP1", null),
        new SugarParameter("@inP2", null),
        new SugarParameter("@inP3", null),
        new SugarParameter("@inP4", null)
    };
        try
        {
            List<dynamic>? blDetails = Db.Ado.SqlQuery<dynamic>(
                "EXEC Get_Mes_Item_Detail_By_BillNo @billNo,@inP1,@inP2,@inP3,@inP4", parameters);
            var items = blDetails.Where(x => x.DSQty > 0).ToList();    // å¾…扫物料
            var ysitems = blDetails.Where(x => x.SQty > 0).ToList();   // å·²æ‰«ç‰©æ–™
            return new
            {
                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;
                items = items,
                ysitems = ysitems,
                Count = items.Count + ysitems.Count
            };
        }
        catch (Exception ex)
        {
            // ä¿ç•™åŽŸæœ‰å¼‚å¸¸å¤„ç†é€»è¾‘
            throw new Exception($"{ex.Message}");
        }
    }
    /// <summary>