CRZ
昨天 89fa5f03903ed6161474dcbe8528503f69f804d1
MES.Service/service/WomcaaManager.cs
@@ -31,8 +31,8 @@
        }
        // 检查是否有有效的BOM明细(物料编码不为空且需领用量大于0)
        var validBomItems = erpCabs.Where(cab =>
            !string.IsNullOrWhiteSpace(cab.FMaterialID2) &&
        var validBomItems = erpCabs.Where(cab =>
            !string.IsNullOrWhiteSpace(cab.FMaterialID2) &&
            !string.IsNullOrWhiteSpace(cab.FNeedQty2) &&
            decimal.TryParse(cab.FNeedQty2, out decimal qty) && qty > 0).ToList();
@@ -50,9 +50,9 @@
    public bool Save(ErpWOM wom)
    {
        var womErpCaa = wom. ErpCaa;
        var womErpCaa = wom.ErpCaa;
        var mesWomcaa = MapErpCAAtoWomcaa(womErpCaa);
        var mesWomcabs =  MapErpCABtoWomcab(wom.ErpCabs);
        var mesWomcabs = MapErpCABtoWomcab(wom.ErpCabs);
        // 验证BOM是否为空
        ValidateBomNotEmpty(wom.ErpCabs, womErpCaa.FBillNo);
@@ -79,82 +79,68 @@
        List<Womcab> mesWomcabs)
    {
                if (mesWomcaa.Caa001 != null && mesWomcaa.SrcBillType != null)
                {
                    db.Deleteable<Womcaa>()
                   .Where(it => it.Caa001 == mesWomcaa.Caa001 &&
                                it.SrcBillType == mesWomcaa.SrcBillType)
                   .ExecuteCommand();
        if (mesWomcaa.Caa001 != null && mesWomcaa.SrcBillType != null)
        {
                };
            db.Deleteable<Womcaa>()
           .Where(it => it.Caa001 == mesWomcaa.Caa001 &&
                        it.SrcBillType == mesWomcaa.SrcBillType)
           .ExecuteCommand();
            if (mesWomcabs.Count > 0)
            {
            var mesWomcab = mesWomcabs.Select(s => new { CAB001 = s.Cab001, CAB002 = s.Cab002, CAB003 = s.Cab003 }).ToList();
            //var mesWomcab = mesWomcabs.Select(s => new { CAB001 = s.Cab001, CAB002 = s.Cab002}).ToList();
            // 删除该任务单的所有WOMCAB记录(BOM明细)
            // 这样可以确保WOMCAB与JSON完全一致
            db.Deleteable<Womcab>()
                .Where(it => mesWomcab
                .Any(p => p.CAB001 == it.Cab001
                && p.CAB002 == it.Cab002
                && p.CAB003 == it.Cab003))
                .ExecuteCommand();
            //db.Deleteable<Womcab>()
            //    .Where(it => mesWomcab
            //    .Any(p => p.CAB001 == it.Cab001
            //    && p.CAB002 == it.Cab002))
            //    .ExecuteCommand();
           .Where(it => it.Cab001 == mesWomcaa.Caa001 &&
                        it.Cab002 == mesWomcaa.SrcBillType)
           .ExecuteCommand();
        };
        }
        ;
            var orUpdate = db.Insertable(mesWomcaa).ExecuteCommand();
            var baOrUpdate = db.Insertable(mesWomcabs).ExecuteCommand();
            //定义输入参数
            var inputParam1 = new SugarParameter("P_WORK_NO", mesWomcaa.Caa001);
            var inputParam2 = new SugarParameter("P_WORK_TYPE", mesWomcaa.SrcBillType);
            // 定义输出参数
            var outParam1 = new SugarParameter("c_Result",null,true);
            var outParam2 = new SugarParameter("C_MSG",null,true);
        var orUpdate = db.Insertable(mesWomcaa).ExecuteCommand();
        var baOrUpdate = db.Insertable(mesWomcabs).ExecuteCommand();
            // 使用 SqlSugar 执行存储过程
            Db.Ado.ExecuteCommand("BEGIN PRC_UPDATE_DAA(:P_WORK_NO,:P_WORK_TYPE,:c_Result,:C_MSG); END;", inputParam1, inputParam2, outParam1, outParam2);
        //定义输入参数
        var inputParam1 = new SugarParameter("P_WORK_NO", mesWomcaa.Caa001);
        var inputParam2 = new SugarParameter("P_WORK_TYPE", mesWomcaa.SrcBillType);
        // 定义输出参数
        var outParam1 = new SugarParameter("c_Result", null, true);
        var outParam2 = new SugarParameter("C_MSG", null, true);
            // 获取输出参数的值
              int     result = int.Parse((string)outParam1.Value);
              string  message = outParam2.Value == DBNull.Value ? string.Empty : (string)outParam2.Value;
        // 使用 SqlSugar 执行存储过程
        Db.Ado.ExecuteCommand("BEGIN PRC_UPDATE_DAA(:P_WORK_NO,:P_WORK_TYPE,:c_Result,:C_MSG); END;", inputParam1, inputParam2, outParam1, outParam2);
        // 获取输出参数的值
        int result = int.Parse((string)outParam1.Value);
        string message = outParam2.Value == DBNull.Value ? string.Empty : (string)outParam2.Value;
        if (result == 1)
            {
                //存储过程失败则事务进行回滚
                db.Ado.RollbackTran();
                throw new Exception(message);
            }
        {
            //存储过程失败则事务进行回滚
            db.Ado.RollbackTran();
            throw new Exception(message);
            // 提交事务
            db.Ado.CommitTran();
            return true;
        }
            throw new NotImplementedException("插入或更新失败");
        // 提交事务
        db.Ado.CommitTran();
        return true;
        throw new NotImplementedException("插入或更新失败");
    }
    private bool UpdateData(SqlSugarScope db, Womcaa mesWomcaa,
        List<Womcab> mesWomcabs)
    {
@@ -182,30 +168,30 @@
    {
        string DemandDate = !string.IsNullOrEmpty(dto.DemandDate) ?  DateTime.ParseExact(dto.DemandDate, "yyyymmdd", CultureInfo.InvariantCulture).ToString("yyyy-mm-dd") : null;
        string DemandDate = !string.IsNullOrEmpty(dto.DemandDate) ? DateTime.ParseExact(dto.DemandDate, "yyyymmdd", CultureInfo.InvariantCulture).ToString("yyyy-mm-dd") : null;
        var entity = new Womcaa
        {
            SrcBillType = dto.FSrcBillType,
            Caa001 = dto.FBillNo,
            Caa021 = dto.FWorkShopID0,
            DepotCode = dto.FStockId,
            CreateDate = dto.FDate,
            Caa004 = dto.FBillType,
            Caa006 = dto.FMaterialId,
            Caa009 = dto.FUnitId,
            Caa012 = !string.IsNullOrEmpty(dto.FQty)
                ? Convert.ToDecimal(dto.FQty)
                : null,
            Caa010 = dto.FPlanStartDate,
            Caa011 = dto.FPlanFinishDate,
            Caa005 = dto.FConveyDate,
            Lot = dto.FLot,
            Caa015 = dto.F_UNW_Text_xsddh,
            CAA015_Head = dto.xsddh_type,
@@ -215,16 +201,16 @@
            Suppno = dto.FSuppno,
            Cust_no = dto.FCustno,
            Cust_item_no = dto.FCustitemno,
            DemandDate   = DemandDate,
            CustNumber   = dto.CustNumber,
            ModelType    = dto.ModelType,
            OrderNo      = dto.FOrderNo
            DemandDate = DemandDate,
            CustNumber = dto.CustNumber,
            ModelType = dto.ModelType,
            OrderNo = dto.FOrderNo
        };
        return entity;
    }
@@ -237,7 +223,7 @@
        {
            var womcab = new Womcab
            {
                Cab001 = dto.FBillNo,
                Cab002 = dto.FBillNoType,
                Cab003 = dto.FMaterialID2,
@@ -256,10 +242,10 @@
                Cab014 = dto.FIsKeyItem,
                Numerator = dto.FNumerator,
                Denominator = dto.FDenominator
            };
            womcabList.Add(womcab);
        }