啊鑫
2024-08-15 6c264956274c7f71121ef3d0080bc934ce884ae1
调拨出库确认
已修改15个文件
298 ■■■■ 文件已修改
MES.Service/Dto/service/WarehouseQuery.cs 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Modes/MesInvBusiness2.cs 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Modes/MesInvItemArn.cs 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Modes/MesInvItemBarcodes.cs 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Modes/MesInvItemInCItems.cs 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Modes/MesInvItemMoves.cs 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Modes/MesInvItemMovesCDetails.cs 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Modes/MesInvItemStocks.cs 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Modes/MesQaItemsDetect01.cs 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Modes/MesQaItemsDetectDetail5.cs 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Modes/Purdhb.cs 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Modes/Purdka.cs 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/service/Warehouse/MesInvItemMovesManager.cs 190 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/util/CollectionUtil.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
MESApplication/Controllers/Warehouse/MesInvItemMovesController.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Dto/service/WarehouseQuery.cs
MES.Service/Modes/MesInvBusiness2.cs
MES.Service/Modes/MesInvItemArn.cs
MES.Service/Modes/MesInvItemBarcodes.cs
MES.Service/Modes/MesInvItemInCItems.cs
MES.Service/Modes/MesInvItemMoves.cs
MES.Service/Modes/MesInvItemMovesCDetails.cs
@@ -11,7 +11,8 @@
 /// <summary>
 ///     seq_inv_id
 /// </summary>
 [SugarColumn(ColumnName = "ID", IsPrimaryKey = true)]
    [SugarColumn(ColumnName = "ID", OracleSequenceName = "SEQ_INV_ID",
        IsPrimaryKey = true)]
    public decimal Id { get; set; }
 /// <summary>
@@ -23,25 +24,25 @@
 ///     物料条码
 /// </summary>
 [SugarColumn(ColumnName = "ITEM_BARCODE")]
    public string ItemBarcode { get; set; }
    public string? ItemBarcode { get; set; }
 /// <summary>
 ///     客户物料编码(无条码手工录入,有条码为冗余字段)
 /// </summary>
 [SugarColumn(ColumnName = "C_ITEM_CODE")]
    public string CItemCode { get; set; }
    public string? CItemCode { get; set; }
 /// <summary>
 ///     信华物料编码(无条码手工录入,有条码为冗余字段)
 /// </summary>
 [SugarColumn(ColumnName = "ITEM_NO")]
    public string ItemNo { get; set; }
    public string? ItemNo { get; set; }
 /// <summary>
 ///     厂家批次
 /// </summary>
 [SugarColumn(ColumnName = "LOT_NO")]
    public string LotNo { get; set; }
    public string? LotNo { get; set; }
 /// <summary>
 ///     数量(无条码手工录入,有条码为冗余字段)
@@ -65,7 +66,7 @@
 ///     创建人
 /// </summary>
 [SugarColumn(ColumnName = "CREATE_BY")]
    public string CreateBy { get; set; }
    public string? CreateBy { get; set; }
 /// <summary>
 ///     创建时间
@@ -77,7 +78,7 @@
 ///     最后更新人
 /// </summary>
 [SugarColumn(ColumnName = "LASTUPDATE_BY")]
    public string LastupdateBy { get; set; }
    public string? LastupdateBy { get; set; }
 /// <summary>
 ///     最后更新时间
@@ -101,79 +102,79 @@
 ///     客户编码
 /// </summary>
 [SugarColumn(ColumnName = "CUST_NO")]
    public string CustNo { get; set; }
    public string? CustNo { get; set; }
 /// <summary>
 ///     任务令号
 /// </summary>
 [SugarColumn(ColumnName = "TASK_NO")]
    public string TaskNo { get; set; }
    public string? TaskNo { get; set; }
 /// <summary>
 ///     移出仓库编号
 /// </summary>
 [SugarColumn(ColumnName = "FROM_DEPOTS_CODE")]
    public string FromDepotsCode { get; set; }
    public string? FromDepotsCode { get; set; }
 /// <summary>
 ///     移出库位编号
 /// </summary>
 [SugarColumn(ColumnName = "FROM_DEPOT_SECTIONS_CODE")]
    public string FromDepotSectionsCode { get; set; }
    public string? FromDepotSectionsCode { get; set; }
 /// <summary>
 ///     条码备注
 /// </summary>
 [SugarColumn(ColumnName = "REMARK")]
    public string Remark { get; set; }
    public string? Remark { get; set; }
 /// <summary>
 ///     分厂编码
 /// </summary>
 [SugarColumn(ColumnName = "FACTORY")]
    public string Factory { get; set; }
    public string? Factory { get; set; }
 /// <summary>
 ///     公司代码
 /// </summary>
 [SugarColumn(ColumnName = "COMPANY")]
    public string Company { get; set; }
    public string? Company { get; set; }
 /// <summary>
 ///     箱号
 /// </summary>
 [SugarColumn(ColumnName = "BOX_NO")]
    public string BoxNo { get; set; }
    public string? BoxNo { get; set; }
 /// <summary>
 ///     卡板号
 /// </summary>
 [SugarColumn(ColumnName = "KO_NO")]
    public string KoNo { get; set; }
    public string? KoNo { get; set; }
 /// <summary>
 ///     移入仓库编号
 /// </summary>
 [SugarColumn(ColumnName = "INV_DEPOTS_CODE")]
    public string InvDepotsCode { get; set; }
    public string? InvDepotsCode { get; set; }
 /// <summary>
 ///     移入库位编号
 /// </summary>
 [SugarColumn(ColumnName = "INV_DEPOT_SECTIONS_CODE")]
    public string InvDepotSectionsCode { get; set; }
    public string? InvDepotSectionsCode { get; set; }
 /// <summary>
 ///     质检结果
 /// </summary>
 [SugarColumn(ColumnName = "IQC_STATUS")]
    public string IqcStatus { get; set; }
    public string? IqcStatus { get; set; }
 /// <summary>
 ///     小车编号
 /// </summary>
 [SugarColumn(ColumnName = "FCAR")]
    public string Fcar { get; set; }
    public string? Fcar { get; set; }
 /// <summary>
 ///     入库日期
@@ -191,7 +192,7 @@
 ///     提交重检人
 /// </summary>
 [SugarColumn(ColumnName = "VISABLE_SUBMIT_BY")]
    public string VisableSubmitBy { get; set; }
    public string? VisableSubmitBy { get; set; }
 /// <summary>
 ///     提交重检时间
@@ -203,13 +204,13 @@
 ///     产品型号
 /// </summary>
 [SugarColumn(ColumnName = "BOARD_STYLE")]
    public string BoardStyle { get; set; }
    public string? BoardStyle { get; set; }
 /// <summary>
 ///     任务单号
 /// </summary>
 [SugarColumn(ColumnName = "WORK_NO")]
    public string WorkNo { get; set; }
    public string? WorkNo { get; set; }
 /// <summary>
 ///     任务单行号
@@ -221,7 +222,7 @@
 ///     供应商编号
 /// </summary>
 [SugarColumn(ColumnName = "SUPP_NO")]
    public string SuppNo { get; set; }
    public string? SuppNo { get; set; }
 /// <summary>
 ///     调入
MES.Service/Modes/MesInvItemStocks.cs
@@ -19,25 +19,25 @@
    ///     生产订单
    /// </summary>
    [SugarColumn(ColumnName = "TASK_NO")]
    public string TaskNo { get; set; }
    public string? TaskNo { get; set; }
    /// <summary>
    ///     物料条码
    /// </summary>
    [SugarColumn(ColumnName = "ITEM_BARCODE")]
    public string ItemBarcode { get; set; }
    public string? ItemBarcode { get; set; }
    /// <summary>
    ///     客户物料编码(无条码手工录入,有条码为冗余字段)
    /// </summary>
    [SugarColumn(ColumnName = "C_ITEM_CODE")]
    public string CItemCode { get; set; }
    public string? CItemCode { get; set; }
    /// <summary>
    ///     本司物料编码(无条码手工录入,有条码为冗余字段)
    /// </summary>
    [SugarColumn(ColumnName = "ITEM_NO")]
    public string ItemNo { get; set; }
    public string? ItemNo { get; set; }
    /// <summary>
    ///     子库id
@@ -55,7 +55,7 @@
    ///     厂家批次
    /// </summary>
    [SugarColumn(ColumnName = "LOT_NO")]
    public string LotNo { get; set; }
    public string? LotNo { get; set; }
    /// <summary>
    ///     数量
@@ -73,7 +73,7 @@
    ///     客户编码
    /// </summary>
    [SugarColumn(ColumnName = "CUSTOMER_NO")]
    public string CustomerNo { get; set; }
    public string? CustomerNo { get; set; }
    /// <summary>
    ///     重量
@@ -85,13 +85,13 @@
    ///     子库CODE
    /// </summary>
    [SugarColumn(ColumnName = "DEPOTS_CODE")]
    public string DepotsCode { get; set; }
    public string? DepotsCode { get; set; }
    /// <summary>
    ///     货位CODE
    /// </summary>
    [SugarColumn(ColumnName = "DEPOT_SECTIONS_CODE")]
    public string DepotSectionsCode { get; set; }
    public string? DepotSectionsCode { get; set; }
    /// <summary>
    ///     检验日期
@@ -115,25 +115,25 @@
    ///     工厂编号
    /// </summary>
    [SugarColumn(ColumnName = "FACTORY")]
    public string Factory { get; set; }
    public string? Factory { get; set; }
    /// <summary>
    ///     公司编号
    /// </summary>
    [SugarColumn(ColumnName = "COMPANY")]
    public string Company { get; set; }
    public string? Company { get; set; }
    /// <summary>
    ///     质检状态
    /// </summary>
    [SugarColumn(ColumnName = "IQC_STATUS")]
    public string IqcStatus { get; set; }
    public string? IqcStatus { get; set; }
    /// <summary>
    ///     小车条码
    /// </summary>
    [SugarColumn(ColumnName = "FCAR")]
    public string Fcar { get; set; }
    public string? Fcar { get; set; }
    /// <summary>
    ///     冻结提交重检,0:冻结未提交重检,1:冻结并提交重检
@@ -145,7 +145,7 @@
    ///     提交重检人
    /// </summary>
    [SugarColumn(ColumnName = "VISABLE_SUBMIT_BY")]
    public string VisableSubmitBy { get; set; }
    public string? VisableSubmitBy { get; set; }
    /// <summary>
    ///     提交重检时间
@@ -157,13 +157,13 @@
    ///     产品型号
    /// </summary>
    [SugarColumn(ColumnName = "BOARD_STYLE")]
    public string BoardStyle { get; set; }
    public string? BoardStyle { get; set; }
    /// <summary>
    ///     任务单号
    /// </summary>
    [SugarColumn(ColumnName = "WORK_NO")]
    public string WorkNo { get; set; }
    public string? WorkNo { get; set; }
    /// <summary>
    ///     任务单行号
@@ -175,19 +175,19 @@
    ///     供应商
    /// </summary>
    [SugarColumn(ColumnName = "SUPP_NO")]
    public string SuppNo { get; set; }
    public string? SuppNo { get; set; }
    /// <summary>
    ///     生产线
    /// </summary>
    [SugarColumn(ColumnName = "LINE_NO")]
    public string LineNo { get; set; }
    public string? LineNo { get; set; }
    /// <summary>
    ///     半成品入库单号
    /// </summary>
    [SugarColumn(ColumnName = "BILL_NO")]
    public string BillNo { get; set; }
    public string? BillNo { get; set; }
    /// <summary>
    ///     采购订单id
MES.Service/Modes/MesQaItemsDetect01.cs
MES.Service/Modes/MesQaItemsDetectDetail5.cs
MES.Service/Modes/Purdhb.cs
MES.Service/Modes/Purdka.cs
MES.Service/service/Warehouse/MesInvItemMovesManager.cs
@@ -1,6 +1,7 @@
using MES.Service.DB;
using MES.Service.Dto.service;
using MES.Service.Modes;
using MES.Service.util;
using SqlSugar;
namespace MES.Service.service.Warehouse;
@@ -25,6 +26,193 @@
            .OrderBy(it => it.Id, OrderByType.Desc).ToList();
    }
    public OutItemDto ScanMoveBarcode(WarehouseQuery query)
    {
        var BillTypeId = 300;
        var TransctionNo = 301;
        query.Factory = "1000";
        query.Company = "1000";
        if (string.IsNullOrEmpty(query.billNo)) throw new Exception("请选单据号!");
        var mesInvItemStocks = Db.Queryable<MesInvItemStocks>()
            .Where(s => s.ItemBarcode == query.barcode &&
                        s.Quantity > 0 && s.DepotsCode != null).First();
        if (mesInvItemStocks == null)
            throw new Exception("库存中无此条码,请核对!" + query.barcode);
        var mesInvItemMoves = Db.Queryable<MesInvItemMoves>()
            .Where(d => d.TransactionNo == TransctionNo
                        && SqlFunc.IsNull(d.Status, 0) == 1).First();
        if (mesInvItemMoves == null)
            throw new Exception("出库单 " + query.billNo + "不存在,请确认!");
        var count = Db.Queryable<MesInvItemMoves, MesInvItemMovesCDetails>(
                (a, b) =>
                    new JoinQueryInfos(JoinType.Inner, a.Id == b.ItemMoveId))
            .Where((a, b) => b.ItemBarcode == query.barcode
                             && a.TransactionNo == TransctionNo &&
                             SqlFunc.IsNull(a.Status, 0) == 0).Count();
        if (count > 0) throw new Exception("条码重复扫描,请核对!");
        count = Db.Queryable<MesInvItemMoves, MesInvItemMovesCDetails>((a, b) =>
                new JoinQueryInfos(JoinType.Inner, a.Id == b.ItemMoveId))
            .Where((a, b) => b.ItemBarcode == query.barcode
                             && a.TransactionNo == TransctionNo &&
                             SqlFunc.IsNull(b.MoveOk, 0) == 0).Count();
        if (count > 0) throw new Exception("条码重复扫描,请核对!");
        if (mesInvItemMoves.FromDepotsCode != mesInvItemStocks.DepotsCode)
            throw new Exception("条码现存仓库与申请出货仓库不一致,请核对!");
        var quantity = Db.Queryable<MesInvItemOutItems>()
            .Where(b => b.ItemNo == mesInvItemStocks.ItemNo
                        && b.ItemOutId == mesInvItemMoves.Id)
            .Sum(b => b.Quantity);
        if (quantity == null)
            throw new Exception("扫码物料非本次申请物料,请核对!" + query.barcode);
        var sum = Db.Queryable<MesInvItemMovesCDetails>()
            .Where(b => b.ItemNo == mesInvItemStocks.ItemNo
                        && b.ItemMoveId == mesInvItemMoves.Id)
            .Sum(b => b.Quantity) ?? 0;
        var sumqty = sum + (mesInvItemStocks.Quantity ?? 0);
        if (sumqty > quantity)
            throw new Exception(
                "已扫条码数量或本次扫码数量:" + sumqty + " 大于申请数量:" + quantity + ",请核对!");
        List<InventoryItem> scanOutShowDb = null;
        UseTransaction(db =>
        {
            SaveMesInvItemMovesCDetails(db, query, mesInvItemMoves,
                mesInvItemStocks);
            // Insert into mes_inv_business2
            SaveMesInvBusiness2(db, query, BillTypeId, TransctionNo,
                mesInvItemStocks, mesInvItemMoves);
            if (TransctionNo == 303)
                db.Updateable<MesInvItemStocks>()
                    .SetColumns(s =>
                        s.DepotSectionsCode == mesInvItemMoves.InvDepotsCode)
                    .SetColumns(s =>
                        s.DepotsCode == mesInvItemMoves.InvDepotsCode)
                    .Where(s => s.Id == mesInvItemStocks.Id)
                    .ExecuteCommand();
            else
                db.Updateable<MesInvItemStocks>()
                    .SetColumns(s => s.DepotSectionsCode == null)
                    .SetColumns(s => s.DepotsCode == null)
                    .Where(s => s.Id == mesInvItemStocks.Id)
                    .ExecuteCommand();
            scanOutShowDb = ScanOutShowDb(query);
            if (CollectionUtil.IsNullOrEmpty(scanOutShowDb))
                db.Updateable<MesInvItemMoves>()
                    .SetColumns(s => s.Status == 1)
                    .SetColumns(s => s.Checkdate == DateTime.Now)
                    .SetColumns(s => s.Checkuser == query.userName)
                    .Where(s => s.BillNo == query.billNo).ExecuteCommand();
            return 1;
        });
        var itemDto = new OutItemDto();
        itemDto.SumItem = scanOutShowDb;
        if (TransctionNo == 201) itemDto.Quantity = mesInvItemStocks.Quantity;
        itemDto.ItemNo = mesInvItemStocks.ItemNo;
        return itemDto;
    }
    private void SaveMesInvBusiness2(SqlSugarScope Db, WarehouseQuery query,
        int BillTypeId,
        int TransctionNo, MesInvItemStocks mesInvItemStocks,
        MesInvItemMoves mesInvItemMoves)
    {
        var executeCommand = Db.Insertable(new MesInvBusiness2
        {
            Status = 1,
            BillTypeId = BillTypeId,
            TransactionCode = TransctionNo.ToString(),
            BusinessType = 1,
            ItemBarcode = query.barcode,
            ItemNo = mesInvItemStocks.ItemNo,
            LotNo = mesInvItemStocks.LotNo,
            EpFlag = 1,
            Quantity = mesInvItemStocks.Quantity,
            FromInvDepotsCode = mesInvItemStocks.DepotsCode,
            FromInvDepotSectionsCode = mesInvItemStocks.DepotSectionsCode,
            ToInvDepotsCode = TransctionNo == 303
                ? mesInvItemMoves.InvDepotsCode
                : null,
            ToInvDepotSectionsCode = TransctionNo == 303
                ? mesInvItemMoves.InvDepotsCode
                : null,
            CreateBy = query.userName,
            CreateDate = DateTime.Now,
            LastupdateBy = query.userName,
            LastupdateDate = DateTime.Now,
            Factory = query.Factory,
            Company = query.Company,
            TaskNo = mesInvItemStocks.TaskNo,
            BillNo = query.billNo,
            WorkNo = mesInvItemStocks.WorkNo,
            WorkLine = mesInvItemStocks.WorkLine,
            SuppNo = mesInvItemStocks.SuppNo
        }).ExecuteCommand();
        if (executeCommand <= 0) throw new Exception("写入MesInvBusiness2表失败");
    }
    private void SaveMesInvItemMovesCDetails(SqlSugarScope Db,
        WarehouseQuery query,
        MesInvItemMoves mesInvItemMoves, MesInvItemStocks mesInvItemStocks)
    {
        var executeCommand = Db.Insertable(new MesInvItemMovesCDetails
        {
            ItemMoveId = mesInvItemMoves.Id,
            ItemBarcode = query.barcode,
            CItemCode = mesInvItemStocks.CItemCode,
            ItemNo = mesInvItemStocks.ItemNo,
            LotNo = mesInvItemStocks.LotNo,
            Quantity = mesInvItemStocks.Quantity,
            EpFlag = mesInvItemStocks.EpFlag,
            CreateBy = query.userName,
            CreateDate = DateTime.Now,
            LastupdateBy = query.userName,
            LastupdateDate = DateTime.Now,
            CustNo = mesInvItemStocks.CustomerNo,
            TaskNo = mesInvItemStocks.TaskNo,
            FromDepotsCode = mesInvItemStocks.DepotsCode,
            FromDepotSectionsCode = mesInvItemStocks.DepotSectionsCode,
            Factory = mesInvItemStocks.Factory,
            Company = mesInvItemStocks.Company,
            IqcStatus = mesInvItemStocks.IqcStatus,
            Fcar = mesInvItemStocks.Fcar,
            IndepDate = mesInvItemStocks.IndepDate,
            VisableSubmit = mesInvItemStocks.VisableSubmit,
            VisableSubmitBy = mesInvItemStocks.VisableSubmitBy,
            VisableSubmitDate = mesInvItemStocks.VisableSubmitDate,
            BoardStyle = mesInvItemStocks.BoardStyle,
            WorkNo = mesInvItemStocks.WorkNo,
            WorkLine = mesInvItemStocks.WorkLine,
            SuppNo = mesInvItemStocks.SuppNo
        }).ExecuteCommand();
        if (executeCommand <= 0)
            throw new Exception("写入MesInvItemMovesCDetails表失败");
    }
    //scan_out_show_DB
    public List<InventoryItem> ScanOutShowDb(WarehouseQuery query)
    {
@@ -33,6 +221,8 @@
        query.Factory = "1000";
        query.Company = "1000";
        if (string.IsNullOrEmpty(query.billNo)) throw new Exception("请选单据号!");
        var sql = string.Format(
            "select f_get_sections_code({0}, {1}, b.item_no)                       sections_code , s.erp_item_no , S.ITEM_MODEL , to_char(nvl(b.quantity, 0) - nvl(quantity_ok, 0), 'FM9999999990.00') flist from mes_inv_item_moves a join mes_inv_item_out_items b on b.item_out_id = a.id join mes_items s on b.item_no = s.item_no left join (select ITEM_MOVE_ID, item_no, sum(quantity) quantity_ok             from MES_INV_ITEM_MOVES_C_DETAILS group by ITEM_MOVE_ID, item_no) c                    on c.ITEM_MOVE_ID = a.id and b.item_no = c.item_no where 1 = 1 and a.bill_type_id = {2} and a.transaction_no = {3} and a.bill_no = {4} and nvl(b.quantity, 0) - nvl(quantity_ok, 0) > 0   and rownum < 500   AND A.STATUS = 1 order by f_get_sections_code({0}, {1}, b.item_no), s.erp_item_no ",
            query.Factory, query.Company, BillTypeId, TransctionNo,
MES.Service/util/CollectionUtil.cs
@@ -8,7 +8,7 @@
     */
    public static bool IsNullOrEmpty<T>(List<T> list)
    {
        return list == null || !list.Any();
        return list == null || list.Count == 0;
    }
    /**
MESApplication/Controllers/Warehouse/MesInvItemMovesController.cs
@@ -13,6 +13,27 @@
{
    private readonly MesInvItemMovesManager m = new();
    //ScanMoveBarcode
    [HttpPost("ScanMoveBarcode")]
    public ResponseResult ScanMoveBarcode(WarehouseQuery query)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList = m.ScanMoveBarcode(query);
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    // GetBillNo
    [HttpPost("GetBillNo")]
    public ResponseResult GetBillNo(WarehouseQuery query)