首次提交

This commit is contained in:
maqiao 2025-05-28 14:48:38 +08:00
parent 264a4bd0fc
commit 3a9ec258a8
17 changed files with 207 additions and 86 deletions

View File

@ -409,6 +409,38 @@ namespace MasaBlazorApp3.DataAccess.Impl
//var EffDate = !stock.drugManuNo.ManuNo.Equals(stock.ManuNo) ? stock.drugManuNo.EffDate : stock.EffDate;
var ManuNo = stock.ManuNo;
var EffDate = stock.EffDate;
if (!DateTime.TryParse(stock.EffDate, out DateTime dEffDate))
{
//效期转换出错
if (stock.ManuNo != null)
{
string[] idate = stock.EffDate.Split('/');
foreach (string iS in idate)
{
if (!string.IsNullOrEmpty(iS.Replace(" ", "").Trim()))
{
switch (iS.Replace(" ", "").Trim().Length)
{
case 4:
EffDate = iS.Replace(" ", "").Trim();
break;
case 2:
EffDate += "-" + iS.Replace(" ", "").Trim();
break;
case 1:
EffDate += "-0" + iS.Replace(" ", "").Trim();
break;
}
}
}
}
}
else
{
EffDate = dEffDate.ToString("yyyy-MM-dd");
}
// 出入库记录
int mid = _connection.InsertWithInt32Identity(new MachineRecord()
{

View File

@ -119,12 +119,13 @@
async Task LoadData(LoadDataArgs args)
{
isLoading = true;
var result = await channelListDao.GetChannelStockByBiaoDing(drawerNo);
DrawerNos = result.DrawerArray;
channels = result.ChannelStocks;
count = result.ChannelStocks.Count;
if (drawerNo > 0)
{
var result = await channelListDao.GetChannelStockByBiaoDing(drawerNo);
DrawerNos = result.DrawerArray;
channels = result.ChannelStocks;
count = result.ChannelStocks.Count;
}
isLoading = false;
}
@ -148,7 +149,8 @@
var b = await PortUtil.OpenDrawerStatus(this.drawerNo);
if (b)
{
PortUtil.SpeakAsync($"{drawerNo}号抽屉已经打开,请,加药");
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
PortUtil.SpeakAsync($"{drawerNo}号抽屉已经打开,请选择库位开药盒");
this.status = 2;
PortUtil.Operate = true;
next();
@ -185,7 +187,7 @@
this.status = 4;
//弹出标定对话框
var dialog = await dialogService.OpenAsync<BiaoDingDialog>(
$"标定",
$"标定库位{currentChannelStock.ColNo}",
new Dictionary<string, object>() { { "channelStockInfo",
currentChannelStock } },
new DialogOptions() { Width = "45vw", Resizable = true, Draggable = true, ShowClose = false });
@ -233,6 +235,7 @@
{
if (this.status == 0)
{
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
PortUtil.SpeakAsync("请先打开抽屉后再点开药盒");
}
else
@ -240,6 +243,8 @@
currentChannelStock = args.Data;
if (args.Data.BoardType.ToString().Contains("3"))
{
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
PortUtil.SpeakAsync("正在打开药盒");
}
// else

View File

@ -3,27 +3,27 @@
<RadzenStack>
@* <RadzenTemplateForm Submit="@((int BDQuantity) => { ConfirmOK(BDQuantity); })" Style="width:100%;height:100%"> *@
<div class="rz-form-row">
<div class="rz-form-input-wrapper">
<!--@onfocusin="@(() => Util.VirtualKeyboardHelper.ShowVirtualKeyboard())"-->
@if (channelStockInfo.Quantity>0)
{
<RadzenText TextStyle="TextStyle.Body1" Style="color: var(--rz-text-tertiary-color); align-content:center; text-align:center; font-size:medium;">库位库存不为零,请取出药品后点击【清空】按钮,清空完成后输入标定数量并放入对应数量药品并根据下一步提示操作</RadzenText>
}
else
{
<RadzenText TextStyle="TextStyle.Body1" Style="color: var(--rz-text-tertiary-color); align-content:center; text-align:center; font-size:medium;">正在清零,清零完成后输入标定数量并放入对应数量药品后点击【标定】按钮</RadzenText>
}
<RadzenTextBox id="BDQuantity" Name="BDQuantity" Value="10" Style="width:100%" />
<RadzenRequiredValidator Component="BDQuantity" Text="请填写标定数量" />
</div>
<div class="rz-form-row">
<div class="rz-form-input-wrapper">
<!--@onfocusin="@(() => Util.VirtualKeyboardHelper.ShowVirtualKeyboard())"-->
@if (channelStockInfo.Quantity>0)
{
<RadzenText TextStyle="TextStyle.Body1" Style="color: var(--rz-text-tertiary-color); align-content:center; text-align:center; font-size:medium;">库位库存不为零,请取出药品后点击【清空】按钮,清空完成后输入标定数量并放入对应数量药品并根据下一步提示操作</RadzenText>
}
else
{
<RadzenText TextStyle="TextStyle.Body1" Style="color: var(--rz-text-tertiary-color); align-content:center; text-align:center; font-size:medium;">正在清零,清零完成后输入标定数量并放入对应数量药品后点击【标定】按钮</RadzenText>
}
<RadzenTextBox id="BDQuantity" Name="BDQuantity" Value="10" Style="width:100%" />
<RadzenRequiredValidator Component="BDQuantity" Text="请填写标定数量" />
</div>
</div>
@* </RadzenTemplateForm> *@
<RadzenStack Orientation="Orientation.Horizontal" JustifyContent="JustifyContent.Center" Gap="0.5rem">
<RadzenButton Click="@Clear" ButtonStyle="ButtonStyle.Warning" Variant="Variant.Flat" Disabled="@(channelStockInfo.Quantity<=0)" Text="清空" Style="width: 120px" />
<RadzenButton Click="ConfirmOK" ButtonStyle="ButtonStyle.Success" IsBusy="@(status==2)" BusyText="正在标定。。。" Variant="Variant.Flat" Text="标定" Disabled=@(this.status<=0||this.status==2) Style="width: 120px" />
<RadzenButton Click="ConfirmOK" ButtonStyle="ButtonStyle.Success" IsBusy="@(status==2)" BusyText="正在标定。。。" Variant="Variant.Flat" Text="标定" Disabled=@(this.status<=0||this.status==2||iClearFinish>0) Style="width: 120px" />
<RadzenButton Click="@CancelClick" Variant="Variant.Flat" Text="取消" Style="width: 120px" />
@ -44,6 +44,7 @@
int status = 0;
int iClear = 0;
int iBiaoDing = 0;
int iClearFinish = 1;
protected override async Task OnInitializedAsync()
{
if(channelStockInfo!=null&&channelStockInfo.Quantity<=0)
@ -56,6 +57,7 @@
//清空按钮
async Task Clear()
{
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
PortUtil.SpeakAsync($"正在清空,请稍等");
this.status = 1;
@ -94,8 +96,10 @@
{ Severity = NotificationSeverity.Success, Summary = "提示", Detail = "清空操作成功", Duration = 3000 }
);
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
PortUtil.SpeakAsync("清空完成请放入10个药品放好后点击标定按钮");
iClear = 0;
iClearFinish = 0;
stop();
}
else
@ -121,6 +125,7 @@
try
{
status = 2;
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
PortUtil.SpeakAsync("正在标定,请稍等");
//提示输入标定数量发26指令
await PortUtil.SetNumCount(channelStockInfo.DrawerNo, channelStockInfo.ColNo, BDQuantity);
@ -145,6 +150,7 @@
{ Severity = NotificationSeverity.Success, Summary = "提示", Detail = "标定成功", Duration = 3000 }
);
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
PortUtil.SpeakAsync("标定完成,请取出药品");
status = 0;
i = 0;

View File

@ -228,6 +228,7 @@
var b = await PortUtil.OpenDrawerStatus(this.drawerNo);
if (b)
{
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
PortUtil.SpeakAsync($"{drawerNo}号抽屉已经打开,请,加药");
this.status = 2;
PortUtil.Operate = true;
@ -253,6 +254,7 @@
// 关闭则改变状态并终止循环
if (b)
{
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
PortUtil.SpeakAsync($"加药完成,请,核对,或,录入,正确的,添加数量");
// 判断是否为称重抽屉
if (setting.Value.weigh != null && setting.Value.weigh.Contains(this.drawerNo))
@ -339,6 +341,7 @@
void RestData()
{
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
this.status = 0;
this.BeforeQuantity = new int[9];
this.AfterQuantity = new int[9];
@ -485,6 +488,7 @@
// }
if (setting.Value.box.Contains(args.Data.DrawerNo) && status != 2)
{
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
PortUtil.SpeakAsync("请先点取药按钮打开抽屉");
}
currentCol = args.Data.ColNo;

View File

@ -164,6 +164,7 @@
var b = await PortUtil.OpenDrawerStatus(this.drawerNo);
if (b)
{
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
PortUtil.SpeakAsync($"{drawerNo}号抽屉已经打开,请,取药");
PortUtil.Operate = true;
this.status = 2;
@ -188,6 +189,7 @@
// 关闭则改变状态并终止循环
if (b)
{
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
PortUtil.SpeakAsync($"取药完成,请核对或录入正确的取出数量");
// 判断是否为称重抽屉
if (setting.Value.weigh != null && setting.Value.weigh.Contains(this.drawerNo))
@ -376,6 +378,7 @@
}
void RestData()
{
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
this.status = 0;
this.BeforeQuantity = new int[9];
this.AfterQuantity = new int[9];
@ -443,6 +446,7 @@
// }
if (setting.Value.box.Contains(args.Data.DrawerNo) && status != 2)
{
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
PortUtil.SpeakAsync("请先点取药按钮打开抽屉");
}
currentCol = args.Data.ColNo;

View File

@ -16,11 +16,17 @@
<RadzenCard class="rz-shadow-0 rz-border-radius-0 rz-text-align-center rz-p-12 align-items-center justify-content-center" Style="height: 100%; background: var(--rz-primary-light) no-repeat 100% 70% fixed url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIwNCIgaGVpZ2h0PSIxNDU4IiB2aWV3Qm94PSIwIDAgMTIwNCAxNDU4IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8ZyBvcGFjaXR5PSIwLjUiIGZpbHRlcj0idXJsKCNmaWx0ZXIwX2ZfNDkzXzEwMTM0KSI+CjxjaXJjbGUgY3g9IjcyMi4xMjgiIGN5PSI4MzkuMDIiIHI9IjQ4MS40MTkiIGZpbGw9InVybCgjcGFpbnQwX3JhZGlhbF80OTNfMTAxMzQpIi8+CjwvZz4KPGcgb3BhY2l0eT0iMC41IiBmaWx0ZXI9InVybCgjZmlsdGVyMV9mXzQ5M18xMDEzNCkiPgo8Y2lyY2xlIGN4PSI0NzAuMzMzIiBjeT0iNTcwLjMzMyIgcj0iNDcwLjMzMyIgZmlsbD0idXJsKCNwYWludDFfcmFkaWFsXzQ5M18xMDEzNCkiLz4KPC9nPgo8ZyBvcGFjaXR5PSIwLjUiIGZpbHRlcj0idXJsKCNmaWx0ZXIyX2ZfNDkzXzEwMTM0KSI+CjxjaXJjbGUgY3g9IjY5MS41MTEiIGN5PSI1MjIuMjk3IiByPSIzMzEuNTAzIiBmaWxsPSJ1cmwoI3BhaW50Ml9yYWRpYWxfNDkzXzEwMTM0KSIvPgo8L2c+CjxnIG9wYWNpdHk9IjAuNSIgZmlsdGVyPSJ1cmwoI2ZpbHRlcjNfZl80OTNfMTAxMzQpIj4KPGNpcmNsZSBjeD0iNjA4LjI0NCIgY3k9IjEwNzkuOTciIHI9IjMzMS41MDMiIHRyYW5zZm9ybT0icm90YXRlKC04MS4yMjQ0IDYwOC4yNDQgMTA3OS45NykiIGZpbGw9InVybCgjcGFpbnQzX3JhZGlhbF80OTNfMTAxMzQpIi8+CjwvZz4KPGRlZnM+CjxmaWx0ZXIgaWQ9ImZpbHRlcjBfZl80OTNfMTAxMzQiIHg9IjE0MC43MDkiIHk9IjI1Ny42MDEiIHdpZHRoPSIxMTYyLjg0IiBoZWlnaHQ9IjExNjIuODQiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj4KPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMCIgcmVzdWx0PSJCYWNrZ3JvdW5kSW1hZ2VGaXgiLz4KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJCYWNrZ3JvdW5kSW1hZ2VGaXgiIHJlc3VsdD0ic2hhcGUiLz4KPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iNTAiIHJlc3VsdD0iZWZmZWN0MV9mb3JlZ3JvdW5kQmx1cl80OTNfMTAxMzQiLz4KPC9maWx0ZXI+CjxmaWx0ZXIgaWQ9ImZpbHRlcjFfZl80OTNfMTAxMzQiIHg9Ii0xMDAiIHk9IjAiIHdpZHRoPSIxMTQwLjY3IiBoZWlnaHQ9IjExNDAuNjciIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj4KPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMCIgcmVzdWx0PSJCYWNrZ3JvdW5kSW1hZ2VGaXgiLz4KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJCYWNrZ3JvdW5kSW1hZ2VGaXgiIHJlc3VsdD0ic2hhcGUiLz4KPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iNTAiIHJlc3VsdD0iZWZmZWN0MV9mb3JlZ3JvdW5kQmx1cl80OTNfMTAxMzQiLz4KPC9maWx0ZXI+CjxmaWx0ZXIgaWQ9ImZpbHRlcjJfZl80OTNfMTAxMzQiIHg9IjI2MC4wMDgiIHk9IjkwLjc5MzkiIHdpZHRoPSI4NjMuMDA2IiBoZWlnaHQ9Ijg2My4wMDYiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj4KPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMCIgcmVzdWx0PSJCYWNrZ3JvdW5kSW1hZ2VGaXgiLz4KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJCYWNrZ3JvdW5kSW1hZ2VGaXgiIHJlc3VsdD0ic2hhcGUiLz4KPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iNTAiIHJlc3VsdD0iZWZmZWN0MV9mb3JlZ3JvdW5kQmx1cl80OTNfMTAxMzQiLz4KPC9maWx0ZXI+CjxmaWx0ZXIgaWQ9ImZpbHRlcjNfZl80OTNfMTAxMzQiIHg9IjE3Ni42OTQiIHk9IjY0OC40MjMiIHdpZHRoPSI4NjMuMSIgaGVpZ2h0PSI4NjMuMSIgZmlsdGVyVW5pdHM9InVzZXJTcGFjZU9uVXNlIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9InNSR0IiPgo8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PSIwIiByZXN1bHQ9IkJhY2tncm91bmRJbWFnZUZpeCIvPgo8ZmVCbGVuZCBtb2RlPSJub3JtYWwiIGluPSJTb3VyY2VHcmFwaGljIiBpbjI9IkJhY2tncm91bmRJbWFnZUZpeCIgcmVzdWx0PSJzaGFwZSIvPgo8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSI1MCIgcmVzdWx0PSJlZmZlY3QxX2ZvcmVncm91bmRCbHVyXzQ5M18xMDEzNCIvPgo8L2ZpbHRlcj4KPHJhZGlhbEdyYWRpZW50IGlkPSJwYWludDBfcmFkaWFsXzQ5M18xMDEzNCIgY3g9IjAiIGN5PSIwIiByPSIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSg3MjIuMTI4IDgzOS4wMikgcm90YXRlKDkwKSBzY2FsZSg0ODEuNDE5KSI+CjxzdG9wIHN0b3AtY29sb3I9IiNGRjFBNkMiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjRkYxQTZDIiBzdG9wLW9wYWNpdHk9IjAiLz4KPC9yYWRpYWxHcmFkaWVudD4KPHJhZGlhbEdyYWRpZW50IGlkPSJwYWludDFfcmFkaWFsXzQ5M18xMDEzNCIgY3g9IjAiIGN5PSIwIiByPSIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSg0NzAuMzMzIDU3MC4zMzMpIHJvdGF0ZSg5MCkgc2NhbGUoNDcwLjMzMykiPgo8c3RvcCBzdG9wLWNvbG9yPSIjM0FBQ0ZGIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzNBOTVGRiIgc3RvcC1vcGFjaXR5PSIwIi8+CjwvcmFkaWFsR3JhZGllbnQ+CjxyYWRpYWxHcmFkaWVudCBpZD0icGFpbnQyX3JhZGlhbF80OTNfMTAxMzQiIGN4PSIwIiBjeT0iMCIgcj0iMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjkxLjUxMSA1MjIuMjk3KSByb3RhdGUoOTApIHNjYWxlKDMzMS41MDMpIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzQ4M0FGRiIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM0ODNBRkYiIHN0b3Atb3BhY2l0eT0iMCIvPgo8L3JhZGlhbEdyYWRpZW50Pgo8cmFkaWFsR3JhZGllbnQgaWQ9InBhaW50M19yYWRpYWxfNDkzXzEwMTM0IiBjeD0iMCIgY3k9IjAiIHI9IjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDYwOC4yNDQgMTA3OS45Nykgcm90YXRlKDkwKSBzY2FsZSgzMzEuNTAzKSI+CjxzdG9wIHN0b3AtY29sb3I9IiNGRkM4M0EiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjRkZDODNBIiBzdG9wLW9wYWNpdHk9IjAiLz4KPC9yYWRpYWxHcmFkaWVudD4KPC9kZWZzPgo8L3N2Zz4K')">
@if (userI == 1)
{
<RadzenText TextStyle="TextStyle.H5" class="rz-color-white">操作人 @globalStateService.Operator?.NickName 正在修改密码</RadzenText>
<RadzenText TextStyle="TextStyle.H5" class="rz-color-white">
操作人 @globalStateService.Operator?.NickName
<p>正在修改密码</p>
</RadzenText>
}
else if (userI == 2)
{
<RadzenText TextStyle="TextStyle.H5" class="rz-color-white">复核人 @globalStateService.Reviewer?.NickName 正在修改密码</RadzenText>
<RadzenText TextStyle="TextStyle.H5" class="rz-color-white">
复核人 @globalStateService.Reviewer?.NickName
<p>正在修改密码</p>
</RadzenText>
}
</RadzenCard>
</RadzenColumn>

View File

@ -45,8 +45,15 @@
InvokeAsync(StateHasChanged);
try
{
await FingerprintUtil.ConnectionMain();
msg = "指纹模块连接成功";
bool flag=await FingerprintUtil.ConnectionMain();
if (flag)
{
msg = "指纹模块连接成功";
}
else
{
msg = "指纹模块连接失败";
}
InvokeAsync(StateHasChanged);
} catch (Exception e)
{

View File

@ -113,6 +113,7 @@
async Task CancelOpera()
{
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
status = 0;
dialogService.Close(false);
}
@ -157,8 +158,8 @@
if (data[index].ChannelStocks[j].BoardType.ToString().Contains("2"))
{
byte[] quantity = await PortUtil.CheckQuantityByDrawer(data[index].ChannelStocks[j].DrawerNo);
BeforeQuantity = quantity.Select(it => Convert.ToInt32(it)).ToArray().Skip(3).Take(9).ToArray();
logger.Info($"单支抽屉【{drawerNo}】,开抽屉前检测数量【{string.Join(",", BeforeQuantity)}】");
data[index].BeforeQuantity = quantity.Select(it => Convert.ToInt32(it)).ToArray().Skip(3).Take(9).ToArray();
logger.Info($"单支抽屉【{drawerNo}】,开抽屉前检测数量【{string.Join(",", data[index].BeforeQuantity)}】");
await PortUtil.NoLightOnByCol(drawerNo, data.Select(ot => ot.ChannelStocks.Where(cs => cs.DrawerNo == drawerNo).Select(cs => cs.ColNo)).Cast<int>().ToArray());
}
@ -168,8 +169,8 @@
PortUtil.DrawerNo = data[index].ChannelStocks[j].DrawerNo;// drawerNo;
PortUtil.ColNoLst.Add(data[index].ChannelStocks[j].ColNo);
BeforeQuantity[data[index].ChannelStocks[j].ColNo - 1] = await PortUtil.CheckQuantityForSingle(data[index].ChannelStocks[j].ColNo);
logger.Info($"称重抽屉【{data[index].ChannelStocks[j].DrawerNo}】,开抽屉前检测数量【{string.Join(",", BeforeQuantity)}】");
data[index].BeforeQuantity[data[index].ChannelStocks[j].ColNo - 1] = await PortUtil.CheckQuantityForSingle(data[index].ChannelStocks[j].ColNo);
logger.Info($"称重抽屉【{data[index].ChannelStocks[j].DrawerNo}】,开抽屉前检测数量【{string.Join(",", data[index].BeforeQuantity)}】");
await Task.Delay(200);
}
//药盒-开药盒
@ -183,6 +184,7 @@
var b = await PortUtil.OpenDrawerStatus(drawerNo);
if (b)
{
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
PortUtil.SpeakAsync($"{drawerNo}号抽屉已经打开,请,加药");
options._data = 1;
next();
@ -213,6 +215,7 @@
}
if (index == drawerNos.Count - 1)
{
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
PortUtil.SpeakAsync($"加药完成,请,点击完成按钮进行确认");
this.status = 2;
string alertMessage = string.Empty;
@ -236,8 +239,8 @@
AfterQuantity[data[i].ChannelStocks[j].ColNo - 1] = await PortUtil.CheckQuantityForSingle(data[i].ChannelStocks[j].ColNo);
logger.Info($"称重抽屉,关抽屉后检测数量【{string.Join(",", AfterQuantity)}】");
WeightFinnalQuantity[data[i].ChannelStocks[j].ColNo - 1] = BeforeQuantity[data[i].ChannelStocks[j].ColNo - 1] - AfterQuantity[data[i].ChannelStocks[j].ColNo - 1];
if (data[i].Quantity != WeightFinnalQuantity[data[i].ChannelStocks[j].ColNo - 1])
WeightFinnalQuantity[data[i].ChannelStocks[j].ColNo - 1] = data[i].BeforeQuantity[data[i].ChannelStocks[j].ColNo - 1] - AfterQuantity[data[i].ChannelStocks[j].ColNo - 1];
if (data[i].ChannelStocks[j].Quantity != WeightFinnalQuantity[data[i].ChannelStocks[j].ColNo - 1])
{
//称重自动计数数量与实际要取数量不一致弹出提示,确认后保存数据
alertMessage += $"{data[i].Drug.DrugName}应取数量【{data[i].Quantity}】,实际取出数量【{WeightFinnalQuantity[data[i].ChannelStocks[j].ColNo - 1]}】";
@ -250,8 +253,8 @@
byte[] quantity = await PortUtil.CheckQuantityByDrawer(drawerNo);
AfterQuantity = quantity.Select(it => Convert.ToInt32(it)).ToArray().Skip(3).Take(9).ToArray();
logger.Info($"单支抽屉,关抽屉后检测数量【{string.Join(",", AfterQuantity)}】");
WeightFinnalQuantity[data[i].ChannelStocks[j].ColNo - 1] = BeforeQuantity[data[i].ChannelStocks[j].ColNo - 1] - AfterQuantity[data[i].ChannelStocks[j].ColNo - 1];
if (data[i].Quantity != WeightFinnalQuantity[data[i].ChannelStocks[j].ColNo - 1])
WeightFinnalQuantity[data[i].ChannelStocks[j].ColNo - 1] = data[i].BeforeQuantity[data[i].ChannelStocks[j].ColNo - 1] - AfterQuantity[data[i].ChannelStocks[j].ColNo - 1];
if (data[i].ChannelStocks[j].Quantity != WeightFinnalQuantity[data[i].ChannelStocks[j].ColNo - 1])
{
alertMessage += $"{data[i].Drug.DrugName}应取数量【{data[i].ChannelStocks[j].Quantity}】,实际取出数量【{WeightFinnalQuantity[data[i].ChannelStocks[j].ColNo - 1]}】";
}
@ -274,6 +277,8 @@
RestData();
logger.Info("取消保存");
cancelFlag = true;
// 关闭弹窗
dialogService.Close(false);
break;
}
else

View File

@ -18,12 +18,12 @@
<RadzenStack>
<RadzenDataGrid @ref="grid" Data="@data" ExpandMode="DataGridExpandMode.Multiple"
RowRender="@RowRender"
EmptyText="无数据" AllowAlternatingRows="false">
RowRender="@RowRender"
EmptyText="无数据" AllowAlternatingRows="false">
<Template Context="di">
<RadzenDataGrid Data="@di.ChannelStocks" EmptyText="无数据" @ref="di.Grid"
CellClick="@((DataGridCellMouseEventArgs<ChannelStock> args) => OnCellClick(args, di.Grid))">
CellClick="@((DataGridCellMouseEventArgs<ChannelStock> args) => OnCellClick(args, di.Grid))">
<Columns>
<RadzenDataGridColumn Title="库位" Property="DrawerNo">
<Template Context="s">
@ -115,7 +115,7 @@
}
async Task CancelOpera()
{
status = 0;
RestData();
dialogService.Close(false);
}
async Task OpenDrawer()
@ -166,7 +166,7 @@
PortUtil.DrawerNo = data[index].ChannelStocks[j].DrawerNo;// drawerNo;
PortUtil.ColNoLst.Add(data[index].ChannelStocks[j].ColNo);
BeforeQuantity[data[index].ChannelStocks[j].ColNo - 1] = await PortUtil.CheckQuantityForSingle(data[index].ChannelStocks[j].ColNo);
data[j].BeforeQuantity[data[index].ChannelStocks[j].ColNo - 1] = await PortUtil.CheckQuantityForSingle(data[index].ChannelStocks[j].ColNo);
logger.Info($"称重抽屉【{data[index].ChannelStocks[j].DrawerNo}】,开抽屉前检测数量【{string.Join(",", BeforeQuantity)}】");
await Task.Delay(200);
}
@ -209,6 +209,7 @@
var b = await PortUtil.OpenDrawerStatus(drawerNo);
if (b)
{
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
PortUtil.SpeakAsync($"{drawerNo}号抽屉已经打开,请,取药");
options._data = 1;
next();
@ -240,6 +241,7 @@
if (index == drawerNos.Count - 1)
{
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
PortUtil.SpeakAsync($"取药完成,请,点击完成按钮进行确认");
this.status = 2;
string alertMessage = string.Empty;
@ -262,8 +264,8 @@
AfterQuantity[data[i].ChannelStocks[j].ColNo - 1] = await PortUtil.CheckQuantityForSingle(data[i].ChannelStocks[j].ColNo);
logger.Info($"称重抽屉,关抽屉后检测数量【{string.Join(",", AfterQuantity)}】");
WeightFinnalQuantity[data[i].ChannelStocks[j].ColNo - 1] = BeforeQuantity[data[i].ChannelStocks[j].ColNo - 1] - AfterQuantity[data[i].ChannelStocks[j].ColNo - 1];
if (data[i].Quantity != WeightFinnalQuantity[data[i].ChannelStocks[j].ColNo - 1])
WeightFinnalQuantity[data[i].ChannelStocks[j].ColNo - 1] = data[i].BeforeQuantity[data[i].ChannelStocks[j].ColNo - 1] - AfterQuantity[data[i].ChannelStocks[j].ColNo - 1];
if (data[i].ChannelStocks[j].Quantity != WeightFinnalQuantity[data[i].ChannelStocks[j].ColNo - 1])
{
//称重自动计数数量与实际要取数量不一致弹出提示,确认后保存数据
alertMessage += $"{data[i].Drug.DrugName}应取数量【{data[i].Quantity}】,实际取出数量【{WeightFinnalQuantity[data[i].ChannelStocks[j].ColNo - 1]}】";
@ -296,6 +298,8 @@
RestData();
logger.Info("取消保存");
cancelFlag = true;
// 关闭弹窗
dialogService.Close(false);
break;
}
else
@ -370,6 +374,7 @@
void RestData()
{
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
this.status = 0;
this.BeforeQuantity = new int[9];
this.AfterQuantity = new int[9];

View File

@ -85,6 +85,9 @@
//称重取药数量
int[] WeightFinnalQuantity { get; set; } = new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
//开抽屉前操作标识
List<string> DrawerNoColNoList = new List<string>();
protected override async Task OnInitializedAsync()
{
data = await orderInfoDao.getTakeInfoByOrderNo(order.OrderNo);
@ -131,27 +134,32 @@
}
for (int i = 0; i < data.Count; i++)
{
if (data[i].ChannelStock.BoardType.ToString().Contains("6"))
if (!DrawerNoColNoList.Contains(data[i].ChannelStock.DrawerNo.ToString() + data[i].ChannelStock.ColNo))
{
PortUtil.DrawerNo = drawerNo;
PortUtil.ColNoLst.Add(data[i].ChannelStock.ColNo);
if (data[i].ChannelStock.BoardType.ToString().Contains("6"))
{
PortUtil.DrawerNo = data[i].ChannelStock.DrawerNo;
PortUtil.ColNoLst.Add(data[i].ChannelStock.ColNo);
orderTakeVo.BeforeQuantity[data[i].ChannelStock.ColNo - 1] = await PortUtil.CheckQuantityForSingle(data[i].ChannelStock.ColNo);
logger.Info($"称重抽屉,开抽屉前检测数量【{string.Join(",", orderTakeVo.BeforeQuantity)}】");
await Task.Delay(200);
}
data[i].BeforeQuantity[data[i].ChannelStock.ColNo - 1] = await PortUtil.CheckQuantityForSingle(data[i].ChannelStock.ColNo);
logger.Info($"称重抽屉,开抽屉前检测数量【{string.Join(",", orderTakeVo.BeforeQuantity)}】");
await Task.Delay(200);
}
//是药盒抽屉开药盒
if (data[i].ChannelStock.BoardType.ToString().Contains("3"))
{
PortUtil.DrawerNo = drawerNo;
await PortUtil.OpenBoxByColNo(data[i].ChannelStock.ColNo);
await Task.Delay(200);
//是药盒抽屉开药盒
if (data[i].ChannelStock.BoardType.ToString().Contains("3"))
{
PortUtil.DrawerNo = data[i].ChannelStock.DrawerNo;
await PortUtil.OpenBoxByColNo(data[i].ChannelStock.ColNo);
await Task.Delay(200);
}
DrawerNoColNoList.Add(data[i].ChannelStock.DrawerNo.ToString() + data[i].ChannelStock.ColNo);
}
}
var b = await PortUtil.OpenDrawerStatus(drawerNo);
if (b)
{
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
PortUtil.SpeakAsync($"{drawerNo}号抽屉已经打开,请,取药");
orderTakeVo.Status = 1;
next();
@ -188,6 +196,8 @@
PortUtil.AllLightOff();
if (options._data == drawerNos.Count - 1)
{
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
PortUtil.SpeakAsync($"取药完成,请,点击完成按钮进行确认");
this.status = 2;
string alertMessage = string.Empty;
@ -196,12 +206,12 @@
{
if (data[i].ChannelStock.BoardType.ToString().Contains("6"))
{
PortUtil.DrawerNo = drawerNo;
PortUtil.DrawerNo = data[i].ChannelStock.DrawerNo;// drawerNo;
PortUtil.ColNoLst.Add(data[i].ChannelStock.ColNo);
orderTakeVo.AfterQuantity[data[i].ChannelStock.ColNo - 1] = await PortUtil.CheckQuantityForSingle(data[i].ChannelStock.ColNo);
logger.Info($"称重抽屉,关抽屉后检测数量【{string.Join(",", orderTakeVo.AfterQuantity)}】");
WeightFinnalQuantity[data[i].ChannelStock.ColNo - 1] = orderTakeVo.BeforeQuantity[data[i].ChannelStock.ColNo - 1] - orderTakeVo.AfterQuantity[data[i].ChannelStock.ColNo - 1];
WeightFinnalQuantity[data[i].ChannelStock.ColNo - 1] = data[i].BeforeQuantity[data[i].ChannelStock.ColNo - 1] - orderTakeVo.AfterQuantity[data[i].ChannelStock.ColNo - 1];
if (data[i].Quantity != WeightFinnalQuantity[data[i].ChannelStock.ColNo - 1])
{
//称重自动计数数量与实际要取数量不一致弹出提示,确认后保存数据
@ -237,6 +247,8 @@
{
RestData();
logger.Info("取消保存");
// 关闭弹窗
dialogService.Close(false);
}
}
stop();
@ -275,6 +287,7 @@
void RestData()
{
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
this.status = 0;
data.ForEach(it =>
{
@ -283,12 +296,13 @@
it.AfterQuantity = new int[9];
});
this.WeightFinnalQuantity = new int[9];
DrawerNoColNoList.Clear();
}
void Cancel()
{
RestData();
// 关闭弹窗
dialogService.Close(true);
dialogService.Close(false);
}
async Task TakeFinish()
{

View File

@ -67,7 +67,7 @@
}
@if(status < 2)
{
<RadzenButton Click="@((args) => dialogService.Close(false))" Variant="Variant.Flat" Text="取消" Style="width: 120px" />
<RadzenButton Click="@Cancel" Variant="Variant.Flat" Text="取消" Style="width: 120px" />
}
</RadzenStack>
</RadzenStack>
@ -157,6 +157,7 @@
var b = await PortUtil.OpenDrawerStatus(drawerNo);
if (b)
{
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
PortUtil.SpeakAsync($"{drawerNo}号抽屉已经打开,请,放置退回药品");
options._data = 1;
next();
@ -187,6 +188,7 @@
}
if (index == drawerNos.Count - 1)
{
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
PortUtil.SpeakAsync($"退药完成,请,点击完成按钮进行确认");
this.status = 2;
stop();
@ -239,9 +241,15 @@
void RestData()
{
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
this.status = 0;
}
void Cancel()
{
RestData();
// 关闭弹窗
dialogService.Close(false);
}
async Task TakeFinish()
{

View File

@ -107,6 +107,7 @@
async Task CancelOpera()
{
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
status = 0;
dialogService.Close(false);
}
@ -163,6 +164,7 @@
var b = await PortUtil.OpenDrawerStatus(drawerNo);
if (b)
{
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
PortUtil.SpeakAsync($"{drawerNo}号抽屉已经打开,请,加药");
options._data = 1;
next();
@ -193,6 +195,7 @@
}
if (index == drawerNos.Count - 1)
{
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
PortUtil.SpeakAsync($"加药完成,请,点击完成按钮进行确认");
this.status = 2;
stop();

View File

@ -160,6 +160,7 @@
async Task CancelOpera()
{
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
status = 0;
dialogService.Close(false);
}
@ -203,6 +204,7 @@
var b = await PortUtil.OpenDrawerStatus(drawerNo);
if (b)
{
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
PortUtil.SpeakAsync($"{drawerNo}号抽屉已经打开,请放入空瓶");
options._data = 1;
next();
@ -231,6 +233,7 @@
{
PortUtil.AllLightOff();
}
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
PortUtil.SpeakAsync($"加药完成,请,点击完成按钮进行确认");
this.status = 2;
stop();

View File

@ -62,7 +62,7 @@
}
@if (status <= 2)
{
<RadzenButton Click="@((args) => dialogService.Close(false))" Variant="Variant.Flat" Text="取消" Style="width: 120px" />
<RadzenButton Click="@((args) => CancelOpera())" Variant="Variant.Flat" Text="取消" Style="width: 120px" />
}
</RadzenStack>
</RadzenStack>
@ -81,7 +81,8 @@
private bool CanTakeDrug = true;
//开抽屉前操作标识
List<string> DrawerNoColNoList = new List<string>();
public List<OrderTakeVo> data { get; set; }
//称重取药数量
int[] WeightFinnalQuantity { get; set; } = new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
@ -131,28 +132,33 @@
}
for (int i = 0; i < data.Count; i++)
{
if (data[i].ChannelStock.BoardType.ToString().Contains("6"))
if (!DrawerNoColNoList.Contains(data[i].ChannelStock.DrawerNo.ToString() + data[i].ChannelStock.ColNo))
{
PortUtil.DrawerNo = drawerNo;
PortUtil.ColNoLst.Add(data[i].ChannelStock.ColNo);
if (data[i].ChannelStock.BoardType.ToString().Contains("6"))
{
PortUtil.DrawerNo = data[i].ChannelStock.DrawerNo;
PortUtil.ColNoLst.Add(data[i].ChannelStock.ColNo);
orderTakeVo.BeforeQuantity[data[i].ChannelStock.ColNo - 1] = await PortUtil.CheckQuantityForSingle(data[i].ChannelStock.ColNo);
logger.Info($"称重抽屉,开抽屉前检测数量【{string.Join(",", orderTakeVo.BeforeQuantity)}】");
await Task.Delay(200);
}
data[i].BeforeQuantity[data[i].ChannelStock.ColNo - 1] = await PortUtil.CheckQuantityForSingle(data[i].ChannelStock.ColNo);
logger.Info($"称重抽屉,开抽屉前检测数量【{string.Join(",", data[i].BeforeQuantity)}】");
await Task.Delay(200);
}
//是药盒抽屉开药盒
if (data[i].ChannelStock.BoardType.ToString().Contains("3"))
{
PortUtil.DrawerNo = drawerNo;
await PortUtil.OpenBoxByColNo(data[i].ChannelStock.ColNo);
await Task.Delay(200);
//是药盒抽屉开药盒
if (data[i].ChannelStock.BoardType.ToString().Contains("3"))
{
PortUtil.DrawerNo = drawerNo;
await PortUtil.OpenBoxByColNo(data[i].ChannelStock.ColNo);
await Task.Delay(200);
}
DrawerNoColNoList.Add(data[i].ChannelStock.DrawerNo.ToString() + data[i].ChannelStock.ColNo);
}
}
var b = await PortUtil.OpenDrawerStatus(drawerNo);
if (b)
{
PortUtil.Operate = true;
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
PortUtil.SpeakAsync($"{drawerNo}号抽屉已经打开,请,取药");
orderTakeVo.Status = 1;
next();
@ -190,6 +196,7 @@
PortUtil.AllLightOff();
if (options._data == drawerNos.Count - 1)
{
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
PortUtil.SpeakAsync($"取药完成,请,点击完成按钮进行确认");
this.status = 2;
string alertMessage = string.Empty;
@ -218,7 +225,7 @@
byte[] quantity = await PortUtil.CheckQuantityByDrawer(drawerNo);
orderTakeVo.AfterQuantity = quantity.Select(it => Convert.ToInt32(it)).ToArray().Skip(3).Take(9).ToArray();
logger.Info($"单支抽屉,关抽屉后检测数量【{string.Join(",", orderTakeVo.AfterQuantity)}】");
WeightFinnalQuantity[data[i].ChannelStock.ColNo - 1] = orderTakeVo.BeforeQuantity[data[i].ChannelStock.ColNo - 1] - orderTakeVo.AfterQuantity[data[i].ChannelStock.ColNo - 1];
WeightFinnalQuantity[data[i].ChannelStock.ColNo - 1] = data[i].BeforeQuantity[data[i].ChannelStock.ColNo - 1] - orderTakeVo.AfterQuantity[data[i].ChannelStock.ColNo - 1];
if (data[i].Quantity != WeightFinnalQuantity[data[i].ChannelStock.ColNo - 1])
{
alertMessage += $"{data[i].Drug.DrugName}应取数量【{orderTakeVo.Quantity}】,实际取出数量【{WeightFinnalQuantity[data[i].ChannelStock.ColNo - 1]}】";
@ -239,6 +246,8 @@
{
RestData();
logger.Info("取消保存");
// 关闭弹窗
dialogService.Close(false);
}
}
stop();
@ -288,9 +297,14 @@
}
});
}
async Task CancelOpera()
{
RestData();
dialogService.Close(false);
}
void RestData()
{
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
this.status = 0;
}

View File

@ -173,6 +173,7 @@
var b = await PortUtil.OpenDrawerStatus(this.drawerNo);
if (b)
{
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
PortUtil.SpeakAsync($"{drawerNo}号抽屉已经打开,请,盘点");
this.status = 2;
next();
@ -196,6 +197,7 @@
// 关闭则改变状态并终止循环
if (b)
{
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
PortUtil.SpeakAsync($"盘点完成,请,核对,或,录入,正确的,盘点数量");
this.status = 3;
stop();
@ -236,6 +238,7 @@
void RestData()
{
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
this.status = 0;
this.BeforeQuantity = new int[9];
this.AfterQuantity = new int[9];
@ -255,7 +258,7 @@
else
{
_message.Notify(new NotificationMessage { Severity = NotificationSeverity.Info, Summary = "提示", Detail = $"盘点完成", Duration = 4000 });
logger.Error($"盘点完成");
logger.Info($"盘点完成");
}
}
@ -268,7 +271,7 @@
void Cancel()
{
this.status = 0;
RestData();
}
void SelectDrawer(int drawerNo)

View File

@ -137,12 +137,14 @@
void backHome()
{
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
currentPage = false;
na.NavigateTo("");
}
void logout()
{
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
globalStateService.Operator = null;
globalStateService.Reviewer = null;
na.NavigateTo("");

View File

@ -7,8 +7,8 @@
},
"setting": {
"machineId": "DM1",
"storage": null,
"loginMode": 2,
"storage": 1,
"loginMode": 1,
"opFirst": true,
//退,0退
"autoOutLog": 0