diff --git a/Src/Dlhis.Canteen/MealSupplementRecord/Services/Implements/MealSupplementRecordService.cs b/Src/Dlhis.Canteen/MealSupplementRecord/Services/Implements/MealSupplementRecordService.cs index 2175617f..4176fec9 100644 --- a/Src/Dlhis.Canteen/MealSupplementRecord/Services/Implements/MealSupplementRecordService.cs +++ b/Src/Dlhis.Canteen/MealSupplementRecord/Services/Implements/MealSupplementRecordService.cs @@ -144,37 +144,8 @@ public class MealSupplementRecordService : IMealSupplementRecordService (_currentUser.GetStringTenantId() != gainfo.Factory).ThrowIfTrue($"工号{request.Code}属于{gainfo.Factory}人员,无法导入"); (gainfo.Name != request.Name).ThrowIfTrue($"工号{request.Code}姓名不一致"); - await CommonHelper.RetryAsync(async () => - { - var mealUser = await _dbContext.Queryable().Where(x => x.UserCode == request.Code).FirstAsync(); - if (mealUser == null) - { - mealUser = new GainfoMealEntity - { - UserNo = gainfo.No, - UserCode = gainfo.Code, - Balance = 0, - BalanceOfRecharge = 0, - BalanceOfSubsidies = 0, - Version = 0 - }; - - await _dbContext.InsertAsync(mealUser); - } - - var b = mealUser.Balance += request.Balance; - - await _dbContext.Updateable() - .SetColumns(x => x.Version == x.Version + 1) - .SetColumns(x => x.Balance == b) - .SetColumns(x => x.ModifiedTime == DateTime.Now) - .Where(x => x.UserCode == mealUser.UserCode && x.Version == mealUser.Version) - .ExecuteCommandThrowVersionAsync(); - }, 5); - (await _dbContext.Queryable().Where(x => x.UserCode == request.Code).Where(x => x.Remark == "期初导入").AnyAsync()).ThrowIfTrue($"工号{request.Code}已导入期初余额"); - await _dbContext.InsertAsync(new BalanceRecordEntity { Amount = request.Balance, @@ -199,8 +170,40 @@ public class MealSupplementRecordService : IMealSupplementRecordService Name = gainfo.Name, IsCostCrossTenant = false, DepartmentNo = gainfo.DepartmentNo, - DeviceUniqueNo = null, + DeviceUniqueNo = null }); + + await CommonHelper.RetryAsync(async () => + { + var mealUser = await _dbContext.Queryable().Where(x => x.UserCode == request.Code).FirstAsync(); + if (mealUser == null) + { + mealUser = new GainfoMealEntity + { + UserNo = gainfo.No, + UserCode = gainfo.Code, + Balance = 0, + BalanceOfRecharge = 0, + BalanceOfSubsidies = 0, + Version = 0 + }; + + await _dbContext.InsertAsync(mealUser); + } + + //重新核算 + var balance = await _dbContext.Queryable() + .Where(x => x.UserCode == request.Code) + .Where(x => x.Status == BalanceRecordStatusEnumType.Valid) + .SumAsync(x => x.Amount); + + await _dbContext.Updateable() + .SetColumns(x => x.Version == x.Version + 1) + .SetColumns(x => x.Balance == balance) + .SetColumns(x => x.ModifiedTime == DateTime.Now) + .Where(x => x.UserCode == mealUser.UserCode && x.Version == mealUser.Version) + .ExecuteCommandThrowVersionAsync(); + }, 5); } } } \ No newline at end of file