啊鑫
2024-12-25 e9ef6afe836784d7fbd3e3ca6ad813e86866a6a8
生成补料和生成超领
已修改5个文件
315 ■■■■■ 文件已修改
Controllers/Warehouse/MesItemBlController.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Controllers/Wom/MesWorkProdController.cs 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Dto/service/WarehouseQuery.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/Warehouse/MesItemBlManager.cs 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/Warehouse/MesItemTblManager.cs 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Controllers/Warehouse/MesItemBlController.cs
@@ -371,5 +371,29 @@
        }
    }
    [HttpPost("PrintBarcodeForOverPicking")]
    public ResponseResult PrintForOverPicking(WarehouseQuery query)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            var (success, pendingList) =
                _manager.PrintBarcodeForOverPicking(query);
            resultInfos.success = success;
            resultInfos.pendingList = pendingList;
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    #endregion
}
Controllers/Wom/MesWorkProdController.cs
@@ -1,31 +1,34 @@
using System.Dynamic;
using Microsoft.AspNetCore.Mvc;
using NewPdaSqlServer.Dto.service;
using NewPdaSqlServer.entity;
using NewPdaSqlServer.service.Wom;
using NewPdaSqlServer.util;
namespace NewPdaSqlServer.Controllers.Wom;
[ApiController]
/// <summary>
/// 生产报工相关接口
/// </summary>
[Route("api/[controller]")]
[ApiController]
public class MesWorkProdController : ControllerBase
{
    private readonly MesWorkProdManager m = new();
    private readonly MesWorkProdManager _manager = new();
    /***进入模版管理可以修改模版***/
    #region 基础CRUD
    /// <summary>
    ///     获取所有
    /// 获取所有
    /// </summary>
    /// <returns></returns>
    /// <returns>报工单列表</returns>
    [HttpPost("GetList")]
    public ResponseResult GetList()
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList = m.GetList();
            resultInfos.tbBillList = _manager.GetList();
            return new ResponseResult
            {
                status = 0,
@@ -39,18 +42,17 @@
        }
    }
    /// <summary>
    ///     根据主键获取
    /// 根据主键获取
    /// </summary>
    /// <returns></returns>
    /// <returns>报工单信息</returns>
    [HttpPost("GetById")]
    public ResponseResult GetById(int id)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList = m.GetById(id);
            resultInfos.tbBillList = _manager.GetById(id);
            return new ResponseResult
            {
                status = 0,
@@ -65,16 +67,16 @@
    }
    /// <summary>
    ///     根据主键删除
    /// 根据主键删除
    /// </summary>
    /// <returns></returns>
    /// <returns>删除结果</returns>
    [HttpPost("DeleteByIds")]
    public ResponseResult DeleteByIds([FromBody] object[] ids)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList = m.DeleteByIds(ids);
            resultInfos.tbBillList = _manager.DeleteByIds(ids);
            return new ResponseResult
            {
                status = 0,
@@ -89,16 +91,16 @@
    }
    /// <summary>
    ///     添加
    /// 添加
    /// </summary>
    /// <returns></returns>
    /// <returns>添加结果</returns>
    [HttpPost("Insert")]
    public ResponseResult Add([FromBody] MesWorkProd data)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList = m.Insert(data);
            resultInfos.tbBillList = _manager.Insert(data);
            return new ResponseResult
            {
                status = 0,
@@ -113,40 +115,16 @@
    }
    /// <summary>
    ///     添加返回自增
    /// 修改
    /// </summary>
    /// <returns></returns>
    [HttpPost("InsertReturnIdentity")]
    public ResponseResult InsertReturnIdentity([FromBody] MesWorkProd 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>
    /// <returns>修改结果</returns>
    [HttpPost("Update")]
    public ResponseResult Update([FromBody] MesWorkProd data)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList = m.Update(data);
            resultInfos.tbBillList = _manager.Update(data);
            return new ResponseResult
            {
                status = 0,
@@ -159,4 +137,84 @@
            return ResponseResult.ResponseError(ex);
        }
    }
    #endregion
    #region 生产报工
    /// <summary>
    /// PDA扫描生产报工
    /// </summary>
    /// <param name="request">报工请求参数</param>
    /// <returns>报工结果</returns>
    /// <remarks>
    /// 请求示例:
    ///
    ///     POST /api/MesWorkProd/ScanWork
    ///     {
    ///         "staffNo": "ST001",
    ///         "itemBarcode": "BC001",
    ///         "userNo": "admin"
    ///     }
    /// </remarks>
    /// <response code="200">扫描成功</response>
    /// <response code="400">扫描失败,返回具体错误信息</response>
    [HttpPost("ScanWork")]
    public ResponseResult ScanWork([FromBody] ScanWorkRequest request)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.result = _manager.ScanWorkAsync(request);
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    /// <summary>
    /// PDA扫描生产报工(带数量)
    /// </summary>
    /// <param name="request">报工请求参数</param>
    /// <returns>报工结果</returns>
    /// <remarks>
    /// 请求示例:
    ///
    ///     POST /api/MesWorkProd/ScanWorkProd
    ///     {
    ///         "itemBarcode": "BC001",
    ///         "quantity": 10,
    ///         "userNo": "admin"
    ///     }
    /// </remarks>
    /// <response code="200">扫描成功</response>
    /// <response code="400">扫描失败,返回具体错误信息</response>
    [HttpPost("ScanWorkProd")]
    public ResponseResult ScanWorkProd([FromBody] ScanWorkRequest request)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.success = _manager.ScanWorkProdAsync(request);
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    #endregion
}
Dto/service/WarehouseQuery.cs
@@ -26,4 +26,7 @@
    public string? daa001 { get; set; }
    public decimal? Num { get; set; }
    public decimal? Fum { get; set; }
    public string? itemNo { get; set; }
}
service/Warehouse/MesItemBlManager.cs
@@ -30,8 +30,9 @@
    /// </summary>
    /// <param name="billNo">补料单号</param>
    /// <returns>补料单明细列表</returns>
    public List<MesItemBlDetail> GetMesItemBlDetailByBillNo(
        WarehouseQuery query)
    public (string bl001, List<MesItemBlDetail> item)
        GetMesItemBlDetailByBillNo(
            WarehouseQuery query)
    {
        if (string.IsNullOrEmpty(query.billNo))
            throw new Exception("请选单据号!");
@@ -63,7 +64,7 @@
            })
            .ToList();
        return blDetails;
        return (mesItemBl.Bl001, blDetails);
    }
    /// <summary>
@@ -78,11 +79,10 @@
    ///     - userName: 用户名
    ///     - blNo: 补料单号(必填)
    /// </remarks>
    public (bool success, List<PendingMaterialDto> pendingList) SctlScanBarcode(
        WarehouseQuery query)
    public (WarehouseQuery item, List<MesItemBlDetail> pendingList)
        SctlScanBarcode(
            WarehouseQuery query)
    {
        #region 参数校验
        if (string.IsNullOrEmpty(query.billNo))
            throw new Exception("请选取单据号!");
@@ -95,7 +95,6 @@
        if (string.IsNullOrEmpty(query.blNo))
            throw new Exception("补料单号不能为空!");
        #endregion
        // 检验是否重复扫描
        var exists = Db.Queryable<MesInvItemOutCDetails>()
@@ -164,17 +163,22 @@
                    new JoinQueryInfos(JoinType.Left, a.Id == b.Mid))
                .Where((a, b) => a.BlNo == query.blNo
                                 && (b.Bld007 ?? 0) - (b.Bld008 ?? 0) > 0)
                .Select((a, b) => new PendingMaterialDto
                .Select((a, b) => new MesItemBlDetail
                {
                    SectionCode = b.Bld012.ToString(),
                    ItemNo = b.Bld002,
                    ItemName = b.Bld003,
                    ItemSpec = b.Bld004,
                    PendingQty = (b.Bld007 ?? 0) - (b.Bld008 ?? 0)
                    Bld012 = b.Bld012,
                    Bld002 = b.Bld002,
                    Bld003 = b.Bld003,
                    Bld004 = b.Bld004,
                    Bld007 = b.Bld007,
                    Bld008 = b.Bld008
                })
                .ToList();
            return (false, pendingList);
            query.Num = stockBarcode.Quantity;
            query.Fum = quantity;
            return (query, pendingList);
        }
        // 开启事务处理
@@ -235,6 +239,7 @@
                .Count();
            if (itemCount > 0)
            {
                // 更新已存在的物料明细数量
                db.Updateable<MesInvItemOutItems>()
                    .SetColumns(i =>
@@ -242,7 +247,9 @@
                    .Where(i =>
                        i.ItemOutId == outId && i.ItemId == stockBarcode.ItemId)
                    .ExecuteCommand();
            }
            else
            {
                // 插入新的物料明细记录
                db.Insertable(new MesInvItemOutItems
                {
@@ -268,7 +275,8 @@
                    // Unit = blDetail.Bld009,
                    // DepotId = (int)stockBarcode.DepotsId
                }).IgnoreColumns(true).ExecuteCommand();
            }
            // 插入出库单条码明细
            db.Insertable(new MesInvItemOutCDetails
            {
@@ -400,17 +408,18 @@
                    new JoinQueryInfos(JoinType.Left, a.Id == b.Mid))
            .Where((a, b) => a.BlNo == query.blNo
                             && (b.Bld007 ?? 0) - (b.Bld008 ?? 0) > 0)
            .Select((a, b) => new PendingMaterialDto
            .Select((a, b) => new MesItemBlDetail
            {
                SectionCode = b.Bld012.ToString(),
                ItemNo = b.Bld002,
                ItemName = b.Bld003,
                ItemSpec = b.Bld004,
                PendingQty = (b.Bld007 ?? 0) - (b.Bld008 ?? 0)
                Bld012 = b.Bld012,
                Bld002 = b.Bld002,
                Bld003 = b.Bld003,
                Bld004 = b.Bld004,
                Bld007 = b.Bld007,
                Bld008 = b.Bld008
            })
            .ToList();
        return (true, finalPendingList);
        return (query, finalPendingList);
    }
    /// <summary>
@@ -426,11 +435,9 @@
    ///     - Num: 发料数量(必填,必须大于0)
    ///     - blNo: 补料单号(必填)
    /// </remarks>
    public (bool success, List<PendingMaterialDto> pendingList) SplitBarcode(
    public (bool success, List<MesItemBlDetail> pendingList) SplitBarcode(
        WarehouseQuery query)
    {
        #region 参数校验
        if (string.IsNullOrEmpty(query.userName))
            throw new Exception("用户名不能为空!");
@@ -446,7 +453,6 @@
        if (string.IsNullOrEmpty(query.blNo))
            throw new Exception("补料单号不能为空!");
        #endregion
        // 检验是否重复扫描
        var exists = Db.Queryable<MesInvItemOutCDetails>()
@@ -871,13 +877,14 @@
                new JoinQueryInfos(JoinType.Left, a.Id == b.Mid))
            .Where((a, b) => a.BlNo == query.blNo
                             && (b.Bld007 ?? 0) - (b.Bld008 ?? 0) > 0)
            .Select((a, b) => new PendingMaterialDto
            .Select((a, b) => new MesItemBlDetail
            {
                SectionCode = b.Bld012.ToString(),
                ItemNo = b.Bld002,
                ItemName = b.Bld003,
                ItemSpec = b.Bld004,
                PendingQty = (b.Bld007 ?? 0) - (b.Bld008 ?? 0)
                Bld012 = b.Bld012,
                Bld002 = b.Bld002,
                Bld003 = b.Bld003,
                Bld004 = b.Bld004,
                Bld007 = b.Bld007,
                Bld008 = b.Bld008
            })
            .ToList();
@@ -904,7 +911,7 @@
    /// </summary>
    /// <param name="query">查询参数</param>
    /// <returns>生产超领单明细列表</returns>
    public List<MesItemBlDetail> GetMesItemBlDetailBySccBillNo(
    public (string bl001,List<MesItemBlDetail> item) GetMesItemBlDetailBySccBillNo(
        WarehouseQuery query)
    {
        if (string.IsNullOrEmpty(query.billNo))
@@ -952,7 +959,7 @@
            })
            .ToList();
        return pendingDetails;
        return (mesItemBl.Bl001,pendingDetails);
    }
    /// <summary>
@@ -967,7 +974,7 @@
    ///     - userName: 用户名(必填)
    ///     - blNo: 超领单号(必填)
    /// </remarks>
    public (bool success, List<PendingMaterialDto> pendingList)
    public (WarehouseQuery item, List<MesItemBlDetail> pendingList)
        ScanBarcodeForOverPicking(
            WarehouseQuery query)
    {
@@ -1071,17 +1078,21 @@
                    new JoinQueryInfos(JoinType.Left, a.Id == b.Mid))
                .Where((a, b) => a.BlNo == query.blNo
                                 && (b.Bld007 ?? 0) - (b.Bld008 ?? 0) > 0)
                .Select((a, b) => new PendingMaterialDto
                .Select((a, b) => new MesItemBlDetail
                {
                    SectionCode = b.Bld012.ToString(),
                    ItemNo = b.Bld002,
                    ItemName = b.Bld003,
                    ItemSpec = b.Bld004,
                    PendingQty = (b.Bld007 ?? 0) - (b.Bld008 ?? 0)
                    Bld012 = b.Bld012,
                    Bld002 = b.Bld002,
                    Bld003 = b.Bld003,
                    Bld004 = b.Bld004,
                    Bld007 = b.Bld007,
                    Bld008 = b.Bld008
                })
                .ToList();
            return (false, pendingList);
            query.Num = stockBarcode.Quantity;
            query.Fum = quantity;
            return (query, pendingList);
        }
        // 执行数据库事务
@@ -1282,17 +1293,18 @@
                    new JoinQueryInfos(JoinType.Left, a.Id == b.Mid))
            .Where((a, b) => a.BlNo == query.blNo
                             && (b.Bld007 ?? 0) - (b.Bld008 ?? 0) > 0)
            .Select((a, b) => new PendingMaterialDto
            .Select((a, b) => new MesItemBlDetail
            {
                SectionCode = b.Bld012.ToString(),
                ItemNo = b.Bld002,
                ItemName = b.Bld003,
                ItemSpec = b.Bld004,
                PendingQty = (b.Bld007 ?? 0) - (b.Bld008 ?? 0)
                Bld012 = b.Bld012,
                Bld002 = b.Bld002,
                Bld003 = b.Bld003,
                Bld004 = b.Bld004,
                Bld007 = b.Bld007,
                Bld008 = b.Bld008
            })
            .ToList();
        return (true, finalPendingList);
        return (query, finalPendingList);
    }
    /// <summary>
@@ -1300,7 +1312,7 @@
    /// </summary>
    /// <param name="query">查询参数</param>
    /// <returns>处理结果</returns>
    public (bool success, List<PendingMaterialDto> pendingList)
    public (bool success, List<MesItemBlDetail> pendingList)
        PrintBarcodeForOverPicking(WarehouseQuery query)
    {
        UseTransaction(db =>
@@ -1687,13 +1699,14 @@
                new JoinQueryInfos(JoinType.Left, a.Id == b.Mid))
            .Where((a, b) => a.BlNo == query.blNo
                             && (b.Bld007 ?? 0) - (b.Bld008 ?? 0) > 0)
            .Select((a, b) => new PendingMaterialDto
            .Select((a, b) => new MesItemBlDetail
            {
                SectionCode = b.Bld012.ToString(),
                ItemNo = b.Bld002,
                ItemName = b.Bld003,
                ItemSpec = b.Bld004,
                PendingQty = (b.Bld007 ?? 0) - (b.Bld008 ?? 0)
                Bld012 = b.Bld012,
                Bld002 = b.Bld002,
                Bld003 = b.Bld003,
                Bld004 = b.Bld004,
                Bld007 = b.Bld007,
                Bld008 = b.Bld008
            })
            .ToList();
service/Warehouse/MesItemTblManager.cs
@@ -35,8 +35,8 @@
                BillNo = a.BillNo,
                Tlid = b.Tlid,
                Tlmid = b.Tlmid,
                Tld005 = b.Tld005,
                Tld006 = b.Tld006,
                Tld005 = b.Tld005 ?? 0,
                Tld006 = b.Tld006 ?? 0,
                Tld009 = b.Tld009,
                ItemNo = c.ItemNo,
                ItemName = c.ItemName,
@@ -70,7 +70,7 @@
        return warehouseQuery;
    }
    public bool SctlScanBarcode(WarehouseQuery query)
    public WarehouseQuery SctlScanBarcode(WarehouseQuery query)
    {
        var p_item_barcode = query.barcode;
        var p_bill_no = query.billNo;
@@ -406,10 +406,9 @@
            return totalResult;
        });
        // 设置返回结果
        // c_result = $"001[,{c_mes_inv_item_barcodes.ItemNo},{c_quantity},扫码成功!,参考库位@物料@待退数量{c_in_field_valT}";
        return true;
        query.itemNo = c_mes_inv_item_barcodes.ItemNo;
        query.Num = c_quantity.Value;
        return query;
    }
}