| | |
| | | { |
| | | var womcabList = new List<Womcab>(); |
| | | |
| | | foreach (var dto in dtoList) |
| | | // ========== 修正:按 单号+单别+物料编号 去重,避免WOMDAB重复 ========== |
| | | // 如果有重复记录,取最后一条 |
| | | var distinctList = dtoList |
| | | .GroupBy(x => new { x.FBillNo, x.FBillNoType, x.FMaterialID2 }) |
| | | .Select(g => g.Last()) |
| | | .ToList(); |
| | | |
| | | foreach (var dto in distinctList) |
| | | { |
| | | var womcab = new Womcab |
| | | { |
| | | |
| | | Cab001 = dto.FBillNo, |
| | | Cab002 = dto.FBillNoType, |
| | | Cab003 = dto.FMaterialID2, |
| | |
| | | Cab014 = dto.FIsKeyItem, |
| | | Numerator = dto.FNumerator, |
| | | Denominator = dto.FDenominator |
| | | |
| | | }; |
| | | |
| | | |
| | | |
| | | womcabList.Add(womcab); |
| | | } |
| | |
| | | |
| | | return UseTransaction(db => |
| | | { |
| | | // 删除主表数据 |
| | | var deleteMain = db.Deleteable<Womcaa>() |
| | | .Where(it => it.Caa001 == data.FBillNo && it.SrcBillType == data.FBillTypeID) |
| | | .ExecuteCommand() > 0; |
| | | |
| | | // 删除子表数据 |
| | | var deleteDetail = db.Deleteable<Womcab>() |
| | | .Where(it => it.Cab001 == data.FBillNo && it.Cab002 == data.FBillTypeID) |
| | | .ExecuteCommand() > 0; |
| | | |
| | | if (!deleteMain || !deleteDetail) |
| | | throw new Exception("删除失败:主表或子表记录不存在"); |
| | | |
| | | // 调用存储过程进行后续处理 |
| | | // ========== 修正:先调用存储过程(此时WOMCAB数据还在),再删除WOMCAA和WOMCAB ========== |
| | | // 存储过程PRC_DELETE_DAA需要读取WOMCAB数据来删除对应的WOMDAB |
| | | var inputParam1 = new SugarParameter("P_WORK_NO", data.FBillNo); |
| | | var inputParam2 = new SugarParameter("P_WORK_TYPE", data.FBillTypeID); |
| | | var outParam1 = new SugarParameter("C_RESULT", null, true); // 输出参数 |
| | |
| | | //存储过程失败则事务进行回滚 |
| | | db.Ado.RollbackTran(); |
| | | throw new Exception(message); |
| | | |
| | | } |
| | | |
| | | // 存储过程执行成功后,再删除WOMCAA和WOMCAB |
| | | // 删除子表数据 |
| | | db.Deleteable<Womcab>() |
| | | .Where(it => it.Cab001 == data.FBillNo && it.Cab002 == data.FBillTypeID) |
| | | .ExecuteCommand(); |
| | | |
| | | // 删除主表数据 |
| | | db.Deleteable<Womcaa>() |
| | | .Where(it => it.Caa001 == data.FBillNo && it.SrcBillType == data.FBillTypeID) |
| | | .ExecuteCommand(); |
| | | |
| | | return 1; |
| | | }) > 0; |
| | | } |