MES.Service/service/QC/RKJService.cs
@@ -1,4 +1,5 @@
using MES.Service.DB;
using Masuit.Tools.Models;
using MES.Service.DB;
using MES.Service.Dto.service;
using MES.Service.Modes;
using MES.Service.util;
@@ -326,7 +327,7 @@
        if (!string.IsNullOrEmpty(qsItemOqcReq.FcheckResu))
        {
            throw new Exception("该检验单已" + qsItemOqcReq.FcheckResu + ",不运行修改结果");
            throw new Exception("该检验单已" + qsItemOqcReq.FcheckResu + ",不允许修改结果");
        }
        var oracle = SqlSugarHelper.UseTransactionWithOracle(db =>
@@ -444,6 +445,8 @@
    /// womdaa 已生产量 DAA011加回条码报工数量
    /// MES_SCGD_GX 检验标识 CHECK_FLAG,('√','×')
    /// 通过mes_inv_item_in_c_details2的MES_SCGD_GX_ID连接
    ///
    /// 20250602更新 现在不合格不会更新工单生产数量,合格会增加对应工单生产数量
    ///</summary>
    private void setBarCodes(string? FcheckResu, QsItemOqcItemDetail detail,
        SqlSugarClient db)
@@ -483,7 +486,7 @@
        var barCodes = mesInvItemInsList.Select(s => s.ItemBarcode).ToList();
        var count = db.Queryable<MesInvItemBarcodes>()
            .Where(s => barCodes.Contains(s.ItemBarcode) && s.WorkFlg == 0)
            .Where(s => barCodes.Contains(s.ItemBarcode))
            .Count();
        var gxId = mesInvItemInsList.Select(s => s.MesScgdGxId).ToList();
@@ -500,7 +503,7 @@
            if (count <= 0) return;
            
            //取消mes_inv_item_barcodes 的报工标识 WORK_FLG 使用条码
            //更新mes_inv_item_barcodes 的报工标识 WORK_FLG 使用条码
            var executeCommand = db.Updateable<MesInvItemBarcodes>()
                .SetColumns(a => a.WorkFlg == 1)
                .Where(a => barCodes.Contains(a.ItemBarcode))
@@ -508,7 +511,7 @@
            if (executeCommand > 0)
            {
                //womdaa 已生产量 DAA011加回条码报工数量
                //womdaa 已生产量 DAA011加上条码报工数量
                db.Updateable<Womdaa>()
                    .SetColumns(b => b.Daa011 == b.Daa011 + sumQty)
                    .Where(b => b.Daa001 == qsItemOqcReq.Daa001)
@@ -529,14 +532,14 @@
                .Where(a => barCodes.Contains(a.ItemBarcode))
                .ExecuteCommand();
            if (executeCommand > 0)
            /*if (executeCommand > 0)
            {
                //womdaa 已生产量 DAA011加回条码报工数量
                //womdaa 已生产量 DAA011扣除条码报工数量
                db.Updateable<Womdaa>()
                    .SetColumns(b => b.Daa011 == b.Daa011 - sumQty)
                    .Where(b => b.Daa001 == qsItemOqcReq.Daa001)
                    .ExecuteCommand();
            }
            }*/
        }
    }
@@ -738,7 +741,7 @@
        if (!string.IsNullOrEmpty(qsItemOqcReq.FcheckResu))
        {
            throw new Exception("该检验单已" + qsItemOqcReq.FcheckResu + ",不运行修改结果");
            throw new Exception("该检验单已" + qsItemOqcReq.FcheckResu + ",不允许修改结果");
        }
        var withOracle = SqlSugarHelper.UseTransactionWithOracle(db =>
@@ -837,6 +840,43 @@
            SetQSItemDetail(detail);
        });
        //因为默认合格,在这里增加工单生产数量
        var db = SqlSugarHelper.GetInstance();
        var oqcReqList = db.Queryable<QsItemOqcReq, MesInvItemIns, Womdaa>(
               (a, b, c) =>
                   new JoinQueryInfos(
                       JoinType.Left, a.BillNo == b.BillNo,
                       JoinType.Left, c.Daa001 == b.RbillNo
               ))
           .Where(a => a.Id == rkjDto.gid)
           .Select((a, b, c) =>
               new
               {
                   a.Id,
                   a.BillNo,
                   c.Daa001
               })
           .First();
        if (oqcReqList.Id is null or 0) return 0;
        //查询检验数量
        var sumQty = db
            .Queryable<MesInvItemIns, MesInvItemInCDetails2>((a, b) =>
                new JoinQueryInfos(
                    JoinType.Left, a.Id == b.ItemInId))
            .Where((a, b) => a.BillNo == oqcReqList.BillNo)
            .Select((a, b) => new {b.Quantity })
            .MergeTable().Sum( a=> a.Quantity);
        //更新生产量
        db.Updateable<Womdaa>()
                    .SetColumns(b => b.Daa011 == b.Daa011 + sumQty)
                    .Where(b => b.Daa001 == oqcReqList.Daa001)
                    .ExecuteCommand();
        return Convert.ToInt32(rkjDto.gid);
    }
@@ -844,6 +884,74 @@
    {
        if (isRk(dto.gid)) throw new Exception("已有条码入库,不允许清除检验结果");
        var db = SqlSugarHelper.GetInstance();
        //查询检验结果
        var oqcReqList = db.Queryable<QsItemOqcReq, MesInvItemIns, Womdaa>(
               (a, b, c) =>
                   new JoinQueryInfos(
                       JoinType.Left, a.BillNo == b.BillNo,
                       JoinType.Left, c.Daa001 == b.RbillNo
               ))
           .Where(a => a.Id == dto.gid)
           .Select((a, b, c) =>
               new
               {
                   a.FcheckResu,
                   a.Id,
                   a.BillNo,
                   c.Daa001
               })
           .First();
        if (oqcReqList.Id is null or 0) return 0;
        var FcheckResu = oqcReqList.FcheckResu; //检验结果
        //查询检验数量
        var mesInvItemInsList = db
            .Queryable<MesInvItemIns, MesInvItemInCDetails2>((a, b) =>
                new JoinQueryInfos(
                    JoinType.Left, a.Id == b.ItemInId))
            .Where((a, b) => a.BillNo == oqcReqList.BillNo)
            .Select((a, b) => new
            { b.ItemBarcode, b.Quantity, b.MesScgdGxId })
            .ToList();
        var barCodes = mesInvItemInsList.Select(s => s.ItemBarcode).ToList();
        var count = db.Queryable<MesInvItemBarcodes>()
            .Where(s => barCodes.Contains(s.ItemBarcode))
            .Count();
        var gxId = mesInvItemInsList.Select(s => s.MesScgdGxId).ToList();
        var sumQty = mesInvItemInsList.Sum(s => s.Quantity);
        //根据工序id更新工序表的检验结果
        db.Updateable<MesScgdGx>()
            .SetColumns(s => s.CheckFlag == "未检验")
            .Where(s => gxId.Contains(s.Id))
            .ExecuteCommand();
        if (count <= 0) return 0;
        //更新mes_inv_item_barcodes 的报工标识 WORK_FLG 为已报工(主要是针对不合格的检验结果)
        var executeCommand = db.Updateable<MesInvItemBarcodes>()
            .SetColumns(a => a.WorkFlg == 1)
            .Where(a => barCodes.Contains(a.ItemBarcode))
            .ExecuteCommand();
        if ("合格".Equals(FcheckResu)) //检验合格的则回退生产数量
        {
            //womdaa 已生产量 DAA011扣除条码报工数量
            db.Updateable<Womdaa>()
                .SetColumns(b => b.Daa011 == b.Daa011 - sumQty)
                .Where(b => b.Daa001 == oqcReqList.Daa001)
                .ExecuteCommand();
        }
        return SqlSugarHelper.UseTransactionWithOracle(db =>
        {