更新
This commit is contained in:
@@ -142,6 +142,7 @@ namespace TabletTester2025.ViewModels
|
||||
[ObservableProperty] private int _dissolution2TimeMin = 30;
|
||||
[ObservableProperty] private double _dissolution1SampleIntervalMin = 5;
|
||||
[ObservableProperty] private double _dissolution2SampleIntervalMin = 5;
|
||||
[ObservableProperty] private double _dissolutionMinPercentAt30Min = 80;
|
||||
[ObservableProperty] private double _dissolutionElapsedTime;
|
||||
[ObservableProperty] private double _dissolutionCountdown;
|
||||
[ObservableProperty] private double _dissolutionRSquared;
|
||||
@@ -308,26 +309,54 @@ namespace TabletTester2025.ViewModels
|
||||
ResetDisintegrationCommand = new AsyncRelayCommand(ResetDisintegrationAsync);
|
||||
PrintDisintegrationCommand = new AsyncRelayCommand(async () => await PrintReport("崩解"));
|
||||
|
||||
_ = LoadDisintegrationTimeAsync();
|
||||
_ = LoadDisintegrationSpeedAsync();
|
||||
_ = LoadDissolutionTimesAsync();
|
||||
_ = LoadFriabilityWeightsAsync();
|
||||
}
|
||||
|
||||
public void ApplyPharmaDefaults()
|
||||
{
|
||||
var p = App.CurrentPharmaParams;
|
||||
_isLoadingDisintegrationSpeed = true;
|
||||
_isLoadingDisintegrationTime = true;
|
||||
_isLoadingDissolution1Time = true;
|
||||
_isLoadingDissolution2Time = true;
|
||||
_isLoadingDissolution1SampleInterval = true;
|
||||
_isLoadingDissolution2SampleInterval = true;
|
||||
try
|
||||
{
|
||||
HardnessInternalMin = p.HardnessMin_N;
|
||||
HardnessInternalMax = p.HardnessMax_N;
|
||||
HardnessTestCount = Math.Max(1, p.HardnessTestCount);
|
||||
FriabilityTargetRpm = p.FriabilityTargetRpm > 0 ? p.FriabilityTargetRpm : 25;
|
||||
FriabilityTargetRounds = p.FriabilityTargetRounds > 0 ? p.FriabilityTargetRounds : 100;
|
||||
FriabilityMaxLossPercent = p.FriabilityMaxLossPercent;
|
||||
FriabilityRemainingRounds = FriabilityTargetRounds;
|
||||
DisintegrationDosageForm = string.IsNullOrWhiteSpace(p.DisintegrationDosageForm) ? "普通片" : p.DisintegrationDosageForm;
|
||||
DisintegrationSpeedRpm = p.DisintegrationSpeedRpm > 0 ? p.DisintegrationSpeedRpm : 31;
|
||||
DisintegrationTemp = p.DisintegrationTemperatureC > 0 ? p.DisintegrationTemperatureC : 37;
|
||||
Dissolution1TimeMin = p.Dissolution1TimeMin > 0 ? p.Dissolution1TimeMin : 30;
|
||||
Dissolution2TimeMin = p.Dissolution2TimeMin > 0 ? p.Dissolution2TimeMin : 30;
|
||||
Dissolution1SampleIntervalMin = p.Dissolution1SampleIntervalMin > 0 ? p.Dissolution1SampleIntervalMin : 5;
|
||||
Dissolution2SampleIntervalMin = p.Dissolution2SampleIntervalMin > 0 ? p.Dissolution2SampleIntervalMin : 5;
|
||||
DissolutionMinPercentAt30Min = p.DissolutionMinPercentAt30min;
|
||||
DissolutionSampleInterval = ToCompatibleSampleInterval(Dissolution1SampleIntervalMin);
|
||||
int seconds = p.DisintegrationMaxSeconds > 0 ? p.DisintegrationMaxSeconds : ResolveDisintegrationLimitSeconds();
|
||||
if (seconds > 0)
|
||||
DisintegrationTimeMin = seconds / 60.0;
|
||||
}
|
||||
finally
|
||||
{
|
||||
_isLoadingDisintegrationSpeed = false;
|
||||
_isLoadingDisintegrationTime = false;
|
||||
_isLoadingDissolution1Time = false;
|
||||
_isLoadingDissolution2Time = false;
|
||||
_isLoadingDissolution1SampleInterval = false;
|
||||
_isLoadingDissolution2SampleInterval = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void LoadPharmaDefaults()
|
||||
{
|
||||
var p = App.CurrentPharmaParams;
|
||||
HardnessInternalMin = p.HardnessMin_N;
|
||||
HardnessInternalMax = p.HardnessMax_N;
|
||||
HardnessTestCount = Math.Max(1, p.HardnessTestCount);
|
||||
FriabilityTargetRpm = p.FriabilityTargetRpm > 0 ? p.FriabilityTargetRpm : 25;
|
||||
FriabilityTargetRounds = p.FriabilityTargetRounds > 0 ? p.FriabilityTargetRounds : 100;
|
||||
FriabilityMaxLossPercent = p.FriabilityMaxLossPercent;
|
||||
FriabilityRemainingRounds = FriabilityTargetRounds;
|
||||
DisintegrationDosageForm = string.IsNullOrWhiteSpace(p.DisintegrationDosageForm) ? "普通片" : p.DisintegrationDosageForm;
|
||||
int seconds = ResolveDisintegrationLimitSeconds();
|
||||
if (seconds > 0)
|
||||
DisintegrationTimeMin = seconds / 60.0;
|
||||
ApplyPharmaDefaults();
|
||||
}
|
||||
|
||||
private async Task PrintReport(string testName)
|
||||
@@ -1006,6 +1035,12 @@ namespace TabletTester2025.ViewModels
|
||||
private int ResolveDisintegrationLimitSeconds(string? dosageForm = null)
|
||||
{
|
||||
string form = string.IsNullOrWhiteSpace(dosageForm) ? DisintegrationDosageForm : dosageForm;
|
||||
if (string.Equals(form, App.CurrentPharmaParams.DisintegrationDosageForm, StringComparison.OrdinalIgnoreCase)
|
||||
&& App.CurrentPharmaParams.DisintegrationMaxSeconds > 0)
|
||||
{
|
||||
return App.CurrentPharmaParams.DisintegrationMaxSeconds;
|
||||
}
|
||||
|
||||
return form switch
|
||||
{
|
||||
"薄膜衣片" => 30 * 60,
|
||||
@@ -1526,7 +1561,7 @@ namespace TabletTester2025.ViewModels
|
||||
// 崩解
|
||||
DisintegrationTimeSec = DisintegrationSeconds,
|
||||
RemainingTubesAtEnd = RemainingTubes,
|
||||
DisintegrationTargetFreq = 0,
|
||||
DisintegrationTargetFreq = DisintegrationSpeedRpm,
|
||||
DisintegrationTemp = DisintegrationTemp,
|
||||
DisintegrationDosageForm = DisintegrationDosageForm,
|
||||
DisintegrationLimitSeconds = ResolveDisintegrationLimitSeconds(),
|
||||
|
||||
Reference in New Issue
Block a user