Compare commits

...

42 Commits

Author SHA1 Message Date
maqiao fd8cc27d34 修改凌晨生成的日结时间为当天的23:59:59 2025-10-29 11:44:42 +08:00
maqiao 2c0d79d1dd 更新管理员核对时使用量与剩余量 2025-10-29 08:52:50 +08:00
maqiao a8d9fa0225 修改手术室报表日期字段取 2025-10-28 14:22:41 +08:00
maqiao d3eaef9170 修改手术室报表日期字段取 2025-10-28 13:44:40 +08:00
maqiao 8ed320bc48 更新配置文件 2025-10-24 11:37:27 +08:00
maqiao 52769b3030 去掉用户实体中药箱号字段 2025-10-24 09:19:15 +08:00
maqiao acdecc8700 麻醉师核对去掉取药箱、还药箱 2025-10-21 16:41:58 +08:00
maqiao de36bbafcc 修改权限中余液表中取数据页面 2025-10-16 11:42:16 +08:00
maqiao 042470e390 修改报表模板 2025-10-16 10:26:00 +08:00
马巧 443bd58414 user_list表添加Box_Num字段。ALTER TABLE channel_list MODIFY COLUMN drawer_state INT DEFAULT 1;update channel_list setdrawer_state=1 where machine_id='DM5' 2025-09-28 09:22:31 +08:00
马巧 157f88d629 修改报表、改取余液表数据对待核对,余液表添加dm_status、quantity字段。
account_book_g2表添加Use_Dose、Residual_Dose字段
2025-09-24 13:57:57 +08:00
马巧 d8d08559f3 更新核对时出库账册的批次库存数 2025-08-27 11:48:58 +08:00
马巧 500974a947 入库后报表的批次库存数(实物)与上一次出库后的批次库存数差别大,修改可能存在的问题 2025-08-21 14:59:37 +08:00
马巧 bb0710b8bb 报表日期查询添加时间 2025-07-28 15:17:33 +08:00
马巧 381381d65e 修改报表 2025-07-24 10:36:48 +08:00
马巧 dcd6200e54 修改录屏方式 2025-07-21 15:23:49 +08:00
马巧 e79cdae0da 添加录屏功能,添加可多次加药,毒麻柜无药则显示无库存或未绑定,对应的药品先不补 2025-07-10 11:53:28 +08:00
马巧 a5d5a4aa40 盘点时删除药品中批次库存为0的记录channel_stock与channel_list.
移出药箱药品时修改查询及插入字段信息。
修改药品基数时更新channel_stock下所有药品的基数及需要加药数
2025-07-04 10:56:02 +08:00
maqiao 701f6c88e6 交换交接柜中的药品时没有批次的把基数写入 2025-06-20 09:17:12 +08:00
maqiao 5970654ffe 修改核对麻醉单时修改channelList状态
替换药箱bug修改
2025-06-19 14:22:51 +08:00
maqiao 6b99940f50 channel_stok实体类型drawer_type添加默认值1
交接柜入库数据添加日志
移出为位中添加是否选择药品判断
自动退出时添加关掉弹窗
所有批次列宽度调整
2025-05-23 13:20:20 +08:00
maqiao e41db97fd0 更新报表及模板 2025-05-16 10:56:38 +08:00
maqiao b95d42d39d 修改余液处理时间字段取值 2025-05-13 16:56:35 +08:00
maqiao 4e50d926f3 账册查询按不带时间的字段排序 2025-04-30 17:18:29 +08:00
maqiao a094e35fb5 将模板中效期字段改为字符串 2025-04-30 17:11:45 +08:00
maqiao bf4db0096a 添加账册报表 2025-04-30 16:42:42 +08:00
maqiao 88f7ccc7f8 写channel_stock表时同时写效期字段 2025-04-28 14:52:14 +08:00
maqiao e6b300ed00 添加药品移动至其药箱、替换其他药箱药品 2025-04-25 15:16:31 +08:00
maqiao 39ad688a43 有待取药或待入库药品不管 2025-04-23 15:03:02 +08:00
maqiao 27c9afd75f 添加盘点功能 2025-04-23 14:14:02 +08:00
maqiao cec943d500 绑定时channel_list表中col_no由获取总行数改为获取最大值 2025-04-22 17:32:18 +08:00
maqiao 169a261847 交接柜绑药中批次列宽修改 2025-04-11 14:08:58 +08:00
maqiao 9f2e04ba2d 药品绑定页面修改批次宽度 2025-04-11 14:02:24 +08:00
maqiao 7e91a2136b 交接柜补药页面启用channnel_list表 2025-04-11 13:39:50 +08:00
maqiao 1d27a080fa 修改药品基数时如果新基数大于原则需要补药数量为新基数减去原基数 2025-03-22 14:58:53 +08:00
maqiao af620ae141 交接柜添加紧急开锁功能 2025-03-04 15:39:35 +08:00
maqiao e917275436 连不上数据库添加应急开锁 2025-03-03 15:11:51 +08:00
maqiao f539b988ac 说明文件添加忽略 2025-02-14 09:06:33 +08:00
maqiao 54ab9a6801 退出软件断开与板子的连接 2025-01-18 15:07:56 +08:00
maqiao 386a663026 退出软件断开与板子连接 2025-01-18 09:39:33 +08:00
maqiao 5d04921387 与板子断连重连间隔时间为2s。添加跳转登录时空页面跳转。交接柜补药开手术间添加检查交接柜状态。 2025-01-15 18:51:32 +08:00
maqiao 4f5fb169d3 绑定药品手术间号不对问题修复。核对药品处方与用药明细改成一对一 2025-01-10 11:21:38 +08:00
81 changed files with 10571 additions and 946 deletions

3
.gitignore vendored
View File

@ -360,4 +360,5 @@ MigrationBackup/
.ionide/
# Fody - auto-generated XML schema
FodyWeavers.xsd
FodyWeavers.xsd
/说明.txt

View File

@ -4,6 +4,7 @@
<TargetFramework>net6.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<UseWPF>true</UseWPF>
<Platforms>AnyCPU;x64</Platforms>
</PropertyGroup>
<ItemGroup>

View File

@ -31,8 +31,8 @@ Global
{439FA76B-F874-40DB-BAF2-E3647CD55B10}.Release|x86.Build.0 = Debug|x86
{7F9FA18B-5C28-476E-97D4-B5504B8DEB9B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7F9FA18B-5C28-476E-97D4-B5504B8DEB9B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7F9FA18B-5C28-476E-97D4-B5504B8DEB9B}.Debug|x64.ActiveCfg = Debug|Any CPU
{7F9FA18B-5C28-476E-97D4-B5504B8DEB9B}.Debug|x64.Build.0 = Debug|Any CPU
{7F9FA18B-5C28-476E-97D4-B5504B8DEB9B}.Debug|x64.ActiveCfg = Debug|x64
{7F9FA18B-5C28-476E-97D4-B5504B8DEB9B}.Debug|x64.Build.0 = Debug|x64
{7F9FA18B-5C28-476E-97D4-B5504B8DEB9B}.Debug|x86.ActiveCfg = Debug|Any CPU
{7F9FA18B-5C28-476E-97D4-B5504B8DEB9B}.Debug|x86.Build.0 = Debug|Any CPU
{7F9FA18B-5C28-476E-97D4-B5504B8DEB9B}.Release|Any CPU.ActiveCfg = Release|Any CPU

View File

@ -3,7 +3,7 @@
<connectionStrings>
<!-- 数据库连接字符串 -->
<!--<add name="database" connectionString="server=127.0.0.1;database=wpf_dm_program;userid=root;password=qq1223" />-->
<add name="database" connectionString="server=127.0.0.1;port=3306;database=xiangtan_mazuike_xx;userid=root;password=root" />
<add name="database" connectionString="server=127.0.0.1;port=3306;database=xt;userid=root;password=qq1223" />
</connectionStrings>
<!--<runtime>
--><!--配置之后Appdomain.CurrentDomain.UnhandledException 事件的 IsTerminating 就变成了 false 啦!也就是说,程序并不会因为这次的异常而崩溃退出。--><!--
@ -42,7 +42,7 @@
<!-- 无操作退出录像时间单位秒为0时不退出录像 -->
<add key="stopRecord" value="180"/>
<add key="gridConnectionString" value="MYSQL; Database=xiangxiang; Password=root; Port=3306; Server=127.0.0.1; User=root;"/>
<add key="gridConnectionString" value="MYSQL; Database=xt; Password=qq1223; Port=3306; Server=127.0.0.1; User=root;"/>
<!-- 查询处方是orderNo还是orderGroupNo -->
<add key="OrderNoName" value="orderNo" />
<!-- 后门耗材板地址 没有则填写0-->
@ -69,9 +69,7 @@
<!--冰箱抽屉温度区间-->
<add key="temperatureRange" value="2-8"/>
<!--冰箱抽屉温度-->
<add key="temperatureValue" value="3.2"/>
<!--温度查询定时执行时间-->
<add key="Interval" value="60000"/>
<add key="temperatureValue" value="3.2"/>
<!--冰箱状态1关闭0打开-->
<add key="FridgeState" value="0"/>
<!--报警状态1关闭0打开-->
@ -99,7 +97,7 @@
<!-- 指纹机号码 -->
<add key="machineNumber" value="1"/>
<!-- 指纹机ip -->
<add key="fingerIp" value="192.168.50.201"/>
<add key="fingerIp" value="192.168.50.59"/>
<!-- 多处方取药 0:不启用 1启用-->
<add key="MultiOrder" value="1"/>
@ -124,6 +122,5 @@
<add key="wsdSerialPort" value="COM1"/>
<!--温度查询定时执行时间-->
<add key="Interval" value="60000"/>
<add key="test" value="Y"/>
</appSettings>
</configuration>

View File

@ -25,6 +25,7 @@ namespace DM_Weight
/// </summary>
public partial class App : PrismApplication
{
public static bool DbConnectionFail { get; set; } = false;
private readonly ILog logger = LogManager.GetLogger(typeof(App));
public App()
{
@ -52,7 +53,11 @@ namespace DM_Weight
void OnDispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
{
logger.Error($"发生错误:{e.Exception.Message}");
e.Handled = true;
e.Handled = true; if (e.Exception.Message.Contains("连接数据库过程中发生错误"))
{
DbConnectionFail = true;
Container.Resolve<MainWindow>();
}
}
void OnUnobservedTaskException(object sender, UnobservedTaskExceptionEventArgs e)
@ -169,6 +174,11 @@ namespace DM_Weight
containerRegistry.RegisterForNavigation<CheckSelfOrderWindow, CheckSelfOrderWindowViewModel>();
//管理员根据药箱进行核对处方
containerRegistry.RegisterForNavigation<CheckOrderNewWindowNew, CheckOrderNewWindowNewViewModel>();
//麻醉师核对其名下单子
containerRegistry.RegisterForNavigation<CheckSelfOrderWindowNew, CheckSelfOrderWindowNewViewModel>();
#endregion
@ -284,6 +294,20 @@ namespace DM_Weight
containerRegistry.RegisterForNavigation<SetMenuWindow, SetMenuWindowViewModel>();
containerRegistry.RegisterDialog<AddNewMenuDialog>();
containerRegistry.RegisterForNavigation<AddNewMenuDialog, AddNewMenuDialogViewModel>();
//盘点
containerRegistry.RegisterForNavigation<CheckStockWindow, CheckStockWindowViewModel>();
containerRegistry.RegisterDialog<ConfirmDialog>();
containerRegistry.RegisterForNavigation<ConfirmDialog, ConfirmDialogViewModel>();
//账册
containerRegistry.RegisterForNavigation<AccountWindow, AccountWindowViewModel>();
//药品转移药箱
containerRegistry.RegisterForNavigation<ExchangeWindow, ExchangeWindowViewModel>();
containerRegistry.RegisterForNavigation<ExchangeDialog, ExchangeDialogViewModel>();
containerRegistry.RegisterForNavigation<RemoveDialog, RemoveDialogViewModel>();
containerRegistry.RegisterDialog<ExchangeDialog>();
containerRegistry.RegisterDialog<RemoveDialog>();
#endregion
// 设备记录页面
@ -291,6 +315,22 @@ namespace DM_Weight
containerRegistry.RegisterForNavigation<ShowMessageDialog, ShowMessageDialogViewModel>();
//空页面用于跳出登录时跳转以避免不走OnNavigatedFrom情况
containerRegistry.RegisterForNavigation<EmptyWindow, EmptyWindowViewModel>();
//紧急开锁页面
containerRegistry.RegisterForNavigation<EmergencyWindow, EmergencyWindowViewModel>();
//日期加时间页面
containerRegistry.RegisterDialog<DatetimeDialog>();
containerRegistry.RegisterForNavigation<DatetimeDialog, DatetimeDialogViewModel>();
containerRegistry.RegisterDialog<SelectOperationTypeDialog>();
containerRegistry.RegisterForNavigation<SelectOperationTypeDialog, SelectOperationTypeDialogViewModel>();
containerRegistry.RegisterForNavigation<CheckSelfOrderForAdmin, CheckSelfOrderForAdminViewModel>();
logger.Info("结束APP-RegisterTypes");
}

View File

@ -76,7 +76,11 @@ namespace DM_Weight.Converter
default:
break;
}
int SelectedDrawerNo = int.Parse(value[1].ToString());
int SelectedDrawerNo = int.Parse(value[1].ToString());
if (value.Count() >= 3 && value[2] != null)
{
SelectedDrawerNo -= 1;
}
return ButtonDrawerNo == SelectedDrawerNo;
}

View File

@ -0,0 +1,50 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Data;
namespace DM_Weight.Converter
{
internal class TakeReturnConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
int status = int.Parse(value.ToString());
//取药箱
if (parameter.ToString().Equals("TakeBox"))
{
if (status == 0)
{
return Visibility.Visible;
}
else
{
return Visibility.Collapsed;
}
}
//还药箱
if (parameter.ToString().Equals("ReturnBox"))
{
if (status == 1)
{
return Visibility.Visible;
}
else
{
return Visibility.Collapsed;
}
}
return Visibility.Collapsed;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}

View File

@ -98,6 +98,9 @@
<None Update="log4net.config">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="ReportTemp\account_book_new.grf">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="ReportTemp\account_book_temp.grf">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>

View File

@ -148,5 +148,21 @@ namespace DM_Weight.Models
/// </summary>
[SugarColumn(IsIgnore =true)]
public string ReviewerName { get;set; }
/// <summary>
/// 手术间
/// </summary>
[SugarColumn(ColumnName = "shoushuJian")]
public string ShoushuJian { get;set; }
/// <summary>
/// 使用剂量
/// </summary>
[SugarColumn(ColumnName = "Use_Dose")]
public string UseDose { get; set; }
/// <summary>
/// 剩余剂量
/// </summary>
[SugarColumn(ColumnName = "Residual_Dose")]
public string ResidualDose { get; set; }
}
}

View File

@ -209,5 +209,12 @@ namespace DM_Weight.Models
private string _drugSpec;
[SugarColumn(ColumnName = "drug_manu_no")]
public string DrugSpec { get=> _drugSpec;set=>SetProperty(ref _drugSpec, value); }
//药箱对应药品基数
[SugarColumn(ColumnName = "Stock_Quantity")]
public int BaseQuantity
{
get; set;
}
}
}

View File

@ -78,7 +78,7 @@ namespace DM_Weight.Models
/// 默认值: 1
///</summary>
[SugarColumn(ColumnName = "drawer_type")]
public int DrawerType { get; set; }
public int DrawerType { get; set; } = 1;
/// <summary>
///
/// 默认值: 1

View File

@ -73,7 +73,7 @@ namespace DM_Weight.Models
[SugarColumn(ColumnName = "eff_date")]
public DateTime? EffDate { get; set; }
/// <summary>
/// 出库入库类型(1入库2出库31还药32还空瓶)
/// 出库入库类型(1入库2出库31还药32还空瓶,21药箱移出移入,69药箱替换55绑定药品操作绑定、解绑、修改基数) 70取出药箱、71还回药箱
///</summary>
[SugarColumn(ColumnName = "type")]
public int Type { get; set; }
@ -103,10 +103,10 @@ namespace DM_Weight.Models
[SugarColumn(ColumnName = "department_id")]
public string DepartmentId { get; set; }
/// <summary>
/// 是否已经退药(0:没有1:还了部分2:完成)
/// 是否已经退药(0:没有1:还了部分2:完成) 取出药箱70还回药箱71
/// 默认值: 0
///</summary>
[SugarColumn(ColumnName = "status", IsOnlyIgnoreInsert = true)]
[SugarColumn(ColumnName = "status")]
public int Status { get; set; }
/// <summary>
/// 退药量

View File

@ -0,0 +1,39 @@
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DM_Weight.Models
{
/// <summary>
/// 药箱药品移动记录表
/// </summary>
[SugarTable("move_channel_stock")]
public class MoveChannelStock
{
//[SugarColumn(ColumnName ="id",IsPrimaryKey =true)]
//public int Id { get; set; }
[SugarColumn(ColumnName = "machine_id")]
public string MachineId{get;set;}
[SugarColumn(ColumnName = "drug_id")]
public string DrugId { get; set; }
[SugarColumn(ColumnName = "quantity")]
public int Quantity { get; set; }
[SugarColumn(ColumnName = "From_manu_no")]
public string FromManuNo { get; set; }
[SugarColumn(ColumnName = "operator")]
public int? Operator { get; set; }
[SugarColumn(ColumnName = "reviewer")]
public int? Reviewer { get; set; }
[SugarColumn(ColumnName = "type")]
public int Type { get; set; }
[SugarColumn(ColumnName = "FromDrawer")]
public int FromDrawer { get; set; }
[SugarColumn(ColumnName = "ToDrawer")]
public int ToDrawer { get; set; }
[SugarColumn(ColumnName = "To_manu_no")]
public string ToManuNo { get; set; }
}
}

View File

@ -1,14 +1,15 @@
using System;
using Prism.Mvvm;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SqlSugar;
namespace DM_Weight.Models
{
[SugarTable("surgical_residual")]
public class SurgicalResidual
public class SurgicalResidual : BindableBase
{
//[SugarColumn(ColumnName = "id")]
//public int Id { get; set; }
@ -23,7 +24,7 @@ namespace DM_Weight.Models
//public string residual_dose { get; set; }
[SugarColumn(ColumnName = "create_time")]
public string CreateTime { get; set; }
public DateTime CreateTime { get; set; }
//使用量
[SugarColumn(ColumnName = "use_dose")]
public string UseDose { get; set; }
@ -35,11 +36,35 @@ namespace DM_Weight.Models
//余液处置时间
[SugarColumn(ColumnName = "disposal_time")]
public string DisposalTime { get; set; }
//数量
[SugarColumn(ColumnName = "quantity")]
public int Quantity { get; set; }
//病人ID
[SugarColumn(ColumnName = "patient_id")]
public string PatientId { get; set; }
//病人
[SugarColumn(ColumnName = "patient_name")]
public string PName { get; set; }
//性别
[SugarColumn(ColumnName = "sex")]
public string Sex { get; set; }
//毒麻柜使用的状态
[SugarColumn(ColumnName = "dm_status")]
public int DmStatus { get; set; }
//批次
[SugarColumn(ColumnName = "manu_no")]
public string ManuNo { get; set; }
//麻醉师工号
[SugarColumn(ColumnName = "anaesthetist_code")]
public string DoctorCode { get; set; }
//药品信息
[Navigate(NavigateType.ManyToOne, nameof(DrugId))]
public DrugInfo DrugInfo { get; set; }
//使用量+单位
[SugarColumn(IsIgnore = true)]
public string UseDoseInfo
{
get => UseDose==null ? "" : UseDose + DoseUnit;
get => UseDose == null ? "" : UseDose + DoseUnit;
}
/// <summary>
/// 剩余量+单位
@ -49,5 +74,11 @@ namespace DM_Weight.Models
{
get => ResidualDose == null ? "" : ResidualDose + DoseUnit;
}
/// <summary>
/// 是否选中
/// </summary>
private bool _itemIsChecked;
[SugarColumn(IsIgnore = true)]
public bool ItemIsChecked { get => _itemIsChecked; set => SetProperty(ref _itemIsChecked, value); }
}
}

View File

@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DM_Weight.Models
{
public class TotalDrug
{
public string DrugName { get; set; }
public int TotalCount { get; set; }
}
}

View File

@ -73,5 +73,8 @@ namespace DM_Weight.Models
{
return "userList = [UserName:" + Nickname + ", UserId:" + UserName + "]";
}
}
//保存用户已取药箱的药箱号
//[SugarColumn(ColumnName = "Box_Num")]
//public string BoxNumber { get; set; }
}
}

View File

@ -4,6 +4,7 @@ using DM_Weight.util;
using DM_Weight.ViewModels;
using log4net;
using Mina.Core.Future;
using Mina.Core.Session;
using Mina.Filter.Codec;
using Mina.Filter.Logging;
using Mina.Transport.Socket;
@ -25,18 +26,18 @@ namespace DM_Weight.Port
private readonly ILog logger = LogManager.GetLogger(typeof(SocketHelper));
AsyncSocketConnector acceptor = new AsyncSocketConnector();
IConnectFuture iConnectFuture;
public bool OpenStatus=false;
public bool OpenStatus = false;
public bool ConnectedStatus = false;
//多线程退出标识
public bool IsMultiThread = false;
string ip = ConfigurationManager.AppSettings["modbusIp"].ToString();
int port =Convert.ToInt32(ConfigurationManager.AppSettings["modbusPort"]);
int port = Convert.ToInt32(ConfigurationManager.AppSettings["modbusPort"]);
IEventAggregator _eventAggregator;
FingerprintUtil _fingerprintUtil;
public DateTime dateTime { get; set; } = DateTime.Now;
public SocketHelper(IEventAggregator eventAggregator, FingerprintUtil fingerprintUtil)
{
_fingerprintUtil= fingerprintUtil;
_fingerprintUtil = fingerprintUtil;
_eventAggregator = eventAggregator;
acceptor.ExceptionCaught += (o, e) =>
{
@ -59,18 +60,22 @@ namespace DM_Weight.Port
OpenStatus = (bool)e.Message;
logger.Info("MessageReceived>>>>>>>>>>>>>>>>" + OpenStatus);
};
acceptor.SessionClosed += (o, e) =>
{
logger.Info("SessionClosed");
//Task.Delay(50).Wait();
SocketConnect();
Task.Factory.StartNew(() =>
{
_fingerprintUtil.FingerDisconnect();
});
};
acceptor.SessionClosed += new EventHandler<IoSessionEventArgs>(SessionCloseMethod);
//acceptor.SessionClosed += (o, e) =>
//{
// logger.Info($"SessionClosed;ExitFlag:{ExitFlag}");
// //Task.Delay(50).Wait();
// if (!ExitFlag)
// {
// SocketConnect();
// Task.Factory.StartNew(() =>
// {
// _fingerprintUtil.FingerDisconnect();
// });
// }
//};
this.SocketConnect();
}
int i = 0;
@ -90,7 +95,7 @@ namespace DM_Weight.Port
else
{
logger.Error($"尝试{i}次连接后均连接不上");
//AlertMsg alertMsg = new AlertMsg
//{
// Message = $"网口连接断开!",
@ -106,9 +111,32 @@ namespace DM_Weight.Port
ConnectedStatus = iConnectFuture.Connected;
}
private void SessionCloseMethod(System.Object o, IoSessionEventArgs e)
{
logger.Info($"SessionClosed");
SocketConnect();
Task.Factory.StartNew(() =>
{
_fingerprintUtil.FingerDisconnect();
});
}
public void SocketDisConnect()
{
try
{
acceptor.SessionClosed -= new EventHandler<IoSessionEventArgs>(SessionCloseMethod);
iConnectFuture.Session.CloseNow();
}
catch (Exception ex)
{
logger.Info($"SocketDisConnect异常{ex.Message}");
}
}
public void SendMessage(MyBaseMessage baseMessage)
{
if(!ConnectedStatus)
if (!ConnectedStatus)
{
SocketConnect();
}

View File

@ -365,5 +365,42 @@ namespace DM_Weight.Report
Report.PrintPreview(true);
}
public static void PrintReportAccountBook(DateTime? startDate, DateTime? endDate, string drug_id)
{
// 定义Grid++Report报表主对象
GridppReport Report = new GridppReport();
// 加载模板文件
Report.LoadFromFile(new FileInfo(AppDomain.CurrentDomain.BaseDirectory) + "ReportTemp//" + "account_book_new.grf");
Report.DetailGrid.Recordset.ConnectionString = gridConnectionString;
DateTime? p_startDate = startDate?? Convert.ToDateTime("2010-1-1");
DateTime? p_endDate = endDate ?? DateTime.Now.AddDays(1);
string p_machine_id = (ConfigurationManager.AppSettings["machineId"] ?? "DM1");
string SQL = $@" select ab.drug_id, ab.type,
di.drug_name AS DrugName,di.Drug_spec AS DrugSpec,di.big_unit AS BigUnit,di.small_unit AS SmallUnit, DATE_FORMAT(ab.create_date,'%Y/%m/%d') AS oldYearMD,
DATE_FORMAT(ab.create_time,'%Y/%m/%d %H:%i:%s') AS YearMD,ab.manu_no AS ManuNo,DATE_FORMAT(ab.eff_date,'%Y%m%d') AS effDate,IF(ab.type=2,'',ab.add_quantity) AS InQuantity,ab.shoushuJian AS shoushuJian,
re.Patient_name AS PName,re.sex AS Sex,re.age AS Age,IF(ab.type=3,ab.use_dose,re.use_dose) AS UseDose,IF(ab.type=3,ab.residual_dose,re.residual_dose) AS ResidualDose,re.create_time AS DiposalTime
,re.operator_name, ab.manu_stock AS Stock,ab.total_stock AS empty,ab.total_stock,UL.User_name AS SendUser,
IF(ab.type=1,UL.User_name,UL2.User_name) AS InCheckUser,
re.supervisor_name AS CheckUser,ab.manu_stock,ab.total_stock,ab.user_id1,ab.user_id2,ab.out_Quantity
,DB.BASEQUANTITY AS BaseQuantity,re.card_no AS ZYH,oi.dept_name AS KS,re.anaesthetist_name AS YS,
IF(ab.`type`=1,'',UL.User_name) AS emptyUser,
(SELECT sum(quantity) from channel_stock cs where cs.drug_id=ab.drug_id and cs.manu_no=ab.manu_no and cs.machine_id in('DM3','DM5')) AS CurrentStock
from account_book_g2 ab inner join drug_info di on ab.drug_id=di.Drug_ID
LEFT JOIN DRUG_BASE DB ON di.DRUG_ID=DB.DRUGID AND DB.MACHINE_ID='DM3'
LEFT JOIN order_info_sm oi on ab.invoice_no=oi.order_no
LEFT JOIN user_list UL ON ab.user_id1=UL.ID
LEFT JOIN user_list UL2 ON ab.user_id2=UL.ID
LEFT JOIN surgical_residual re on ab.invoice_no=re.order_no WHERE ab.machine_id='DM3' and ab.type in(1,2,3) and
ab.create_time>'{p_startDate}' AND ab.create_time<'{p_endDate}' ";
if (!string.IsNullOrEmpty(drug_id))
{
SQL += " AND ab.drug_id='" + drug_id + "' ";
}
SQL += " ORDER BY ab.create_time,ab.drug_id,ab.Manu_No,ab.id ";
Report.DetailGrid.Recordset.QuerySQL = SQL;
Report.PrintPreview(true);
}
}
}

View File

@ -0,0 +1,712 @@
{
"Version":"6.8.1.1",
"Font":{
"Name":"宋体",
"Size":105000,
"Weight":400,
"Charset":134
},
"Printer":{
"Oriention":"Landscape",
"TopMargin":0.3175,
"RightMargin":1,
"BottomMargin":0.3969
},
"DetailGrid":{
"CenterView":true,
"Recordset":{
"QuerySQL":"SELECT \r\n dmr.`drawer_no` AS drawerNo,\r\n dmr.`col_no` AS colNo,\r\n dmr.`type` AS `type`,\r\n CONCAT(dmr.`quantity`,IF(dmr.`type`=32,\"(空瓶)\",\"\")) AS quantity,\r\n dmr.`manu_no` AS manuNo,\r\n dmr.`eff_date` AS effDate,\r\n dmr.`operation_time` AS operationTime,\r\n di.`drug_name` AS drugName,\r\n di.`drug_spec` AS drugSpec,\r\n di.`pack_unit` AS packUnit,\r\n di.`manufactory` AS manuFactory,\r\n di.`max_stock` AS baseQuantity,\r\n dmr.`drug_id` AS drugId,\r\n ul.`user_name` AS nickname\r\nFROM\r\n dm_machine_record dmr\r\nLEFT JOIN drug_info di ON di.`drug_id` = dmr.`drug_id`\r\nLEFT JOIN user_list ul ON ul.`id` = dmr.`Operator`\r\nWHERE dmr.`type` in (31, 32)\r\n AND dmr.`machine_id` = :machine_id\r\n AND dmr.`operation_time` > :startDate\r\n AND dmr.`operation_time` < :endDate",
"Field":[
{
"Name":"药品名称",
"DBFieldName":"DrugName"
},
{
"Name":"日期",
"DBFieldName":"YearMD"
},
{
"Name":"批号",
"DBFieldName":"ManuNo"
},
{
"Name":"效期",
"Format":"yyyy/MM/dd",
"DBFieldName":"effDate"
},
{
"Name":"领入",
"DBFieldName":"InQuantity"
},
{
"Name":"规格",
"DBFieldName":"DrugSpec"
},
{
"Name":"大单位",
"DBFieldName":"BigUnit"
},
{
"Name":"小单位",
"DBFieldName":"SmallUnit"
},
{
"Name":"基数",
"DBFieldName":"BaseQuantity"
},
{
"Name":"手术间",
"DBFieldName":"shoushuJian"
},
{
"Name":"患者姓名",
"DBFieldName":"PName"
},
{
"Name":"性别",
"DBFieldName":"Sex"
},
{
"Name":"年龄",
"DBFieldName":"Age"
},
{
"Name":"住院号",
"DBFieldName":"ZYH"
},
{
"Name":"科室",
"DBFieldName":"KS"
},
{
"Name":"使用剂量",
"DBFieldName":"UseDose"
},
{
"Name":"剩余剂量",
"DBFieldName":"ResidualDose"
},
{
"Name":"余液处理时间",
"DBFieldName":"DiposalTime"
},
{
"Name":"医师",
"DBFieldName":"YS"
},
{
"Name":"复核人",
"DBFieldName":"CheckUser"
},
{
"Name":"实物",
"DBFieldName":"Stock"
},
{
"Name":"空瓶",
"DBFieldName":"empty"
},
{
"Name":"发药人",
"DBFieldName":"SendUser"
},
{
"Name":"领药人",
"DBFieldName":"InUser"
},
{
"Name":"领药复核人",
"DBFieldName":"InCheckUser"
},
{
"Name":"空瓶回收人",
"DBFieldName":"emptyUser"
},
{
"Name":"批次库存",
"DBFieldName":"CurrentStock"
}
]
},
"Column":[
{
"Name":"日期",
"Width":2.77813
},
{
"Name":"批次",
"Width":2.19604
},
{
"Name":"有效期",
"Width":2.77813
},
{
"Name":"领入",
"Width":0.820208
},
{
"Name":"手术间",
"Width":0.79375
},
{
"Name":"患者姓名",
"Width":1.61396
},
{
"Name":"性别",
"Width":1.00542
},
{
"Name":"年龄",
"Width":0.79375
},
{
"Name":"住院号",
"Width":1.5875
},
{
"Name":"科室",
"Width":2.2225
},
{
"Name":"使用剂量",
"Width":1.82563
},
{
"Name":"剩余剂量",
"Width":1.5875
},
{
"Name":"余液处理时间",
"Width":2.59292
},
{
"Name":"医师",
"Width":1.5875
},
{
"Name":"复核人",
"Width":1.79917
},
{
"Name":"空瓶回收人",
"Width":1.5875
},
{
"Name":"Column7",
"Width":1.61396
},
{
"Name":"实物",
"Width":1.40229
},
{
"Name":"空瓶",
"Width":1.19063
},
{
"Name":"发药人",
"Width":1.79917
},
{
"Name":"Column2",
"Width":1.79917
},
{
"Name":"Column8",
"Width":1.79917
}
],
"ColumnContent":{
"Height":2.01083,
"ColumnContentCell":[
{
"Column":"日期",
"TextAlign":"MiddleCenter",
"DataField":"日期"
},
{
"Column":"批次",
"TextAlign":"MiddleCenter",
"DataField":"批号"
},
{
"Column":"有效期",
"TextAlign":"MiddleCenter",
"DataField":"效期"
},
{
"Column":"领入",
"TextAlign":"MiddleCenter",
"DataField":"领入"
},
{
"Column":"手术间",
"TextAlign":"MiddleCenter",
"DataField":"手术间"
},
{
"Column":"患者姓名",
"TextAlign":"MiddleCenter",
"DataField":"患者姓名"
},
{
"Column":"性别",
"TextAlign":"MiddleCenter",
"DataField":"性别"
},
{
"Column":"年龄",
"DataField":"年龄"
},
{
"Column":"住院号",
"DataField":"住院号"
},
{
"Column":"科室",
"DataField":"科室"
},
{
"Column":"使用剂量",
"DataField":"使用剂量"
},
{
"Column":"剩余剂量",
"DataField":"剩余剂量"
},
{
"Column":"余液处理时间",
"DataField":"余液处理时间"
},
{
"Column":"医师",
"DataField":"医师"
},
{
"Column":"复核人",
"DataField":"复核人"
},
{
"Column":"空瓶回收人",
"DataField":"空瓶回收人"
},
{
"Column":"Column7"
},
{
"Column":"实物",
"DataField":"实物"
},
{
"Column":"空瓶",
"DataField":"空瓶"
},
{
"Column":"发药人",
"DataField":"发药人"
},
{
"Column":"Column2",
"DataField":"领药复核人"
},
{
"Column":"Column8",
"DataField":"批次库存"
}
]
},
"ColumnTitle":{
"Height":2.59292,
"RepeatStyle":"OnPage",
"ColumnTitleCell":[
{
"GroupTitle":false,
"Column":"日期",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"日期"
},
{
"GroupTitle":false,
"Column":"批次",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"批号"
},
{
"GroupTitle":false,
"Column":"有效期",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"有效期"
},
{
"GroupTitle":false,
"Column":"领入",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"领\r\n入"
},
{
"GroupTitle":true,
"Name":"Column1",
"ColumnTitleCell":[
{
"GroupTitle":false,
"Column":"手术间",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"手\r\n术\r\n间"
},
{
"GroupTitle":false,
"Column":"患者姓名",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"患者\r\n姓名"
},
{
"GroupTitle":false,
"Column":"性别",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"性\r\n别"
},
{
"GroupTitle":false,
"Column":"年龄",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"年\r\n龄"
},
{
"GroupTitle":false,
"Column":"住院号",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"住院号"
},
{
"GroupTitle":false,
"Column":"科室",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"科室"
},
{
"GroupTitle":false,
"Column":"使用剂量",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"使用\r\n剂量"
},
{
"GroupTitle":false,
"Column":"剩余剂量",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"剩余\r\n剂量"
},
{
"GroupTitle":false,
"Column":"余液处理时间",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"余液\r\n处理\r\n时间"
},
{
"GroupTitle":false,
"Column":"医师",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"医师"
},
{
"GroupTitle":false,
"Column":"复核人",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"复核人"
}
],
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"使用"
},
{
"GroupTitle":true,
"Name":"Column6",
"ColumnTitleCell":[
{
"GroupTitle":false,
"Column":"空瓶回收人",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"回收人"
},
{
"GroupTitle":false,
"Column":"Column7",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"药房\r\n回收人"
}
],
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"空瓶回收"
},
{
"GroupTitle":true,
"Name":"Column3",
"ColumnTitleCell":[
{
"GroupTitle":false,
"Column":"实物",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"实物"
},
{
"GroupTitle":false,
"Column":"空瓶",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"空瓶"
}
],
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"结存数"
},
{
"GroupTitle":false,
"Column":"发药人",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"发药人"
},
{
"GroupTitle":true,
"Name":"Column5",
"ColumnTitleCell":[
{
"GroupTitle":false,
"Column":"Column2",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"复核人"
}
],
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"领药人"
},
{
"GroupTitle":false,
"Column":"Column8",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"批次\r\n库存"
}
]
}
},
"PageHeader":{
"Height":0
},
"Parameter":[
{
"Name":"startDate",
"DataType":"DateTime",
"Format":"yyyy-MM-dd hh:mm:ss",
"Value":"2023/1/1"
},
{
"Name":"endDate",
"DataType":"DateTime",
"Format":"yyyy-MM-dd hh:mm:ss",
"Value":"2023/4/28 23:59:59"
},
{
"Name":"machine_id",
"Value":"DM1"
}
],
"ReportHeader":[
{
"Name":"ReportHeader1",
"Height":1.5875,
"Control":[
{
"Type":"MemoBox",
"Name":"MemoBox2",
"Dock":"Fill",
"Font":{
"Name":"宋体",
"Size":217500,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"湘谭县人民医院麻醉药品、精神药品专用账册、使用登记册(手术室)"
}
],
"RepeatOnPage":true
},
{
"Name":"ReportHeader2",
"Height":1.00542,
"Control":[
{
"Type":"MemoBox",
"Name":"MemoBox3",
"Dock":"Fill",
"Border":{
"Styles":"[DrawLeft|DrawTop|DrawRight]"
},
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"Text":"药品名称:[#药品名称#] 规格:[#规格#] 单位:[#大单位#] 基数:[#基数#]"
}
],
"RepeatOnPage":true
}
]
}

View File

@ -0,0 +1,717 @@
{
"Version":"6.8.1.1",
"Font":{
"Name":"宋体",
"Size":105000,
"Weight":400,
"Charset":134
},
"Printer":{
"Oriention":"Landscape",
"TopMargin":0.3175,
"RightMargin":1,
"BottomMargin":0.3969
},
"DetailGrid":{
"CenterView":true,
"Recordset":{
"QuerySQL":"SELECT \r\n dmr.`drawer_no` AS drawerNo,\r\n dmr.`col_no` AS colNo,\r\n dmr.`type` AS `type`,\r\n CONCAT(dmr.`quantity`,IF(dmr.`type`=32,\"(空瓶)\",\"\")) AS quantity,\r\n dmr.`manu_no` AS manuNo,\r\n dmr.`eff_date` AS effDate,\r\n dmr.`operation_time` AS operationTime,\r\n di.`drug_name` AS drugName,\r\n di.`drug_spec` AS drugSpec,\r\n di.`pack_unit` AS packUnit,\r\n di.`manufactory` AS manuFactory,\r\n di.`max_stock` AS baseQuantity,\r\n dmr.`drug_id` AS drugId,\r\n ul.`user_name` AS nickname\r\nFROM\r\n dm_machine_record dmr\r\nLEFT JOIN drug_info di ON di.`drug_id` = dmr.`drug_id`\r\nLEFT JOIN user_list ul ON ul.`id` = dmr.`Operator`\r\nWHERE dmr.`type` in (31, 32)\r\n AND dmr.`machine_id` = :machine_id\r\n AND dmr.`operation_time` > :startDate\r\n AND dmr.`operation_time` < :endDate",
"Field":[
{
"Name":"药品名称",
"DBFieldName":"DrugName"
},
{
"Name":"日期",
"DBFieldName":"oldYearMD"
},
{
"Name":"批号",
"DBFieldName":"ManuNo"
},
{
"Name":"效期",
"Format":"yyyy/MM/dd",
"DBFieldName":"effDate"
},
{
"Name":"领入",
"DBFieldName":"InQuantity"
},
{
"Name":"规格",
"DBFieldName":"DrugSpec"
},
{
"Name":"大单位",
"DBFieldName":"BigUnit"
},
{
"Name":"小单位",
"DBFieldName":"SmallUnit"
},
{
"Name":"基数",
"DBFieldName":"BaseQuantity"
},
{
"Name":"手术间",
"DBFieldName":"shoushuJian"
},
{
"Name":"患者姓名",
"DBFieldName":"PName"
},
{
"Name":"性别",
"DBFieldName":"Sex"
},
{
"Name":"年龄",
"DBFieldName":"Age"
},
{
"Name":"住院号",
"DBFieldName":"ZYH"
},
{
"Name":"科室",
"DBFieldName":"KS"
},
{
"Name":"使用剂量",
"DBFieldName":"UseDose"
},
{
"Name":"剩余剂量",
"DBFieldName":"ResidualDose"
},
{
"Name":"余液处理时间",
"DBFieldName":"DiposalTime"
},
{
"Name":"医师",
"DBFieldName":"YS"
},
{
"Name":"复核人",
"DBFieldName":"CheckUser"
},
{
"Name":"实物",
"DBFieldName":"Stock"
},
{
"Name":"空瓶",
"DBFieldName":"empty"
},
{
"Name":"发药人",
"DBFieldName":"SendUser"
},
{
"Name":"领药人",
"DBFieldName":"InUser"
},
{
"Name":"领药复核人",
"DBFieldName":"InCheckUser"
},
{
"Name":"空瓶回收人",
"DBFieldName":"emptyUser"
},
{
"Name":"批次库存",
"DBFieldName":"CurrentStock"
}
]
},
"Column":[
{
"Name":"日期",
"Width":2.77813
},
{
"Name":"批次",
"Width":2.19604
},
{
"Name":"有效期",
"Width":2.77813
},
{
"Name":"领入",
"Width":0.820208
},
{
"Name":"手术间",
"Width":0.79375
},
{
"Name":"患者姓名",
"Width":1.61396
},
{
"Name":"性别",
"Width":1.00542
},
{
"Name":"年龄",
"Width":0.79375
},
{
"Name":"住院号",
"Width":1.5875
},
{
"Name":"科室",
"Width":2.2225
},
{
"Name":"使用剂量",
"Width":1.82563
},
{
"Name":"剩余剂量",
"Width":1.5875
},
{
"Name":"余液处理时间",
"Width":2.59292
},
{
"Name":"医师",
"Width":1.5875
},
{
"Name":"复核人",
"Width":1.79917
},
{
"Name":"空瓶回收人",
"Width":1.5875
},
{
"Name":"Column7",
"Width":1.61396
},
{
"Name":"实物",
"Width":1.40229
},
{
"Name":"空瓶",
"Width":1.19063
},
{
"Name":"发药人",
"Width":1.79917
},
{
"Name":"Column2",
"Width":1.79917
},
{
"Name":"Column8",
"Width":1.79917,
"Visible":false
}
],
"ColumnContent":{
"Height":2.01083,
"ColumnContentCell":[
{
"Column":"日期",
"WordWrap":true,
"TextAlign":"MiddleCenter",
"ShrinkFontToFit":true,
"DataField":"日期"
},
{
"Column":"批次",
"WordWrap":true,
"TextAlign":"MiddleCenter",
"ShrinkFontToFit":true,
"DataField":"批号"
},
{
"Column":"有效期",
"TextAlign":"MiddleCenter",
"DataField":"效期"
},
{
"Column":"领入",
"TextAlign":"MiddleCenter",
"DataField":"领入"
},
{
"Column":"手术间",
"TextAlign":"MiddleCenter",
"DataField":"手术间"
},
{
"Column":"患者姓名",
"TextAlign":"MiddleCenter",
"DataField":"患者姓名"
},
{
"Column":"性别",
"TextAlign":"MiddleCenter",
"DataField":"性别"
},
{
"Column":"年龄",
"DataField":"年龄"
},
{
"Column":"住院号",
"DataField":"住院号"
},
{
"Column":"科室",
"DataField":"科室"
},
{
"Column":"使用剂量",
"DataField":"使用剂量"
},
{
"Column":"剩余剂量",
"DataField":"剩余剂量"
},
{
"Column":"余液处理时间",
"DataField":"余液处理时间"
},
{
"Column":"医师",
"DataField":"医师"
},
{
"Column":"复核人",
"DataField":"复核人"
},
{
"Column":"空瓶回收人",
"DataField":"空瓶回收人"
},
{
"Column":"Column7"
},
{
"Column":"实物",
"DataField":"实物"
},
{
"Column":"空瓶",
"DataField":"空瓶"
},
{
"Column":"发药人",
"DataField":"发药人"
},
{
"Column":"Column2",
"DataField":"领药复核人"
},
{
"Column":"Column8",
"DataField":"批次库存"
}
]
},
"ColumnTitle":{
"Height":2.59292,
"RepeatStyle":"OnPage",
"ColumnTitleCell":[
{
"GroupTitle":false,
"Column":"日期",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"日期"
},
{
"GroupTitle":false,
"Column":"批次",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"批号"
},
{
"GroupTitle":false,
"Column":"有效期",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"有效期"
},
{
"GroupTitle":false,
"Column":"领入",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"领\r\n入"
},
{
"GroupTitle":true,
"Name":"Column1",
"ColumnTitleCell":[
{
"GroupTitle":false,
"Column":"手术间",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"手\r\n术\r\n间"
},
{
"GroupTitle":false,
"Column":"患者姓名",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"患者\r\n姓名"
},
{
"GroupTitle":false,
"Column":"性别",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"性\r\n别"
},
{
"GroupTitle":false,
"Column":"年龄",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"年\r\n龄"
},
{
"GroupTitle":false,
"Column":"住院号",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"住院号"
},
{
"GroupTitle":false,
"Column":"科室",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"科室"
},
{
"GroupTitle":false,
"Column":"使用剂量",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"使用\r\n剂量"
},
{
"GroupTitle":false,
"Column":"剩余剂量",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"剩余\r\n剂量"
},
{
"GroupTitle":false,
"Column":"余液处理时间",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"余液\r\n处理\r\n时间"
},
{
"GroupTitle":false,
"Column":"医师",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"医师"
},
{
"GroupTitle":false,
"Column":"复核人",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"复核人"
}
],
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"使用"
},
{
"GroupTitle":true,
"Name":"Column6",
"ColumnTitleCell":[
{
"GroupTitle":false,
"Column":"空瓶回收人",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"回收人"
},
{
"GroupTitle":false,
"Column":"Column7",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"药房\r\n回收人"
}
],
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"空瓶回收"
},
{
"GroupTitle":true,
"Name":"Column3",
"ColumnTitleCell":[
{
"GroupTitle":false,
"Column":"实物",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"实物"
},
{
"GroupTitle":false,
"Column":"空瓶",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"空瓶"
}
],
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"结存数"
},
{
"GroupTitle":false,
"Column":"发药人",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"发药人"
},
{
"GroupTitle":true,
"Name":"Column5",
"ColumnTitleCell":[
{
"GroupTitle":false,
"Column":"Column2",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"复核人"
}
],
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"领药人"
},
{
"GroupTitle":false,
"Column":"Column8",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"批次\r\n库存"
}
]
}
},
"PageHeader":{
"Height":0
},
"Parameter":[
{
"Name":"startDate",
"DataType":"DateTime",
"Format":"yyyy-MM-dd hh:mm:ss",
"Value":"2023/1/1"
},
{
"Name":"endDate",
"DataType":"DateTime",
"Format":"yyyy-MM-dd hh:mm:ss",
"Value":"2023/4/28 23:59:59"
},
{
"Name":"machine_id",
"Value":"DM1"
}
],
"ReportHeader":[
{
"Name":"ReportHeader1",
"Height":1.5875,
"Control":[
{
"Type":"MemoBox",
"Name":"MemoBox2",
"Dock":"Fill",
"Font":{
"Name":"宋体",
"Size":217500,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"湘谭县人民医院麻醉药品、精神药品专用账册、使用登记册(手术室)"
}
],
"RepeatOnPage":true
},
{
"Name":"ReportHeader2",
"Height":1.00542,
"Control":[
{
"Type":"MemoBox",
"Name":"MemoBox3",
"Dock":"Fill",
"Border":{
"Styles":"[DrawLeft|DrawTop|DrawRight]"
},
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"Text":"药品名称:[#药品名称#] 规格:[#规格#] 单位:[#大单位#] 基数:[#基数#]"
}
],
"RepeatOnPage":true
}
]
}

View File

@ -0,0 +1,176 @@
using DM_Weight.Models;
using DM_Weight.msg;
using DM_Weight.Report;
using DM_Weight.util;
using log4net;
using Prism.Commands;
using Prism.Events;
using Prism.Mvvm;
using Prism.Regions;
using Prism.Services.Dialogs;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DM_Weight.ViewModels
{
public class AccountWindowViewModel : BindableBase, INavigationAware, IRegionMemberLifetime
{
private readonly ILog logger = LogManager.GetLogger(typeof(AccountWindowViewModel));
public static AccountWindowViewModel vm;
private DateTime? _startDate = DateTime.Now;
public DateTime? StartDate
{
get => _startDate;
set
{
SetProperty(ref _startDate, value);
}
}
private DateTime? _endDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 23, 59, 59);
public DateTime? EndDate
{
get => _endDate;
set
{
SetProperty(ref _endDate, value);
}
}
IEventAggregator _eventAggregator;
IDialogService _dialogService;
public AccountWindowViewModel(IEventAggregator eventAggregator, IDialogService dialogService)
{
_eventAggregator = eventAggregator;
vm = this;
_dialogService = dialogService;
}
/// <summary>
/// 导出账册
/// </summary>
public DelegateCommand DownloadAccountBook
{
get => new DelegateCommand(() =>
{
try
{
if (DrugInfo == null || string.IsNullOrEmpty(DrugInfo.DrugId))
{
AlertMsg alertMsg = new AlertMsg
{
Message = $"请选择药品!",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
return;
}
GridReportUtil.PrintReportAccountBook(StartDate, EndDate, DrugInfo.DrugId);
}
catch (Exception ex)
{
AlertMsg alertMsg = new AlertMsg
{
Message = "导出报表异常!",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
logger.Info($"导出报表异常{ex.Message}");
return;
}
});
}
public bool KeepAlive => false;
public bool IsNavigationTarget(NavigationContext navigationContext)
{
return true;
}
public void OnNavigatedFrom(NavigationContext navigationContext)
{
}
public void OnNavigatedTo(NavigationContext navigationContext)
{
//药品信息
GetAllDrugInfos();
}
/// <summary>
/// 药品
/// </summary>
private List<DrugInfo>? _drugInfos;
public List<DrugInfo>? DrugInfos
{
get => _drugInfos;
set => SetProperty(ref _drugInfos, value);
}
private DrugInfo? _drugInfo;
public DrugInfo? DrugInfo
{
get => _drugInfo;
set
{
SetProperty(ref _drugInfo, value);
}
}
private void GetAllDrugInfos()
{
var list = SqlSugarHelper.Db.Queryable<DrugInfo>().Includes<DrugManuNo>(di => di.DrugManuNos).OrderBy(di => di.DrugId).ToList();
DrugInfos = list;
DrugInfo = list[0];
}
public void UpdateComboBoxItems(string text)
{
string str = @"SELECT d.drug_id,d.py_code,d.drug_barcode,d.drug_name,d.drug_brand_name,d.drug_spec,d.dosage,d.pack_unit,
d.manufactory,d.max_stock,CONCAT(drug_name,' ',drug_spec)as DrugName FROM `drug_info` d";
if (string.IsNullOrEmpty(text))
{
DrugInfos = SqlSugarHelper.Db.SqlQueryable<DrugInfo>(str).OrderBy(di => di.DrugName).OrderBy(di => di.DrugId).ToList();
return;
}
if (DrugInfos != null)
{
DrugInfos.Clear();
}
DrugInfos = SqlSugarHelper.Db.SqlQueryable<DrugInfo>(str).Where(di => di.DrugName.Contains(text) || di.PyCode.Contains(text)).OrderBy(di => di.DrugName).OrderBy(di => di.DrugId).ToList();
}
public DelegateCommand<string> SelectTimeAction
{
get => new DelegateCommand<string>(async (s) =>
{
// 此处延时1毫秒等待页面渲染
await Task.Delay(TimeSpan.FromMilliseconds(1));
DialogParameters dialogParameters = new DialogParameters();
dialogParameters.Add("DateTime", StartDate);
dialogParameters.Add("Type", s);
DialogServiceExtensions.ShowDialogHost(_dialogService, "DatetimeDialog", dialogParameters, DoDialogResult, "RootDialog");
});
}
private void DoDialogResult(IDialogResult dialogResult)
{
// 委托 被动执行 被子窗口执行
// dialogResult 第一方面可以拿到任意参数 第二方面 可判断关闭状态
if (dialogResult.Result == ButtonResult.OK)
{
if (dialogResult.Parameters.GetValue<string?>("Type").Equals("1"))
{
StartDate = dialogResult.Parameters.GetValue<DateTime?>("DateTime");
}
else
{
EndDate = dialogResult.Parameters.GetValue<DateTime?>("DateTime");
}
}
//MessageBox.Show("返回值:" + dialogResult.Result.ToString());
}
}
}

View File

@ -27,12 +27,25 @@ namespace DM_Weight.ViewModels
private readonly ILog logger = LogManager.GetLogger(typeof(AdditionWindowViewModel));
private List<ChannelStock> channelStocks;
public List<ChannelStock> ChannelStocks
private List<ChannelStock>? channelStocks;
public List<ChannelStock>? ChannelStocks
{
get => channelStocks;
set => SetProperty(ref channelStocks, value);
}
private List<ChannelList>? _channelLists;
public List<ChannelList>? _ChannelLists
{
get => _channelLists;
set => SetProperty(ref _channelLists, value);
}
private ChannelList? _channelList;
public ChannelList? _ChannelList
{
get => _channelList;
set => SetProperty(ref _channelList, value);
}
List<ChannelStock> selectedStock = new List<ChannelStock>();
private object _finishStatus = Visibility.Collapsed;
public object FinishStatus
@ -40,18 +53,24 @@ namespace DM_Weight.ViewModels
get => _finishStatus;
set => SetProperty(ref _finishStatus, value);
}
private bool _openStatusBtn = false;
public bool OpenStatusBtn
{
get => _openStatusBtn;
set => SetProperty(ref _openStatusBtn, value);
}
IDialogService _dialogService;
IEventAggregator _eventAggregator;
//private PortUtil _portUtil;
SocketHelper _socketHelper;
public AdditionWindowViewModel(IEventAggregator eventAggregator,SocketHelper socketHelper)
private static readonly DateTime Jan1st1970 = new DateTime
(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
public AdditionWindowViewModel(IEventAggregator eventAggregator, SocketHelper socketHelper)
{
//_dialogService = dialogService;
_eventAggregator = eventAggregator;
//_portUtil = portUtil;
_socketHelper= socketHelper;
_socketHelper = socketHelper;
}
public bool IsNavigationTarget(NavigationContext navigationContext)
{
@ -65,11 +84,13 @@ namespace DM_Weight.ViewModels
public void OnNavigatedTo(NavigationContext navigationContext)
{
_eventAggregator.GetEvent<IsSelectedEvent>().Subscribe(SetIsSelected);
//_eventAggregator.GetEvent<IsSelectedEvent>().Subscribe(SetIsSelected);
RequestData();
}
private void RequestData()
{
_ChannelLists?.Clear();
ChannelStocks?.Clear();
ChannelStocks = SqlSugarHelper.Db.Queryable<ChannelStock>()
.Includes<ChannelList>(cs => cs.ChannelLst)
.Includes<DrugInfo>(cs => cs.DrugInfo)
@ -78,24 +99,57 @@ namespace DM_Weight.ViewModels
.OrderBy(cs => cs.DrawerNo)
.OrderBy(cs => cs.DrugId)
.ToList();
//ChannelStocks= ChannelStocks.GroupBy(it=>new {it.DrawerNo,it.DrugId})
// .Select(it=>
// {
// var ret = it.First();
// ret.Quantity = it.Sum(itx => itx.Quantity);
// return ret;
// }).ToList();
//ChannelStocks.ForEach(cs => cs.AddQuantity = cs.BaseQuantity - cs.Quantity);
if (ChannelStocks != null && ChannelStocks.Count > 0)
{
//2)查询channel_list将1中查询的添加到channel_list的channel_stock里供页面呈现显示
List<int> DrawerNoList = ChannelStocks.Select(cs => cs.DrawerNo).Distinct().ToList();
List<ChannelList> channelLists = new List<ChannelList>();
for (int i = 0; i < DrawerNoList.Count; i++)
{
ChannelList channelList = SqlSugarHelper.Db.Queryable<ChannelList>()
.Where(cl => cl.MachineId == (ConfigurationManager.AppSettings["jj_machineId"] ?? "DM5") && cl.DrawerNo == DrawerNoList[i])
.OrderBy(cl => cl.Id)
.OrderBy(cl => cl.DrawerNo)
.First();
if (channelList.channelStocks == null)
{
channelList.channelStocks = new List<ChannelStock>();
}
channelList.channelStocks.AddRange(ChannelStocks.Where(cs => cs.DrawerNo == DrawerNoList[i]).ToList());
//if (channelList != null)
//{
// channelList.State = 1;//统一将所有的状态设置为已取药待入库
channelLists.Add(channelList);
//}
}
_ChannelLists = channelLists;
}
else
{
_ChannelLists = null;
}
}
//开药箱放入药品
public DelegateCommand OpenBoxCommand
{
get => new DelegateCommand(() =>
{
selectedStock = ChannelStocks.FindAll(cs => cs.ChannelLst.IsSelected).ToList();
if (_ChannelList == null || _ChannelList.channelStocks == null)
{
AlertMsg alertMsg = new AlertMsg
{
Message = "请先选择数据行",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
return;
}
//selectedStock = ChannelStocks.FindAll(cs => cs.ChannelLst.IsSelected).ToList();
selectedStock = _ChannelList.channelStocks.ToList();
if (selectedStock != null && selectedStock.Count > 0)
{
selectedStock.ForEach(cs => cs.ChannelLst.State = 2);
//selectedStock.ForEach(cs => cs.ChannelLst.State = 2);
int drawerNo = -1;
for (int i = 0; i < selectedStock.Count; i++)
@ -112,11 +166,11 @@ namespace DM_Weight.ViewModels
Operator = HomeWindowViewModel.Operator?.Id,
OperationTime = DateTime.Now,
Type = 55,
InvoiceId = "手术间补药",
InvoiceId = "手术间补药入库",
}).ExecuteCommand();
_socketHelper.speechSynthesizer.SpeakAsyncCancelAll();
_socketHelper.speechSynthesizer.Resume();
_socketHelper.OpenStatus = true;
//_socketHelper.speechSynthesizer.SpeakAsyncCancelAll();
//_socketHelper.speechSynthesizer.Resume();
_socketHelper.SpeakAsync($"正在打开{selectedStock[i].DrawerNo}号手术间");
//ModbusHelper.GetInstance().OpenBoxDoor(selectedStock[i].DrawerNo - 1);
@ -133,31 +187,81 @@ namespace DM_Weight.ViewModels
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
logger.Info($"网口连接异常,正在重试{ex.Message}");
_socketHelper.OpenStatus = false;
return;
}
Thread.Sleep(100);
}
}
//Task.Factory.StartNew(async () =>
//{
// bool loop = true;
// while (loop)
// {
// await Task.Delay(1000);
// bool[] boolsl = ModbusHelper.GetInstance().GetAllBoxState();
// bool state = Array.TrueForAll(boolsl, b => b == false);
// if (state)
// {
// loop = false;
// ModbusHelper.BoxOperate = false;
// }
// else
// {
// ModbusHelper.BoxOperate = true;
// //ModbusHelper.SpeakAsync("药箱已打开,请及时关闭");
// }
// }
//});
int iException = 0;
Thread.Sleep(200);
new PromiseUtil<int>().taskAsyncLoop(200, 0, async (options, next, stop) =>
{
_socketHelper.IsMultiThread = true;
try
{
if (_socketHelper.OpenStatus)
{
//bool[] boolsl = ModbusHelper.GetInstance().GetAllBoxState();
_socketHelper.SendMessage(new MyBaseMessage() { lockNo = 0x33, functionCode = 4, delay = 2 });
//ModbusHelper.SpeakAsync($"i为{i};状态为:{_socketHelper.OpenStatus}");
//bool state = Array.TrueForAll(boolsl, b => b == false);
if (_socketHelper.OpenStatus)
{
logger.Info($"OpenStatus:{_socketHelper.OpenStatus}");
//if (i == 0)
//{
// //ModbusHelper.SpeakAsync("请及时关闭药箱");
// i = 10;
//}
OpenStatusBtn = true;
next();
}
else
{
logger.Info($"OpenStatus:{_socketHelper.OpenStatus}");
_socketHelper.dateTime = DateTime.Now;
_socketHelper.IsMultiThread = false;
FinishStatus = Visibility.Visible;
OpenStatusBtn = false;
stop();
}
}
else
{
_socketHelper.dateTime = DateTime.Now;
_socketHelper.IsMultiThread = false;
FinishStatus = Visibility.Visible;
OpenStatusBtn = false;
stop();
}
iException = 0;
}
catch (Exception ex)
{
iException++;
if (iException >= 3)
{
_socketHelper.OpenStatus = false;
FinishStatus = Visibility.Visible;
OpenStatusBtn = false;
}
// _socketHelper.OpenStatus = false;
AlertMsg alertMsg = new AlertMsg
{
Message = $"网口连接异常,正在重试{ex.Message}",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
logger.Info($"网口连接异常,正在重试{ex.Message}");
next();
}
});
}
else
{
@ -169,7 +273,7 @@ namespace DM_Weight.ViewModels
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
return;
}
FinishStatus = Visibility.Visible;
//FinishStatus = Visibility.Visible;
});
}
//完成按钮
@ -190,43 +294,76 @@ namespace DM_Weight.ViewModels
// jiaojie_it.Quantity = jiaojie_it.AddToJJNum;
// jiaojie_it.NeedNum = 0;
// jiaojie_it.AddToJJNum = 0;
//SqlSugarHelper.Db.Updateable(new ChannelStock()
//{
// Quantity = jiaojie_it.AddToJJNum,
// ManuNo = jiaojie_it.ManuNo,
// //EffDate = it.EffDate,
// //Id = jiaojie_it.Id,
// DrugId=jiaojie_it.DrugId,
// DrawerNo=jiaojie_it.DrawerNo,
// MachineId=jiaojie_it.MachineId,
//}).UpdateColumns(jiaojie_it => new { jiaojie_it.Quantity }).WhereColumns(jiaojie_it=>new { jiaojie_it.DrugId, jiaojie_it.DrawerNo, jiaojie_it.MachineId }).ExecuteCommand();
//SqlSugarHelper.Db.Updateable(new ChannelStock()
//{
// Quantity = jiaojie_it.AddToJJNum,
// ManuNo = jiaojie_it.ManuNo,
// //EffDate = it.EffDate,
// //Id = jiaojie_it.Id,
// DrugId=jiaojie_it.DrugId,
// DrawerNo=jiaojie_it.DrawerNo,
// MachineId=jiaojie_it.MachineId,
//}).UpdateColumns(jiaojie_it => new { jiaojie_it.Quantity }).WhereColumns(jiaojie_it=>new { jiaojie_it.DrugId, jiaojie_it.DrawerNo, jiaojie_it.MachineId }).ExecuteCommand();
//}
// 更新交接柜状态为 已取药未入库
//SqlSugarHelper.Db.Updateable(new ChannelList()
//{
// State = 0
//}).UpdateColumns(it => it.State).Where(it => it.DrawerNo == _ChannelList.DrawerNo).ExecuteCommand();
for (int i = 0; i < selectedStock.Count; i++)
{
int iUpdateResult = SqlSugarHelper.Db.Updateable<ChannelStock>()
.SetColumns(cs => new ChannelStock() { State = 0 })
.Where(cs => cs.DrawerNo == selectedStock[i].DrawerNo && cs.DrugId == selectedStock[i].DrugId && cs.MachineId == selectedStock[i].MachineId)
.ExecuteCommand();
string InvoiceId = "AddJiaoJieFromDM_" + CurrentTimeMillis();
// 保存记录
SqlSugarHelper.Db.Insertable(new MachineRecord()
{
MachineId = selectedStock[i].MachineId,
DrawerNo = selectedStock[i].DrawerNo,
ColNo = selectedStock[i].ColNo,
DrugId = selectedStock[i].DrugId,
ManuNo = selectedStock[i].ManuNo,
EffDate = !String.IsNullOrEmpty(selectedStock[i].EffDate) ? DateTime.ParseExact(selectedStock[i].EffDate, "yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture) : null,
Operator = HomeWindowViewModel.Operator?.Id,
Reviewer = HomeWindowViewModel.Reviewer?.Id,
OperationTime = DateTime.Now,
Quantity = selectedStock[i].Quantity,
Type = 2,
InvoiceId =$"交接柜药品入库{selectedStock[i].DrugId}-{selectedStock[i].AddToJJNum}"
//,StockQuantity = nowChannels.Sum(it => it.Quantity),
//CheckQuantity = it.CheckQuantity
}).ExecuteCommand();
}
selectedStock.ForEach(cs =>
{
cs.Quantity = cs.Quantity+cs.AddToJJNum;
cs.NeedNum= 0;
cs.Quantity = cs.Quantity + cs.AddToJJNum;
//cs.NeedNum = 0;
cs.AddToJJNum = 0;
cs.State = 0;
});
SqlSugarHelper.Db.Updateable(selectedStock).ExecuteCommand();
//List<ChannelStock> jiaojie = selectedStock.GroupBy(cs => cs.DrugId).Select(cs => cs.FirstOrDefault()).ToList();
//if (jiaojie != null && jiaojie.Count > 0)
//{
// for (int j = 0; j < jiaojie.Count; j++)
// {
// ChannelStock jiaojie_it = jiaojie[j];
// ChannelList jiaojieList = new ChannelList();
// jiaojieList.State = 0;
// jiaojieList.Id = jiaojie_it.ChannelLst.Id;
// //更新交接柜状态为0
// var result = SqlSugarHelper.Db.Updateable(jiaojieList)
// .UpdateColumns(it => new { it.State, it.Id }).ExecuteCommand();
// }
//}
List<ChannelStock> jiaojie = selectedStock.GroupBy(cs => cs.DrawerNo).Select(cs => cs.FirstOrDefault()).ToList();
if (jiaojie != null && jiaojie.Count > 0)
{
for (int j = 0; j < jiaojie.Count; j++)
{
ChannelStock jiaojie_it = jiaojie[j];
ChannelList jiaojieList = new ChannelList();
jiaojieList.State = 0;
jiaojieList.Id = jiaojie_it.ChannelLst.Id;
//更新交接柜状态为0
var result = SqlSugarHelper.Db.Updateable(jiaojieList)
.UpdateColumns(it => new { it.State, it.Id }).ExecuteCommand();
}
}
}
});
if (f.Data)
{
FinishStatus = Visibility.Collapsed;
RequestData();
AlertMsg alertMsg = new AlertMsg
{
@ -246,7 +383,10 @@ namespace DM_Weight.ViewModels
}
});
}
public long CurrentTimeMillis()
{
return (long)(DateTime.UtcNow - Jan1st1970).TotalMilliseconds;
}
//刷新
public DelegateCommand QueryCommand
{
@ -257,7 +397,7 @@ namespace DM_Weight.ViewModels
{
if (channelStock != null)
{
if (channelStock.ChannelLst.State == 1)
if (channelStock.State == 1)
{
channelStock.ChannelLst.IsSelected = !channelStock.ChannelLst.IsSelected;
}

View File

@ -50,30 +50,80 @@ namespace DM_Weight.ViewModels
set => SetProperty(ref _snackbarMessageQueue, value);
}
private List<ChannelStock>? _channels;
private List<ChannelList>? _channelLists;
public List<ChannelStock>? Channels
public List<ChannelList>? _ChannelLists
{
get => _channels;
set => SetProperty(ref _channels, value);
get => _channelLists;
set => SetProperty(ref _channelLists, value);
}
private ChannelList? _channelList;
private ChannelStock _channelStock;
public ChannelStock Channel
public ChannelList? _ChannelList
{
get { return _channelStock; }
get => _channelList;
set
{
if (value != null)
{
DrugInfo = DrugInfos.Where(di => di.DrugId == value.DrugInfo.DrugId).First();
BaseQuantity = value.BaseQuantity.ToString();
try
{
DrugInfo = DrugInfos.Where(di => di.DrugId == value.Drug.DrugId).First();
BaseQuantity = value.BaseQuantity.ToString();
}
catch (Exception ex)
{
RequestDrug();
DrugInfo = DrugInfos.Where(di => di.DrugId == value.Drug.DrugId).First();
BaseQuantity = value.BaseQuantity.ToString();
}
//DrugManuNo = DrugManuNos.Where(dm => dm.DrugId == value.DrugId && dm.ManuNo == value.ManuNo).First();
}
SetProperty(ref _channelStock, value);
SetProperty(ref _channelList, value);
}
}
//private List<ChannelStock>? _channels;
//public List<ChannelStock>? Channels
//{
// get => _channels;
// set => SetProperty(ref _channels, value);
//}
//private ChannelStock _channelStock;
//public ChannelStock Channel
//{
// get { return _channelStock; }
// set
// {
// if (value != null)
// {
// DrugInfo = DrugInfos.Where(di => di.DrugId == value.DrugInfo.DrugId).First();
// BaseQuantity = value.BaseQuantity.ToString();
// //DrugManuNo = DrugManuNos.Where(dm => dm.DrugId == value.DrugId && dm.ManuNo == value.ManuNo).First();
// }
// SetProperty(ref _channelStock, value);
// }
//}
//private DrugManuNo? _drugManuNo;
//public DrugManuNo? DrugManuNo
//{
// get => _drugManuNo;
// set => SetProperty(ref _drugManuNo, value);
//}
//private List<DrugManuNo>? _drugManuNos;
//public List<DrugManuNo>? DrugManuNos
//{
// get => _drugManuNos;
// set => SetProperty(ref _drugManuNos, value);
//}
private List<DrugInfo>? _drugInfos;
@ -90,6 +140,18 @@ namespace DM_Weight.ViewModels
set
{
SetProperty(ref _drugInfo, value);
//if (_drugInfo != null)
//{
// DrugManuNos = SqlSugarHelper.Db.Queryable<DrugManuNo>().Where(m => m.DrugId == _drugInfo.DrugId.ToString()).ToList();
// if (DrugManuNos != null)
// {
// DrugManuNo = DrugManuNos[0];
// }
//}
//else
//{
// DrugManuNo = null;
//}
}
}
//药品基数
@ -120,26 +182,36 @@ namespace DM_Weight.ViewModels
private void RequestData()
{
Channels?.Clear();
_ChannelLists?.Clear();
BaseQuantity = "";
var list = SqlSugarHelper.Db.Queryable<ChannelStock>()
var list = SqlSugarHelper.Db.Queryable<ChannelList>()
//.Includes(cl => cl.channelStocks, cs => cs.DrugInfo,di=>di.drugBase)
.Includes(cs => cs.DrugInfo)
.Where(cs => cs.MachineId.Equals("DM5"))
.Where(cs => cs.DrawerNo == DrawerNo+1).ToList();
.Includes(cl => cl.channelStocks)
.Includes(cl => cl.Drug)
.Where(cl => cl.MachineId.Equals("DM5"))
.Where(cl => cl.DrawerNo == DrawerNo + 1)
.OrderBy(cl => cl.DrugId).ToList();
//if (list != null && list.Count > 0)
//{
// Channels = list.GroupBy(cs =>new { cs.DrugId, cs.ManuNo }).Select(cs =>
// {
// var ret = cs.First();
// ret.Quantity = cs.Sum(itx => itx.Quantity);
// return ret;
// }).ToList();
//}
//else
//{
// Channels = null;
//}
if (list != null && list.Count > 0)
{
Channels=list.GroupBy(cs =>cs.DrugId).Select(cs =>
{
var ret = cs.First();
ret.Quantity = cs.Sum(itx => itx.Quantity);
return ret;
}).ToList();
_ChannelLists = list;
}
else
{
Channels = null;
_ChannelLists = null;
}
}
@ -202,9 +274,9 @@ namespace DM_Weight.ViewModels
SnackbarMessageQueue.Enqueue("药品基数请输入正确的整数");
return;
}
if (Channels != null)
if (_ChannelLists != null)
{
int iNum = Channels.Where(cs => cs.DrugId == DrugInfo.DrugId.ToString()).Count();
int iNum = _ChannelLists.Where(cs => cs.DrugId == DrugInfo.DrugId.ToString()).Count();
if (iNum > 0)
{
SnackbarBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#b71c1c"));
@ -215,24 +287,44 @@ namespace DM_Weight.ViewModels
}
var f = SqlSugarHelper.Db.UseTran(() =>
{
string chnguid = SqlSugarHelper.Db.Queryable<ChannelList>().Where(cs => cs.MachineId == ConfigurationManager.AppSettings["machineId"].ToString() && cs.DrawerNo == DrawerNo).Select(cs => cs.Id).First();
//string chnguid = SqlSugarHelper.Db.Queryable<ChannelList>().Where(cs => cs.MachineId == ConfigurationManager.AppSettings["machineId"].ToString() && cs.DrawerNo == DrawerNo + 1).Select(cs => cs.Id).First();
int colNoCount = SqlSugarHelper.Db.Queryable<ChannelList>()
.Where(cs => cs.MachineId == ConfigurationManager.AppSettings["machineId"].ToString() && cs.DrawerNo == DrawerNo + 1)
.Max(cs => cs.ColNo);
//string chnguid = $"DM5_{(DrawerNo + 1)}_{(colNoCount+1)}_{DrugInfo.DrugId}";
string chnguid = $"DM5_{(DrawerNo + 1)}_{DrugInfo.DrugId}";
SqlSugarHelper.Db.Insertable(new ChannelList()
{
Id = chnguid,
DrawerNo = (DrawerNo + 1),
ColNo = (colNoCount + 1),
DrugId = DrugInfo.DrugId,
BaseQuantity = baseQuantity,
MachineId = "DM5",
DrawerType = 1,
State = 0
}).ExecuteCommand();
SqlSugarHelper.Db.Insertable(new ChannelStock()
{
Chnguid = chnguid,
DrawerNo = DrawerNo,
DrugId = DrugInfo.DrugId.ToString(),
DrawerNo = DrawerNo + 1,
DrugId = DrugInfo.DrugId,
BaseQuantity = baseQuantity,
Id = Guid.NewGuid().ToString(),
MachineId = "DM5",
AddToJJNum=0,
NeedNum=baseQuantity
AddToJJNum = 0,
NeedNum = baseQuantity,
State=0
//ManuNo=DrugManuNo.ManuNo
}).ExecuteCommand();
// 保存数据 入库记录
SqlSugarHelper.Db.Insertable(new MachineRecord()
{
MachineId = "DM5",
DrawerNo = DrawerNo,
DrugId = DrugInfo.DrugId.ToString(),
DrawerNo = DrawerNo + 1,
DrugId = DrugInfo.DrugId,
Operator = HomeWindowViewModel.Operator?.Id,
OperationTime = DateTime.Now,
Quantity = baseQuantity,
@ -276,52 +368,62 @@ namespace DM_Weight.ViewModels
try
{
if (Channels == null)
if (_ChannelList == null)
{
SnackbarBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#b71c1c"));
SnackbarMessageQueue.Enqueue("所选手术间中无可解绑药品");
return;
}
if (Channel != null)
if (_ChannelList != null)
{
if (_channelList.channelStocks.Where(cs => cs.Quantity > 0).Count() > 0)
{
SnackbarBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#b71c1c"));
SnackbarMessageQueue.Enqueue("药品还有库存不能操作解绑");
return;
}
//解绑选定行的单个药品
SqlSugarHelper.Db.Deleteable(Channel).ExecuteCommand();
SqlSugarHelper.Db.Deleteable(_ChannelList.channelStocks).ExecuteCommand();
//解绑ChannelList表中的药品
SqlSugarHelper.Db.Deleteable<ChannelList>().Where(cl => cl.Id == _ChannelList.Id).ExecuteCommand();
// 保存数据 入库记录
SqlSugarHelper.Db.Insertable(new MachineRecord()
{
MachineId = "DM5",
DrawerNo = DrawerNo,
DrugId = Channel.DrugId.ToString(),
DrugId = _ChannelList.DrugId,
Operator = HomeWindowViewModel.Operator?.Id,
OperationTime = DateTime.Now,
Quantity = Channel.Quantity,
Quantity = _ChannelList.BaseQuantity,
Type = 55,
InvoiceId = "解绑手术间单个药品",
}).ExecuteCommand();
}
else
{
//解绑药箱下的所有药品
Channels.ForEach(item =>
{
SnackbarBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#b71c1c"));
SnackbarMessageQueue.Enqueue("请选择要解绑的药品");
////解绑药箱下的所有药品
//Channels.ForEach(item =>
//{
SqlSugarHelper.Db.Deleteable(item).ExecuteCommand();
// SqlSugarHelper.Db.Deleteable(item).ExecuteCommand();
// 保存数据 入库记录
SqlSugarHelper.Db.Insertable(new MachineRecord()
{
MachineId = "DM5",
DrawerNo = DrawerNo,
DrugId = item.DrugId.ToString(),
Operator = HomeWindowViewModel.Operator?.Id,
OperationTime = DateTime.Now,
Quantity = item.Quantity,
Type = 55,
InvoiceId = "绑定手术间全部药品",
}).ExecuteCommand();
// // 保存数据 入库记录
// SqlSugarHelper.Db.Insertable(new MachineRecord()
// {
// MachineId = "DM5",
// DrawerNo = DrawerNo,
// DrugId = item.DrugId.ToString(),
// Operator = HomeWindowViewModel.Operator?.Id,
// OperationTime = DateTime.Now,
// Quantity = item.Quantity,
// Type = 55,
// InvoiceId = "绑定手术间全部药品",
// }).ExecuteCommand();
});
//});
}
@ -341,7 +443,7 @@ namespace DM_Weight.ViewModels
{
get => new DelegateCommand(() =>
{
if (DrugInfo.DrugId != Channel.DrugId)
if (DrugInfo.DrugId != _ChannelList.DrugId)
{
SnackbarBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#b71c1c"));
SnackbarMessageQueue.Enqueue("只能修改药品基数,不能更换绑定药品!");
@ -350,13 +452,49 @@ namespace DM_Weight.ViewModels
int baseQty = 0;
if (int.TryParse(BaseQuantity, out baseQty))
{
Channel.BaseQuantity = Convert.ToInt32(baseQty);
int iUpdate= SqlSugarHelper.Db.Updateable<ChannelStock>(Channel).ExecuteCommand();
if (iUpdate > 0)
logger.Info($"修改药品{DrugInfo.DrugName}基数{_ChannelList.BaseQuantity}改为{baseQty}");
if (baseQty > _ChannelList.BaseQuantity)
{
//基数变大,需要补药
//_ChannelList.channelStocks[0].NeedNum = _ChannelList.channelStocks[0].NeedNum + baseQty - _ChannelList.BaseQuantity;
}
else
{
//_ChannelList.channelStocks[0].NeedNum = 0;
_ChannelList.channelStocks.ForEach(cs => cs.State = 0);
SqlSugarHelper.Db.Updateable(_ChannelList.channelStocks).UpdateColumns(cs => new { cs.State }).ExecuteCommand();
}
int oldBaseQty = _ChannelList.BaseQuantity;
_ChannelList.BaseQuantity = baseQty;
//_ChannelList.channelStocks[0].BaseQuantity = baseQty;
//int iUpdate = SqlSugarHelper.Db.Updateable<ChannelStock>(_ChannelList.channelStocks[0]).ExecuteCommand();
_ChannelList.channelStocks.ForEach(cs => cs.BaseQuantity = baseQty);
int iBaseUpdate = SqlSugarHelper.Db.Updateable<ChannelStock>().SetColumns(cs => new ChannelStock(){ BaseQuantity= _ChannelList.channelStocks[0].BaseQuantity }).Where(cs=>cs.Chnguid==_ChannelList.Id).ExecuteCommand();
//if (iBaseUpdate > 0)
//{
// iBaseUpdate = SqlSugarHelper.Db.Updateable(_ChannelList.channelStocks[0]).UpdateColumns(cs => new { cs.NeedNum }).ExecuteCommand();
//}
//更新ChannelList表中的BaseQuantity
int iUpdateChannelList = SqlSugarHelper.Db.Updateable<ChannelList>()
.SetColumns(it => new ChannelList() { BaseQuantity = baseQty })
.Where(it => it.Id == _ChannelList.Id).ExecuteCommand();
if (iBaseUpdate > 0 && iUpdateChannelList > 0)
{
//保存操作记录
SqlSugarHelper.Db.Insertable(new MachineRecord()
{
MachineId = "DM5",
DrawerNo = _ChannelList.DrawerNo,
DrugId = _ChannelList.DrugId,
Operator = HomeWindowViewModel.Operator?.Id,
OperationTime = DateTime.Now,
Quantity = _ChannelList.channelStocks[0].NeedNum,
Type = 55,
InvoiceId = $"修改药品{DrugInfo.DrugName}基数{oldBaseQty}改为{baseQty},Quantity值为需要加药数量",
}).ExecuteCommand();
SnackbarBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#00e676"));
SnackbarMessageQueue.Enqueue("保存修改完成!");
RequestData();
}
else
{
@ -380,127 +518,5 @@ namespace DM_Weight.ViewModels
{
get => new DelegateCommand(RequestData);
}
//打开全部药箱
public DelegateCommand OpenBox
{
get => new DelegateCommand(() => OpenBoxAction());
}
private void OpenBoxAction()
{
iList = SqlSugarHelper.Db.Queryable<ChannelList>().Where(cl => cl.MachineId == "DM5")
.Select(cl => cl.DrawerNo).ToList();
if (iList.Count > 0)
{
for (int i = 0; i < iList.Count; i++)
{
//记录开药箱日志
SqlSugarHelper.Db.Insertable(new MachineRecord()
{
MachineId = "DM5",
DrawerNo = DrawerNo,
Operator = HomeWindowViewModel.Operator?.Id,
OperationTime = DateTime.Now,
Type = 55,
InvoiceId = $"打开{DrawerNo}号手术间",
}).ExecuteCommand();
IsEnable = false;
Status = 1;
Console.WriteLine($"正在打开{iList[i]}号手术间");
ModbusHelper.GetInstance().OpenBoxDoor(iList[i] - 1);
//iNumber++;
}
//ModbusHelper.GetInstance().GetAllBoxState();
//if (Status == 2)
//{
// Status = 3;
//}
//IsEnable = true;
}
}
void DoMyPrismEvent(DeviceMsg msg)
{
switch (msg.EventType)
{
// 药箱打开
case EventType.DRAWEROPEN:
//记录开药箱日志
SqlSugarHelper.Db.Insertable(new MachineRecord()
{
MachineId = "DM5",
//DrawerNo = _portUtil.DrawerNo,
Operator = HomeWindowViewModel.Operator?.Id,
OperationTime = DateTime.Now,
Type = 55,
InvoiceId = "手术间打开",
}).ExecuteCommand();
//if (iNumber < iList.Count)
//{
// //_portUtil.DrawerNo = iList[iNumber];
// iNumber++;
// if (Status == 1)
// {
// Status = 2;
// }
// //_portUtil.OpenBox();
//}
//else
{
//iNumber = 0;
//_portUtil.GetBoxStatus();
}
break;
// 药箱关闭
case EventType.DRAWERCLOSE:
//记录药箱操作日志
SqlSugarHelper.Db.Insertable(new MachineRecord()
{
MachineId = "DM5",
//DrawerNo = _portUtil.DrawerNo,
Operator = HomeWindowViewModel.Operator?.Id,
OperationTime = DateTime.Now,
Type = 55,
InvoiceId = "手术间关闭",
}).ExecuteCommand();
if (Status == 2)
{
Status = 3;
}
IsEnable = true;
DrawerNo = -1;
//_portUtil.Operate = false;
break;
// 打开失败
case EventType.OPENERROR:
AlertMsg alertMsg = new AlertMsg
{
Message = msg.Message,
Type = MsgType.ERROR
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
IsEnable = true;
DrawerNo = -1;
Status = 0;
//记录药箱操作日志
SqlSugarHelper.Db.Insertable(new MachineRecord()
{
MachineId = "DM5",
//DrawerNo = _portUtil.DrawerNo,
Operator = HomeWindowViewModel.Operator?.Id,
OperationTime = DateTime.Now,
Type = 55,
InvoiceId = "手术间打开失败",
}).ExecuteCommand();
//_portUtil.Operate = false;
break;
}
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -316,7 +316,9 @@ namespace DM_Weight.ViewModels
.Where(oi => oi.DmStatus == 1)
.Where(oi => oi.HisDispFlag == 0)
.Where(oi => oi.CancelFlag == 0)
.Where(oi => oi.DrawerCode==DrawerNo+1)
.Where(oi => oi.DrawerCode == DrawerNo + 1)
.Where(oi => oi._OrderDetail.SetManuNo != null)
.Where(oi => oi._OrderDetail.Quantity > 0)
.OrderBy(oi => oi.OrderId)
.ToPageList(PageNum, PageSize, ref totalCount);
@ -324,7 +326,7 @@ namespace DM_Weight.ViewModels
{
OrderInfoList.ForEach(oi => oi.ItemIsChecked = true);
//OrderInfoList.ForEach(oi => oi.OrderDetailList.ForEach(od => od.DrugInfo = od.DrugInfo ?? new DrugInfo()));
OrderInfoList.ForEach(oi => oi._OrderDetail.DrugInfo= oi._OrderDetail.DrugInfo ?? new DrugInfo());
OrderInfoList.ForEach(oi => oi._OrderDetail.DrugInfo = oi._OrderDetail.DrugInfo ?? new DrugInfo());
//TotalDrugList = OrderInfoList.Where(oi => oi.ItemIsChecked).GroupBy(oi => oi.OrderDetailList.DrugInfo.DrugName).Select(oi => new TotalDrug { DrugName = oi.Key, TotalCount = oi.Sum(item => item.OrderDetailList.Quantity) }).ToList();
TotalDrugList = OrderInfoList.Where(oi => oi.ItemIsChecked).Select(OrderDetailList => OrderDetailList._OrderDetail).GroupBy(item => item.DrugInfo.DrugName).Select(group => new TotalDrug { DrugName = group.Key, TotalCount = group.Sum(item => item.Quantity) }).ToList();
@ -439,6 +441,16 @@ namespace DM_Weight.ViewModels
{
get => new DelegateCommand(() =>
{
if (DrawerNo == -1)
{
AlertMsg alertMsg = new AlertMsg
{
Message = "请先选择手术间",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
return;
}
CheckOrderAction();
});
}
@ -446,6 +458,7 @@ namespace DM_Weight.ViewModels
void CheckOrderAction()
{
logger.Info($"管理员{HomeWindowViewModel.Operator?.Nickname}开始确认手麻单");
var confirmData = OrderInfoList.Where(oi => oi.ItemIsChecked == true).ToList();
if (confirmData.Count > 0)
{
@ -473,7 +486,7 @@ namespace DM_Weight.ViewModels
PatientId = oi.PatientId,
Pharmacy = oi.Pharmacy,
State = 2,
WinNo= DrawerNo+1+"号手术间",
WinNo = DrawerNo + 1 + "号手术间",
Operator = HomeWindowViewModel.Operator?.Nickname,
}).ExecuteCommand();
}
@ -483,166 +496,199 @@ namespace DM_Weight.ViewModels
//for (int j = 0; j < oi._OrderDetail.Count; j++)
//{
// oi._OrderDetail = oi.OrderDetailList[j];
int drawerNo = DrawerNo + 1;
ChannelStock cs = SqlSugarHelper.Db.Queryable<ChannelStock>()
.Where(cs => cs.DrugId == oi._OrderDetail.DrugId
&& cs.ManuNo == oi._OrderDetail.SetManuNo
// && cs.EffDate == oi._OrderDetail.SetEffDate
&& cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM5")
&& cs.DrawerNo == drawerNo
&& cs.Quantity >= oi._OrderDetail.Quantity).First();
if (cs == null)
{
empChannelStock += $"{oi.OrderNo},{oi._OrderDetail.DrugId},{oi._OrderDetail.SetManuNo},{oi._OrderDetail.SetEffDate};";
continue;
}
cs.Quantity = cs.Quantity - oi._OrderDetail.Quantity;
cs.NeedNum = cs.NeedNum + oi._OrderDetail.Quantity;
// 更新数据 库存信息
SqlSugarHelper.Db.Updateable(cs).UpdateColumns(it => new { it.Quantity, it.NeedNum }).ExecuteCommand();
int drawerNo = DrawerNo + 1;
ChannelStock cs = SqlSugarHelper.Db.Queryable<ChannelStock>()
.Where(cs => cs.DrugId == oi._OrderDetail.DrugId
&& cs.ManuNo == oi._OrderDetail.SetManuNo
// && cs.EffDate == oi._OrderDetail.SetEffDate
&& cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM5")
&& cs.DrawerNo == drawerNo
&& cs.Quantity >= oi._OrderDetail.Quantity).First();
if (cs == null)
{
empChannelStock += $"{oi.OrderNo},{oi._OrderDetail.DrugId},{oi._OrderDetail.SetManuNo};";
logger.Info($"手麻单{oi.OrderNo}对药品批次{oi._OrderDetail.DrugId}-{oi._OrderDetail.SetManuNo}在{drawerNo}手术间无库存");
continue;
}
cs.Quantity = cs.Quantity - oi._OrderDetail.Quantity;
cs.NeedNum = cs.NeedNum > 0 ? cs.NeedNum + oi._OrderDetail.Quantity : oi._OrderDetail.Quantity;
logger.Info($"更新手术间{cs.DrawerNo}药品{cs.DrugId}批次{cs.ManuNo}库存为{cs.Quantity},需补药数量为{cs.NeedNum}");
// 更新数据 库存信息
SqlSugarHelper.Db.Updateable(cs).UpdateColumns(it => new { it.Quantity, it.NeedNum }).ExecuteCommand();
if (cs != null)
{
// 获取更新完库存后的药品库存
List<ChannelStock> nowChannels = SqlSugarHelper.Db.Queryable<ChannelStock>()
.Where(it => it.MachineId.Equals(ConfigurationManager.AppSettings["machineId"]) || it.MachineId.Equals(ConfigurationManager.AppSettings["dm_machineId"]))
.Where(it => it.DrugId.Equals(cs.DrugId))
.Where(it => it.ManuNo.Equals(cs.ManuNo))
.Where(it => it.DrawerType == 1)
.ToList();
SqlSugarHelper.Db.Insertable(new MachineRecord()
{
MachineId = ConfigurationManager.AppSettings["dm_machineId"].ToString(),
DrawerNo = cs.DrawerNo,
ColNo = cs.ColNo,
DrugId = cs.DrugId,
ManuNo = cs.ManuNo,
EffDate = !String.IsNullOrEmpty(cs.EffDate) ? DateTime.ParseExact(cs.EffDate, "yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture) : null,
Operator = HomeWindowViewModel.Operator?.Id,
Reviewer = HomeWindowViewModel.Reviewer?.Id,
OperationTime = DateTime.Now,
Quantity = oi._OrderDetail.Quantity,
Type = 2,
InvoiceId = oi.OrderNo
//, StockQuantity = nowChannels.Sum(it => it.Quantity)
}).ExecuteCommand();
#region 使
//查询发药时间
//MachineRecord SendMachineRecord = SqlSugarHelper.Db.Queryable<MachineRecord>().Where(mr => mr.DrawerNo == cs.DrawerNo && mr.Type == 2)
//.OrderByDescending(mr => mr.OperationTime)
//.First();
//string retUser = SqlSugarHelper.Db.Queryable<ChannelList>().Where(cl => cl.MachineId == (ConfigurationManager.AppSettings["machineId"] ?? "DM5") && cl.DrawerNo == cs.DrawerNo)
//.Select(cl => cl.BelongUser).First();
#region 使
//查询发药时间
//MachineRecord SendMachineRecord = SqlSugarHelper.Db.Queryable<MachineRecord>().Where(mr => mr.DrawerNo == cs.DrawerNo && mr.Type == 2)
//.OrderByDescending(mr => mr.OperationTime)
//.First();
//string retUser = SqlSugarHelper.Db.Queryable<ChannelList>().Where(cl => cl.MachineId == (ConfigurationManager.AppSettings["machineId"] ?? "DM5") && cl.DrawerNo == cs.DrawerNo)
//.Select(cl => cl.BelongUser).First();
RejectionReport rejectionReport = SqlSugarHelper.Db.Queryable<RejectionReport>().Where(rp => rp.DrugId == cs.DrugId && rp.DrawerNo == cs.DrawerNo).OrderByDescending(rp => rp.SendDate).First();
if (rejectionReport != null)
{
//发药信息
//RejectionReport rejectionReport = new RejectionReport();
//rejectionReport.SendDate = SendMachineRecord.OperationTime;
//rejectionReport.SendUser = SendMachineRecord.Operator.ToString();
//rejectionReport.ReceiveUser = retUser;
rejectionReport.RealNum = cs.BaseQuantity;
RejectionReport rejectionReport = SqlSugarHelper.Db.Queryable<RejectionReport>().Where(rp => rp.DrugId == cs.DrugId && rp.DrawerNo == cs.DrawerNo).OrderByDescending(rp => rp.SendDate).First();
if (rejectionReport != null)
{
//发药信息
//RejectionReport rejectionReport = new RejectionReport();
//rejectionReport.SendDate = SendMachineRecord.OperationTime;
//rejectionReport.SendUser = SendMachineRecord.Operator.ToString();
//rejectionReport.ReceiveUser = retUser;
rejectionReport.RealNum = cs.BaseQuantity;
//还药信息
rejectionReport.InfactNum = cs.BaseQuantity - oi._OrderDetail.Quantity;
rejectionReport.EmptyNum = oi._OrderDetail.Quantity;
rejectionReport.ReturnTime = DateTime.Now.ToString();
rejectionReport.ReturnUser = rejectionReport.SendUser;
rejectionReport.ReturnReceiveUser = rejectionReport.ReceiveUser;// SendMachineRecord.Operator.ToString();
rejectionReport.DrugId = oi._OrderDetail.DrugId;
rejectionReport.DrugName = oi._OrderDetail.DrugInfo.DrugName;
rejectionReport.DrugSpec = oi._OrderDetail.DrugInfo.DrugSpec;
//还药信息
rejectionReport.InfactNum = cs.BaseQuantity - oi._OrderDetail.Quantity;
rejectionReport.EmptyNum = oi._OrderDetail.Quantity;
rejectionReport.ReturnTime = DateTime.Now.ToString();
rejectionReport.ReturnUser = rejectionReport.SendUser;
rejectionReport.ReturnReceiveUser = rejectionReport.ReceiveUser;// SendMachineRecord.Operator.ToString();
rejectionReport.DrugId = oi._OrderDetail.DrugId;
rejectionReport.DrugName = oi._OrderDetail.DrugInfo.DrugName;
rejectionReport.DrugSpec = oi._OrderDetail.DrugInfo.DrugSpec;
rejectionReport.OperationTime = DateTime.Now;
rejectionReport.OperationTime = DateTime.Now;
int iRejectionReport = SqlSugarHelper.Db.Updateable(rejectionReport).ExecuteCommand();
}
#endregion
int iRejectionReport = SqlSugarHelper.Db.Updateable(rejectionReport).ExecuteCommand();
}
#endregion
}
//保存账册
int iInsertResult = SqlSugarHelper.Db.Insertable(new AccountBookG2()
//}
//查询上一条账册中的空瓶数
AccountBookG2 accountBookEmpty = SqlSugarHelper.Db.Queryable<AccountBookG2>()
.Where(ab => ab.MachineId.Equals(ConfigurationManager.AppSettings["dm_machineId"].ToString()))
.Where(ab => ab.Type == 1 || ab.Type == 2)
.Where(ab => ab.DrugId == oi._OrderDetail.DrugId)
.Where(ab => ab.ManuNo == cs.ManuNo).OrderByDescending(ab => ab.Id).First();
//修改凌晨生成的日结存与总结存数据
AccountBookG2 accountBookG2Day = SqlSugarHelper.Db.Queryable<AccountBookG2>()
.Where(ab => ab.MachineId.Equals(ConfigurationManager.AppSettings["dm_machineId"].ToString()))
.Where(ab => ab.Type == 3)
.Where(ab => ab.DrugId == oi._OrderDetail.DrugId)
.Where(ab => ab.ManuNo == cs.ManuNo)
.Where(ab => ab.CreateDate == DateTime.Now.ToString("yyyy-MM-dd")).First();
int manuStock = 0;
if (accountBookG2Day != null)
{
accountBookG2Day.ManuStock = accountBookG2Day.ManuStock - oi._OrderDetail.Quantity;
accountBookG2Day.OutQuantity = accountBookG2Day.OutQuantity + oi._OrderDetail.Quantity;
accountBookG2Day.UseDose = (Convert.ToSingle(accountBookG2Day.UseDose!=null? accountBookG2Day.UseDose:0) + Convert.ToSingle(oi._OrderDetail.surgicalResidual.UseDose!=null? oi._OrderDetail.surgicalResidual.UseDose:0)).ToString();
accountBookG2Day.ResidualDose = (Convert.ToSingle(accountBookG2Day.ResidualDose!=null? accountBookG2Day.ResidualDose:0) + Convert.ToSingle(oi._OrderDetail.surgicalResidual.ResidualDose!=null? oi._OrderDetail.surgicalResidual.ResidualDose:0)).ToString();
accountBookG2Day.TotalStock = (accountBookEmpty != null ? (accountBookEmpty.TotalStock > 0 ? accountBookEmpty.TotalStock : 0) : 0) + oi._OrderDetail.Quantity;
accountBookG2Day.CreateTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 23, 59, 59);
SqlSugarHelper.Db.Updateable(accountBookG2Day).ExecuteCommand();
manuStock = accountBookG2Day.ManuStock;
}
else
{
//生成日结存时可能没有该库位的绑定信息,需要写入日结存
int iDayResult = SqlSugarHelper.Db.Insertable(new AccountBookG2()
{
DrugId = oi._OrderDetail.DrugId,
Type = 2,
Department = oi.DeptName,
OrderNo = oi.OrderNo,
Type = 3,
ManuNo = cs.ManuNo,
EffDate = cs.EffDate,
YQuantity = 0,
ManuStock = manuStock > 0 ? manuStock :nowChannels.Sum(it => it.Quantity), //oi._OrderDetail.Quantity,
TotalStock = oi._OrderDetail.Quantity,
UserId1 = HomeWindowViewModel.Operator?.Id,
UserId2 = HomeWindowViewModel.Reviewer?.Id,
MachineId = ConfigurationManager.AppSettings["dm_machineId"].ToString(),
CreateDate = DateTime.Now.ToString("yyyy-MM-dd"),
CreateTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 23, 59, 59),
InvoiceNo = "日结存",
OutQuantity = oi._OrderDetail.Quantity,
UseDose = oi._OrderDetail.surgicalResidual.UseDose,
ResidualDose = oi._OrderDetail.surgicalResidual.ResidualDose
}).ExecuteCommand();
if (iDayResult <= 0)
{
logger.Info($"未写入日结存数据{oi._OrderDetail.DrugId}-{cs.ManuNo}-{cs.EffDate}-{cs.Quantity}");
}
}
//查询上一条账册中的空瓶数
//AccountBookG2 accountBookEmpty = SqlSugarHelper.Db.Queryable<AccountBookG2>()
//.Where(ab => ab.MachineId.Equals(ConfigurationManager.AppSettings["dm_machineId"].ToString()))
//.Where(ab => ab.Type == 1 || ab.Type == 2)
//.Where(ab => ab.DrugId == oi._OrderDetail.DrugId)
//.Where(ab => ab.ManuNo == cs.ManuNo).OrderByDescending(ab => ab.Id).First();
//保存账册
int iInsertResult = SqlSugarHelper.Db.Insertable(new AccountBookG2()
{
DrugId = oi._OrderDetail.DrugId,
Type = 2,
Department = oi.DeptName,
OrderNo = oi.OrderNo,
ManuNo = cs.ManuNo,
EffDate = cs.EffDate,
OutQuantity = oi._OrderDetail.Quantity,
UserId1 = HomeWindowViewModel.Operator?.Id,
UserId2 = HomeWindowViewModel.Reviewer?.Id,
MachineId = ConfigurationManager.AppSettings["dm_machineId"].ToString(),
CreateDate = DateTime.Now.ToString("yyyy-MM-dd"),
CreateTime = DateTime.Now,
InvoiceNo = oi.OrderNo,
ManuStock = manuStock > 0 ? manuStock : nowChannels.Sum(it => it.Quantity),
TotalStock = (accountBookEmpty != null ? (accountBookEmpty.TotalStock > 0 ? accountBookEmpty.TotalStock : 0) : 0) + oi._OrderDetail.Quantity,
ShoushuJian = drawerNo.ToString()
}).ExecuteCommand();
//修改凌晨生成的日结存与总结存数据
AccountBookG2 accountBookG2Total = SqlSugarHelper.Db.Queryable<AccountBookG2>()
.Where(ab => ab.MachineId.Equals(ConfigurationManager.AppSettings["dm_machineId"].ToString()))
.Where(ab => ab.Type == 4)
.Where(ab => ab.DrugId == oi._OrderDetail.DrugId)
.Where(ab => ab.CreateDate == DateTime.Now.ToString("yyyy-MM-dd")).First();
if (accountBookG2Total != null)
{
accountBookG2Total.TotalStock = accountBookG2Total.TotalStock - oi._OrderDetail.Quantity;
SqlSugarHelper.Db.Updateable(accountBookG2Total).ExecuteCommand();
}
else
{
//生成总结存时可能没有该库位的绑定信息,需要写入总结存
int iTotalResult = SqlSugarHelper.Db.Insertable(new AccountBookG2()
{
DrugId = oi._OrderDetail.DrugId,
Type = 4,
YQuantity = 0,
ManuStock = oi._OrderDetail.Quantity,
TotalStock = oi._OrderDetail.Quantity,
UserId1 = HomeWindowViewModel.Operator?.Id,
UserId2 = HomeWindowViewModel.Reviewer?.Id,
MachineId = ConfigurationManager.AppSettings["dm_machineId"].ToString(),
CreateDate = DateTime.Now.ToString("yyyy-MM-dd"),
CreateTime = DateTime.Now,
InvoiceNo = oi.OrderNo
InvoiceNo = "总结存"
}).ExecuteCommand();
//修改凌晨生成的日结存与总结存数据
AccountBookG2 accountBookG2Day = SqlSugarHelper.Db.Queryable<AccountBookG2>()
.Where(ab => ab.MachineId.Equals(ConfigurationManager.AppSettings["dm_machineId"].ToString()))
.Where(ab => ab.Type == 3)
.Where(ab => ab.DrugId == oi._OrderDetail.DrugId)
.Where(ab => ab.ManuNo == cs.ManuNo)
.Where(ab => ab.CreateDate == DateTime.Now.ToString("yyyy-MM-dd")).First();
if (accountBookG2Day != null)
if (iTotalResult <= 0)
{
accountBookG2Day.ManuStock = accountBookG2Day.ManuStock - oi._OrderDetail.Quantity;
SqlSugarHelper.Db.Updateable(accountBookG2Day).ExecuteCommand();
}
else
{
//生成日结存时可能没有该库位的绑定信息,需要写入日结存
int iDayResult = SqlSugarHelper.Db.Insertable(new AccountBookG2()
{
DrugId = oi._OrderDetail.DrugId,
Type = 3,
ManuNo = cs.ManuNo,
EffDate = cs.EffDate,
YQuantity = 0,
ManuStock = oi._OrderDetail.Quantity,
TotalStock = oi._OrderDetail.Quantity,
UserId1 = HomeWindowViewModel.Operator?.Id,
UserId2 = HomeWindowViewModel.Reviewer?.Id,
MachineId = ConfigurationManager.AppSettings["dm_machineId"].ToString(),
CreateDate = DateTime.Now.ToString("yyyy-MM-dd"),
InvoiceNo = "日结存"
}).ExecuteCommand();
if (iDayResult <= 0)
{
logger.Info($"未写入日结存数据{oi._OrderDetail.DrugId}-{cs.ManuNo}-{cs.EffDate}-{cs.Quantity}");
}
}
//修改凌晨生成的日结存与总结存数据
AccountBookG2 accountBookG2Total = SqlSugarHelper.Db.Queryable<AccountBookG2>()
.Where(ab => ab.MachineId.Equals(ConfigurationManager.AppSettings["dm_machineId"].ToString()))
.Where(ab => ab.Type == 4)
.Where(ab => ab.DrugId == oi._OrderDetail.DrugId)
.Where(ab => ab.CreateDate == DateTime.Now.ToString("yyyy-MM-dd")).First();
if (accountBookG2Total != null)
{
accountBookG2Total.TotalStock = accountBookG2Total.TotalStock - oi._OrderDetail.Quantity;
SqlSugarHelper.Db.Updateable(accountBookG2Total).ExecuteCommand();
}
else
{
//生成总结存时可能没有该库位的绑定信息,需要写入总结存
int iTotalResult = SqlSugarHelper.Db.Insertable(new AccountBookG2()
{
DrugId = oi._OrderDetail.DrugId,
Type = 4,
YQuantity = 0,
ManuStock = oi._OrderDetail.Quantity,
TotalStock = oi._OrderDetail.Quantity,
UserId1 = HomeWindowViewModel.Operator?.Id,
UserId2 = HomeWindowViewModel.Reviewer?.Id,
MachineId = ConfigurationManager.AppSettings["dm_machineId"].ToString(),
CreateDate = DateTime.Now.ToString("yyyy-MM-dd"),
InvoiceNo = "总结存"
}).ExecuteCommand();
if (iTotalResult <= 0)
{
logger.Info($"未写入总结存数据{oi._OrderDetail.DrugId}-{oi._OrderDetail.Quantity}");
}
logger.Info($"未写入总结存数据{oi._OrderDetail.DrugId}-{oi._OrderDetail.Quantity}");
}
}
//}
SqlSugarHelper.Db.Insertable(new MachineRecord()
{
MachineId = ConfigurationManager.AppSettings["dm_machineId"].ToString(),
DrawerNo = cs.DrawerNo,
ColNo = cs.ColNo,
DrugId = cs.DrugId,
ManuNo = cs.ManuNo,
EffDate = !String.IsNullOrEmpty(cs.EffDate) ? DateTime.ParseExact(cs.EffDate, "yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture) : null,
Operator = HomeWindowViewModel.Operator?.Id,
Reviewer = HomeWindowViewModel.Reviewer?.Id,
OperationTime = DateTime.Now,
Quantity = oi._OrderDetail.Quantity,
Type = 2,
InvoiceId = oi.OrderNo,
GetId= manuStock,
DepartmentId=$"当前库存:{nowChannels.Sum(it => it.Quantity)},空瓶数:{(accountBookEmpty != null ? (accountBookEmpty.TotalStock > 0 ? accountBookEmpty.TotalStock : 0) : 0) + oi._OrderDetail.Quantity}"
//, StockQuantity = nowChannels.Sum(it => it.Quantity)
}).ExecuteCommand();
}
if (!string.IsNullOrEmpty(empChannelStock))
{
@ -689,6 +735,7 @@ namespace DM_Weight.ViewModels
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
}
logger.Info($"管理员{HomeWindowViewModel.Operator?.Nickname}结束确认手麻单");
}
/// <summary>
/// 选择药箱,打开药箱
@ -717,7 +764,7 @@ namespace DM_Weight.ViewModels
machineRecord.Operator = HomeWindowViewModel.Operator?.Id;
machineRecord.OperationTime = DateTime.Now;
machineRecord.Type = 55;
machineRecord.InvoiceId = $"打开{DrawerNo + 1}号手术间";
machineRecord.InvoiceId = $"管理员核对单,打开{DrawerNo + 1}号手术间";
if (DrawerNo >= 0)
@ -733,7 +780,7 @@ namespace DM_Weight.ViewModels
//ModbusHelper.GetInstance().OpenBoxDoor(DrawerNo);
try
{
_socketHelper.SendMessage(new MyBaseMessage() { lockNo = (short)(DrawerNo) });
_socketHelper.SendMessage(new MyBaseMessage() { lockNo = (short)(DrawerNo) });
_socketHelper.dateTime = DateTime.Now;
}
catch (Exception ex)
@ -1067,9 +1114,5 @@ namespace DM_Weight.ViewModels
// }
//}
}
public class TotalDrug
{
public string DrugName { get; set; }
public int TotalCount { get; set; }
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -8,6 +8,7 @@ using Prism.Commands;
using Prism.Events;
using Prism.Mvvm;
using Prism.Regions;
using Prism.Services.Dialogs;
using System;
using System.Collections;
using System.Collections.Generic;
@ -32,6 +33,14 @@ namespace DM_Weight.ViewModels
get => _drawerType;
set => SetProperty(ref _drawerType, value);
}
//1取药箱0还药箱
private int _operationType = -1;
public int OperationType
{
get => _operationType;
set => SetProperty(ref _operationType, value);
}
public bool KeepAlive => false;
private int _pageNum = 1;
@ -82,7 +91,14 @@ namespace DM_Weight.ViewModels
get => _drawerNo;
set => SetProperty(ref _drawerNo, value);
}
//所选药箱号
private int _currentDrawerNo = -1;
public int CurrentDrawerNo
{
get => _currentDrawerNo;
set => SetProperty(ref _currentDrawerNo, value);
}
//开名下药箱按钮的显示状态
//private bool _selfEnable = false;
//public bool SelfEnable { get => _selfEnable; set => SetProperty(ref _selfEnable, value); }
@ -536,6 +552,7 @@ namespace DM_Weight.ViewModels
IEventAggregator _eventAggregator;
//private PortUtil _portUtil;
IDialogService _dialogService;
SocketHelper _socketHelper;
public CheckSelfOrderWindowViewModel(IEventAggregator eventAggregator, SocketHelper socketHelper)
{
@ -568,8 +585,8 @@ namespace DM_Weight.ViewModels
//string currentDrawerUser = currentList.BelongUser;
string currentDrawerUser = HomeWindowViewModel.Operator.UserBarcode;
OrderInfoList = SqlSugarHelper.Db.Queryable<OrderInfo>()
.Includes(oi => oi.OrderDetailList, od => od.DrugInfo)
.Includes(oi => oi.OrderDetailList, od => od.surgicalResidual)
.Includes(oi => oi._OrderDetail, od => od.DrugInfo)
.Includes(oi => oi._OrderDetail, od => od.surgicalResidual)
//.Includes(cl => cl.channelStocks, cs => cs.DrugInfo,di=>di.drugBase)
//.InnerJoin<OrderDetail>((oi, od) => oi.OrderNo == od.OrderNo)
//.InnerJoin<DrugInfo>((oi, od, di) => od.DrugId == di.DrugId.ToString())
@ -579,6 +596,9 @@ namespace DM_Weight.ViewModels
.Where(oi => oi.HisDispFlag == 0)
.Where(oi => oi.CancelFlag == 0)
.Where(oi => oi.DoctorCode == currentDrawerUser)
.Where(oi => oi._OrderDetail.SetManuNo != null && oi._OrderDetail.SetManuNo != "null")
.Where(oi => oi._OrderDetail.Quantity > 0)
//.Where(oi => oi._OrderDetail.surgicalResidual.SendNo == DrawerNo.ToString())
.OrderBy(oi => oi.OrderId)
.ToPageList(PageNum, PageSize, ref totalCount);
@ -600,11 +620,10 @@ namespace DM_Weight.ViewModels
if (OrderInfoList != null && OrderInfoList.Count() > 0)
{
OrderInfoList.ForEach(oi => oi.ItemIsChecked = true);
OrderInfoList.ForEach(oi => oi.OrderDetailList.ForEach(od => od.DrugInfo = od.DrugInfo ?? new DrugInfo()));
OrderInfoList.ForEach(oi => oi._OrderDetail.DrugInfo = oi._OrderDetail.DrugInfo ?? new DrugInfo());
OrderInfoList.Where(oi=>oi._OrderDetail.surgicalResidual?.SendNo==DrawerNo.ToString()).ToList()?.ForEach(oi => oi.ItemIsChecked = true);
//TotalDrugList = OrderInfoList.Where(oi => oi.ItemIsChecked).GroupBy(oi => oi.OrderDetailList.DrugInfo.DrugName).Select(oi => new TotalDrug { DrugName = oi.Key, TotalCount = oi.Sum(item => item.OrderDetailList.Quantity) }).ToList();
TotalDrugList = OrderInfoList.Where(oi => oi.ItemIsChecked).SelectMany(OrderDetailList => OrderDetailList.OrderDetailList).GroupBy(item => item.DrugInfo.DrugName).Select(group => new TotalDrug { DrugName = group.Key, TotalCount = group.Sum(item => item.Quantity) }).ToList();
TotalDrugList = OrderInfoList.Where(oi => oi.ItemIsChecked).Select(OrderDetailList => OrderDetailList._OrderDetail).GroupBy(item => item.DrugInfo.DrugName).Select(group => new TotalDrug { DrugName = group.Key, TotalCount = group.Sum(item => item.Quantity) }).ToList();
}
else
{
@ -707,33 +726,33 @@ namespace DM_Weight.ViewModels
// }
//}
//查询当前药师下所有的待确认的单子
string currentDrawerUser = HomeWindowViewModel.Operator.UserBarcode;
OrderInfoList = SqlSugarHelper.Db.Queryable<OrderInfo>()
.Includes(oi => oi.OrderDetailList, od => od.DrugInfo)
.WhereIF(OrderDate != null, oi => oi.RecvDate.ToString("yyyy-MM-dd") == OrderDate)
.WhereIF(!String.IsNullOrEmpty(ConfigurationManager.AppSettings["storage"]), oi => oi.Pharmacy == ConfigurationManager.AppSettings["storage"])
.Where(oi => oi.DmStatus == 0)
.Where(oi => oi.HisDispFlag == 0)
.Where(oi => oi.CancelFlag == 0)
.Where(oi => oi.DoctorCode == currentDrawerUser)
.OrderBy(oi => oi.OrderId)
.ToPageList(PageNum, PageSize, ref totalCount);
//string currentDrawerUser = HomeWindowViewModel.Operator.UserBarcode;
//OrderInfoList = SqlSugarHelper.Db.Queryable<OrderInfo>()
// .Includes(oi => oi._OrderDetail, od => od.DrugInfo)
// .WhereIF(OrderDate != null, oi => oi.RecvDate.ToString("yyyy-MM-dd") == OrderDate)
// .WhereIF(!String.IsNullOrEmpty(ConfigurationManager.AppSettings["storage"]), oi => oi.Pharmacy == ConfigurationManager.AppSettings["storage"])
// .Where(oi => oi.DmStatus == 0)
// .Where(oi => oi.HisDispFlag == 0)
// .Where(oi => oi.CancelFlag == 0)
// .Where(oi => oi.DoctorCode == currentDrawerUser)
// .OrderBy(oi => oi.OrderId)
// .ToPageList(PageNum, PageSize, ref totalCount);
if (OrderInfoList != null && OrderInfoList.Count() > 0)
{
OrderInfoList.ForEach(oi => oi.ItemIsChecked = true);
OrderInfoList.ForEach(oi => oi.OrderDetailList.ForEach(od => od.DrugInfo = od.DrugInfo ?? new DrugInfo()));
//TotalDrugList = OrderInfoList.Where(oi => oi.ItemIsChecked).GroupBy(oi => oi.OrderDetailList.DrugInfo.DrugName).Select(oi => new TotalDrug { DrugName = oi.Key, TotalCount = oi.Sum(item => item.OrderDetailList.Quantity) }).ToList();
TotalDrugList = OrderInfoList.Where(oi => oi.ItemIsChecked).SelectMany(OrderDetailList => OrderDetailList.OrderDetailList).GroupBy(item => item.DrugInfo.DrugName).Select(group => new TotalDrug { DrugName = group.Key, TotalCount = group.Sum(item => item.Quantity) }).ToList();
//if (OrderInfoList != null && OrderInfoList.Count() > 0)
//{
// OrderInfoList.ForEach(oi => oi.ItemIsChecked = true);
// OrderInfoList.ForEach(oi => oi._OrderDetail.DrugInfo = oi._OrderDetail.DrugInfo ?? new DrugInfo());
// //TotalDrugList = OrderInfoList.Where(oi => oi.ItemIsChecked).GroupBy(oi => oi.OrderDetailList.DrugInfo.DrugName).Select(oi => new TotalDrug { DrugName = oi.Key, TotalCount = oi.Sum(item => item.OrderDetailList.Quantity) }).ToList();
// TotalDrugList = OrderInfoList.Where(oi => oi.ItemIsChecked).Select(OrderDetailList => OrderDetailList._OrderDetail).GroupBy(item => item.DrugInfo.DrugName).Select(group => new TotalDrug { DrugName = group.Key, TotalCount = group.Sum(item => item.Quantity) }).ToList();
}
else
{
TotalDrugList = null;
}
//}
//else
//{
// TotalDrugList = null;
//}
TotalCount = totalCount;
PageCount = (int)Math.Ceiling((double)TotalCount / PageSize);
//TotalCount = totalCount;
//PageCount = (int)Math.Ceiling((double)TotalCount / PageSize);
}
}
@ -769,13 +788,14 @@ namespace DM_Weight.ViewModels
// .WhereIF(this.DrawerType == 0, cl => cl.BelongUser == HomeWindowViewModel.Operator.UserBarcode).Select(cl => cl.DrawerState).First();
DrawerNo = Convert.ToInt32(strDrawerNo);
CurrentDrawerNo += DrawerNo + 1;
MachineRecord machineRecord = new MachineRecord();
machineRecord.MachineId = "DM5";
machineRecord.DrawerNo = DrawerNo;
machineRecord.Operator = HomeWindowViewModel.Operator?.Id;
machineRecord.OperationTime = DateTime.Now;
machineRecord.Type = 55;
machineRecord.InvoiceId = $"打开{DrawerNo}号手术间";
machineRecord.InvoiceId = $"麻醉师,打开{DrawerNo}号手术间";
if (DrawerNo > 0)
@ -806,45 +826,72 @@ namespace DM_Weight.ViewModels
return;
}
_socketHelper.OpenStatus = true;
//SetBtnEnable(DrawerNo, false);
//if (CheckBoxStatusTimer is null)
//{
// CheckBoxStatusTimer = new System.Timers.Timer();
//}
//if (!CheckBoxStatusTimer.Enabled)
//{
// CheckBoxStatusTimer.Elapsed += new System.Timers.ElapsedEventHandler(GetAllBoxState);
// CheckBoxStatusTimer.Interval = 3000;
// CheckBoxStatusTimer.Start();
//}
//记录药箱打开时间
ChannelList channelList = SqlSugarHelper.Db.Queryable<ChannelList>().Where(cl => cl.MachineId == "DM5" && cl.DrawerNo == DrawerNo).First();
if (channelList != null && (channelList.EffDate is null || Convert.ToDateTime(channelList.EffDate).ToString("yyyy-MM-dd") != DateTime.Now.ToString("yyyy-MM-dd")))
{
channelList.DrawerState = 0;
channelList.EffDate = DateTime.Now.ToString();
SqlSugarHelper.Db.Updateable(channelList).UpdateColumns(it => new { it.EffDate }).ExecuteCommand();
SqlSugarHelper.Db.Updateable(channelList).UpdateColumns(it => new { it.EffDate, it.DrawerState }).ExecuteCommand();
SqlSugarHelper.Db.Updateable<ChannelList>().SetColumns(it => it.EffDate == DateTime.Now.ToString()).SetColumns(it => it.DrawerState == 0)
.Where(it => it.MachineId == "DM5" && it.DrawerNo == DrawerNo).ExecuteCommand();
}
//Task.Factory.StartNew(async () =>
//if (OperationType == 1)
//{
// bool loop = true;
// while (loop)
// //取药箱,将当前药箱号记录到当前登录人身上
// if (!string.IsNullOrEmpty(HomeWindowViewModel.Operator.BoxNumber))
// {
// await Task.Delay(1000);
// bool[] boolsl = ModbusHelper.GetInstance().GetAllBoxState();
// bool state = Array.TrueForAll(boolsl, b => b == false);
// if (state)
// {
// loop = false;
// ModbusHelper.BoxOperate = false;
// }
// else
// {
// ModbusHelper.BoxOperate = true;
// //ModbusHelper.SpeakAsync("药箱已打开,请及时关闭");
// }
// HomeWindowViewModel.Operator.BoxNumber += $",{DrawerNo.ToString()}";
// SqlSugarHelper.Db.Updateable(HomeWindowViewModel.Operator).UpdateColumns(it => new { it.BoxNumber }).ExecuteCommand();
// }
//});
// else
// {
// HomeWindowViewModel.Operator.BoxNumber = $",{DrawerNo.ToString()}";
// SqlSugarHelper.Db.Updateable(HomeWindowViewModel.Operator).UpdateColumns(it => new { it.BoxNumber }).ExecuteCommand();
// }
// SqlSugarHelper.Db.Updateable<ChannelList>().SetColumns(it => it.EffDate == DateTime.Now.ToString()).SetColumns(it => it.DrawerState == 0)
// .Where(it => it.MachineId == "DM5" && it.DrawerNo == DrawerNo).ExecuteCommand();
// //记录取药箱信息
// SqlSugarHelper.Db.Insertable(new MachineRecord()
// {
// MachineId = ConfigurationManager.AppSettings["machineId"].ToString(),
// DrawerNo = DrawerNo,
// Operator = HomeWindowViewModel.Operator?.Id,
// Reviewer = HomeWindowViewModel.Reviewer?.Id,
// OperationTime = DateTime.Now,
// Type = 70,
// Status= 70,
// InvoiceId = $"{DateTime.Now} 取出药箱"
// }).ExecuteCommand();
//}
//else if (OperationType == 0)
//{
// RequestData();
// //还药箱,将当前药箱号从当前登录人身上删除
// if (HomeWindowViewModel.Operator.BoxNumber == $",{DrawerNo.ToString()}")
// {
// HomeWindowViewModel.Operator.BoxNumber = string.Empty;
// }
// else
// {
// HomeWindowViewModel.Operator.BoxNumber = HomeWindowViewModel.Operator.BoxNumber.Replace($",{DrawerNo.ToString()},", ",");
// }
// SqlSugarHelper.Db.Updateable(HomeWindowViewModel.Operator).UpdateColumns(it => new { it.BoxNumber }).ExecuteCommand();
// SqlSugarHelper.Db.Updateable<ChannelList>().SetColumns(it => it.EffDate ==null).SetColumns(it => it.DrawerState == 1)
// .Where(it => it.MachineId == "DM5" && it.DrawerNo == DrawerNo).ExecuteCommand();
// //记录还药箱时间
// MachineRecord returnRecord = SqlSugarHelper.Db.Queryable<MachineRecord>().Where(mc => mc.MachineId == "DM5" && mc.DrawerNo == DrawerNo&&mc.Type==70&&mc.Operator==HomeWindowViewModel.Operator.Id).First();
// if(returnRecord!=null)
// {
// returnRecord.EffDate = DateTime.Now;
// returnRecord.Status = 71;
// returnRecord.Type = 71;
// returnRecord.InvoiceId += $";{DateTime.Now} 还回药箱";
// SqlSugarHelper.Db.Updateable(returnRecord).UpdateColumns(it => new { it.EffDate,it.Status,it.Type,it.InvoiceId }).ExecuteCommand();
// }
//}
Thread.Sleep(200);
int iException = 0;
new PromiseUtil<int>().taskAsyncLoop(500, 0, async (options, next, stop) =>
@ -902,84 +949,7 @@ namespace DM_Weight.ViewModels
}
});
}
//if (DrawerType == 1) //公共药箱
//{
// if (listDrawerState == 0)
// {
// SelfContent = "还公共药箱";
// }
// else
// {
// SelfContent = "取公共药箱";
// }
//}
//else
//{
// if (listDrawerState == 0)
// {
// SelfContent = "还名下药箱";
// }
// else
// {
// SelfContent = "取名下药箱";
// }
//}
}
//public DelegateCommand<string> OpenBoxDelegate
//{
// get => new DelegateCommand<string>((DrawerType) =>
// {
// SearchBox();
// }
// );
//}
//private void SearchBox()
//{
// SetAllBtnEnableFalse();
// iList = SqlSugarHelper.Db.Queryable<ChannelList>().Where(cl => cl.MachineId == "DM5" && cl.DrawerType == this.DrawerType)
// .WhereIF(this.DrawerType == 0, cl => cl.BelongUser == HomeWindowViewModel.Operator.UserBarcode).ToList();
// // .Select(cl => cl.DrawerNo).ToList();
// if (iList.Count > 0)
// {
// //_portUtil.SpeakAsync("正在打开药箱");
// //_portUtil.DrawerNo = iList[iNumber];
// //iNumber++;
// //_portUtil.OpenBox();
// for (int i = 0; i < iList.Count; i++)
// {
// ChannelList channelList = iList[i];
// //记录开药箱日志
// SqlSugarHelper.Db.Insertable(new MachineRecord()
// {
// MachineId = "DM5",
// DrawerNo = channelList.DrawerNo,
// Operator = HomeWindowViewModel.Operator?.Id,
// OperationTime = DateTime.Now,
// Type = 55,
// InvoiceId = $"打开{iList[i].DrawerNo}号药箱",
// OptionType = SelfContent.Substring(0, 1) == "取" ? 0 : 1
// }).ExecuteCommand();
// //记录药箱打开时间
// channelList.EffDate = DateTime.Now.ToString();
// channelList.DrawerState = SelfContent.Substring(0, 1) == "取" ? 0 : 1;
// SqlSugarHelper.Db.Updateable(channelList).UpdateColumns(it => new { it.EffDate, it.DrawerState }).ExecuteCommand();
// _portUtil.SpeakAsync($"正在打开{channelList.DrawerNo}号药箱");
// logger.Info($"正在打开{channelList.DrawerNo}号药箱");
// ModbusHelper.GetInstance().OpenBoxDoor(channelList.DrawerNo - 1);
// }
// SelfStatus = 0;
// PublicEnable = true;
// //SelfEnable = true;
// DrawerType = -1;
// }
//}
public DelegateCommand RowSelected
{
get => new DelegateCommand(() =>
@ -998,7 +968,7 @@ namespace DM_Weight.ViewModels
{
//TotalDrugList = OrderInfoList.Where(oi => oi.ItemIsChecked).GroupBy(oi => oi._OrderDetail.DrugInfo.DrugName).Select(oi => new TotalDrug { DrugName = oi.Key, TotalCount = oi.Sum(item => item._OrderDetail.Quantity) }).ToList();
TotalDrugList = OrderInfoList.Where(oi => oi.ItemIsChecked).SelectMany(OrderDetailList => OrderDetailList.OrderDetailList).GroupBy(item => item.DrugInfo.DrugName).Select(group => new TotalDrug { DrugName = group.Key, TotalCount = group.Sum(item => item.Quantity) }).ToList();
TotalDrugList = OrderInfoList.Where(oi => oi.ItemIsChecked).Select(OrderDetailList => OrderDetailList._OrderDetail).GroupBy(item => item.DrugInfo.DrugName).Select(group => new TotalDrug { DrugName = group.Key, TotalCount = group.Sum(item => item.Quantity) }).ToList();
}
}
@ -1017,6 +987,16 @@ namespace DM_Weight.ViewModels
{
get => new DelegateCommand(() =>
{
if (DrawerNo == -1)
{
AlertMsg alertMsg = new AlertMsg
{
Message = "请先选择手术间",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
return;
}
GetUseBox();
CheckOrderAction();
});
@ -1040,6 +1020,33 @@ namespace DM_Weight.ViewModels
//更新处方状态
if (oi.DmStatus == 0)
{
//查询该药箱是否有该批次的药品,没有则无法确认(避免管理进行确认时确认不过去)
if (oi._OrderDetail != null)
{
//for (int j = 0; j < oi.OrderDetailList.Count; j++)
//{
// oi._OrderDetail = oi.OrderDetailList[j];
int drawerNo = DrawerNo;
ChannelStock cs = SqlSugarHelper.Db.Queryable<ChannelStock>()
.Where(cs => cs.DrugId == oi._OrderDetail.DrugId
&& cs.ManuNo == oi._OrderDetail.SetManuNo
&& cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM5")
&& cs.DrawerNo == drawerNo).First();
if (cs == null)
{
AlertMsg alertMsg = new AlertMsg
{
Message = $"处方{oi.OrderNo}因药品批次{oi._OrderDetail.SetManuNo}无库存,无法确认",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
return false;
}
//}
}
SqlSugarHelper.Db.Updateable(new OrderInfo()
{
DmStatus = 1,
@ -1057,171 +1064,6 @@ namespace DM_Weight.ViewModels
}).ExecuteCommand();
}
#region 1
//for (int j = 0; j < oi.OrderDetailList.Count; j++)
//{
// oi._OrderDetail = oi.OrderDetailList[j];
// int drawerNo = DrawerNo + 1;
// ChannelStock cs = SqlSugarHelper.Db.Queryable<ChannelStock>()
// .Where(cs => cs.DrugId == oi._OrderDetail.DrugId
// && cs.ManuNo == oi._OrderDetail.SetManuNo
// && cs.EffDate == oi._OrderDetail.SetEffDate
// && cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM5")
// && cs.DrawerNo == drawerNo).First();
// if (cs == null)
// {
// empChannelStock += $"{oi.OrderNo},{oi._OrderDetail.DrugId},{oi._OrderDetail.SetManuNo},{oi._OrderDetail.SetEffDate};";
// continue;
// }
// cs.Quantity = cs.Quantity - oi._OrderDetail.Quantity;
// // 更新数据 库存信息
// SqlSugarHelper.Db.Updateable(cs).UpdateColumns(it => new { it.Quantity }).ExecuteCommand();
// if (cs != null)
// {
// SqlSugarHelper.Db.Insertable(new MachineRecord()
// {
// MachineId = ConfigurationManager.AppSettings["dm_machineId"].ToString(),
// DrawerNo = cs.DrawerNo,
// ColNo = cs.ColNo,
// DrugId = cs.DrugId,
// ManuNo = cs.ManuNo,
// EffDate = !String.IsNullOrEmpty(cs.EffDate) ? DateTime.ParseExact(cs.EffDate, "yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture) : null,
// Operator = HomeWindowViewModel.Operator?.Id,
// Reviewer = HomeWindowViewModel.Reviewer?.Id,
// OperationTime = DateTime.Now,
// Quantity = oi._OrderDetail.Quantity,
// Type = 2,
// InvoiceId = oi.OrderNo
// //, StockQuantity = nowChannels.Sum(it => it.Quantity)
// }).ExecuteCommand();
// #region 记录 注射剂使用与交接记录报表
// //查询发药时间
// //MachineRecord SendMachineRecord = SqlSugarHelper.Db.Queryable<MachineRecord>().Where(mr => mr.DrawerNo == cs.DrawerNo && mr.Type == 2)
// //.OrderByDescending(mr => mr.OperationTime)
// //.First();
// //string retUser = SqlSugarHelper.Db.Queryable<ChannelList>().Where(cl => cl.MachineId == (ConfigurationManager.AppSettings["machineId"] ?? "DM5") && cl.DrawerNo == cs.DrawerNo)
// //.Select(cl => cl.BelongUser).First();
// RejectionReport rejectionReport = SqlSugarHelper.Db.Queryable<RejectionReport>().Where(rp => rp.DrugId == cs.DrugId && rp.DrawerNo == cs.DrawerNo).OrderByDescending(rp => rp.SendDate).First();
// //发药信息
// //RejectionReport rejectionReport = new RejectionReport();
// //rejectionReport.SendDate = SendMachineRecord.OperationTime;
// //rejectionReport.SendUser = SendMachineRecord.Operator.ToString();
// //rejectionReport.ReceiveUser = retUser;
// rejectionReport.RealNum = cs.BaseQuantity;
// //还药信息
// rejectionReport.InfactNum = cs.BaseQuantity - oi._OrderDetail.Quantity;
// rejectionReport.EmptyNum = oi._OrderDetail.Quantity;
// rejectionReport.ReturnTime = DateTime.Now.ToString();
// rejectionReport.ReturnUser = rejectionReport.SendUser;
// rejectionReport.ReturnReceiveUser = rejectionReport.ReceiveUser;// SendMachineRecord.Operator.ToString();
// rejectionReport.DrugId = oi._OrderDetail.DrugId;
// rejectionReport.DrugName = oi._OrderDetail.DrugInfo.DrugName;
// rejectionReport.DrugSpec = oi._OrderDetail.DrugInfo.DrugSpec;
// rejectionReport.OperationTime = DateTime.Now;
// int iRejectionReport = SqlSugarHelper.Db.Updateable(rejectionReport).ExecuteCommand();
// #endregion
// }
// //保存账册
// int iInsertResult = SqlSugarHelper.Db.Insertable(new AccountBookG2()
// {
// DrugId = oi._OrderDetail.DrugId,
// Type = 2,
// Department = oi.DeptName,
// OrderNo = oi.OrderNo,
// ManuNo = cs.ManuNo,
// EffDate = cs.EffDate,
// OutQuantity = oi._OrderDetail.Quantity,
// UserId1 = HomeWindowViewModel.Operator?.Id,
// UserId2 = HomeWindowViewModel.Reviewer?.Id,
// MachineId = ConfigurationManager.AppSettings["dm_machineId"].ToString(),
// CreateDate = DateTime.Now.ToString("yyyy-MM-dd"),
// CreateTime = DateTime.Now,
// InvoiceNo = oi.OrderNo
// }).ExecuteCommand();
// //修改凌晨生成的日结存与总结存数据
// AccountBookG2 accountBookG2Day = SqlSugarHelper.Db.Queryable<AccountBookG2>()
// .Where(ab => ab.MachineId.Equals(ConfigurationManager.AppSettings["dm_machineId"].ToString()))
// .Where(ab => ab.Type == 3)
// .Where(ab => ab.DrugId == oi._OrderDetail.DrugId)
// .Where(ab => ab.ManuNo == cs.ManuNo)
// .Where(ab => ab.CreateDate == DateTime.Now.ToString("yyyy-MM-dd")).First();
// if (accountBookG2Day != null)
// {
// accountBookG2Day.ManuStock = accountBookG2Day.ManuStock - oi._OrderDetail.Quantity;
// SqlSugarHelper.Db.Updateable(accountBookG2Day).ExecuteCommand();
// }
// else
// {
// //生成日结存时可能没有该库位的绑定信息,需要写入日结存
// int iDayResult = SqlSugarHelper.Db.Insertable(new AccountBookG2()
// {
// DrugId = oi._OrderDetail.DrugId,
// Type = 3,
// ManuNo = cs.ManuNo,
// EffDate = cs.EffDate,
// YQuantity = 0,
// ManuStock = oi._OrderDetail.Quantity,
// TotalStock = oi._OrderDetail.Quantity,
// UserId1 = HomeWindowViewModel.Operator?.Id,
// UserId2 = HomeWindowViewModel.Reviewer?.Id,
// MachineId = ConfigurationManager.AppSettings["dm_machineId"].ToString(),
// CreateDate = DateTime.Now.ToString("yyyy-MM-dd"),
// InvoiceNo = "日结存"
// }).ExecuteCommand();
// if (iDayResult <= 0)
// {
// logger.Info($"未写入日结存数据{oi._OrderDetail.DrugId}-{cs.ManuNo}-{cs.EffDate}-{cs.Quantity}");
// }
// }
// //修改凌晨生成的日结存与总结存数据
// AccountBookG2 accountBookG2Total = SqlSugarHelper.Db.Queryable<AccountBookG2>()
// .Where(ab => ab.MachineId.Equals(ConfigurationManager.AppSettings["dm_machineId"].ToString()))
// .Where(ab => ab.Type == 4)
// .Where(ab => ab.DrugId == oi._OrderDetail.DrugId)
// .Where(ab => ab.CreateDate == DateTime.Now.ToString("yyyy-MM-dd")).First();
// if (accountBookG2Total != null)
// {
// accountBookG2Total.TotalStock = accountBookG2Total.TotalStock - oi._OrderDetail.Quantity;
// SqlSugarHelper.Db.Updateable(accountBookG2Total).ExecuteCommand();
// }
// else
// {
// //生成总结存时可能没有该库位的绑定信息,需要写入总结存
// int iTotalResult = SqlSugarHelper.Db.Insertable(new AccountBookG2()
// {
// DrugId = oi._OrderDetail.DrugId,
// Type = 4,
// YQuantity = 0,
// ManuStock = oi._OrderDetail.Quantity,
// TotalStock = oi._OrderDetail.Quantity,
// UserId1 = HomeWindowViewModel.Operator?.Id,
// UserId2 = HomeWindowViewModel.Reviewer?.Id,
// MachineId = ConfigurationManager.AppSettings["dm_machineId"].ToString(),
// CreateDate = DateTime.Now.ToString("yyyy-MM-dd"),
// InvoiceNo = "总结存"
// }).ExecuteCommand();
// if (iTotalResult <= 0)
// {
// logger.Info($"未写入总结存数据{oi._OrderDetail.DrugId}-{oi._OrderDetail.Quantity}");
// }
// }
//}
#endregion
}
//if (!string.IsNullOrEmpty(empChannelStock))
//{
@ -1282,6 +1124,7 @@ namespace DM_Weight.ViewModels
private void GetUseBox()
{
List<ChannelList> chlList = SqlSugarHelper.Db.Queryable<ChannelList>().Where(cl => cl.MachineId == "DM5").ToList();//.Select(cl => cl.BelongUser).First();
//chlList = chlList.GroupBy(cl => cl.DrawerNo).Select(cl => cl.FirstOrDefault()).ToList();
if (chlList != null && chlList.Count > 0)
{
for (int i = 0; i < chlList.Count; i++)
@ -1295,7 +1138,32 @@ namespace DM_Weight.ViewModels
//DrawerType== 1为公共药箱
if (chl.DrawerType == 1)
{
SetBtnEnable(chl.DrawerNo, true);
//if (OperationType == 1)
//{
// //取药箱,在库则可取,不在则不可取
// if (chl.DrawerState == 1)
// {
// SetBtnEnable(chl.DrawerNo, true);
// }
// else
// {
// SetBtnEnable(chl.DrawerNo, false);
// }
//}
//else
//{
// //还药箱,只能还自己取过的药箱
// //查询用户取过哪些药箱
// string[] BoxNumber = HomeWindowViewModel.Operator.BoxNumber.Split(',');
// if (BoxNumber != null && BoxNumber.Contains(chl.DrawerNo.ToString()))
// {
// SetBtnEnable(chl.DrawerNo, true);
// }
// else
// {
SetBtnEnable(chl.DrawerNo, true);
//}
//}
}
if (!string.IsNullOrEmpty(chl.BelongUser) && chl.BelongUser == HomeWindowViewModel.Operator.UserBarcode)
{
@ -1308,98 +1176,39 @@ namespace DM_Weight.ViewModels
}
}
}
public void OnNavigatedTo(NavigationContext navigationContext)
{
logger.Info("进入OnNavigatedTo");
//OpenOrderDialog();
RequestData();
logger.Info("结束RequestData");
//if(ModbusHelper.BoxOperate)
//{
// Task.Factory.StartNew(() => { ModbusHelper.SpeakAsync("请关闭药箱后再打开"); });
// return;
//}
////查询当前药师的第一个药箱号并打开该药箱
//int drawerNo = SqlSugarHelper.Db.Queryable<ChannelList>().Where(cl => cl.MachineId == "DM5" && cl.BelongUser == HomeWindowViewModel.Operator.UserBarcode).Select(cl => cl.DrawerNo).First();
//if (drawerNo > 0)
//{
//SetAllBtnEnableFalse();
//DrawerNo = drawerNo;
////进入页面打开当前用户的第一个药箱
////记录开药箱日志
//SqlSugarHelper.Db.Insertable(new MachineRecord()
//{
// MachineId = "DM5",
// DrawerNo = drawerNo,
// Operator = HomeWindowViewModel.Operator?.Id,
// OperationTime = DateTime.Now,
// Type = 55,
// InvoiceId = $"打开{drawerNo}号药箱",
// //OptionType = SelfContent.Substring(0, 1) == "取" ? 0 : 1
//}).ExecuteCommand();
//ModbusHelper.SpeakAsync($"正在打开{drawerNo}号药箱");
//logger.Info($"正在打开{drawerNo}号药箱");
//ModbusHelper.GetInstance().OpenBoxDoor(drawerNo - 1);
//SetBtnEnable(drawerNo, false);
//if (CheckBoxStatusTimer is null)
//{
// CheckBoxStatusTimer = new System.Timers.Timer();
//}
//if (!CheckBoxStatusTimer.Enabled)
//{
// CheckBoxStatusTimer.Elapsed += new System.Timers.ElapsedEventHandler(GetAllBoxState);
// CheckBoxStatusTimer.Interval = 3000;
// CheckBoxStatusTimer.Start();
//}
//记录药箱打开时间
//ChannelList channelList = SqlSugarHelper.Db.Queryable<ChannelList>().Where(cl => cl.MachineId == "DM5" && cl.DrawerNo == drawerNo).First();
//if (channelList != null && (channelList.EffDate is null || Convert.ToDateTime(channelList.EffDate).ToString("yyyy-MM-dd") != DateTime.Now.ToString("yyyy-MM-dd")))
//{
// channelList.EffDate = DateTime.Now.ToString();
// SqlSugarHelper.Db.Updateable(channelList).UpdateColumns(it => new { it.EffDate }).ExecuteCommand();
//}
//Task.Factory.StartNew(async () =>
//{
// bool loop = true;
// while (loop)
// {
// await Task.Delay(4000);
// bool[] boolsl = ModbusHelper.GetInstance().GetAllBoxState();
// bool state = Array.TrueForAll(boolsl, b => b == false);
// if (state)
// {
// loop = false;
// ModbusHelper.BoxOperate = false;
// }
// else
// {
// ModbusHelper.BoxOperate = true;
// //ModbusHelper.SpeakAsync("药箱已打开,请及时关闭");
// }
// }
//});
//}
}
//private void GetAllBoxState(object sender, ElapsedEventArgs e)
//{
// //查询药箱是否关闭,如果已经关闭则按钮可用,可继续开该编号的药箱
// if (DrawerNo >= 0)
// {
// bool[] boolArrs = ModbusHelper.GetInstance().GetAllBoxState();
// bool allFalse = Array.TrueForAll(boolArrs, b => b == false);
// if (allFalse)
// {
// if (CheckBoxStatusTimer.Enabled)
// {
// CheckBoxStatusTimer.Stop();
// }
// }
// //设置对应药箱按钮可用状态
// SetBtnEnable(DrawerNo, !boolArrs[DrawerNo]);
// }
//}
public async Task OpenOrderDialog()
{
// 此处延时1毫秒等待页面渲染
await Task.Delay(TimeSpan.FromMilliseconds(1));
DialogServiceExtensions.ShowDialogHost(_dialogService, "SelectOperationTypeDialog", null, DoDialogResult, "RootDialog");
}
private void DoDialogResult(IDialogResult dialogResult)
{
// 委托 被动执行 被子窗口执行
// dialogResult 第一方面可以拿到任意参数 第二方面 可判断关闭状态
if (dialogResult.Result == ButtonResult.OK)
{
//取药箱,只能取在库存的药箱
OperationType = 1;
GetUseBox();
}
else
{
//还药箱,只能点自己取过的药箱
OperationType = 0;
RequestData();
}
//MessageBox.Show("返回值:" + dialogResult.Result.ToString());
}
public bool IsNavigationTarget(NavigationContext navigationContext)
{
return true;
@ -1410,5 +1219,31 @@ namespace DM_Weight.ViewModels
// 取消消息订阅
//_eventAggregator.GetEvent<PortUtilEvent>().Unsubscribe(DoMyPrismEvent);
}
/// <summary>
/// 点击取药箱按钮
/// </summary>
//public DelegateCommand TakeBoxCommand
//{
// get => new DelegateCommand(TakeBoxMethod);
//}
//public void TakeBoxMethod()
//{
// OperationType = 1;
// GetUseBox();
//}
/// <summary>
/// 点击还药箱按钮
/// </summary>
//public DelegateCommand ReturnBoxCommand
//{
// get => new DelegateCommand(ReturnBoxMethod);
//}
//public void ReturnBoxMethod()
//{
// OperationType = 0;
// GetUseBox();
// RequestData();
//}
}
}

View File

@ -0,0 +1,436 @@
using Common.Logging;
using DM_Weight.Models;
using DM_Weight.msg;
using DM_Weight.Port;
using DM_Weight.util;
using log4net;
using MaterialDesignThemes.Wpf;
using Prism.Commands;
using Prism.Events;
using Prism.Mvvm;
using Prism.Regions;
using Prism.Services.Dialogs;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Reflection.Metadata.Ecma335;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Media;
namespace DM_Weight.ViewModels
{
public class CheckStockWindowViewModel : BindableBase, INavigationAware, IRegionMemberLifetime
{
private readonly log4net.ILog logger = log4net.LogManager.GetLogger(typeof(CheckStockWindowViewModel));
private int _drawerNo = 0;
public int DrawerNo
{
get => _drawerNo;
set => SetProperty(ref _drawerNo, value);
}
private SolidColorBrush _colorBrush;
public SolidColorBrush SnackbarBackground
{
get => _colorBrush;
set => SetProperty(ref _colorBrush, value);
}
private ISnackbarMessageQueue _snackbarMessageQueue = new SnackbarMessageQueue(TimeSpan.FromSeconds(3));
public ISnackbarMessageQueue SnackbarMessageQueue
{
get => _snackbarMessageQueue;
set => SetProperty(ref _snackbarMessageQueue, value);
}
private List<ChannelStock> _channelStocks = new();
public List<ChannelStock> ChannelStocks
{
get => _channelStocks;
set => SetProperty(ref _channelStocks, value);
}
private ChannelStock _channelStock;
public ChannelStock _ChannelStock
{
get => _channelStock;
set => SetProperty(ref _channelStock, value);
}
private bool _isEnable = true;
public bool IsEnable { get => _isEnable; set => SetProperty(ref _isEnable, value); }
private int _status = 0;
public int Status { get => _status; set { SetProperty(ref _status, value); } }
private readonly IDialogService _dialogService;
public bool KeepAlive => false;
IEventAggregator _eventAggregator;
public CheckStockWindowViewModel(IDialogService dialogService, IEventAggregator eventAggregator)
{
_dialogService = dialogService;
_eventAggregator = eventAggregator;
}
private void RequestData()
{
List<ChannelStock> queryData = SqlSugarHelper.Db.Queryable<ChannelStock>()
.Includes(cs => cs.DrugInfo)
.Where(cs => cs.DrawerNo == DrawerNo + 1)
.Where(cs => cs.DrugId != null)
.Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM5"))
.OrderBy(cs => cs.DrugId)
.ToList();
ChannelStocks = queryData.Select(it => { it.CheckQuantity = it.Quantity; return it; }).ToList();
}
public void OnNavigatedTo(NavigationContext navigationContext)
{
logger.Info("进入OnNavigatedTo");
//删除药品有批次但是库存为0的药品
List<ChannelStock> csList = SqlSugarHelper.Db.Queryable<ChannelStock>().Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM5") && cs.Quantity <= 0 && !string.IsNullOrEmpty(cs.ManuNo)).ToList();
if (csList != null && csList.Count > 0)
{
SqlSugarHelper.Db.Deleteable<ChannelStock>().Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM5") && cs.Quantity <= 0 && !string.IsNullOrEmpty(cs.ManuNo)).ExecuteCommand();
for (int i = 0; i < csList.Count; i++)
{
//如果channel_stock下无数据则channel_list同步删除
int iListCount= SqlSugarHelper.Db.Queryable<ChannelStock>().Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM5") && cs.DrawerNo==csList[i].DrawerNo&& cs.DrugId == csList[i].DrugId).Count();
if (iListCount <=0)
SqlSugarHelper.Db.Deleteable<ChannelList>().Where(cl => cl.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM5") && cl.Id == csList[i].Chnguid).ExecuteCommand();
}
}
RequestData();
logger.Info("结束RequestData");
}
public bool IsNavigationTarget(NavigationContext navigationContext)
{
return true;
}
public void OnNavigatedFrom(NavigationContext navigationContext)
{
// 取消消息订阅
//_eventAggregator.GetEvent<PortUtilEvent>().Unsubscribe(DoMyPrismEvent);
}
public DelegateCommand<string> UpdateDrawerNo
{
get => new DelegateCommand<string>((DrawerNo) =>
{
this.DrawerNo = Convert.ToInt32(DrawerNo);
RequestData();
}
);
}
private static readonly DateTime Jan1st1970 = new DateTime
(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
public long CurrentTimeMillis()
{
return (long)(DateTime.UtcNow - Jan1st1970).TotalMilliseconds;
}
//保存修改的库存数
public DelegateCommand SaveCommand
{
get => new DelegateCommand(() =>
{
List<ChannelStock> record = ChannelStocks.FindAll(it => it.Quantity != it.CheckQuantity).ToList();
if (record.Count > 0)
{
bool iFlag = true;
string InvoiceId = "CHECK_" + CurrentTimeMillis();
var f = SqlSugarHelper.Db.UseTran(() =>
{
for (int i = 0; i < record.Count; i++)
{
iFlag = true;
ChannelStock it = record[i];
if (it.AddToJJNum > 0 || it.NeedNum > 0)
{
//有待取药或待入库药品,弹出提示,确认后保存
DialogParameters dialogParameters = new DialogParameters();
dialogParameters.Add("ConfirmInfo", $"所选药品{it.DrugInfo.DrugName}存在待取药或待入库数据是否确认保存?");
DialogServiceExtensions.ShowDialogHost(_dialogService, "ConfirmDialog", dialogParameters, (IDialogResult dialogResult) =>
{
if (dialogResult.Result == ButtonResult.OK)
{
iFlag = true;
}
else
{
iFlag = false;
}
}, "RootDialog");
}
if (iFlag)
{
// 更新数据 库存信息
SqlSugarHelper.Db.Updateable(new ChannelStock()
{
Quantity = it.CheckQuantity,
ManuNo = it.ManuNo,
EffDate = it.EffDate,
Id = it.Id,
NeedNum = 0,
AddToJJNum = 0,
State = 0,
}).UpdateColumns(it => new { it.Quantity, it.ManuNo, it.EffDate, it.NeedNum, it.AddToJJNum }).ExecuteCommand();
//SqlSugarHelper.Db.Updateable(new ChannelList()
//{
// State = 0,
// Id = it.Chnguid
//}).UpdateColumns(cl => new { cl.State }).ExecuteCommand();
//盘点改库存记录账册,多了则记录入库、少了记录出库
if(it.CheckQuantity!=it.Quantity)
{
//查询上一条账册中的空瓶数
AccountBookG2 accountBookEmpty = SqlSugarHelper.Db.Queryable<AccountBookG2>()
.Where(ab => ab.MachineId.Equals(ConfigurationManager.AppSettings["dm_machineId"].ToString()))
.Where(ab => ab.Type == 1 || ab.Type == 2)
.Where(ab => ab.DrugId == it.DrugId)
.Where(ab => ab.ManuNo == it.ManuNo).OrderByDescending(ab => ab.Id).First();
//修改凌晨生成的日结存与总结存数据
AccountBookG2 accountBookG2Day = SqlSugarHelper.Db.Queryable<AccountBookG2>()
.Where(ab => ab.MachineId.Equals(ConfigurationManager.AppSettings["dm_machineId"].ToString()))
.Where(ab => ab.Type == 3)
.Where(ab => ab.DrugId == it.DrugId)
.Where(ab => ab.ManuNo == it.ManuNo)
.Where(ab => ab.CreateDate == DateTime.Now.ToString("yyyy-MM-dd")).First();
// 获取更新完库存后的药品库存
List<ChannelStock> nowChannels = SqlSugarHelper.Db.Queryable<ChannelStock>()
.Where(cs => (cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"]) && cs.DrawerType == 1) || cs.MachineId.Equals(ConfigurationManager.AppSettings["jj_machineId"]))
.Where(cs => cs.DrugId.Equals(it.DrugId))
.Where(cs => cs.ManuNo.Equals(it.ManuNo))
//.Where(cs => cs.DrawerType == 1)
.ToList();
int manuStock = 0;
if (it.CheckQuantity-it.Quantity>0)
{
//盘多了,记录入库
if (accountBookG2Day != null)
{
accountBookG2Day.ManuStock = accountBookG2Day.ManuStock + (it.CheckQuantity - it.Quantity);
accountBookG2Day.AddQuantity = accountBookG2Day.AddQuantity + (it.CheckQuantity - it.Quantity);
//负数直接记0
accountBookG2Day.TotalStock = (accountBookEmpty != null ? (accountBookEmpty.TotalStock > 0 && accountBookEmpty.TotalStock > (it.CheckQuantity - it.Quantity) ? accountBookEmpty.TotalStock - (it.CheckQuantity - it.Quantity) : 0) : 0);
accountBookG2Day.CreateTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 23, 59, 59);
SqlSugarHelper.Db.Updateable(accountBookG2Day).ExecuteCommand();
manuStock = accountBookG2Day.ManuStock;
}
else
{
//生成日结存时可能没有该库位的绑定信息,需要写入日结存
int iDayResult = SqlSugarHelper.Db.Insertable(new AccountBookG2()
{
DrugId = it.DrugId,
Type = 3,
ManuNo = it.ManuNo,
EffDate = it.EffDate,
YQuantity = 0,
ManuStock = (it.CheckQuantity - it.Quantity),
TotalStock = (it.CheckQuantity - it.Quantity),
UserId1 = HomeWindowViewModel.Operator?.Id,
UserId2 = HomeWindowViewModel.Reviewer?.Id,
MachineId = ConfigurationManager.AppSettings["machineId"].ToString(),
CreateDate = DateTime.Now.ToString("yyyy-MM-dd"),
CreateTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 23, 59, 59),
InvoiceNo = "日结存",
AddQuantity = (it.CheckQuantity - it.Quantity)
}).ExecuteCommand();
if (iDayResult <= 0)
{
logger.Info($"未写入日结存数据{it.DrugId}-{it.ManuNo}-{it.EffDate}-{it.CheckQuantity - it.Quantity}");
}
}
//保存账册
SqlSugarHelper.Db.Insertable(new AccountBookG2()
{
DrugId = it.DrugId,
Type = 1,
Department = ConfigurationManager.AppSettings["department"].ToString(),
InvoiceNo = InvoiceId,
ManuNo = it.ManuNo,
EffDate = it.EffDate,
AddQuantity = it.CheckQuantity - it.Quantity,
UserId1 = HomeWindowViewModel.Operator?.Id,
UserId2 = HomeWindowViewModel.Reviewer?.Id,
MachineId = ConfigurationManager.AppSettings["machineId"].ToString(),
CreateDate = DateTime.Now.ToString("yyyy-MM-dd"),
CreateTime = DateTime.Now,
ManuStock = manuStock > 0 ? manuStock : nowChannels.Sum(it => it.Quantity),
TotalStock = (accountBookEmpty != null ? (accountBookEmpty.TotalStock > 0 && accountBookEmpty.TotalStock > (it.CheckQuantity - it.Quantity) ? accountBookEmpty.TotalStock - (it.CheckQuantity - it.Quantity) : 0) : 0) //负数直接记0
}).ExecuteCommand();
}
else
{
//盘少了,记录出库
if (accountBookG2Day != null)
{
accountBookG2Day.ManuStock = accountBookG2Day.ManuStock - (it.Quantity-it.CheckQuantity);
accountBookG2Day.OutQuantity = accountBookG2Day.OutQuantity + (it.Quantity - it.CheckQuantity);
SqlSugarHelper.Db.Updateable(accountBookG2Day).ExecuteCommand();
//accountBookG2Day.UseDose = (Convert.ToInt32(accountBookG2Day.UseDose) + Convert.ToInt32(oi._OrderDetail.surgicalResidual.UseDose)).ToString();//盘点减的库存没有使用剂量
//accountBookG2Day.ResidualDose = (Convert.ToInt32(accountBookG2Day.ResidualDose) + Convert.ToInt32(oi._OrderDetail.surgicalResidual.ResidualDose)).ToString();//盘点减的库存没有剩余剂量
accountBookG2Day.TotalStock = (accountBookEmpty != null ? (accountBookEmpty.TotalStock > 0 ? accountBookEmpty.TotalStock : 0) : 0) + (it.Quantity - it.CheckQuantity);
manuStock = accountBookG2Day.ManuStock;
}
else
{
//生成日结存时可能没有该库位的绑定信息,需要写入日结存
int iDayResult = SqlSugarHelper.Db.Insertable(new AccountBookG2()
{
DrugId =it.DrugId,
Type = 3,
ManuNo = it.ManuNo,
EffDate = it.EffDate,
YQuantity = 0,
ManuStock = nowChannels.Sum(it => it.Quantity), //oi._OrderDetail.Quantity,
TotalStock = it.Quantity - it.CheckQuantity,
UserId1 = HomeWindowViewModel.Operator?.Id,
UserId2 = HomeWindowViewModel.Reviewer?.Id,
MachineId = ConfigurationManager.AppSettings["dm_machineId"].ToString(),
CreateDate = DateTime.Now.ToString("yyyy-MM-dd"),
CreateTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 23, 59, 59),
InvoiceNo = "日结存",
OutQuantity = (it.Quantity - it.CheckQuantity),
//UseDose = oi._OrderDetail.surgicalResidual.UseDose,
//ResidualDose = oi._OrderDetail.surgicalResidual.ResidualDose
}).ExecuteCommand();
if (iDayResult <= 0)
{
logger.Info($"未写入日结存数据{it.DrugId}-{it.ManuNo}-{it.EffDate}-{it.Quantity-it.CheckQuantity}");
}
}
//查询上一条账册中的空瓶数
//AccountBookG2 accountBookEmpty = SqlSugarHelper.Db.Queryable<AccountBookG2>()
//.Where(ab => ab.MachineId.Equals(ConfigurationManager.AppSettings["dm_machineId"].ToString()))
//.Where(ab => ab.Type == 1 || ab.Type == 2)
//.Where(ab => ab.DrugId == oi._OrderDetail.DrugId)
//.Where(ab => ab.ManuNo == cs.ManuNo).OrderByDescending(ab => ab.Id).First();
//保存账册
int iInsertResult = SqlSugarHelper.Db.Insertable(new AccountBookG2()
{
DrugId = it.DrugId,
Type = 2,
//Department = oi.DeptName,
OrderNo = $"checkStock_{it.DrawerNo}_{it.ColNo}_{it.Quantity}_{it.CheckQuantity}_{DateTime.Now}",
ManuNo = it.ManuNo,
EffDate = it.EffDate,
OutQuantity = it.Quantity-it.CheckQuantity,
UserId1 = HomeWindowViewModel.Operator?.Id,
UserId2 = HomeWindowViewModel.Reviewer?.Id,
MachineId = ConfigurationManager.AppSettings["dm_machineId"].ToString(),
CreateDate = DateTime.Now.ToString("yyyy-MM-dd"),
CreateTime = DateTime.Now,
InvoiceNo = $"checkStock_{it.DrawerNo}_{it.ColNo}_{it.Quantity}_{it.CheckQuantity}_{DateTime.Now}",
ManuStock = manuStock > 0 ? manuStock : nowChannels.Sum(it => it.Quantity),
TotalStock = (accountBookEmpty != null ? (accountBookEmpty.TotalStock > 0 ? accountBookEmpty.TotalStock : 0) : 0) + (it.Quantity - it.CheckQuantity),
//ShoushuJian = drawerNo.ToString()
}).ExecuteCommand();
//修改凌晨生成的日结存与总结存数据
}
}
// 保存数据 盘点记录
SqlSugarHelper.Db.Insertable(new MachineRecord()
{
MachineId = it.MachineId,
DrawerNo = it.DrawerNo,
ColNo = it.ColNo,
DrugId = it.DrugId,
ManuNo = it.ManuNo,
EffDate = !String.IsNullOrEmpty(it.EffDate) ? DateTime.ParseExact(it.EffDate, "yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture) : null,
Operator = HomeWindowViewModel.Operator?.Id,
Reviewer = HomeWindowViewModel.Reviewer?.Id,
OperationTime = DateTime.Now,
Quantity = it.CheckQuantity - it.Quantity,
Type = 4,
InvoiceId = $"{it.DrawerNo}{it.DrugInfo.DrugName}盘前库存{it.Quantity},后{it.CheckQuantity}" // InvoiceId
//,StockQuantity = nowChannels.Sum(it => it.Quantity),
//CheckQuantity = it.CheckQuantity
}).ExecuteCommand();
logger.Info($"库存盘点->药箱号【{it.DrawerNo}】药品【{it.DrugInfo.DrugName}】盘点前库存【{it.Quantity}】,更改后【{it.CheckQuantity}】");
}
else
{
return false;
break;
}
}
return true;
});
if (!iFlag)
{
return;
}
if (f.Data)
{
RequestData();
AlertMsg alertMsg = new AlertMsg
{
Message = "操作完成",
Type = MsgType.SUCCESS,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
}
if (!f.IsSuccess)
{
AlertMsg alertMsg = new AlertMsg
{
Message = "操作失败!",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
}
Status = 0;
}
else
{
AlertMsg alertMsg = new AlertMsg
{
Message = "盘点完成,库存无改变",
Type = MsgType.ERROR
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
Status = 0;
}
});
}
//刷新
public DelegateCommand Query
{
get => new DelegateCommand(RequestData);
}
public DelegateCommand RowSelected
{
get => new DelegateCommand(() =>
{
if (_channelStock != null)
{
}
});
}
}
}

View File

@ -0,0 +1,66 @@
using DM_Weight.Models;
using Prism.Commands;
using Prism.Mvvm;
using Prism.Regions;
using Prism.Services.Dialogs;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DM_Weight.ViewModels
{
public class ConfirmDialogViewModel : BindableBase, IDialogAware, IRegionMemberLifetime
{
private string _title = "保存确认";
public string Title
{
get => _title;
set => SetProperty(ref _title, value);
}
private string _confirmInfo= "所选药品存在待取药或待入库数据是否确认保存?";
public string ConfirmInfo
{
get => _confirmInfo;
set => SetProperty(ref _confirmInfo, value);
}
public bool KeepAlive => false;
public event Action<IDialogResult> RequestClose;
public bool CanCloseDialog()
{
return true;
}
public void OnDialogClosed()
{
}
public void OnDialogOpened(IDialogParameters parameters)
{
ConfirmInfo = parameters.GetValue<string>("ConfirmInfo");
}
public DelegateCommand CancelCommand
{
get => new DelegateCommand(() =>
{
// 关闭当前窗口
RequestClose?.Invoke(new DialogResult(ButtonResult.Cancel));
});
}
public DelegateCommand ConfirmCommand
{
get => new DelegateCommand(() =>
{
//确认
RequestClose?.Invoke(new DialogResult(ButtonResult.OK));
});
}
}
}

View File

@ -0,0 +1,73 @@
using DM_Weight.Models;
using DM_Weight.msg;
using Prism.Commands;
using Prism.Mvvm;
using Prism.Services.Dialogs;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DM_Weight.ViewModels
{
internal class DatetimeDialogViewModel : BindableBase, IDialogAware
{
public string Title => throw new NotImplementedException();
public event Action<IDialogResult> RequestClose;
private DateTime? _date = new DateTime();
public DateTime? Date
{
get => _date;
set
{
SetProperty(ref _date, value);
}
}
private DateTime? _time = new DateTime();
public DateTime? Time
{
get => _time;
set
{
SetProperty(ref _time, value);
}
}
public bool CanCloseDialog()
{
return true;
}
public void OnDialogClosed()
{
}
string typeS;
public void OnDialogOpened(IDialogParameters parameters)
{
DateTime o = parameters.GetValue<DateTime>("DateTime");
typeS = parameters.GetValue<string>("Type");
Date = o;
Time = o;
}
public DelegateCommand CloseAction
{
get => new DelegateCommand(() =>
{
var datetime=new DateTime(Date?.Year ?? DateTime.Now.Year, Date?.Month ?? DateTime.Now.Month, Date?.Day ?? DateTime.Now.Day,
Time?.Hour ?? DateTime.Now.Hour, Time?.Minute ?? DateTime.Now.Minute, Time?.Second ?? DateTime.Now.Second);
var result = new DialogResult(ButtonResult.OK, new DialogParameters
{
{ "DateTime", datetime },
{"Type",typeS }
});
RequestClose?.Invoke(result);
});
}
}
}

View File

@ -0,0 +1,99 @@
using DM_Weight.Models;
using DM_Weight.msg;
using DM_Weight.Port;
using DM_Weight.util;
using log4net;
using Prism.Commands;
using Prism.Events;
using Prism.Mvvm;
using Prism.Regions;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DM_Weight.ViewModels
{
public class EmergencyWindowViewModel : BindableBase
{
private readonly ILog logger = LogManager.GetLogger(typeof(HomeWindowViewModel));
IEventAggregator _eventAggregator;
private PortUtil _portUtil;
IRegionManager _regionManager;
SocketHelper _socketHelper;
private bool _dbConnectionFail = !App.DbConnectionFail;
public bool DBConnectionStatus { get=>_dbConnectionFail; set => SetProperty(ref _dbConnectionFail, value); }
public EmergencyWindowViewModel(IRegionManager regionManager, PortUtil portUtil, IEventAggregator eventAggregator, SocketHelper socketHelper)
{
_portUtil = portUtil;
_eventAggregator = eventAggregator;
_regionManager = regionManager;
_socketHelper = socketHelper;
CheckDBConnect();
}
public DelegateCommand<string> UpdateDrawerNo
{
get => new DelegateCommand<string>((DrawerNo) =>
{
//应急开锁
logger.Info($"应急开锁正在打开{DrawerNo}号药箱");
try
{
logger.Info($"发送开{DrawerNo}号药箱指令");
_socketHelper.SendMessage(new MyBaseMessage() { lockNo = (short)(Convert.ToInt32(DrawerNo) - 1) });
_socketHelper.dateTime = DateTime.Now;
logger.Info($"发开{DrawerNo}号药箱指令完成");
}
catch (Exception ex)
{
AlertMsg alertMsg = new AlertMsg
{
Message = $"网口连接异常,开药箱正在重试{ex.Message}",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
return;
}
}
);
}
public DelegateCommand ReturnLoginDelegate
{
get => new DelegateCommand(() =>
{
_regionManager.RequestNavigate("MainRegion", "LoginWindow");
});
}
private DelegateCommand? _exitCommand;
public DelegateCommand ExitCommand => _exitCommand ??= new DelegateCommand(Exit);
void Exit()
{
//_chkFunction.HIKLoginOut();
_socketHelper.SocketDisConnect();
Process.GetCurrentProcess().Kill();
Environment.Exit(0);
}
//间隔1分钟查询数据库连接状态
private void CheckDBConnect()
{
new PromiseUtil<int>().taskAsyncLoop(60000, 0, async (options, next, stop) =>
{
try
{
var userList = SqlSugarHelper.Db.Queryable<UserList>()
.First(u => u.UserName == "admin");
App.DbConnectionFail = false;
DBConnectionStatus = true;
stop();
}
catch (Exception ex)
{
next();
}
});
}
}
}

View File

@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DM_Weight.ViewModels
{
internal class EmptyWindowViewModel
{
}
}

View File

@ -0,0 +1,475 @@
using Common.Logging;
using DM_Weight.Models;
using DM_Weight.msg;
using DM_Weight.Port;
using DM_Weight.select;
using DM_Weight.util;
using Prism.Commands;
using Prism.Events;
using Prism.Mvvm;
using Prism.Regions;
using Prism.Services.Dialogs;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace DM_Weight.ViewModels
{
public class ExchangeDialogViewModel : BindableBase, IDialogAware, IRegionMemberLifetime
{
private readonly ILog logger = LogManager.GetLogger(typeof(RemoveDialogViewModel));
public string Title => "替换药品";
public event Action<IDialogResult> RequestClose;
private static readonly DateTime Jan1st1970 = new DateTime
(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
IEventAggregator _eventAggregator;
private List<ChannelStock> _channelStocks = new();
public List<ChannelStock> _ChannelStocks
{
get => _channelStocks;
set { SetProperty(ref _channelStocks, value); }
}
private ChannelStock _csStock;
public ChannelStock _ChannelStock
{
get { return _csStock; }
set { SetProperty(ref _csStock, value); }
}
SocketHelper _socketHelper;
public ExchangeDialogViewModel(IEventAggregator eventAggregator, SocketHelper socketHelper)
{
_eventAggregator = eventAggregator;
_socketHelper = socketHelper;
}
private int _status = 0;
public int Status
{
get => _status; set => SetProperty(ref _status, value);
}
static List<OrderTakeSelect> StaticSelects = new List<OrderTakeSelect>()
{
new OrderTakeSelect{Name="一号手术间",Code="1"},
new OrderTakeSelect{Name="二号手术间",Code="2"},
new OrderTakeSelect{Name="三号手术间",Code="3"},
new OrderTakeSelect{Name="四号手术间",Code="4"},
new OrderTakeSelect{Name="五号手术间",Code="5"},
new OrderTakeSelect{Name="六号手术间",Code="6"},
new OrderTakeSelect{Name="七号手术间",Code="7"},
new OrderTakeSelect{Name="八号手术间",Code="8"},
new OrderTakeSelect{Name="九号手术间",Code="9"},
new OrderTakeSelect{Name="十号手术间",Code="10"},
new OrderTakeSelect{Name="十一号手术间",Code="11"},
new OrderTakeSelect{Name="十二号手术间",Code="12"},
new OrderTakeSelect{Name="十三号手术间",Code="13"},
new OrderTakeSelect{Name="十四号手术间",Code="14"},
new OrderTakeSelect{Name="十五号手术间",Code="15"},
new OrderTakeSelect{Name="十六号手术间",Code="16"},
new OrderTakeSelect{Name="十七号手术间",Code="17"},
new OrderTakeSelect{Name="十八号手术间",Code="18"},
};
private List<OrderTakeSelect> _selects = StaticSelects;
public List<OrderTakeSelect> Selects
{
get { return _selects; }
set
{
SetProperty(ref _selects, value);
}
}
private OrderTakeSelect _selectedItem = StaticSelects[0];
public OrderTakeSelect SelectedItem
{
get => _selectedItem;
set
{
RequestData(value.Code);
SetProperty(ref _selectedItem, value);
}
}
//去掉移出的药箱号
private OrderTakeSelect _removeItem = new();
public OrderTakeSelect RemoveItem
{
get => _removeItem;
set
{
SetProperty(ref _removeItem, value);
}
}
public bool CanCloseDialog()
{
return Status == 0;
}
public void OnDialogClosed()
{
Selects.Insert(_ChannelStock.DrawerNo - 1, RemoveItem);
}
public void OnDialogOpened(IDialogParameters parameters)
{
ChannelStock _csStock = parameters.GetValue<ChannelStock>("csStock");
_ChannelStock = _csStock;
RemoveItem = Selects[_ChannelStock.DrawerNo - 1];
Selects.Remove(RemoveItem);
//RequestData();
}
public void RequestData(string code)
{
_ChannelStocks = SqlSugarHelper.Db.Queryable<ChannelStock>()
.Where(cl => cl.MachineId == "DM5")
.WhereIF(!string.IsNullOrEmpty(code), cl => cl.DrawerNo == Convert.ToInt32(code))
.Where(cl => cl.DrawerType == 1)
.Where(cl => cl.DrugId == _ChannelStock.DrugId && cl.ManuNo != _ChannelStock.ManuNo)
.Includes<DrugInfo>(cs => cs.DrugInfo)
.ToList();
}
//开药盒
public DelegateCommand OpenDrawer
{
get => new DelegateCommand(async () =>
{
if (SelectedItem.Code != null)
{
await OpenBox();
}
else
{
AlertMsg alertMsg = new AlertMsg
{
Message = "请选择要替换的药箱!",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
}
}, () => Status == 0);
}
private async Task OpenBox()
{
if (_socketHelper.OpenStatus)
{
_socketHelper.speechSynthesizer.SpeakAsyncCancelAll();
_socketHelper.speechSynthesizer.Resume();
_socketHelper.SpeakAsync("请关闭手术间后再打开");
return;
}
MachineRecord machineRecord = new MachineRecord();
machineRecord.MachineId = "DM5";
machineRecord.DrawerNo = Convert.ToInt32(SelectedItem.Code);
machineRecord.Operator = HomeWindowViewModel.Operator?.Id;
machineRecord.OperationTime = DateTime.Now;
machineRecord.Type = 55;
machineRecord.InvoiceId = $"交换药品明细{_ChannelStock?.DrawerNo},打开{Convert.ToInt32(SelectedItem.Code)}号手术间";
if (Convert.ToInt32(SelectedItem.Code) > 0)
{
Status = 1;
_socketHelper.speechSynthesizer.SpeakAsyncCancelAll();
_socketHelper.speechSynthesizer.Resume();
_socketHelper.SpeakAsync($"正在打开{SelectedItem.Code}号手术间");
logger.Info($"正在打开{SelectedItem.Code}号手术间");
//记录开药箱日志
SqlSugarHelper.Db.Insertable(machineRecord).ExecuteCommand();
try
{
_socketHelper.SendMessage(new MyBaseMessage() { lockNo = (short)(Convert.ToInt32(SelectedItem.Code) - 1) });
_socketHelper.dateTime = DateTime.Now;
}
catch (Exception ex)
{
AlertMsg alertMsg = new AlertMsg
{
Message = $"网口连接异常,正在重试{ex.Message}",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
logger.Info($"网口连接异常,正在重试{ex.Message}");
return;
}
_socketHelper.OpenStatus = true;
//记录药箱打开时间
ChannelList channelList = SqlSugarHelper.Db.Queryable<ChannelList>().Where(cl => cl.MachineId == "DM5" && cl.DrawerNo == _ChannelStock.DrawerNo).First();
if (channelList != null && (channelList.EffDate is null || Convert.ToDateTime(channelList.EffDate).ToString("yyyy-MM-dd") != DateTime.Now.ToString("yyyy-MM-dd")))
{
channelList.EffDate = DateTime.Now.ToString();
SqlSugarHelper.Db.Updateable(channelList).UpdateColumns(it => new { it.EffDate }).ExecuteCommand();
}
Thread.Sleep(200);
int iException = 0;
await new PromiseUtil<int>().taskAsyncLoop(500, 0, async (options, next, stop) =>
{
try
{
if (_socketHelper.OpenStatus)
{
_socketHelper.SendMessage(new MyBaseMessage() { lockNo = 0x33, functionCode = 4, delay = 2 });
if (_socketHelper.OpenStatus)
{
next();
}
else
{
_socketHelper.IsMultiThread = false;
_socketHelper.dateTime = DateTime.Now;
Status = 0;
stop();
}
}
else
{
_socketHelper.IsMultiThread = false;
_socketHelper.dateTime = DateTime.Now;
Status = 0;
stop();
}
iException = 0;
}
catch (Exception ex)
{
iException++;
if (iException >= 3)
{
_socketHelper.OpenStatus = false;
}
AlertMsg alertMsg = new AlertMsg
{
Message = $"网口连接异常,正在重试{ex.Message}",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
logger.Info($"网口连接异常,正在重试{ex.Message}");
next();
}
});
}
}
private bool _isFinishClick = false;
public bool IsFinishClick { get => _isFinishClick; set => SetProperty(ref _isFinishClick, value); }
// 完成按钮
public DelegateCommand FinishCommand
{
get => new DelegateCommand(() =>
{
try
{
List<ChannelStock> saveChannelStock = _ChannelStocks.Where(cs => cs.TakeQuantity > 0).ToList();
if (saveChannelStock == null || saveChannelStock.Count <= 0)
{
AlertMsg alertMsg = new AlertMsg
{
Message = "请填写要交换药品的交换数量",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
return;
}
int sumQuantity = saveChannelStock.Sum(cs => cs.TakeQuantity);
if (sumQuantity > _ChannelStock.Quantity)
{
AlertMsg alertMsg = new AlertMsg
{
Message = "交换总数不能大于库存",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
return;
}
IsFinishClick = true;
var f = SqlSugarHelper.Db.UseTran(() =>
{
for (int i = 0; i < saveChannelStock.Count; i++)
{
ChannelStock currentChannelStock = saveChannelStock[i];
if (currentChannelStock.Quantity < currentChannelStock.TakeQuantity)
{
AlertMsg alertMsg = new AlertMsg
{
Message = $"药品{currentChannelStock.DrugInfo.DrugName}交换数量不能大于库存",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
return false;
}
string csId = Guid.NewGuid().ToString();
//查询【出药】的药箱中是否有该批次药品
ChannelStock ReplaceChannelStockList = SqlSugarHelper.Db.Queryable<ChannelStock>()
.Where(cs => cs.MachineId.Equals(_ChannelStock.MachineId))
.Where(cs => cs.DrawerNo == _ChannelStock.DrawerNo)
.Where(cs => cs.DrugId.Equals(currentChannelStock.DrugId))
.Where(cs => cs.ManuNo.Equals(currentChannelStock.ManuNo))
.First();
//修改已替换的药品批次数量(现库存数-已替换总数)
if (_ChannelStock.Quantity > 0)
{
_ChannelStock.Quantity = _ChannelStock.Quantity - sumQuantity;
SqlSugarHelper.Db.Updateable(_ChannelStock).UpdateColumns(it => new { it.Quantity }).ExecuteCommand();
}
if (ReplaceChannelStockList != null)
{
//有该批次药品则更新
//csId = ReplaceChannelStockList.Id;
ReplaceChannelStockList.Quantity = ReplaceChannelStockList.Quantity + currentChannelStock.TakeQuantity;
SqlSugarHelper.Db.Updateable(ReplaceChannelStockList).UpdateColumns(it => new { it.Quantity }).ExecuteCommand();
}
else
{
//没有该批次药品则插入
SqlSugarHelper.Db.Insertable(new ChannelStock()
{
MachineId = _ChannelStock.MachineId,
DrawerNo = _ChannelStock.DrawerNo,
DrugId = _ChannelStock.DrugId,
ManuNo = currentChannelStock.ManuNo,
EffDate = currentChannelStock.EffDate,
Quantity = currentChannelStock.TakeQuantity,
DrawerType = 1,
Chnguid = _ChannelStock.Chnguid,
Id = csId,
BaseQuantity= _ChannelStock.BaseQuantity
}).ExecuteCommand();
}
string csToId = Guid.NewGuid().ToString();
// 保存数据 替换药记录
SqlSugarHelper.Db.Insertable(new MoveChannelStock()
{
MachineId = _ChannelStock.MachineId,
FromDrawer = _ChannelStock.DrawerNo,
ToDrawer = currentChannelStock.DrawerNo,
DrugId = _ChannelStock.DrugId,
FromManuNo = _ChannelStock.ManuNo,
ToManuNo = currentChannelStock.ManuNo,
Operator = HomeWindowViewModel.Operator?.Id,
Reviewer = HomeWindowViewModel.Reviewer?.Id,
Quantity = currentChannelStock.TakeQuantity,
Type = 69,
}).ExecuteCommand();
//查询【入药】的药箱中是否有该批次药品
ChannelStock Replace2ChannelStockList = SqlSugarHelper.Db.Queryable<ChannelStock>()
.Where(cs => cs.MachineId.Equals(_ChannelStock.MachineId))
.Where(cs => cs.DrawerNo == currentChannelStock.DrawerNo)
.Where(cs => cs.DrugId.Equals(_ChannelStock.DrugId))
.Where(cs => cs.ManuNo.Equals(_ChannelStock.ManuNo))
.First();
//修改替换的药品批次数量(现库存数-已替换总数)
currentChannelStock.Quantity = currentChannelStock.Quantity - currentChannelStock.TakeQuantity;
SqlSugarHelper.Db.Updateable(currentChannelStock).UpdateColumns(it => new { it.Quantity }).ExecuteCommand();
if (Replace2ChannelStockList!=null)
{
//有该批次药品则更新库存
Replace2ChannelStockList.Quantity = Replace2ChannelStockList.Quantity + currentChannelStock.TakeQuantity;
SqlSugarHelper.Db.Updateable(Replace2ChannelStockList).UpdateColumns(it => new { it.Quantity }).ExecuteCommand();
}
else
{
//没有该批次药品则插入
SqlSugarHelper.Db.Insertable(new ChannelStock()
{
MachineId = _ChannelStock.MachineId,
DrawerNo = currentChannelStock.DrawerNo,
DrugId = _ChannelStock.DrugId,
ManuNo = _ChannelStock.ManuNo,
Quantity = currentChannelStock.TakeQuantity,
DrawerType = 1,
Chnguid = currentChannelStock.Chnguid,
Id = csToId,
BaseQuantity= currentChannelStock.BaseQuantity
}).ExecuteCommand();
}
}
return true;
});
if (f.Data)
{
AlertMsg alertMsg = new AlertMsg
{
Message = "操作完成,库存已更新",
Type = MsgType.SUCCESS,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
}
if (!f.IsSuccess)
{
AlertMsg alertMsg = new AlertMsg
{
Message = "库存更新失败!",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
}
Status = 0;
IsFinishClick = false;
RequestClose?.Invoke(new DialogResult(ButtonResult.OK));
}
catch (Exception ex)
{
AlertMsg alertMsg = new AlertMsg
{
Message = "替换药品异常",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
}
}, () => !IsFinishClick);
}
public long CurrentTimeMillis()
{
return (long)(DateTime.UtcNow - Jan1st1970).TotalMilliseconds;
}
// 取消按钮
public DelegateCommand CancleCommand
{
get => new DelegateCommand(() =>
{
IsFinishClick = false;
Status = 0;
// 关闭当前窗口
RequestClose?.Invoke(new DialogResult(ButtonResult.Cancel));
});
}
public DelegateCommand BtnCloseCommand
{
get => new DelegateCommand(() =>
{
// 关闭当前窗口
RequestClose?.Invoke(new DialogResult(ButtonResult.Cancel));
}, () => Status == 0).ObservesProperty(() => Status);
}
public bool KeepAlive => false;
}
}

View File

@ -0,0 +1,264 @@
using Common.Logging;
using DM_Weight.Models;
using DM_Weight.msg;
using DM_Weight.Port;
using DM_Weight.util;
using Prism.Commands;
using Prism.Events;
using Prism.Mvvm;
using Prism.Regions;
using Prism.Services.Dialogs;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Drawing.Printing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace DM_Weight.ViewModels
{
public class ExchangeWindowViewModel : BindableBase, INavigationAware, IRegionMemberLifetime
{
public bool KeepAlive => false;
private readonly ILog logger = LogManager.GetLogger(typeof(CheckOrderNewWindowViewModel));
private List<ChannelStock> _channelStocks=new List<ChannelStock>();
public List<ChannelStock> _ChannelStocks
{
get => _channelStocks;
set=>SetProperty(ref _channelStocks, value);
}
private ChannelStock _selectedChannelStock=new ChannelStock();
public ChannelStock _ChannelStock
{
get=>_selectedChannelStock;
set=>SetProperty(ref _selectedChannelStock, value);
}
//所选药箱号
private int _drawerNo = -1;
public int DrawerNo
{
get => _drawerNo;
set => SetProperty(ref _drawerNo, value);
}
IDialogService _dialogService;
SocketHelper _socketHelper;
IEventAggregator _eventAggregator;
public ExchangeWindowViewModel(IEventAggregator eventAggregator, IDialogService DialogService, SocketHelper socketHelper)
{
_dialogService = DialogService;
_socketHelper = socketHelper;
_eventAggregator = eventAggregator;
}
public DelegateCommand<string> UpdateDrawerNo
{
get => new DelegateCommand<string>(OpenBoxAction);
}
public async void OpenBoxAction(string strDrawerNo)
{
if (_socketHelper.OpenStatus)
{
_socketHelper.speechSynthesizer.SpeakAsyncCancelAll();
_socketHelper.speechSynthesizer.Resume();
_socketHelper.SpeakAsync("请关闭手术间后再打开");
return;
}
DrawerNo = Convert.ToInt32(strDrawerNo);
MachineRecord machineRecord = new MachineRecord();
machineRecord.MachineId = "DM5";
machineRecord.DrawerNo = DrawerNo+1;
machineRecord.Operator = HomeWindowViewModel.Operator?.Id;
machineRecord.OperationTime = DateTime.Now;
machineRecord.Type = 55;
machineRecord.InvoiceId = $"交换药品,打开{DrawerNo+1}号手术间";
if (DrawerNo+1 > 0)
{
RequestData();
_socketHelper.speechSynthesizer.SpeakAsyncCancelAll();
_socketHelper.speechSynthesizer.Resume();
_socketHelper.SpeakAsync($"正在打开{DrawerNo+1}号手术间");
logger.Info($"正在打开{DrawerNo+1}号手术间");
//记录开药箱日志
SqlSugarHelper.Db.Insertable(machineRecord).ExecuteCommand();
try
{
_socketHelper.SendMessage(new MyBaseMessage() { lockNo = (short)(DrawerNo) });
_socketHelper.dateTime = DateTime.Now;
}
catch (Exception ex)
{
AlertMsg alertMsg = new AlertMsg
{
Message = $"网口连接异常,正在重试{ex.Message}",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
logger.Info($"网口连接异常,正在重试{ex.Message}");
return;
}
_socketHelper.OpenStatus = true;
//记录药箱打开时间
ChannelList channelList = SqlSugarHelper.Db.Queryable<ChannelList>().Where(cl => cl.MachineId == "DM5" && cl.DrawerNo == (DrawerNo+1)).First();
if (channelList != null && (channelList.EffDate is null || Convert.ToDateTime(channelList.EffDate).ToString("yyyy-MM-dd") != DateTime.Now.ToString("yyyy-MM-dd")))
{
channelList.EffDate = DateTime.Now.ToString();
SqlSugarHelper.Db.Updateable(channelList).UpdateColumns(it => new { it.EffDate }).ExecuteCommand();
}
Thread.Sleep(200);
int iException = 0;
await new PromiseUtil<int>().taskAsyncLoop(500, 0, async (options, next, stop) =>
{
try
{
if (_socketHelper.OpenStatus)
{
_socketHelper.SendMessage(new MyBaseMessage() { lockNo = 0x33, functionCode = 4, delay = 2 });
if (_socketHelper.OpenStatus)
{
next();
}
else
{
_socketHelper.IsMultiThread = false;
_socketHelper.dateTime = DateTime.Now;
stop();
}
}
else
{
_socketHelper.IsMultiThread = false;
_socketHelper.dateTime = DateTime.Now;
stop();
}
iException = 0;
}
catch (Exception ex)
{
iException++;
if (iException >= 3)
{
_socketHelper.OpenStatus = false;
}
AlertMsg alertMsg = new AlertMsg
{
Message = $"网口连接异常,正在重试{ex.Message}",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
logger.Info($"网口连接异常,正在重试{ex.Message}");
next();
}
});
}
}
private void RequestData()
{
List<ChannelStock> queryData = SqlSugarHelper.Db.Queryable<ChannelStock>()
.Includes(cs => cs.DrugInfo)
.Where(cs => cs.DrawerNo == (DrawerNo + 1))
.Where(cs => cs.DrugId != null)
.Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM5"))
.OrderBy(cs => cs.DrugId)
.ToList();
_ChannelStocks = queryData.Select(it => { it.CheckQuantity = it.Quantity; return it; }).ToList();
}
public bool IsNavigationTarget(NavigationContext navigationContext)
{
return true;
}
public void OnNavigatedFrom(NavigationContext navigationContext)
{
}
public void OnNavigatedTo(NavigationContext navigationContext)
{
}
public DelegateCommand ExchangeCommand
{
get =>new DelegateCommand(Exchange);
}
//替换
private async void Exchange()
{
if (_ChannelStock == null)
{
logger.Error("请选择要交换的药品");
return;
}
if (_ChannelStock.DrugInfo == null)
{
logger.Error("请选<E8AFB7><E98089>要交换的药品");
return;
}
// 此处延时1毫秒等待页面渲染
await Task.Delay(TimeSpan.FromMilliseconds(1));
//选中药箱号下的所有药品id
DialogParameters dialogParameters = new DialogParameters();
dialogParameters.Add("csStock", _ChannelStock);
DialogServiceExtensions.ShowDialogHost(_dialogService, "ExchangeDialog", dialogParameters, DoDialogResult, "RootDialog");
}
//移出
public DelegateCommand RemoveCommand
{
get => new DelegateCommand(Remove);
}
private async void Remove()
{
if (_ChannelStock != null)
{
// 此处延时1毫秒等待页面渲染
await Task.Delay(TimeSpan.FromMilliseconds(1));
//选中药箱号下的所有药品id
DialogParameters dialogParameters = new DialogParameters();
dialogParameters.Add("csStock", _ChannelStock);
DialogServiceExtensions.ShowDialogHost(_dialogService, "RemoveDialog", dialogParameters, DoDialogResult, "RootDialog");
}
else
{
AlertMsg alertMsg = new AlertMsg
{
Message = "请选择要移出的药品!",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
return;
}
}
private void DoDialogResult(IDialogResult dialogResult)
{
RequestData();
}
private DelegateCommand _rowSelected;
public DelegateCommand RowSelected => _rowSelected ??= new DelegateCommand(OpenOrderDialog);
public async void OpenOrderDialog()
{
//if (_ChannelStock != null)
//{
// // 此处延时1毫秒等待页面渲染
// await Task.Delay(TimeSpan.FromMilliseconds(1));
// //选中药箱号下的所有药品id
// DialogParameters dialogParameters = new DialogParameters();
// dialogParameters.Add("_ChannelStock", _ChannelList.channelStocks);
// DialogServiceExtensions.ShowDialogHost(_dialogService, "AddToJiaoJieDialog", dialogParameters, DoDialogResult, "RootDialog");
//}
}
}
}

View File

@ -25,6 +25,7 @@ using DM_Weight.msg;
using DM_Weight.HIKVISION;
using System.Threading;
using System.Diagnostics;
using MaterialDesignThemes.Wpf;
namespace DM_Weight.ViewModels
{
@ -268,6 +269,7 @@ namespace DM_Weight.ViewModels
if (!_socketHelper.OpenStatus)
{
SetProperty(ref _selectedMenu, value);
SelectionMethod();//在此处调用而不是通过前台的Triggers事件调用为了规避未关闭药箱时多次点击菜单不起作用
}
else
{
@ -279,11 +281,11 @@ namespace DM_Weight.ViewModels
}
}
//PremissionDm? PreSelectedMenu;
private DelegateCommand _selectionCommon;
public DelegateCommand SelectionCommon
{
get => _selectionCommon ?? (_selectionCommon = new DelegateCommand(SelectionMethod));
}
//private DelegateCommand _selectionCommon;
//public DelegateCommand SelectionCommon
//{
// get => _selectionCommon ?? (_selectionCommon = new DelegateCommand(SelectionMethod));
//}
private void SelectionMethod()
{
//SelectedMenu = viewName.SelectedItem as PremissionDm;
@ -315,6 +317,7 @@ namespace DM_Weight.ViewModels
logger.Info($"用户【{Operator?.Nickname}】退出登录");
Operator = null;
Reviewer = null;
_regionManager.RequestNavigate("ContentRegion", "EmptyWindow");
_regionManager.RequestNavigate("MainRegion", "LoginWindow");
//}
//else
@ -569,6 +572,7 @@ namespace DM_Weight.ViewModels
Reviewer = null;
//Application.Current.Dispatcher.Invoke(() =>
//{
_regionManager.RequestNavigate("ContentRegion", "EmptyWindow");
_regionManager.RequestNavigate("MainRegion", "LoginWindow");
//});
AlertMsg alertMsg = new AlertMsg
@ -585,7 +589,7 @@ namespace DM_Weight.ViewModels
PremissionDmList = premissions;
SelectedMenu = premissions[0];
SelectedChildMenu = premissions[0].Children[0];
_regionManager.RequestNavigate("ContentRegion", premissions[0].Children[0].PremissionPath);
//_regionManager.RequestNavigate("ContentRegion", premissions[0].Children[0].PremissionPath);
//FindDrawerCount();
int autoExit = Convert.ToInt32(ConfigurationManager.AppSettings["autoExit"] ?? "0");
if (autoExit > 0)
@ -608,6 +612,11 @@ namespace DM_Weight.ViewModels
stop();
System.Windows.Application.Current.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() =>
{
if (DialogHost.IsDialogOpen("RootDialog"))
{
DialogHost.Close("RootDialog");
}
_regionManager.RequestNavigate("ContentRegion", "EmptyWindow");
_regionManager.RequestNavigate("MainRegion", "LoginWindow");
}));
//});

View File

@ -127,16 +127,16 @@ namespace DM_Weight.ViewModels
// _eventAggregator = eventAggregator;
//}
public LoginWindowViewModel(IRegionManager regionManager, IEventAggregator eventAggregator, PortUtil portUtil, FingerprintUtil fingerprintUtil,SocketHelper socketHelper)
public LoginWindowViewModel(IRegionManager regionManager, IEventAggregator eventAggregator, PortUtil portUtil, FingerprintUtil fingerprintUtil, SocketHelper socketHelper)
{
_fingerprintUtil = fingerprintUtil;
_portUtil = portUtil;
//_chkFunction= chcFunction;
_regionManager = regionManager;
_eventAggregator = eventAggregator;
_socketHelper= socketHelper;
_socketHelper = socketHelper;
FingerMsg = !_fingerprintUtil.bIsConnected;
NetMsg=!_socketHelper.ConnectedStatus;
NetMsg = !_socketHelper.ConnectedStatus;
_eventAggregator.GetEvent<FingerprintEvent>().Subscribe(LoginEvent);
}
private DelegateCommand? _loginCommand;
@ -277,7 +277,7 @@ _exitCommand ??= new DelegateCommand(Exit);
keys.Add("operator", user);
//System.Windows.Application.Current.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() =>
//{
_regionManager.RequestNavigate("MainRegion", "HomeWindow", keys);
_regionManager.RequestNavigate("MainRegion", "HomeWindow", keys);
//}));
}
// 双人登录模式
@ -377,6 +377,9 @@ _exitCommand ??= new DelegateCommand(Exit);
void Exit()
{
//_chkFunction.HIKLoginOut();
//清录屏进程
_eventAggregator.GetEvent<PrintScreenEvent>().Publish(2);
_socketHelper.SocketDisConnect();
Process.GetCurrentProcess().Kill();
Environment.Exit(0);
}
@ -464,6 +467,8 @@ _exitCommand ??= new DelegateCommand(Exit);
{
//FingerMsg = !_fingerprintUtil.bIsConnected;
//_eventAggregator.GetEvent<FingerprintEvent>().Subscribe(LoginEvent);
//结束录屏
_eventAggregator.GetEvent<PrintScreenEvent>().Publish(0);
}
@ -477,6 +482,10 @@ _exitCommand ??= new DelegateCommand(Exit);
public void OnNavigatedFrom(NavigationContext navigationContext)
{
_eventAggregator.GetEvent<FingerprintEvent>().Unsubscribe(LoginEvent);
#region
//登录进来后开始录屏
_eventAggregator.GetEvent<PrintScreenEvent>().Publish(1);
#endregion
}
//手动实现调用配置的逻辑 规避修改配置文件后不起作用的问题
public string ReadAppSetting(string key)

View File

@ -1,30 +1,39 @@
using MaterialDesignThemes.Wpf;
using DM_Weight.Finger;
using DM_Weight.HIKVISION;
using DM_Weight.Models;
using DM_Weight.msg;
using DM_Weight.Port;
using DM_Weight.util;
using DM_Weight.Views;
using log4net;
using log4net.Repository.Hierarchy;
using MaterialDesignThemes.Wpf;
using Prism.Commands;
using Prism.Events;
using Prism.Mvvm;
using Prism.Regions;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media;
using DM_Weight.msg;
using DM_Weight.Port;
using DM_Weight.util;
using DM_Weight.Finger;
using DM_Weight.Views;
using Unity;
using DM_Weight.HIKVISION;
using log4net.Repository.Hierarchy;
using log4net;
using DM_Weight.Models;
using System.Windows;
using System.Windows.Media;
using Unity;
namespace DM_Weight.ViewModels
{
internal class MainWindowViewModel : BindableBase
{
#region
//public Recorder _recorder;
private string _outputFolder;
private string _outputFilePath;
//public static MainWindowViewModel vm;
#endregion
private string _title = "Prism App"; //标题
private ISnackbarMessageQueue _snackbarMessageQueue = new SnackbarMessageQueue(TimeSpan.FromSeconds(3));
@ -72,11 +81,14 @@ namespace DM_Weight.ViewModels
SocketHelper _socketHelper;
private PortUtil _portUtil;
public MainWindowViewModel(IRegionManager regionManager, IUnityContainer container, IEventAggregator eventAggregator, FingerprintUtil fingerprintUtil, SocketHelper socketHelper, PortUtil portUtil)
FFmpegHelper fmpegHelper;
public MainWindowViewModel(IRegionManager regionManager, IUnityContainer container, IEventAggregator eventAggregator, FingerprintUtil fingerprintUtil, SocketHelper socketHelper, PortUtil portUtil,FFmpegHelper fmpegHelper)
{
//vm = this;
_portUtil = portUtil;
this.eventAggregator = eventAggregator;
this.eventAggregator.GetEvent<SnackbarEvent>().Subscribe(doMyPrismEvent2);
this.eventAggregator.GetEvent<PrintScreenEvent>().Subscribe(PrintScreen);
_fingerprintUtil = fingerprintUtil;
_regionManager = regionManager;
_container = container;
@ -84,10 +96,15 @@ namespace DM_Weight.ViewModels
//System.Windows.Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() =>
//{
_container.RegisterType<object, LoginWindow>("LoginWindow");
_regionManager.RegisterViewWithRegion("MainRegion", "LoginWindow");
if (App.DbConnectionFail)
{
_regionManager.RequestNavigate("MainRegion", "EmergencyWindow");
}
else
{
_container.RegisterType<object, LoginWindow>("LoginWindow");
_regionManager.RegisterViewWithRegion("MainRegion", "LoginWindow");
}
//}));
_socketHelper = socketHelper;
new PromiseUtil<int>().taskAsyncLoop(1200000, 0, async (options, next, stop) =>
@ -120,6 +137,7 @@ namespace DM_Weight.ViewModels
next();
}
});
this.fmpegHelper= fmpegHelper;
}
void doMyPrismEvent2(AlertMsg msg)
@ -141,6 +159,100 @@ namespace DM_Weight.ViewModels
SnackbarMessageQueue.Enqueue(msg.Message);
}));
}
#region
/// <summary>
/// 录屏事件
/// </summary>
/// <param name="type">0停止录屏1开始录屏2退出软件清进程</param>
void PrintScreen(int type)
{
if (type == 0)
{
StopPrintScreen();
//删除7天前的录屏文件
if (Directory.Exists(_outputFolder))
{
var files = Directory.GetFiles(_outputFolder);
foreach (var file in files)
{
var fileInfo = new FileInfo(file);
if (fileInfo.CreationTime < DateTime.Now.AddDays(-7))
{
try
{
fileInfo.Delete();
}
catch (Exception ex)
{
logger.Error($"删除录屏文件失败: {ex.Message}");
}
}
}
}
}
else if (type == 1)
{
StartPrintScreen();
}
else if (type == 2)
{
//_recorder?.Dispose();
}
}
#endregion
void StopPrintScreen()
{
fmpegHelper.stopFlag = true;
fmpegHelper.StopRecording();
//退出登录结束录屏
//_recorder?.Stop();
}
//录屏
void StartPrintScreen()
{
fmpegHelper.stopFlag = false;
_outputFolder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "Log", "ScreenRecordings");
if (!Directory.Exists(_outputFolder))
{
Directory.CreateDirectory(_outputFolder);
}
// 生成输出文件名
string timestamp = DateTime.Now.ToString("yyyyMMdd_HHmmss");
_outputFilePath = Path.Combine(_outputFolder, $"{timestamp}.webm");
fmpegHelper.StartRecording(_outputFilePath, 25);
//// 创建输出目录
//_outputFolder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "Log", "ScreenRecordings");
//if (!Directory.Exists(_outputFolder))
//{
// Directory.CreateDirectory(_outputFolder);
//}
//// 生成输出文件名
//string timestamp = DateTime.Now.ToString("yyyyMMdd_HHmmss");
//_outputFilePath = Path.Combine(_outputFolder, $"{timestamp}.mp4");
//// 设置录制选项
//var options = new RecorderOptions();
//// 创建录制器实例
//_recorder = Recorder.CreateRecorder(options);
//// 设置事件处理
//_recorder.OnRecordingComplete += Recorder_OnRecordingComplete;
//_recorder.OnRecordingFailed += Recorder_OnRecordingFailed;
//// 开始录制
//_recorder.Record(_outputFilePath);
}
//录制失败
//private void Recorder_OnRecordingFailed(object sender, RecordingFailedEventArgs e)
//{
// logger.Info($"录制失败: {e.Error}");
//}
////录制完成
//private void Recorder_OnRecordingComplete(object sender, RecordingCompleteEventArgs e)
//{
// logger.Info($"录制完成: {e.FilePath}");
//}
}
}

View File

@ -0,0 +1,465 @@
using Common.Logging;
using DM_Weight.Models;
using DM_Weight.msg;
using DM_Weight.Port;
using DM_Weight.select;
using DM_Weight.util;
using Prism.Commands;
using Prism.Events;
using Prism.Mvvm;
using Prism.Regions;
using Prism.Services.Dialogs;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace DM_Weight.ViewModels
{
public class RemoveDialogViewModel : BindableBase, IDialogAware, IRegionMemberLifetime
{
private readonly ILog logger = LogManager.GetLogger(typeof(RemoveDialogViewModel));
public string Title => "药品移出药箱";
public event Action<IDialogResult> RequestClose;
private static readonly DateTime Jan1st1970 = new DateTime
(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
IEventAggregator _eventAggregator;
private ChannelStock _csStock;
public ChannelStock _ChannelStock
{
get { return _csStock; }
set { SetProperty(ref _csStock, value); }
}
SocketHelper _socketHelper;
public RemoveDialogViewModel(IEventAggregator eventAggregator, SocketHelper socketHelper)
{
_eventAggregator = eventAggregator;
_socketHelper = socketHelper;
}
private int _status = 0;
public int Status
{
get => _status; set => SetProperty(ref _status, value);
}
static List<OrderTakeSelect> StaticSelects = new List<OrderTakeSelect>()
{
new OrderTakeSelect{Name="一号手术间",Code="1"},
new OrderTakeSelect{Name="二号手术间",Code="2"},
new OrderTakeSelect{Name="三号手术间",Code="3"},
new OrderTakeSelect{Name="四号手术间",Code="4"},
new OrderTakeSelect{Name="五号手术间",Code="5"},
new OrderTakeSelect{Name="六号手术间",Code="6"},
new OrderTakeSelect{Name="七号手术间",Code="7"},
new OrderTakeSelect{Name="八号手术间",Code="8"},
new OrderTakeSelect{Name="九号手术间",Code="9"},
new OrderTakeSelect{Name="十号手术间",Code="10"},
new OrderTakeSelect{Name="十一号手术间",Code="11"},
new OrderTakeSelect{Name="十二号手术间",Code="12"},
new OrderTakeSelect{Name="十三号手术间",Code="13"},
new OrderTakeSelect{Name="十四号手术间",Code="14"},
new OrderTakeSelect{Name="十五号手术间",Code="15"},
new OrderTakeSelect{Name="十六号手术间",Code="16"},
new OrderTakeSelect{Name="十七号手术间",Code="17"},
new OrderTakeSelect{Name="十八号手术间",Code="18"},
};
private List<OrderTakeSelect> _selects = StaticSelects;
public List<OrderTakeSelect> Selects
{
get { return _selects; }
set
{
SetProperty(ref _selects, value);
}
}
private OrderTakeSelect _selectedItem = StaticSelects[0];
public OrderTakeSelect SelectedItem
{
get => _selectedItem;
set => SetProperty(ref _selectedItem, value);
}
//去掉移出的药箱号
private OrderTakeSelect _removeItem = new();
public OrderTakeSelect RemoveItem
{
get => _removeItem;
set => SetProperty(ref _removeItem, value);
}
private int _removeQuantity;
public int RemoveQuantity
{
get => _removeQuantity;
set
{
if (value < 0)
{
throw new ArgumentException("移入数量不能是负数");
}
if (value > _ChannelStock.Quantity)
{
throw new ArgumentException("移入数量超出库存数");
}
SetProperty(ref _removeQuantity, value);
}
}
public bool CanCloseDialog()
{
return Status == 0;
}
public void OnDialogClosed()
{
Selects.Insert(_ChannelStock.DrawerNo - 1, RemoveItem);
}
public void OnDialogOpened(IDialogParameters parameters)
{
ChannelStock _csStock = parameters.GetValue<ChannelStock>("csStock");
_ChannelStock = _csStock;
RemoveItem = Selects[_ChannelStock.DrawerNo - 1];
Selects.Remove(RemoveItem);
RemoveQuantity = _ChannelStock.Quantity;
RequestData();
}
public void RequestData()
{
}
//开药盒
public DelegateCommand OpenDrawer
{
get => new DelegateCommand(async () =>
{
if (SelectedItem != null)
{
await OpenBox();
}
else
{
AlertMsg alertMsg = new AlertMsg
{
Message = "请选择要移入的药箱!",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
}
}, () => Status == 0);
}
private async Task OpenBox()
{
if (_socketHelper.OpenStatus)
{
_socketHelper.speechSynthesizer.SpeakAsyncCancelAll();
_socketHelper.speechSynthesizer.Resume();
_socketHelper.SpeakAsync("请关闭手术间后再打开");
return;
}
MachineRecord machineRecord = new MachineRecord();
machineRecord.MachineId = "DM5";
machineRecord.DrawerNo = Convert.ToInt32(SelectedItem.Code);
machineRecord.Operator = HomeWindowViewModel.Operator?.Id;
machineRecord.OperationTime = DateTime.Now;
machineRecord.Type = 55;
machineRecord.InvoiceId = $"移出药品{_ChannelStock?.DrawerNo}打开{Convert.ToInt32(SelectedItem.Code)}号手术间";
if (Convert.ToInt32(SelectedItem.Code) > 0)
{
RequestData();
Status = 1;
_socketHelper.speechSynthesizer.SpeakAsyncCancelAll();
_socketHelper.speechSynthesizer.Resume();
_socketHelper.SpeakAsync($"正在打开{SelectedItem.Code}号手术间");
logger.Info($"正在打开{SelectedItem.Code}号手术间");
//记录开药箱日志
SqlSugarHelper.Db.Insertable(machineRecord).ExecuteCommand();
try
{
_socketHelper.SendMessage(new MyBaseMessage() { lockNo = (short)(Convert.ToInt32(SelectedItem.Code) - 1) });
_socketHelper.dateTime = DateTime.Now;
}
catch (Exception ex)
{
AlertMsg alertMsg = new AlertMsg
{
Message = $"网口连接异常,正在重试{ex.Message}",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
logger.Info($"网口连接异常,正在重试{ex.Message}");
return;
}
_socketHelper.OpenStatus = true;
//记录药箱打开时间
ChannelList channelList = SqlSugarHelper.Db.Queryable<ChannelList>().Where(cl => cl.MachineId == "DM5" && cl.DrawerNo == _ChannelStock.DrawerNo).First();
if (channelList != null && (channelList.EffDate is null || Convert.ToDateTime(channelList.EffDate).ToString("yyyy-MM-dd") != DateTime.Now.ToString("yyyy-MM-dd")))
{
channelList.EffDate = DateTime.Now.ToString();
SqlSugarHelper.Db.Updateable(channelList).UpdateColumns(it => new { it.EffDate }).ExecuteCommand();
}
Thread.Sleep(200);
int iException = 0;
await new PromiseUtil<int>().taskAsyncLoop(500, 0, async (options, next, stop) =>
{
try
{
if (_socketHelper.OpenStatus)
{
_socketHelper.SendMessage(new MyBaseMessage() { lockNo = 0x33, functionCode = 4, delay = 2 });
if (_socketHelper.OpenStatus)
{
next();
}
else
{
_socketHelper.IsMultiThread = false;
_socketHelper.dateTime = DateTime.Now;
Status = 0;
stop();
}
}
else
{
_socketHelper.IsMultiThread = false;
_socketHelper.dateTime = DateTime.Now;
Status = 0;
stop();
}
iException = 0;
}
catch (Exception ex)
{
iException++;
if (iException >= 3)
{
_socketHelper.OpenStatus = false;
}
AlertMsg alertMsg = new AlertMsg
{
Message = $"网口连接异常,正在重试{ex.Message}",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
logger.Info($"网口连接异常,正在重试{ex.Message}");
next();
}
});
}
}
private bool _isFinishClick = false;
public bool IsFinishClick { get => _isFinishClick; set => SetProperty(ref _isFinishClick, value); }
// 完成按钮
public DelegateCommand FinishCommand
{
get => new DelegateCommand(() =>
{
try
{
IsFinishClick = true;
var f = SqlSugarHelper.Db.UseTran(() =>
{
//查询要移入的药箱中是否有该药品
List<ChannelStock> RemoveChannelStockList = SqlSugarHelper.Db.Queryable<ChannelStock>()
.Where(cs => cs.MachineId.Equals(_ChannelStock.MachineId))
.Where(cs => cs.DrawerNo == Convert.ToInt32(SelectedItem.Code))
.Where(cs => cs.DrugId.Equals(_ChannelStock.DrugId))
//.Where(cs => cs.ManuNo.Equals(_ChannelStock.ManuNo))
.ToList();
ChannelList channelList = SqlSugarHelper.Db.Queryable<ChannelList>()
.Where(cl => cl.MachineId.Equals(_ChannelStock.MachineId))
.Where(cs => cs.DrawerNo == Convert.ToInt32(SelectedItem.Code))
.Where(cs => cs.DrugId.Equals(_ChannelStock.DrugId)).First();
if (RemoveChannelStockList != null&& RemoveChannelStockList.Count>0&& channelList!=null&&!string.IsNullOrEmpty(channelList.Id))
{
//查询药品总数(移入后是否超基数)
int sumQuantity = RemoveChannelStockList.Sum(rs => rs.Quantity);
if (sumQuantity + RemoveQuantity > channelList.BaseQuantity)
{
AlertMsg alertMsg = new AlertMsg
{
Message = "移入数量超出药箱基数,请重新选择",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
return false;
}
//减当前药箱的数量,添加需要加药数量
_ChannelStock.Quantity = _ChannelStock.Quantity - RemoveQuantity;
_ChannelStock.NeedNum = RemoveQuantity;
SqlSugarHelper.Db.Updateable(_ChannelStock).UpdateColumns(it => new { it.Quantity,it.NeedNum }).ExecuteCommand();
string csId = Guid.NewGuid().ToString();
//查询要移动的药箱是否有该批次
ChannelStock removeChannelStock = RemoveChannelStockList.Where(it => it.ManuNo == _ChannelStock.ManuNo).FirstOrDefault();
//有该药品且有该批次
if (removeChannelStock != null)
{
csId = removeChannelStock.Id;
removeChannelStock.Quantity = removeChannelStock.Quantity + RemoveQuantity;
SqlSugarHelper.Db.Updateable(removeChannelStock).UpdateColumns(it => new { it.Quantity }).ExecuteCommand();
}
else
{
//有该药品但没有该批次
int iInsertResult= SqlSugarHelper.Db.Insertable(new ChannelStock()
{
MachineId = _ChannelStock.MachineId,
DrawerNo = Convert.ToInt32(SelectedItem.Code),
ColNo = _ChannelStock.ColNo,
DrugId = _ChannelStock.DrugId,
ManuNo = _ChannelStock.ManuNo,
EffDate=_ChannelStock.EffDate,
Quantity = RemoveQuantity,
DrawerType = 1,
Chnguid = RemoveChannelStockList[0].Chnguid,
CheckQuantity= RemoveChannelStockList[0].CheckQuantity,
Id = csId,
}).ExecuteCommand();
if (iInsertResult > 0)
{
//删除没有批次的数据
SqlSugarHelper.Db.Deleteable<ChannelStock>(RemoveChannelStockList.Where(cs => cs.ManuNo == null)).ExecuteCommand();
}
else
{
AlertMsg alertMsg = new AlertMsg
{
Message = "移入失败",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
return false;
}
}
// 保存数据 药品移出记录
int iInsertRecord= SqlSugarHelper.Db.Insertable(new MachineRecord()
{
MachineId = _ChannelStock.MachineId,
DrawerNo = _ChannelStock.DrawerNo,
ColNo = _ChannelStock.ColNo,
DrugId = _ChannelStock.DrugId,
ManuNo = _ChannelStock.ManuNo,
EffDate = !String.IsNullOrEmpty(_ChannelStock.EffDate) ? DateTime.ParseExact(_ChannelStock.EffDate, "yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture) : null,
Operator = HomeWindowViewModel.Operator?.Id,
OperationTime = DateTime.Now,
Quantity = RemoveQuantity,
Type = 21,
InvoiceId = _ChannelStock.Id,
DepartmentId = csId //要移入的药箱的channelStock的id
}).ExecuteCommand();
if(iInsertRecord<=0)
{
AlertMsg alertMsg = new AlertMsg
{
Message = "添加记录失败",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
return false;
}
}
else
{
//没有绑定该药品
AlertMsg alertMsg = new AlertMsg
{
Message = "药箱没有绑定该药品,请先绑定",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
return false;
}
return true;
});
if (f.Data)
{
AlertMsg alertMsg = new AlertMsg
{
Message = "操作完成,库存已更新",
Type = MsgType.SUCCESS,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
}
if (!f.IsSuccess)
{
AlertMsg alertMsg = new AlertMsg
{
Message = "库存更新失败!",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
}
Status = 0;
IsFinishClick = false;
RequestClose?.Invoke(new DialogResult(ButtonResult.OK));
}
catch (Exception ex)
{
AlertMsg alertMsg = new AlertMsg
{
Message = $"操作异常!{ex.Message}",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
}
}, () => !IsFinishClick && RemoveQuantity > 0).ObservesProperty(() => IsFinishClick).ObservesProperty(() => RemoveQuantity);
}
public long CurrentTimeMillis()
{
return (long)(DateTime.UtcNow - Jan1st1970).TotalMilliseconds;
}
// 取消按钮
public DelegateCommand CancleCommand
{
get => new DelegateCommand(() =>
{
IsFinishClick = false;
Status = 0;
// 关闭当前窗口
RequestClose?.Invoke(new DialogResult(ButtonResult.Cancel));
});
}
public DelegateCommand BtnCloseCommand
{
get => new DelegateCommand(() =>
{
// 关闭当前窗口
RequestClose?.Invoke(new DialogResult(ButtonResult.Cancel));
}, () => Status == 0).ObservesProperty(() => Status);
}
public bool KeepAlive => false;
}
}

View File

@ -208,8 +208,8 @@ namespace DM_Weight.ViewModels
{
Id = 12,
PremissionName = "核对处方",
//PremissionPath = "CheckOrderWindow",
PremissionPath = "CheckOrderNewWindow",
//PremissionPath = "CheckOrderNewWindowNew",
};
//核对处方
PremissionDm addition = new PremissionDm
@ -220,17 +220,13 @@ namespace DM_Weight.ViewModels
PremissionPath = "AdditionWindow",
};
//PremissionDm quyao1 = new PremissionDm
//管理做麻醉师核对处方的操作
//PremissionDm adminCheck = new PremissionDm
//{
// Id = 11,
// PremissionName = "交接柜补药",
// PremissionPath = "AddToJiaoJieWindow",
//};
//PremissionDm quyao2 = new PremissionDm
//{
// Id = 12,
// PremissionName = "调拨出库",
// PremissionPath = "InvoiceOutWindow",
// Id = 13,
// PremissionName = "管理员操作手术间",
// PremissionPath = "CheckOrderWindow",
// //PremissionPath = "CheckSelfOrderForAdminViewModel",
//};
PremissionDm quyao3 = new PremissionDm
{
@ -270,6 +266,7 @@ namespace DM_Weight.ViewModels
//quyaoChild.Add(openBox);
quyaoChild.Add(checkOrder);
quyaoChild.Add(addition);
//quyaoChild.Add(adminCheck);
quyaoChild.Add(openBoxWithOrder);
quyao.Children = quyaoChild;
defaultAll.Add(quyao);
@ -520,6 +517,24 @@ namespace DM_Weight.ViewModels
PremissionName = "登录设置",
PremissionPath = "SettingWindow",
};
PremissionDm sysset4 = new PremissionDm
{
Id = 58,
PremissionName = "盘点",
PremissionPath = "CheckStockWindow",
};
PremissionDm sysset5 = new PremissionDm
{
Id = 58,
PremissionName = "药箱药品调整",
PremissionPath = "ExchangeWindow",
};
PremissionDm sysset6 = new PremissionDm
{
Id = 59,
PremissionName = "账册",
PremissionPath = "AccountWindow",
};
syssetChild.Add(sysset1);
syssetChild.Add(sysset2);
syssetChild.Add(syssetLogin);
@ -527,6 +542,9 @@ namespace DM_Weight.ViewModels
syssetChild.Add(machineRecord);
syssetChild.Add(wSDRecord);
syssetChild.Add(sysset3);
syssetChild.Add(sysset4);
syssetChild.Add(sysset5);
syssetChild.Add(sysset6);
sysset.Children = syssetChild;
defaultAll.Add(sysset);
#endregion

View File

@ -0,0 +1,51 @@
using Prism.Commands;
using Prism.Mvvm;
using Prism.Regions;
using Prism.Services.Dialogs;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DM_Weight.ViewModels
{
public class SelectOperationTypeDialogViewModel : BindableBase, IDialogAware, IRegionMemberLifetime
{
public string Title => "请选择操作类型";
public bool KeepAlive =>false;
public event Action<IDialogResult> RequestClose;
public bool CanCloseDialog()
{
return true;
}
public void OnDialogClosed()
{
}
public void OnDialogOpened(IDialogParameters parameters)
{
}
public DelegateCommand CancelCommand
{
get => new DelegateCommand(() =>
{
// 关闭当前窗口
RequestClose?.Invoke(new DialogResult(ButtonResult.Cancel));
});
}
public DelegateCommand ConfirmCommand
{
get => new DelegateCommand(() =>
{
//确认
RequestClose?.Invoke(new DialogResult(ButtonResult.OK));
});
}
}
}

View File

@ -226,7 +226,7 @@ namespace DM_Weight.ViewModels
Operator = HomeWindowViewModel.Operator?.Id,
OperationTime = DateTime.Now,
Type = 55,
InvoiceId = $"打开{DrawerNo}号手术间",
InvoiceId = $"设置药箱,打开{DrawerNo}号手术间",
}).ExecuteCommand();
//bool bFlag = ModbusHelper.GetInstance().OpenBoxDoor(DrawerNo - 1);
_socketHelper.SendMessage(new MyBaseMessage() { lockNo = (short)(DrawerNo - 1) });
@ -296,7 +296,7 @@ namespace DM_Weight.ViewModels
{
get => new DelegateCommand(() =>
{
if (DrawerNo > 0)
if (DrawerNo >= 0)
{
ChannelList channelList = SqlSugarHelper.Db.Queryable<ChannelList>().Where(cs => cs.DrawerNo == (DrawerNo+1) && cs.MachineId == "DM5").First();
if (BoxTypeSelectedItem != null)

View File

@ -0,0 +1,102 @@
<UserControl x:Class="DM_Weight.Views.AccountWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:DM_Weight.Views"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
xmlns:pagination="clr-namespace:DM_Weight.Components.pagination"
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
xmlns:prism="http://prismlibrary.com/"
xmlns:convert="clr-namespace:DM_Weight.Converter"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800" Loaded="UserControl_Loaded">
<UserControl.Resources>
<Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource MaterialDesignTextBox}">
<Setter Property="Margin" Value="0,8" />
<Setter Property="VerticalAlignment" Value="Center" />
</Style>
<Style x:Key="FieldIcon" TargetType="materialDesign:PackIcon">
<Setter Property="DockPanel.Dock" Value="Right" />
<Setter Property="VerticalAlignment" Value="Center" />
</Style>
<Style x:Key="FieldDockPanel" TargetType="DockPanel">
<Setter Property="Margin" Value="0,0,8,16" />
<Setter Property="VerticalAlignment" Value="Bottom" />
</Style>
</UserControl.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid Margin="0 6 0 6" Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="8*" />
<ColumnDefinition Width="2*" />
</Grid.ColumnDefinitions>
<!--<DatePicker
Grid.Column="0"
SelectedDate="{Binding StartDate, TargetNullValue=''}"
Margin="6 0 0 0"
materialDesign:HintAssist.Hint="开始时间"
Style="{StaticResource MaterialDesignOutlinedDatePicker}"
/>
<DatePicker
Grid.Column="1"
SelectedDate="{Binding EndDate}"
Margin="6 0 0 0"
materialDesign:HintAssist.Hint="结束时间"
Style="{StaticResource MaterialDesignOutlinedDatePicker}"
/>-->
<StackPanel Grid.Row="0" Orientation="Horizontal" HorizontalAlignment="Left">
<DockPanel Grid.Column="0" Style="{StaticResource FieldDockPanel}">
<TextBox Style="{StaticResource MaterialDesignOutlinedTextBox}" x:Name="startDataBox" materialDesign:HintAssist.Hint="开始时间"
Text="{Binding StartDate,StringFormat='yyyy-MM-dd HH:mm:ss'}" Margin="6 0 0 0" >
</TextBox>
<Button
Style="{StaticResource MaterialDesignIconForegroundButton}" Command="{Binding SelectTimeAction}" CommandParameter="1" >
<materialDesign:PackIcon Width="40" Height="40" Kind="CalendarRange" Style="{StaticResource FieldIcon}" Foreground="{Binding ElementName=startDataBox, Path=BorderBrush}"/>
</Button>
</DockPanel>
<DockPanel Grid.Column="1" Style="{StaticResource FieldDockPanel}">
<TextBox Style="{StaticResource MaterialDesignOutlinedTextBox}" x:Name="endDataBox" materialDesign:HintAssist.Hint="结束时间"
Text="{Binding EndDate,StringFormat='yyyy-MM-dd HH:mm:ss'}" Margin="6 0 0 0" >
</TextBox>
<Button
Style="{StaticResource MaterialDesignIconForegroundButton}" Command="{Binding SelectTimeAction}" CommandParameter="2" >
<materialDesign:PackIcon Width="40" Height="40" Kind="CalendarRange" Style="{StaticResource FieldIcon}" Foreground="{Binding ElementName=endDataBox, Path=BorderBrush}"/>
</Button>
</DockPanel>
<ComboBox
Margin="6 0 6 0"
materialDesign:HintAssist.Hint="药品名称/拼音码/药品编码"
ItemsSource="{Binding DrugInfos}"
SelectedItem="{Binding DrugInfo}"
DisplayMemberPath="DrugName" IsEditable="True" IsTextSearchEnabled="False" KeyUp="ComboBox_KeyUp"
/>
</StackPanel>
<StackPanel Grid.Column="1" Orientation="Horizontal" HorizontalAlignment="Right">
<Button
Margin="0 0 13 0"
VerticalAlignment="Center"
Style="{StaticResource MaterialDesignOutlinedLightButton}"
ToolTip="导出" Command="{Binding DownloadAccountBook}">
<StackPanel Orientation="Horizontal">
<materialDesign:PackIcon Kind="download" />
<TextBlock Text="导出账册" />
</StackPanel>
</Button>
</StackPanel>
</Grid>
</Grid>
</UserControl>

View File

@ -0,0 +1,51 @@
using DM_Weight.ViewModels;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace DM_Weight.Views
{
/// <summary>
/// AccountWindow.xaml 的交互逻辑
/// </summary>
public partial class AccountWindow : UserControl
{
AccountWindowViewModel vms;
public AccountWindow()
{
InitializeComponent();
}
/// <summary>
/// 药品名称下拉框
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ComboBox_KeyUp(object sender, KeyEventArgs e)
{
ComboBox comboBox = sender as ComboBox;
vms.UpdateComboBoxItems(comboBox.Text);
if (this.vms.DrugInfos.Count > 0)
{
comboBox.IsDropDownOpen = true;
}
TextBox textBox = (TextBox)comboBox.Template.FindName("PART_EditableTextBox", comboBox);
textBox.SelectionStart = textBox.Text.Length;
}
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
vms = AccountWindowViewModel.vm;
}
}
}

View File

@ -10,6 +10,21 @@
xmlns:local="clr-namespace:DM_Weight.Views"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<UserControl.Resources>
<Style x:Key="st" TargetType="GridViewColumnHeader">
<Style.Setters>
<Setter Property="Height">
<Setter.Value>55</Setter.Value>
</Setter>
<Setter Property="Background">
<Setter.Value>#31ccec</Setter.Value>
</Setter>
<Setter Property="Foreground">
<Setter.Value>white</Setter.Value>
</Setter>
</Style.Setters>
</Style>
</UserControl.Resources>
<Grid>
<Grid.Resources>
<CollectionViewSource x:Key="GroupedDataList" Source="{Binding ChannelStocks}">
@ -62,7 +77,9 @@
<Button
Margin="3 0 3 0"
VerticalAlignment="Center"
Command="{Binding OpenBoxCommand}"
Command="{Binding OpenBoxCommand}"
materialDesign:ButtonProgressAssist.IsIndicatorVisible="{Binding OpenStatusBtn}"
materialDesign:ButtonProgressAssist.IsIndeterminate="{Binding OpenStatusBtn}"
Style="{StaticResource MaterialDesignOutlinedLightButton}"
Content="开手术间" />
<Button
@ -84,7 +101,7 @@
</Grid>
<DataGrid
<!--<DataGrid
Grid.Row="1"
materialDesign:DataGridAssist.ColumnHeaderPadding="15"
ItemsSource="{Binding Source={StaticResource GroupedDataList}}"
@ -102,7 +119,7 @@
<Setter Property="BorderThickness" Value="0.6"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
</Style>
<!--<Style TargetType="{x:Type DataGridCell}" BasedOn="{StaticResource MaterialDesignDataGridCell}">
--><!--<Style TargetType="{x:Type DataGridCell}" BasedOn="{StaticResource MaterialDesignDataGridCell}">
<Style.Triggers>
<Trigger Property="IsReadOnly" Value="True">
<Setter Property="BorderBrush" Value="Transparent" />
@ -110,7 +127,7 @@
</Trigger>
</Style.Triggers>
<Setter Property="HorizontalAlignment" Value="Center"/>
</Style>-->
</Style>--><!--
<Style TargetType="DataGridCell">
<Setter Property="Template">
<Setter.Value>
@ -157,13 +174,89 @@
<DataGrid.Columns>
<DataGridTextColumn IsReadOnly="True" Header="药品名称" Binding="{Binding DrugInfo.DrugName}"/>
<DataGridTextColumn IsReadOnly="True" Header="规格" Binding="{Binding DrugInfo.DrugSpec}"/>
<DataGridTextColumn IsReadOnly="True" Header="批次" Binding="{Binding ManuNo}"/>
<DataGridTextColumn IsReadOnly="True" Header="效期" Binding="{Binding EffDate}"/>
<DataGridTextColumn IsReadOnly="True" Header="厂家" Binding="{Binding DrugInfo.Manufactory}"/>
<!--<DataGridTextColumn IsReadOnly="True" Header="药品基数" Binding="{Binding BaseQuantity}"/>-->
<DataGridTextColumn IsReadOnly="True" Header="需补药数量" Binding="{Binding AddToJJNum}"/>
<DataGridTextColumn IsReadOnly="True" Header="批次" Binding="{Binding ManuNo}"/>
--><!--<DataGridTextColumn IsReadOnly="True" Header="效期" Binding="{Binding EffDate}"/>-->
<!--<DataGridTextColumn IsReadOnly="True" Header="药品基数" Binding="{Binding BaseQuantity}"/>--><!--
<DataGridTextColumn IsReadOnly="True" Header="待入库数量" Binding="{Binding AddToJJNum}"/>
<DataGridTextColumn IsReadOnly="True" Header="状态" Binding="{Binding ChannelLst.State,Converter={StaticResource StockStatusConverter},ConverterParameter=TextState}"/>
</DataGrid.Columns>
</DataGrid>
</DataGrid>-->
<ListView Grid.ColumnSpan="2"
Padding="0 6 0 0" Grid.Row="1"
ItemsSource="{Binding _ChannelLists, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
SelectedItem="{Binding _ChannelList}"
materialDesign:ListViewAssist.HeaderRowBackground="#31ccec"
materialDesign:DataGridAssist.ColumnHeaderPadding="10"
materialDesign:ListViewAssist.ListViewItemPadding="13">
<ListView.Resources>
<Style TargetType="{x:Type GridViewColumnHeader}" BasedOn="{StaticResource {x:Type GridViewColumnHeader}}">
<Setter Property="Foreground" Value="White" />
</Style>
</ListView.Resources>
<!--<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding RowSelected}" />
</i:EventTrigger>
</i:Interaction.Triggers>-->
<ListView.View>
<GridView ColumnHeaderContainerStyle="{StaticResource st}">
<GridViewColumn Width="80"
DisplayMemberBinding="{Binding DrawerNo}"
Header="药箱号"/>
<GridViewColumn Header="药品名称" Width="150">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ListBox ItemsSource="{Binding channelStocks}" DisplayMemberPath="DrugInfo.DrugName" materialDesign:ListBoxItemAssist.ShowSelection="False"></ListBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="厂家" Width="150">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ListBox ItemsSource="{Binding channelStocks}" DisplayMemberPath="DrugInfo.Manufactory" materialDesign:ListBoxItemAssist.ShowSelection="False"></ListBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="规格" Width="100">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ListBox ItemsSource="{Binding channelStocks}" DisplayMemberPath="DrugInfo.DrugSpec" materialDesign:ListBoxItemAssist.ShowSelection="False"></ListBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="批次" Width="130">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ListBox ItemsSource="{Binding channelStocks}" DisplayMemberPath="ManuNo" materialDesign:ListBoxItemAssist.ShowSelection="False"></ListBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="待入库数" Width="70">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ListBox ItemsSource="{Binding channelStocks}" DisplayMemberPath="AddToJJNum" materialDesign:ListBoxItemAssist.ShowSelection="False"></ListBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="130"
Header="状态">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ListBox ItemsSource="{Binding channelStocks}" materialDesign:ListBoxItemAssist.ShowSelection="False">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Width="130" Text="{Binding State,Converter={StaticResource StockStatusConverter},ConverterParameter=TextState}">
</TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</Grid>
</UserControl>

View File

@ -142,7 +142,7 @@
<Grid Grid.Column="1" Margin="6">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition />
</Grid.RowDefinitions>
<StackPanel HorizontalAlignment="Right" Orientation="Horizontal" Grid.ColumnSpan="2">
<ComboBox
@ -154,10 +154,17 @@
SelectedItem="{Binding DrugInfo}"
DisplayMemberPath="drug_name_spec" IsEnabled="True" IsTextSearchEnabled="False" KeyUp="ComboBox_KeyUp"
/>
<!--<ComboBox
Margin="6 0 6 0"
Grid.Column="1"
materialDesign:HintAssist.Hint="批次"
ItemsSource="{Binding DrugManuNos}"
SelectedItem="{Binding DrugManuNo}"
DisplayMemberPath="ManuNo"/>-->
<TextBox
Grid.Column="1"
Text="{Binding BaseQuantity}"
materialDesign:HintAssist.Hint="药品基数"
materialDesign:HintAssist.Hint="基数"
Margin="16 0 32 6" Width="100"
Style="{StaticResource MaterialDesignTextBoxBase}"/>
<Button
@ -194,8 +201,8 @@
</StackPanel>
<ListView Grid.ColumnSpan="2"
Padding="0 6 0 0" Grid.Row="1"
ItemsSource="{Binding Channels, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
SelectedItem="{Binding Channel}"
ItemsSource="{Binding _ChannelLists, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
SelectedItem="{Binding _ChannelList}"
materialDesign:ListViewAssist.HeaderRowBackground="#31ccec"
materialDesign:DataGridAssist.ColumnHeaderPadding="10"
materialDesign:ListViewAssist.ListViewItemPadding="13">
@ -205,22 +212,40 @@
</Style>
</ListView.Resources>
<ListView.View>
<GridView>
<GridViewColumn Width="200"
DisplayMemberBinding="{Binding DrugInfo.DrugName}"
<GridView ColumnHeaderContainerStyle="{StaticResource st}">
<GridViewColumn Width="180"
DisplayMemberBinding="{Binding Drug.DrugName}"
Header="药品名称"/>
<GridViewColumn Width="200"
DisplayMemberBinding="{Binding DrugInfo.Manufactory}"
<GridViewColumn Width="150"
DisplayMemberBinding="{Binding Drug.Manufactory}"
Header="厂家"/>
<GridViewColumn Width="200"
DisplayMemberBinding="{Binding DrugInfo.DrugSpec}"
<GridViewColumn Width="100"
DisplayMemberBinding="{Binding Drug.DrugSpec}"
Header="规格"/>
<GridViewColumn Width="100"
<GridViewColumn Width="50"
DisplayMemberBinding="{Binding BaseQuantity}"
Header="药品基数"/>
<GridViewColumn Width="100"
DisplayMemberBinding="{Binding Quantity}"
Header="药品库存"/>
Header="基数"/>
<GridViewColumn Header="批次">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ListBox Width="130" ItemsSource="{Binding channelStocks}" DisplayMemberPath="ManuNo" materialDesign:ListBoxItemAssist.ShowSelection="False"></ListBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="库存" Width="50">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ListBox ItemsSource="{Binding channelStocks}" DisplayMemberPath="Quantity" materialDesign:ListBoxItemAssist.ShowSelection="False"></ListBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<!--<GridViewColumn Header="效期" Width="100">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ListBox ItemsSource="{Binding channelStocks}" DisplayMemberPath="EffDate" materialDesign:ListBoxItemAssist.ShowSelection="False"></ListBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>-->
</GridView>
</ListView.View>

View File

@ -111,9 +111,9 @@
</Grid.RowDefinitions>
<Grid Margin="0 6 0 6" Grid.Row="0" Grid.ColumnSpan="3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="3*" />
<ColumnDefinition Width="4*" />
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="8*" />
<ColumnDefinition Width="5*" />
</Grid.ColumnDefinitions>
<DatePicker
Grid.Column="0"
@ -182,10 +182,10 @@
<GridViewColumn Width="180"
DisplayMemberBinding="{Binding _OrderDetail.DrugInfo.DrugName}"
Header="药品名称"/>
<GridViewColumn Width="80"
<GridViewColumn Width="130"
DisplayMemberBinding="{Binding _OrderDetail.SetManuNo}"
Header="药品批次"/>
<GridViewColumn Width="42"
<GridViewColumn Width="30"
DisplayMemberBinding="{Binding _OrderDetail.Quantity}"
Header="数量"/>
<GridViewColumn Width="80"
@ -195,7 +195,7 @@
DisplayMemberBinding="{Binding _OrderDetail.surgicalResidual.ResidualDoseInfo}"
Header="剩余量"/>
<GridViewColumn Width="160"
DisplayMemberBinding="{Binding _OrderDetail.surgicalResidual.CreateTime}"
DisplayMemberBinding="{Binding _OrderDetail.surgicalResidual.DisposalTime}"
Header="余液处置时间"/>
<!--<GridViewColumn Width="180" Header="药品名称">

View File

@ -0,0 +1,233 @@
<UserControl x:Class="DM_Weight.Views.CheckOrderNewWindowNew"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
prism:ViewModelLocator.AutoWireViewModel="True"
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
xmlns:pagination="clr-namespace:DM_Weight.Components.pagination"
xmlns:local="clr-namespace:DM_Weight.Views"
mc:Ignorable="d"
xmlns:convert="clr-namespace:DM_Weight.Converter"
xmlns:prism="http://prismlibrary.com/">
<UserControl.Resources>
<convert:OrderStatusConverter x:Key="OrderStatusConverter" />
<convert:DrawerSelectConverter x:Key="DrawerSelectConverter" />
<convert:BoxNumConverter x:Key="BoxNumConverter" />
<convert:StatusConverter x:Key="StatusConverter" />
<Style x:Key="st" TargetType="GridViewColumnHeader">
<Style.Setters>
<Setter Property="Height">
<Setter.Value>55</Setter.Value>
</Setter>
<Setter Property="Background">
<Setter.Value>#31ccec</Setter.Value>
</Setter>
<Setter Property="Foreground">
<Setter.Value>white</Setter.Value>
</Setter>
</Style.Setters>
</Style>
</UserControl.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid Margin="6" Grid.Column="0">
<Grid.Resources>
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource MaterialDesignPaperLightButton}">
<Setter Property="Foreground" Value="#00a0ea" />
<Setter Property="BorderBrush" Value="#00a0ea" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#d1e7f5" />
<Setter Property="BorderBrush" Value="#d1e7f5" />
</Trigger>
<DataTrigger Value="True">
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource DrawerSelectConverter}">
<Binding RelativeSource="{ RelativeSource Mode=Self }" Path="Content" />
<Binding Path="DrawerNo" />
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="Background" Value="#d1e7f5" />
<Setter Property="BorderBrush" Value="#d1e7f5" />
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Resources>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<!--<RowDefinition />-->
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Button Margin="0 0 3 0" Grid.Row="0" Grid.Column="0" Width="120" Content="一号手术间" Background="{Binding Button1Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="0" IsEnabled="{Binding IsEnabled1}"/>
<Button Margin="0 0 3 0" Grid.Row="1" Grid.Column="0" Width="120" Content="二号手术间" Background="{Binding Button2Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="1" IsEnabled="{Binding IsEnabled2}"/>
<Button Margin="0 0 3 0" Grid.Row="2" Grid.Column="0" Width="120" Content="三号手术间" Background="{Binding Button3Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="2" IsEnabled="{Binding IsEnabled3}"/>
<Button Margin="0 0 3 0" Grid.Row="3" Grid.Column="0" Width="120" Content="四号手术间" Background="{Binding Button4Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="3" IsEnabled="{Binding IsEnabled4}"/>
<Button Margin="0 0 3 0" Grid.Row="4" Grid.Column="0" Width="120" Content="五号手术间" Background="{Binding Button5Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="4" IsEnabled="{Binding IsEnabled5}"/>
<Button Margin="0 0 3 0" Grid.Row="5" Grid.Column="0" Width="120" Content="六号手术间" Background="{Binding Button6Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="5" IsEnabled="{Binding IsEnabled6}"/>
<Button Margin="0 0 3 0" Grid.Row="6" Grid.Column="0" Width="120" Content="七号手术间" Background="{Binding Button7Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="6" IsEnabled="{Binding IsEnabled7}"/>
<Button Margin="0 0 3 0" Grid.Row="7" Grid.Column="0" Width="120" Content="八号手术间" Background="{Binding Button8Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="7" IsEnabled="{Binding IsEnabled8}"/>
<Button Margin="0 0 3 0" Grid.Row="8" Grid.Column="0" Width="120" Content="九号手术间" Background="{Binding Button9Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="8" IsEnabled="{Binding IsEnabled9}"/>
<Button Margin="0 0 3 0" Grid.Row="0" Grid.Column="1" Width="120" Content="十号手术间" Background="{Binding Button10Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="9" IsEnabled="{Binding IsEnabled10}"/>
<Button Grid.Row="1" Grid.Column="1" Width="120" Content="十一号手术间" Background="{Binding Button11Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="10" IsEnabled="{Binding IsEnabled11}"/>
<Button Grid.Row="2" Grid.Column="1" Width="120" Content="十二号手术间" Background="{Binding Button12Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="11" IsEnabled="{Binding IsEnabled12}"/>
<Button Grid.Row="3" Grid.Column="1" Width="120" Content="十三号手术间" Background="{Binding Button13Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="12" IsEnabled="{Binding IsEnabled13}"/>
<Button Grid.Row="4" Grid.Column="1" Width="120" Content="十四号手术间" Background="{Binding Button14Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="13" IsEnabled="{Binding IsEnabled14}"/>
<Button Grid.Row="5" Grid.Column="1" Width="120" Content="十五号手术间" Background="{Binding Button15Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="14" IsEnabled="{Binding IsEnabled15}"/>
<Button Grid.Row="6" Grid.Column="1" Width="120" Content="十六号手术间" Background="{Binding Button16Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="15" IsEnabled="{Binding IsEnabled16}"/>
<Button Grid.Row="7" Grid.Column="1" Width="120" Content="十七号手术间" Background="{Binding Button17Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="16" IsEnabled="{Binding IsEnabled17}"/>
<Button Grid.Row="8" Grid.Column="1" Width="120" Content="十八号手术间" Background="{Binding Button18Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="17" IsEnabled="{Binding IsEnabled18}"/>
<!--<Button Grid.Row="8" Grid.Column="1" Width="120" Content="19号药箱" Command="{Binding UpdateDrawerNo}" CommandParameter="19" IsEnabled="{Binding DrawerNo, Converter={StaticResource BoxNumConverter}, ConverterParameter=19}"/>
<Button Grid.Row="9" Grid.Column="1" Width="120" Content="20号药箱" Command="{Binding UpdateDrawerNo}" CommandParameter="20" IsEnabled="{Binding DrawerNo, Converter={StaticResource BoxNumConverter}, ConverterParameter=20}"/>-->
</Grid>
<Grid Grid.Column="1" Margin="6">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="7*"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid Margin="0 6 0 6" Grid.Row="0" Grid.ColumnSpan="3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="3*" />
<ColumnDefinition Width="4*" />
<ColumnDefinition Width="2*" />
</Grid.ColumnDefinitions>
<DatePicker
Grid.Column="0"
SelectedDate="{Binding OrderDate, StringFormat=yyyy-MM-dd, TargetNullValue='',UpdateSourceTrigger=PropertyChanged}"
SelectedDateFormat="Short"
Margin="6 0 0 0"
materialDesign:HintAssist.Hint="开单日期"
Style="{StaticResource MaterialDesignOutlinedDatePicker}" />
<StackPanel Grid.Column="2" Orientation="Horizontal" HorizontalAlignment="Right">
<Button
Margin="0 0 6 0"
VerticalAlignment="Center" Command="{Binding CheckOrder}"
Content="确认"
Style="{StaticResource MaterialDesignOutlinedLightButton}">
</Button>
<Button
Margin="0 0 6 0"
VerticalAlignment="Center"
Style="{StaticResource MaterialDesignOutlinedLightButton}"
ToolTip="刷新" Command="{Binding Query}">
<materialDesign:PackIcon Kind="Refresh" />
</Button>
</StackPanel>
</Grid>
<!--<Grid Grid.Row="1" Grid.Column="0" Margin="0 0 -100 0">-->
<!--<ScrollViewer VerticalScrollBarVisibility="Auto">-->
<ListView Grid.Row="1" Grid.Column="0" Margin="0"
ItemsSource="{Binding SurgicalResidualList, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
SelectedItem="{Binding surgicalResidual}"
materialDesign:ListViewAssist.HeaderRowBackground="#31ccec"
materialDesign:ListViewAssist.ListViewItemPadding="0 15 0 0">
<ListView.Resources>
<Style TargetType="{x:Type GridViewColumnHeader}" BasedOn="{StaticResource {x:Type GridViewColumnHeader}}">
<Setter Property="Foreground" Value="White" />
</Style>
</ListView.Resources>
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding RowSelected}" />
</i:EventTrigger>
</i:Interaction.Triggers>
<ListView.View>
<GridView ColumnHeaderContainerStyle="{StaticResource st}">
<GridViewColumn Header="选择" Width="30">
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding ItemIsChecked}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="80"
Header="姓名"
DisplayMemberBinding="{Binding PName}" />
<GridViewColumn Width="30"
DisplayMemberBinding="{Binding Sex}"
Header="性别"/>
<GridViewColumn Width="150"
DisplayMemberBinding="{Binding OrderNo}"
Header="单号"/>
<!--<GridViewColumn Width="240"
DisplayMemberBinding="{Binding DeptName}"
Header="科室"/>-->
<GridViewColumn Width="180"
DisplayMemberBinding="{Binding DrugInfo.DrugName}"
Header="药品名称"/>
<GridViewColumn Width="130"
DisplayMemberBinding="{Binding ManuNo}"
Header="药品批次"/>
<GridViewColumn Width="30"
DisplayMemberBinding="{Binding Quantity}"
Header="数量"/>
<GridViewColumn Width="80"
DisplayMemberBinding="{Binding UseDoseInfo}"
Header="使用量"/>
<GridViewColumn Width="80"
DisplayMemberBinding="{Binding ResidualDoseInfo}"
Header="剩余量"/>
<GridViewColumn Width="160"
DisplayMemberBinding="{Binding DisposalTime}"
Header="余液处置时间"/>
</GridView>
</ListView.View>
</ListView>
<ListView Grid.Column="1" Grid.Row="1" Margin="0 0 3 0"
ItemsSource="{Binding TotalDrugList,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"
materialDesign:ListViewAssist.HeaderRowBackground="#31ccec"
materialDesign:ListViewAssist.ListViewItemPadding="0 18 0 0">
<ListView.Resources>
<Style TargetType="{x:Type GridViewColumnHeader}" BasedOn="{StaticResource {x:Type GridViewColumnHeader}}">
<Setter Property="Foreground" Value="White" />
</Style>
</ListView.Resources>
<ListView.View>
<GridView ColumnHeaderContainerStyle="{StaticResource st}">
<GridViewColumn Width="180"
DisplayMemberBinding="{Binding DrugName}"
Header="药品名称"/>
<GridViewColumn Width="40"
DisplayMemberBinding="{Binding TotalCount}"
Header="合计"/>
</GridView>
</ListView.View>
</ListView>
<pagination:Pagination Grid.Row="2" Grid.ColumnSpan="2"
CurrentPage="{Binding PageNum}"
PageSize="{Binding PageSize}"
TotalPages="{Binding TotalCount}"
InfoTextIsEnabel="True"
/>
</Grid>
</Grid>
</UserControl>

View File

@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace DM_Weight.Views
{
/// <summary>
/// CheckOrderNewWindow.xaml 的交互逻辑
/// </summary>
public partial class CheckOrderNewWindowNew : UserControl
{
public CheckOrderNewWindowNew()
{
InitializeComponent();
}
}
}

View File

@ -0,0 +1,232 @@
<UserControl x:Class="DM_Weight.Views.CheckSelfOrderForAdmin"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
prism:ViewModelLocator.AutoWireViewModel="True"
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
xmlns:pagination="clr-namespace:DM_Weight.Components.pagination"
xmlns:local="clr-namespace:DM_Weight.Views"
mc:Ignorable="d"
xmlns:convert="clr-namespace:DM_Weight.Converter"
xmlns:prism="http://prismlibrary.com/">
<UserControl.Resources>
<convert:OrderStatusConverter x:Key="OrderStatusConverter" />
<convert:DrawerSelectConverter x:Key="DrawerSelectConverter" />
<convert:BoxNumConverter x:Key="BoxNumConverter" />
<convert:StatusConverter x:Key="StatusConverter" />
<Style x:Key="st" TargetType="GridViewColumnHeader">
<Style.Setters>
<Setter Property="Height">
<Setter.Value>55</Setter.Value>
</Setter>
<Setter Property="Background">
<Setter.Value>#31ccec</Setter.Value>
</Setter>
<Setter Property="Foreground">
<Setter.Value>white</Setter.Value>
</Setter>
</Style.Setters>
</Style>
</UserControl.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid Margin="6" Grid.Column="0">
<Grid.Resources>
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource MaterialDesignPaperLightButton}">
<Setter Property="Foreground" Value="#00a0ea" />
<Setter Property="BorderBrush" Value="#00a0ea" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#d1e7f5" />
<Setter Property="BorderBrush" Value="#d1e7f5" />
</Trigger>
<DataTrigger Value="True">
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource DrawerSelectConverter}">
<Binding RelativeSource="{ RelativeSource Mode=Self }" Path="Content" />
<Binding Path="DrawerNo" />
<Binding Path="CurrentDrawerNo"/>
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="Background" Value="#d1e7f5" />
<Setter Property="BorderBrush" Value="#d1e7f5" />
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Resources>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<!--<RowDefinition />-->
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Button Margin="0 0 3 0" Grid.Row="0" Grid.Column="0" Width="120" Content="一号手术间" Background="{Binding Button1Color}" Command="{Binding UpdateDrawerNo,ConverterParameter=1}" CommandParameter="1" IsEnabled="{Binding Button1Enable}"/>
<Button Margin="0 0 3 0" Grid.Row="1" Grid.Column="0" Width="120" Content="二号手术间" Background="{Binding Button2Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="2" IsEnabled="{Binding Button2Enable}"/>
<Button Margin="0 0 3 0" Grid.Row="2" Grid.Column="0" Width="120" Content="三号手术间" Background="{Binding Button3Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="3" IsEnabled="{Binding Button3Enable}"/>
<Button Margin="0 0 3 0" Grid.Row="3" Grid.Column="0" Width="120" Content="四号手术间" Background="{Binding Button4Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="4" IsEnabled="{Binding Button4Enable}"/>
<Button Margin="0 0 3 0" Grid.Row="4" Grid.Column="0" Width="120" Content="五号手术间" Background="{Binding Button5Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="5" IsEnabled="{Binding Button5Enable}"/>
<Button Margin="0 0 3 0" Grid.Row="5" Grid.Column="0" Width="120" Content="六号手术间" Background="{Binding Button6Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="6" IsEnabled="{Binding Button6Enable}"/>
<Button Margin="0 0 3 0" Grid.Row="6" Grid.Column="0" Width="120" Content="七号手术间" Background="{Binding Button7Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="7" IsEnabled="{Binding Button7Enable}"/>
<Button Margin="0 0 3 0" Grid.Row="7" Grid.Column="0" Width="120" Content="八号手术间" Background="{Binding Button8Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="8" IsEnabled="{Binding Button8Enable}"/>
<Button Margin="0 0 3 0" Grid.Row="8" Grid.Column="0" Width="120" Content="九号手术间" Background="{Binding Button9Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="9" IsEnabled="{Binding Button9Enable}"/>
<Button Margin="0 0 3 0" Grid.Row="0" Grid.Column="1" Width="120" Content="十号手术间" Background="{Binding Button10Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="10" IsEnabled="{Binding Button10Enable}"/>
<Button Grid.Row="1" Grid.Column="1" Width="120" Content="十一号手术间" Background="{Binding Button11Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="11" IsEnabled="{Binding Button11Enable}"/>
<Button Grid.Row="2" Grid.Column="1" Width="120" Content="十二号手术间" Background="{Binding Button12Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="12" IsEnabled="{Binding Button12Enable}"/>
<Button Grid.Row="3" Grid.Column="1" Width="120" Content="十三号手术间" Background="{Binding Button13Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="13" IsEnabled="{Binding Button13Enable}"/>
<Button Grid.Row="4" Grid.Column="1" Width="120" Content="十四号手术间" Background="{Binding Button14Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="14" IsEnabled="{Binding Button14Enable}"/>
<Button Grid.Row="5" Grid.Column="1" Width="120" Content="十五号手术间" Background="{Binding Button15Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="15" IsEnabled="{Binding Button15Enable}"/>
<Button Grid.Row="6" Grid.Column="1" Width="120" Content="十六号手术间" Background="{Binding Button16Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="16" IsEnabled="{Binding Button16Enable}"/>
<Button Grid.Row="7" Grid.Column="1" Width="120" Content="十七号手术间" Background="{Binding Button17Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="17" IsEnabled="{Binding Button17Enable}"/>
<Button Grid.Row="8" Grid.Column="1" Width="120" Content="十八号手术间" Background="{Binding Button18Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="18" IsEnabled="{Binding Button18Enable}"/>
<!--<Button Grid.Row="8" Grid.Column="1" Width="120" Content="19号药箱" Command="{Binding UpdateDrawerNo}" CommandParameter="19" IsEnabled="{Binding DrawerNo, Converter={StaticResource BoxNumConverter}, ConverterParameter=19}"/>
<Button Grid.Row="9" Grid.Column="1" Width="120" Content="20号药箱" Command="{Binding UpdateDrawerNo}" CommandParameter="20" IsEnabled="{Binding DrawerNo, Converter={StaticResource BoxNumConverter}, ConverterParameter=20}"/>-->
</Grid>
<Grid Grid.Column="1" Margin="6">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="7*"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid Margin="0 6 0 6" Grid.Row="0" Grid.ColumnSpan="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="3*" />
<ColumnDefinition Width="3*" />
<ColumnDefinition Width="3*" />
</Grid.ColumnDefinitions>
<DatePicker
Grid.Column="0"
SelectedDate="{Binding OrderDate, StringFormat=yyyy-MM-dd, TargetNullValue='',UpdateSourceTrigger=PropertyChanged}"
SelectedDateFormat="Short"
Margin="6 0 0 0"
materialDesign:HintAssist.Hint="开单日期"
Style="{StaticResource MaterialDesignOutlinedDatePicker}" />
<StackPanel Grid.Column="1" Grid.ColumnSpan="2" Orientation="Horizontal" HorizontalAlignment="Right">
<Button
Margin="0 0 6 0"
VerticalAlignment="Center" Command="{Binding CheckOrder}"
Content="确认"
Style="{StaticResource MaterialDesignOutlinedLightButton}">
</Button>
<Button
Margin="2"
Style="{StaticResource MaterialDesignOutlinedLightButton}"
Content="取消"
Command="{Binding CancleTake}" Cursor="Hand" />
<Button
Margin="0 0 6 0"
VerticalAlignment="Center"
Style="{StaticResource MaterialDesignOutlinedLightButton}"
ToolTip="刷新" Command="{Binding Query}">
<materialDesign:PackIcon Kind="Refresh" />
</Button>
</StackPanel>
</Grid>
<!--<Grid Grid.Row="1" Grid.Column="0" Margin="0 0 -100 0">-->
<ListView Grid.Row="1" Grid.Column="0" Margin="0"
ItemsSource="{Binding SurgicalResidualList, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
SelectedItem="{Binding surgicalResidual}"
materialDesign:ListViewAssist.HeaderRowBackground="#31ccec"
materialDesign:ListViewAssist.ListViewItemPadding="0 15 0 0">
<ListView.Resources>
<Style TargetType="{x:Type GridViewColumnHeader}" BasedOn="{StaticResource {x:Type GridViewColumnHeader}}">
<Setter Property="Foreground" Value="White" />
</Style>
</ListView.Resources>
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding RowSelected}" />
</i:EventTrigger>
</i:Interaction.Triggers>
<ListView.View>
<GridView ColumnHeaderContainerStyle="{StaticResource st}">
<GridViewColumn Header="选择" Width="30">
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding ItemIsChecked}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="80"
Header="姓名"
DisplayMemberBinding="{Binding PName}" />
<GridViewColumn Width="30"
DisplayMemberBinding="{Binding Sex}"
Header="性别"/>
<GridViewColumn Width="150"
DisplayMemberBinding="{Binding OrderNo}"
Header="单号"/>
<GridViewColumn Width="180"
DisplayMemberBinding="{Binding DrugInfo.DrugName}"
Header="药品名称"/>
<GridViewColumn Width="130"
DisplayMemberBinding="{Binding ManuNo}"
Header="药品批次"/>
<GridViewColumn Width="30"
DisplayMemberBinding="{Binding Quantity}"
Header="数量"/>
<GridViewColumn Width="80"
DisplayMemberBinding="{Binding UseDoseInfo}"
Header="使用量"/>
<GridViewColumn Width="80"
DisplayMemberBinding="{Binding ResidualDoseInfo}"
Header="剩余量"/>
<GridViewColumn Width="160"
DisplayMemberBinding="{Binding DisposalTime}"
Header="余液处置时间"/>
</GridView>
</ListView.View>
</ListView>
<ListView Grid.Column="1" Grid.Row="1" Margin="0 0 3 0"
ItemsSource="{Binding TotalDrugList,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"
materialDesign:ListViewAssist.HeaderRowBackground="#31ccec"
materialDesign:ListViewAssist.ListViewItemPadding="0 16 0 15">
<ListView.Resources>
<Style TargetType="{x:Type GridViewColumnHeader}" BasedOn="{StaticResource {x:Type GridViewColumnHeader}}">
<Setter Property="Foreground" Value="White" />
</Style>
</ListView.Resources>
<ListView.View>
<GridView ColumnHeaderContainerStyle="{StaticResource st}">
<GridViewColumn Width="180"
DisplayMemberBinding="{Binding DrugName}"
Header="药品名称"/>
<GridViewColumn Width="40"
DisplayMemberBinding="{Binding TotalCount}"
Header="合计"/>
</GridView>
</ListView.View>
</ListView>
<!--</Grid>-->
<pagination:Pagination Grid.Row="2" Grid.ColumnSpan="2"
CurrentPage="{Binding PageNum}"
PageSize="{Binding PageSize}"
TotalPages="{Binding TotalCount}"
InfoTextIsEnabel="True"
/>
</Grid>
</Grid>
</UserControl>

View File

@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace DM_Weight.Views
{
/// <summary>
/// CheckSelfOrderForAdmin.xaml 的交互逻辑
/// </summary>
public partial class CheckSelfOrderForAdmin : UserControl
{
public CheckSelfOrderForAdmin()
{
InitializeComponent();
}
}
}

View File

@ -15,7 +15,6 @@
<convert:OrderStatusConverter x:Key="OrderStatusConverter" />
<convert:DrawerSelectConverter x:Key="DrawerSelectConverter" />
<convert:BoxNumConverter x:Key="BoxNumConverter" />
<convert:StatusConverter x:Key="StatusConverter" />
<Style x:Key="st" TargetType="GridViewColumnHeader">
<Style.Setters>
<Setter Property="Height">
@ -40,7 +39,7 @@
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource MaterialDesignPaperLightButton}">
<Setter Property="Foreground" Value="#00a0ea" />
<Setter Property="BorderBrush" Value="#00a0ea" />
<!--<Style.Triggers>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#d1e7f5" />
<Setter Property="BorderBrush" Value="#d1e7f5" />
@ -50,12 +49,13 @@
<MultiBinding Converter="{StaticResource DrawerSelectConverter}">
<Binding RelativeSource="{ RelativeSource Mode=Self }" Path="Content" />
<Binding Path="DrawerNo" />
<Binding Path="CurrentDrawerNo"/>
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="Background" Value="#d1e7f5" />
<Setter Property="BorderBrush" Value="#d1e7f5" />
</DataTrigger>
</Style.Triggers>-->
</Style.Triggers>
</Style>
</Grid.Resources>
<Grid.RowDefinitions>
@ -110,11 +110,11 @@
</Grid.RowDefinitions>
<Grid Margin="0 6 0 6" Grid.Row="0" Grid.ColumnSpan="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="8*" />
<ColumnDefinition Width="5*" />
<ColumnDefinition Width="3*" />
<ColumnDefinition Width="3*" />
<ColumnDefinition Width="3*" />
</Grid.ColumnDefinitions>
<DatePicker
<DatePicker
Grid.Column="0"
SelectedDate="{Binding OrderDate, StringFormat=yyyy-MM-dd, TargetNullValue='',UpdateSourceTrigger=PropertyChanged}"
SelectedDateFormat="Short"
@ -122,32 +122,35 @@
materialDesign:HintAssist.Hint="开单日期"
Style="{StaticResource MaterialDesignOutlinedDatePicker}" />
<StackPanel Grid.Column="2" Orientation="Horizontal" HorizontalAlignment="Right">
<StackPanel Grid.Column="1" Grid.ColumnSpan="2" Orientation="Horizontal" HorizontalAlignment="Right">
<!--<Button Margin="0 0 6 0" Content="{Binding SelfContent}" Command="{Binding OpenBoxDelegate}" CommandParameter="0" Visibility="Collapsed"
IsEnabled="{Binding SelfEnable}"
materialDesign:ButtonProgressAssist.IsIndicatorVisible="{Binding SelfStatus, Converter={StaticResource StatusConverter}, ConverterParameter=opearBtnLoading}"
materialDesign:ButtonProgressAssist.IsIndeterminate="{Binding SelfStatus, Converter={StaticResource StatusConverter}, ConverterParameter=opearBtnLoading}"
Style="{StaticResource MaterialDesignOutlinedLightButton}"/>-->
<Button
Style="{StaticResource MaterialDesignOutlinedLightButton}"/>
<Button Margin="0 0 6 0" VerticalAlignment="Center" Command="{Binding ReturnBoxCommand}" Content="还药箱" Visibility="{Binding OperationType,Converter={StaticResource TakeReturnConverter},ConverterParameter=ReturnBox}" Style="{StaticResource MaterialDesignOutlinedLightButton}"> </Button>-->
<Button
Margin="0 0 6 0"
VerticalAlignment="Center" Command="{Binding CheckOrder}"
Content="确认"
Style="{StaticResource MaterialDesignOutlinedLightButton}">
</Button>
<Button
<Button
Margin="2"
Style="{StaticResource MaterialDesignOutlinedLightButton}"
Content="取消"
Command="{Binding CancleTake}" Cursor="Hand" />
<Button
<Button
Margin="0 0 6 0"
VerticalAlignment="Center"
Style="{StaticResource MaterialDesignOutlinedLightButton}"
ToolTip="刷新" Command="{Binding Query}">
<materialDesign:PackIcon Kind="Refresh" />
</Button>
<!--<Button Margin="6 0 6 0" VerticalAlignment="Center" Command="{Binding TakeBoxCommand}" Content="取药箱" Style="{StaticResource MaterialDesignOutlinedLightButton}"></Button>-->
</StackPanel>
</Grid>
<!--<Grid Grid.Row="1" Grid.Column="0" Margin="0 0 -100 0">-->
@ -184,23 +187,26 @@
<GridViewColumn Width="150"
DisplayMemberBinding="{Binding OrderNo}"
Header="单号"/>
<!--<GridViewColumn Width="240"
DisplayMemberBinding="{Binding DeptName}"
Header="科室"/>-->
<!--<GridViewColumn Width="100"
<GridViewColumn Width="180"
DisplayMemberBinding="{Binding _OrderDetail.DrugInfo.DrugName}"
Header="药品名称"/>
<GridViewColumn Width="80"
<GridViewColumn Width="130"
DisplayMemberBinding="{Binding _OrderDetail.SetManuNo}"
Header="药品批次"/>
<GridViewColumn Width="80"
DisplayMemberBinding="{Binding _OrderDetail.SetEffDate}"
Header="药品效期"/>
<GridViewColumn Width="30"
DisplayMemberBinding="{Binding _OrderDetail.Quantity}"
Header="数量"/>-->
Header="数量"/>
<GridViewColumn Width="80"
DisplayMemberBinding="{Binding _OrderDetail.surgicalResidual.UseDoseInfo}"
Header="使用量"/>
<GridViewColumn Width="80"
DisplayMemberBinding="{Binding _OrderDetail.surgicalResidual.ResidualDoseInfo}"
Header="剩余量"/>
<GridViewColumn Width="160"
DisplayMemberBinding="{Binding _OrderDetail.surgicalResidual.DisposalTime}"
Header="余液处置时间"/>
<GridViewColumn Width="180" Header="药品名称">
<!--<GridViewColumn Width="180" Header="药品名称">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ListBox ItemsSource="{Binding OrderDetailList}" DisplayMemberPath="DrugInfo.DrugName" materialDesign:ListBoxItemAssist.ShowSelection="False"></ListBox>
@ -214,13 +220,13 @@
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<!--<GridViewColumn Width="80" Header="药品效期">
<GridViewColumn Width="80" Header="药品效期">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ListBox ItemsSource="{Binding OrderDetailList}" DisplayMemberPath="SetEffDate" materialDesign:ListBoxItemAssist.ShowSelection="False"></ListBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>-->
</GridViewColumn>
<GridViewColumn Width="42" Header="数量">
<GridViewColumn.CellTemplate>
<DataTemplate>
@ -249,7 +255,7 @@
<GridViewColumn.CellTemplate>
<DataTemplate>
<ListBox ItemsSource="{Binding OrderDetailList}" DisplayMemberPath="surgicalResidual.ResidualDoseInfo" materialDesign:ListBoxItemAssist.ShowSelection="False"></ListBox>
</DataTemplate>
</DataTemplate>yjn7
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="160">
@ -263,13 +269,13 @@
<ListBox ItemsSource="{Binding OrderDetailList}" DisplayMemberPath="surgicalResidual.DisposalTime" materialDesign:ListBoxItemAssist.ShowSelection="False"></ListBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridViewColumn>-->
</GridView>
</ListView.View>
</ListView>
<!--</Grid>-->
<!--<Grid Grid.Column="1" Grid.Row="1" Margin="0 0 0 0" HorizontalAlignment="Right">-->
<ListView Grid.Column="1" Grid.Row="1" Margin="0 0 3 0"
<ListView Grid.Column="1" Grid.Row="1" Margin="0 0 3 0"
ItemsSource="{Binding TotalDrugList,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"
materialDesign:ListViewAssist.HeaderRowBackground="#31ccec"
materialDesign:ListViewAssist.ListViewItemPadding="0 16 0 15">
@ -291,7 +297,7 @@
</ListView>
<!--</Grid>-->
<pagination:Pagination Grid.Row="2" Grid.ColumnSpan="2"
<pagination:Pagination Grid.Row="2" Grid.ColumnSpan="2"
CurrentPage="{Binding PageNum}"
PageSize="{Binding PageSize}"
TotalPages="{Binding TotalCount}"

View File

@ -0,0 +1,232 @@
<UserControl x:Class="DM_Weight.Views.CheckSelfOrderWindowNew"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
prism:ViewModelLocator.AutoWireViewModel="True"
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
xmlns:pagination="clr-namespace:DM_Weight.Components.pagination"
xmlns:local="clr-namespace:DM_Weight.Views"
mc:Ignorable="d"
xmlns:convert="clr-namespace:DM_Weight.Converter"
xmlns:prism="http://prismlibrary.com/">
<UserControl.Resources>
<convert:OrderStatusConverter x:Key="OrderStatusConverter" />
<convert:DrawerSelectConverter x:Key="DrawerSelectConverter" />
<convert:BoxNumConverter x:Key="BoxNumConverter" />
<convert:StatusConverter x:Key="StatusConverter" />
<Style x:Key="st" TargetType="GridViewColumnHeader">
<Style.Setters>
<Setter Property="Height">
<Setter.Value>55</Setter.Value>
</Setter>
<Setter Property="Background">
<Setter.Value>#31ccec</Setter.Value>
</Setter>
<Setter Property="Foreground">
<Setter.Value>white</Setter.Value>
</Setter>
</Style.Setters>
</Style>
</UserControl.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid Margin="6" Grid.Column="0">
<Grid.Resources>
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource MaterialDesignPaperLightButton}">
<Setter Property="Foreground" Value="#00a0ea" />
<Setter Property="BorderBrush" Value="#00a0ea" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#d1e7f5" />
<Setter Property="BorderBrush" Value="#d1e7f5" />
</Trigger>
<DataTrigger Value="True">
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource DrawerSelectConverter}">
<Binding RelativeSource="{ RelativeSource Mode=Self }" Path="Content" />
<Binding Path="DrawerNo" />
<Binding Path="CurrentDrawerNo"/>
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="Background" Value="#d1e7f5" />
<Setter Property="BorderBrush" Value="#d1e7f5" />
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Resources>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<!--<RowDefinition />-->
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Button Margin="0 0 3 0" Grid.Row="0" Grid.Column="0" Width="120" Content="一号手术间" Background="{Binding Button1Color}" Command="{Binding UpdateDrawerNo,ConverterParameter=1}" CommandParameter="1" IsEnabled="{Binding Button1Enable}"/>
<Button Margin="0 0 3 0" Grid.Row="1" Grid.Column="0" Width="120" Content="二号手术间" Background="{Binding Button2Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="2" IsEnabled="{Binding Button2Enable}"/>
<Button Margin="0 0 3 0" Grid.Row="2" Grid.Column="0" Width="120" Content="三号手术间" Background="{Binding Button3Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="3" IsEnabled="{Binding Button3Enable}"/>
<Button Margin="0 0 3 0" Grid.Row="3" Grid.Column="0" Width="120" Content="四号手术间" Background="{Binding Button4Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="4" IsEnabled="{Binding Button4Enable}"/>
<Button Margin="0 0 3 0" Grid.Row="4" Grid.Column="0" Width="120" Content="五号手术间" Background="{Binding Button5Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="5" IsEnabled="{Binding Button5Enable}"/>
<Button Margin="0 0 3 0" Grid.Row="5" Grid.Column="0" Width="120" Content="六号手术间" Background="{Binding Button6Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="6" IsEnabled="{Binding Button6Enable}"/>
<Button Margin="0 0 3 0" Grid.Row="6" Grid.Column="0" Width="120" Content="七号手术间" Background="{Binding Button7Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="7" IsEnabled="{Binding Button7Enable}"/>
<Button Margin="0 0 3 0" Grid.Row="7" Grid.Column="0" Width="120" Content="八号手术间" Background="{Binding Button8Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="8" IsEnabled="{Binding Button8Enable}"/>
<Button Margin="0 0 3 0" Grid.Row="8" Grid.Column="0" Width="120" Content="九号手术间" Background="{Binding Button9Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="9" IsEnabled="{Binding Button9Enable}"/>
<Button Margin="0 0 3 0" Grid.Row="0" Grid.Column="1" Width="120" Content="十号手术间" Background="{Binding Button10Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="10" IsEnabled="{Binding Button10Enable}"/>
<Button Grid.Row="1" Grid.Column="1" Width="120" Content="十一号手术间" Background="{Binding Button11Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="11" IsEnabled="{Binding Button11Enable}"/>
<Button Grid.Row="2" Grid.Column="1" Width="120" Content="十二号手术间" Background="{Binding Button12Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="12" IsEnabled="{Binding Button12Enable}"/>
<Button Grid.Row="3" Grid.Column="1" Width="120" Content="十三号手术间" Background="{Binding Button13Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="13" IsEnabled="{Binding Button13Enable}"/>
<Button Grid.Row="4" Grid.Column="1" Width="120" Content="十四号手术间" Background="{Binding Button14Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="14" IsEnabled="{Binding Button14Enable}"/>
<Button Grid.Row="5" Grid.Column="1" Width="120" Content="十五号手术间" Background="{Binding Button15Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="15" IsEnabled="{Binding Button15Enable}"/>
<Button Grid.Row="6" Grid.Column="1" Width="120" Content="十六号手术间" Background="{Binding Button16Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="16" IsEnabled="{Binding Button16Enable}"/>
<Button Grid.Row="7" Grid.Column="1" Width="120" Content="十七号手术间" Background="{Binding Button17Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="17" IsEnabled="{Binding Button17Enable}"/>
<Button Grid.Row="8" Grid.Column="1" Width="120" Content="十八号手术间" Background="{Binding Button18Color}" Command="{Binding UpdateDrawerNo}" CommandParameter="18" IsEnabled="{Binding Button18Enable}"/>
<!--<Button Grid.Row="8" Grid.Column="1" Width="120" Content="19号药箱" Command="{Binding UpdateDrawerNo}" CommandParameter="19" IsEnabled="{Binding DrawerNo, Converter={StaticResource BoxNumConverter}, ConverterParameter=19}"/>
<Button Grid.Row="9" Grid.Column="1" Width="120" Content="20号药箱" Command="{Binding UpdateDrawerNo}" CommandParameter="20" IsEnabled="{Binding DrawerNo, Converter={StaticResource BoxNumConverter}, ConverterParameter=20}"/>-->
</Grid>
<Grid Grid.Column="1" Margin="6">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="7*"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid Margin="0 6 0 6" Grid.Row="0" Grid.ColumnSpan="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="3*" />
<ColumnDefinition Width="3*" />
<ColumnDefinition Width="3*" />
</Grid.ColumnDefinitions>
<DatePicker
Grid.Column="0"
SelectedDate="{Binding OrderDate, StringFormat=yyyy-MM-dd, TargetNullValue='',UpdateSourceTrigger=PropertyChanged}"
SelectedDateFormat="Short"
Margin="6 0 0 0"
materialDesign:HintAssist.Hint="开单日期"
Style="{StaticResource MaterialDesignOutlinedDatePicker}" />
<StackPanel Grid.Column="1" Grid.ColumnSpan="2" Orientation="Horizontal" HorizontalAlignment="Right">
<Button
Margin="0 0 6 0"
VerticalAlignment="Center" Command="{Binding CheckOrder}"
Content="确认"
Style="{StaticResource MaterialDesignOutlinedLightButton}">
</Button>
<Button
Margin="2"
Style="{StaticResource MaterialDesignOutlinedLightButton}"
Content="取消"
Command="{Binding CancleTake}" Cursor="Hand" />
<Button
Margin="0 0 6 0"
VerticalAlignment="Center"
Style="{StaticResource MaterialDesignOutlinedLightButton}"
ToolTip="刷新" Command="{Binding Query}">
<materialDesign:PackIcon Kind="Refresh" />
</Button>
</StackPanel>
</Grid>
<!--<Grid Grid.Row="1" Grid.Column="0" Margin="0 0 -100 0">-->
<ListView Grid.Row="1" Grid.Column="0" Margin="0"
ItemsSource="{Binding SurgicalResidualList, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
SelectedItem="{Binding surgicalResidual}"
materialDesign:ListViewAssist.HeaderRowBackground="#31ccec"
materialDesign:ListViewAssist.ListViewItemPadding="0 15 0 0">
<ListView.Resources>
<Style TargetType="{x:Type GridViewColumnHeader}" BasedOn="{StaticResource {x:Type GridViewColumnHeader}}">
<Setter Property="Foreground" Value="White" />
</Style>
</ListView.Resources>
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding RowSelected}" />
</i:EventTrigger>
</i:Interaction.Triggers>
<ListView.View>
<GridView ColumnHeaderContainerStyle="{StaticResource st}">
<GridViewColumn Header="选择" Width="30">
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding ItemIsChecked}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="80"
Header="姓名"
DisplayMemberBinding="{Binding PName}" />
<GridViewColumn Width="30"
DisplayMemberBinding="{Binding Sex}"
Header="性别"/>
<GridViewColumn Width="150"
DisplayMemberBinding="{Binding OrderNo}"
Header="单号"/>
<GridViewColumn Width="180"
DisplayMemberBinding="{Binding DrugInfo.DrugName}"
Header="药品名称"/>
<GridViewColumn Width="130"
DisplayMemberBinding="{Binding ManuNo}"
Header="药品批次"/>
<GridViewColumn Width="30"
DisplayMemberBinding="{Binding Quantity}"
Header="数量"/>
<GridViewColumn Width="80"
DisplayMemberBinding="{Binding UseDoseInfo}"
Header="使用量"/>
<GridViewColumn Width="80"
DisplayMemberBinding="{Binding ResidualDoseInfo}"
Header="剩余量"/>
<GridViewColumn Width="160"
DisplayMemberBinding="{Binding DisposalTime}"
Header="余液处置时间"/>
</GridView>
</ListView.View>
</ListView>
<ListView Grid.Column="1" Grid.Row="1" Margin="0 0 3 0"
ItemsSource="{Binding TotalDrugList,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"
materialDesign:ListViewAssist.HeaderRowBackground="#31ccec"
materialDesign:ListViewAssist.ListViewItemPadding="0 16 0 15">
<ListView.Resources>
<Style TargetType="{x:Type GridViewColumnHeader}" BasedOn="{StaticResource {x:Type GridViewColumnHeader}}">
<Setter Property="Foreground" Value="White" />
</Style>
</ListView.Resources>
<ListView.View>
<GridView ColumnHeaderContainerStyle="{StaticResource st}">
<GridViewColumn Width="180"
DisplayMemberBinding="{Binding DrugName}"
Header="药品名称"/>
<GridViewColumn Width="40"
DisplayMemberBinding="{Binding TotalCount}"
Header="合计"/>
</GridView>
</ListView.View>
</ListView>
<!--</Grid>-->
<pagination:Pagination Grid.Row="2" Grid.ColumnSpan="2"
CurrentPage="{Binding PageNum}"
PageSize="{Binding PageSize}"
TotalPages="{Binding TotalCount}"
InfoTextIsEnabel="True"
/>
</Grid>
</Grid>
</UserControl>

View File

@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace DM_Weight.Views
{
/// <summary>
/// CheckSelfOrderWindow.xaml 的交互逻辑
/// </summary>
public partial class CheckSelfOrderWindowNew : UserControl
{
public CheckSelfOrderWindowNew()
{
InitializeComponent();
}
}
}

View File

@ -0,0 +1,204 @@
<UserControl x:Class="DM_Weight.Views.CheckStockWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:DM_Weight.Views"
xmlns:pagination="clr-namespace:DM_Weight.Components.pagination"
xmlns:prism="http://prismlibrary.com/"
prism:ViewModelLocator.AutoWireViewModel="True"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
xmlns:convert="clr-namespace:DM_Weight.Converter"
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
mc:Ignorable="d">
<UserControl.Resources>
<convert:DrawerSelectConverter x:Key="DrawerSelectConverter" />
<convert:StatusConverter x:Key="StatusConverter" />
<!--<convert:InputQuantityConverter x:Key="InputQuantityConverter" />
<convert:QuantityCountConverter x:Key="QuantityCountConverter"/>-->
<Style x:Key="st" TargetType="GridViewColumnHeader">
<Style.Setters>
<Setter Property="Height">
<Setter.Value>55</Setter.Value>
</Setter>
<Setter Property="Background">
<Setter.Value>#31ccec</Setter.Value>
</Setter>
<Setter Property="Foreground">
<Setter.Value>white</Setter.Value>
</Setter>
</Style.Setters>
</Style>
</UserControl.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="15*" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid Margin="6" Grid.Column="0" >
<Grid.Resources>
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource MaterialDesignPaperLightButton}">
<Setter Property="Foreground" Value="#00a0ea" />
<Setter Property="BorderBrush" Value="#00a0ea" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#d1e7f5" />
<Setter Property="BorderBrush" Value="#d1e7f5" />
</Trigger>
<DataTrigger Value="True">
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource DrawerSelectConverter}">
<Binding RelativeSource="{ RelativeSource Mode=Self }" Path="Content" />
<Binding Path="DrawerNo" />
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="Background" Value="#d1e7f5" />
<Setter Property="BorderBrush" Value="#d1e7f5" />
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Resources>
<!--<Grid.RowDefinitions>
<RowDefinition />
</Grid.RowDefinitions>-->
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<!--<RowDefinition />-->
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Button Margin="0 0 3 0" Grid.Row="0" Grid.Column="0" Width="120" Content="一号手术间" Command="{Binding UpdateDrawerNo}" CommandParameter="0" />
<Button Margin="0 0 3 0" Grid.Row="1" Grid.Column="0" Width="120" Content="二号手术间" Command="{Binding UpdateDrawerNo}" CommandParameter="1" />
<Button Margin="0 0 3 0" Grid.Row="2" Grid.Column="0" Width="120" Content="三号手术间" Command="{Binding UpdateDrawerNo}" CommandParameter="2" />
<Button Margin="0 0 3 0" Grid.Row="3" Grid.Column="0" Width="120" Content="四号手术间" Command="{Binding UpdateDrawerNo}" CommandParameter="3" />
<Button Margin="0 0 3 0" Grid.Row="4" Grid.Column="0" Width="120" Content="五号手术间" Command="{Binding UpdateDrawerNo}" CommandParameter="4" />
<Button Margin="0 0 3 0" Grid.Row="5" Grid.Column="0" Width="120" Content="六号手术间" Command="{Binding UpdateDrawerNo}" CommandParameter="5" />
<Button Margin="0 0 3 0" Grid.Row="6" Grid.Column="0" Width="120" Content="七号手术间" Command="{Binding UpdateDrawerNo}" CommandParameter="6" />
<Button Margin="0 0 3 0" Grid.Row="7" Grid.Column="0" Width="120" Content="八号手术间" Command="{Binding UpdateDrawerNo}" CommandParameter="7" />
<Button Margin="0 0 3 0" Grid.Row="8" Grid.Column="0" Width="120" Content="九号手术间" Command="{Binding UpdateDrawerNo}" CommandParameter="8" />
<Button Margin="0 0 3 0" Grid.Row="0" Grid.Column="1" Width="120" Content="十号手术间" Command="{Binding UpdateDrawerNo}" CommandParameter="9" />
<Button Margin="0 0 3 0" Grid.Row="1" Grid.Column="1" Width="120" Content="十一号手术间" Command="{Binding UpdateDrawerNo}" CommandParameter="10" />
<Button Margin="0 0 3 0" Grid.Row="2" Grid.Column="1" Width="120" Content="十二号手术间" Command="{Binding UpdateDrawerNo}" CommandParameter="11" />
<Button Margin="0 0 3 0" Grid.Row="3" Grid.Column="1" Width="120" Content="十三号手术间" Command="{Binding UpdateDrawerNo}" CommandParameter="12" />
<Button Margin="0 0 3 0" Grid.Row="4" Grid.Column="1" Width="120" Content="十四号手术间" Command="{Binding UpdateDrawerNo}" CommandParameter="13" />
<Button Margin="0 0 3 0" Grid.Row="5" Grid.Column="1" Width="120" Content="十五号手术间" Command="{Binding UpdateDrawerNo}" CommandParameter="14" />
<Button Margin="0 0 3 0" Grid.Row="6" Grid.Column="1" Width="120" Content="十六号手术间" Command="{Binding UpdateDrawerNo}" CommandParameter="15" />
<Button Margin="0 0 3 0" Grid.Row="7" Grid.Column="1" Width="120" Content="十七号手术间" Command="{Binding UpdateDrawerNo}" CommandParameter="16" />
<Button Margin="0 0 3 0" Grid.Row="8" Grid.Column="1" Width="120" Content="十八号手术间" Command="{Binding UpdateDrawerNo}" CommandParameter="17" />
<!--<Button Grid.Row="8" Grid.Column="1" Width="120" Content="19号药箱" Command="{Binding UpdateDrawerNo}" CommandParameter="19" />
<Button Grid.Row="9" Grid.Column="1" Width="120" Content="20号药箱" Command="{Binding UpdateDrawerNo}" CommandParameter="20" />-->
</Grid>
</Grid>
<Grid Grid.Column="1" Margin="6">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="550" />
</Grid.RowDefinitions>
<StackPanel HorizontalAlignment="Right" Orientation="Horizontal" Grid.ColumnSpan="2">
<Button Margin="6 0 6 6"
Content="保存修改"
Command="{Binding SaveCommand}"
Style="{StaticResource MaterialDesignOutlinedLightButton}" />
<Button
Margin="0 0 6 6"
Style="{StaticResource MaterialDesignOutlinedLightButton}"
ToolTip="刷新"
Command="{Binding Query}"
Content="{materialDesign:PackIcon Refresh}"/>
</StackPanel>
<DataGrid Grid.ColumnSpan="2"
Padding="0 6 0 0"
Grid.Row="1"
materialDesign:DataGridAssist.ColumnHeaderPadding="10"
ItemsSource="{Binding ChannelStocks}"
materialDesign:ListViewAssist.HeaderRowBackground="#31ccec"
materialDesign:DataGridAssist.EnableEditBoxAssist="False"
materialDesign:DataGridAssist.CellPadding="13"
SelectionUnit="Cell"
CanUserAddRows="False"
AutoGenerateColumns="False">
<DataGrid.Resources>
<Style TargetType="{x:Type DataGridColumnHeader}" BasedOn="{StaticResource MaterialDesignDataGridColumnHeader}">
<Setter Property="Background" Value="#31ccec" />
<Setter Property="Foreground" Value="white" />
<Setter Property="Height" Value="56" />
<Setter Property="BorderBrush" Value="white"/>
<Setter Property="BorderThickness" Value="0.6"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
</Style>
<Style TargetType="{x:Type DataGridCell}" BasedOn="{StaticResource MaterialDesignDataGridCell}">
<Style.Triggers>
<Trigger Property="IsReadOnly" Value="True">
<Setter Property="BorderBrush" Value="Transparent" />
<Setter Property="HorizontalAlignment" Value="Left"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTextColumn Width="130"
Binding="{Binding DrugInfo.DrugName}"
Header="药品名称"
IsReadOnly="True"
ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
<DataGridTextColumn Width="100"
Binding="{Binding DrugInfo.DrugSpec}"
Header="规格"
IsReadOnly="True"
ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
<!--<DataGridTextColumn Width="100"
Binding="{Binding BaseQuantity}"
Header="基数"
IsReadOnly="True"
ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>-->
<DataGridTextColumn Width="130"
Binding="{Binding ManuNo}"
Header="批次"
IsReadOnly="True"
ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
<DataGridTextColumn Width="50"
Binding="{Binding Quantity}"
Header="库存"
IsReadOnly="True"
ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
<DataGridTemplateColumn Width="100"
Header="盘点数量">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Style="{StaticResource MaterialDesignDataGridTextColumnEditingStyle}">
<TextBox.Text>
<Binding Path="CheckQuantity" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<ExceptionValidationRule />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
<materialDesign:Snackbar
Background="{Binding SnackbarBackground}"
MessageQueue="{Binding SnackbarMessageQueue}"/>
</Grid>
</Grid>
</UserControl>

View File

@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace DM_Weight.Views
{
/// <summary>
/// CheckStockWindow.xaml 的交互逻辑
/// </summary>
public partial class CheckStockWindow : UserControl
{
public CheckStockWindow()
{
InitializeComponent();
}
}
}

View File

@ -250,7 +250,7 @@
<GridViewColumn Width="80"
DisplayMemberBinding="{Binding DrugInfo.DrugSpec}"
Header="规格"/>
<GridViewColumn Width="80"
<GridViewColumn Width="130"
DisplayMemberBinding="{Binding ManuNo}"
Header="批次"/>
<GridViewColumn Width="80"

View File

@ -0,0 +1,48 @@
<UserControl x:Class="DM_Weight.Views.Dialog.ConfirmDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:DM_Weight.Views.Dialog"
xmlns:prism="http://prismlibrary.com/"
prism:ViewModelLocator.AutoWireViewModel="True"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
xmlns:convert="clr-namespace:DM_Weight.Converter"
MinWidth="450"
Width="Auto"
Height="Auto"
mc:Ignorable="d">
<materialDesign:Card Padding="0">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid Background="#03a9f4" Grid.Row="0">
<TextBlock VerticalAlignment="Center" Foreground="{DynamicResource PrimaryHueDarkForegroundBrush}" Margin="16 4 16 4" Style="{StaticResource MaterialDesignHeadline5TextBlock}" Text="{Binding Title}" />
<Button
Style="{StaticResource MaterialDesignIconForegroundButton}"
Foreground="{DynamicResource PrimaryHueDarkForegroundBrush}"
HorizontalAlignment="Right"
Command="{Binding CancelCommand}"
ToolTip="关闭" Cursor="Hand"
>
<materialDesign:PackIcon Kind="Close" Width="34" Height="34" />
</Button>
</Grid>
<Grid Grid.Row="1" Margin="0 4 0 4">
<TextBlock VerticalAlignment="Center" FontSize="14" FontFamily="YouYuan" FontWeight="Bold" Margin="16 4 16 4" Style="{StaticResource MaterialDesignHeadline5TextBlock}" Text="{Binding ConfirmInfo,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" />
</Grid>
<StackPanel Grid.Row="2" Orientation="Horizontal" HorizontalAlignment="Center">
<Button Content="确认" Margin="8" Command="{Binding ConfirmCommand}" />
<Button Content="取消" Margin="8" Command="{Binding CancelCommand}"/>
</StackPanel>
<!--<materialDesign:Snackbar
Background="{Binding SnackbarBackground}"
MessageQueue="{Binding SnackbarMessageQueue}"/>-->
</Grid>
</materialDesign:Card>
</UserControl>

View File

@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace DM_Weight.Views.Dialog
{
/// <summary>
/// ConfirmDialog.xaml 的交互逻辑
/// </summary>
public partial class ConfirmDialog : UserControl
{
public ConfirmDialog()
{
InitializeComponent();
}
}
}

View File

@ -0,0 +1,36 @@
<UserControl x:Class="DM_Weight.Views.Dialog.DatetimeDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:DM_Weight.Views.Dialog"
xmlns:system="clr-namespace:System;assembly=mscorlib"
xmlns:prism="http://prismlibrary.com/"
prism:ViewModelLocator.AutoWireViewModel="True"
xmlns:convert="clr-namespace:DM_Weight.Converter"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid>
<Grid Margin="-1">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<StackPanel Grid.Row="0" Orientation="Horizontal">
<Calendar x:Name="CombinedCalendar" SelectedDate="{Binding Date}" Margin="-1 -4 -1 0" />
<materialDesign:Clock Time="{Binding Time}" x:Name="CombinedClock" DisplayAutomation="CycleWithSeconds" Is24Hours="True" />
</StackPanel>
<StackPanel Grid.Row="1" Margin="8" HorizontalAlignment="Right" Orientation="Horizontal">
<Button Style="{StaticResource MaterialDesignFlatButton}" Command="{Binding CloseAction}" CommandParameter="1" Content="确认" Cursor="" />
<Button Style="{StaticResource MaterialDesignFlatButton}" Command="{x:Static materialDesign:DialogHost.CloseDialogCommand}" Content="取消">
<Button.CommandParameter>
<system:Boolean xmlns:system="clr-namespace:System;assembly=mscorlib">
False
</system:Boolean>
</Button.CommandParameter>
</Button>
</StackPanel>
</Grid>
</Grid>
</UserControl>

View File

@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace DM_Weight.Views.Dialog
{
/// <summary>
/// DatetimeDialog.xaml 的交互逻辑
/// </summary>
public partial class DatetimeDialog : UserControl
{
public DatetimeDialog()
{
InitializeComponent();
}
}
}

View File

@ -0,0 +1,235 @@
<UserControl x:Class="DM_Weight.Views.Dialog.ExchangeDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:DM_Weight.Views.Dialog"
xmlns:prism="http://prismlibrary.com/"
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
prism:ViewModelLocator.AutoWireViewModel="True"
xmlns:convert="clr-namespace:DM_Weight.Converter"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
MinWidth="880"
Width="Auto"
Height="Auto"
mc:Ignorable="d" >
<UserControl.Resources>
<convert:StatusConverter x:Key="StatusConverter" />
<convert:InputQuantityConverter x:Key="InputQuantityConverter" />
<Style x:Key="st" TargetType="GridViewColumnHeader">
<Style.Setters>
<Setter Property="Height">
<Setter.Value>55</Setter.Value>
</Setter>
<Setter Property="Background">
<Setter.Value>#31ccec</Setter.Value>
</Setter>
<Setter Property="Foreground">
<Setter.Value>white</Setter.Value>
</Setter>
</Style.Setters>
</Style>
</UserControl.Resources>
<materialDesign:Card Padding="0">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="50" />
<RowDefinition Height="200" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid Background="#03a9f4" Grid.Row="0">
<TextBlock VerticalAlignment="Center" Foreground="{DynamicResource PrimaryHueDarkForegroundBrush}" Margin="16 4 16 4" Style="{StaticResource MaterialDesignHeadline5TextBlock}" Text="{Binding Title}" />
<Button
Style="{StaticResource MaterialDesignIconForegroundButton}"
Foreground="{DynamicResource PrimaryHueDarkForegroundBrush}"
HorizontalAlignment="Right"
Command="{Binding BtnCloseCommand}"
IsEnabled="{Binding Status, Converter={StaticResource StatusConverter}, ConverterParameter=CloseBtn}"
ToolTip="关闭"
>
<materialDesign:PackIcon Kind="Close" Width="34" Height="34" />
</Button>
</Grid>
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="3*" />
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="3*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock
Grid.Column="0"
Margin="16 0 16 8"
VerticalAlignment="Center"
HorizontalAlignment="Right"
Style="{StaticResource MaterialDesignBody2TextBlock}"
Text="药品:" />
<TextBlock
Grid.Column="1"
Margin="16 0 16 8"
VerticalAlignment="Center"
HorizontalAlignment="Left"
Style="{StaticResource MaterialDesignBody2TextBlock}"
Text="{Binding _ChannelStock.DrugInfo.DrugName}" />
<TextBlock
Grid.Column="2"
Margin="16 0 16 8"
VerticalAlignment="Center"
HorizontalAlignment="Right"
Style="{StaticResource MaterialDesignBody2TextBlock}"
Text="规格:" />
<TextBlock
Grid.Column="3"
Margin="16 0 16 8"
VerticalAlignment="Center"
HorizontalAlignment="Left"
Style="{StaticResource MaterialDesignBody2TextBlock}"
Text="{Binding _ChannelStock.DrugInfo.DrugSpec}" />
<TextBlock
Grid.Column="4"
Margin="16 0 16 8"
VerticalAlignment="Center"
HorizontalAlignment="Right"
Style="{StaticResource MaterialDesignBody2TextBlock}"
Text="批次:" />
<TextBlock
Grid.Column="5"
Margin="16 0 16 8"
VerticalAlignment="Center"
HorizontalAlignment="Left"
Style="{StaticResource MaterialDesignBody2TextBlock}"
Text="{Binding _ChannelStock.ManuNo}" />
<TextBlock
Grid.Column="6"
Margin="16 0 16 8"
VerticalAlignment="Center"
HorizontalAlignment="Right"
Style="{StaticResource MaterialDesignBody2TextBlock}"
Text="库存:" />
<TextBlock
Grid.Column="7"
Margin="16 0 16 8"
VerticalAlignment="Center"
HorizontalAlignment="Left"
Style="{StaticResource MaterialDesignBody2TextBlock}"
Text="{Binding _ChannelStock.Quantity}" />
<ComboBox
Grid.Column="8"
Margin="6 0 0 0"
Style="{StaticResource MaterialDesignOutlinedComboBox}"
SelectedItem="{Binding SelectedItem}"
DisplayMemberPath="Name"
ItemsSource="{Binding Selects}"
/>
</Grid>
<ListView
Grid.Row="2"
ItemsSource="{Binding _ChannelStocks}"
materialDesign:ListViewAssist.HeaderRowBackground="#31ccec"
materialDesign:DataGridAssist.ColumnHeaderPadding="10"
materialDesign:ListViewAssist.ListViewItemPadding="13">
<ListView.Resources>
<Style TargetType="{x:Type GridViewColumnHeader}" BasedOn="{StaticResource {x:Type GridViewColumnHeader}}">
<Setter Property="Foreground" Value="White" />
</Style>
<Style TargetType="ScrollViewer">
<Setter Property="HorizontalScrollBarVisibility" Value="Visible"/>
<Setter Property="VerticalScrollBarVisibility" Value="Visible"/>
</Style>
</ListView.Resources>
<!--<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding RowSelected}" />
</i:EventTrigger>
</i:Interaction.Triggers>-->
<ListView.View>
<GridView ColumnHeaderContainerStyle="{StaticResource st}">
<!--<GridViewColumn Header="选择" Width="100">
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding IsSelected}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>-->
<GridViewColumn Width="80"
Header="药箱号"
DisplayMemberBinding="{Binding DrawerNo}"/>
<GridViewColumn Width="150"
Header="药品"
DisplayMemberBinding="{Binding DrugInfo.DrugName}"/>
<GridViewColumn Width="150"
DisplayMemberBinding="{Binding DrugInfo.DrugSpec}"
Header="规格"/>
<GridViewColumn Width="150"
DisplayMemberBinding="{Binding ManuNo}"
Header="批次"/>
<GridViewColumn Width="80"
DisplayMemberBinding="{Binding Quantity}"
Header="库存"/>
<GridViewColumn Width="80" Header="交换数量">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox Width="80" Style="{StaticResource MaterialDesignDataGridTextColumnEditingStyle}">
<TextBox.Text>
<Binding Path="TakeQuantity" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<ExceptionValidationRule />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
<Grid Grid.Row="3">
<Grid.RowDefinitions>
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition/>
<ColumnDefinition />
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" Grid.Row="0" Grid.Column="1" HorizontalAlignment="Center" Margin="6">
<Button
Margin="2"
Style="{StaticResource MaterialDesignRaisedAccentButton}"
Visibility="{Binding Status,Converter={StaticResource StatusConverter}, ConverterParameter=opearBtnVisible}"
materialDesign:ButtonProgressAssist.IsIndicatorVisible="{Binding Status, Converter={StaticResource StatusConverter}, ConverterParameter=opearBtnLoading}"
materialDesign:ButtonProgressAssist.IsIndeterminate="{Binding Status, Converter={StaticResource StatusConverter}, ConverterParameter=opearBtnLoading}"
Content="开药箱"
Command="{Binding OpenDrawer}">
</Button>
<Button
Margin="2"
Style="{StaticResource MaterialDesignRaisedAccentButton}"
Content="完成"
Command="{Binding FinishCommand}"/>
<Button
Margin="2"
Style="{StaticResource MaterialDesignRaisedButton}"
Background="Orange"
BorderBrush="Orange"
Content="取消"
Command="{Binding CancleCommand}" />
</StackPanel>
</Grid>
</Grid>
</materialDesign:Card>
</UserControl>

View File

@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace DM_Weight.Views.Dialog
{
/// <summary>
/// ExchangeDialog.xaml 的交互逻辑
/// </summary>
public partial class ExchangeDialog : UserControl
{
public ExchangeDialog()
{
InitializeComponent();
}
}
}

View File

@ -0,0 +1,185 @@
<UserControl x:Class="DM_Weight.Views.Dialog.RemoveDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:DM_Weight.Views.Dialog"
xmlns:prism="http://prismlibrary.com/"
prism:ViewModelLocator.AutoWireViewModel="True"
xmlns:convert="clr-namespace:DM_Weight.Converter"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
MinWidth="880"
Width="Auto"
Height="Auto"
mc:Ignorable="d" >
<UserControl.Resources>
<convert:StatusConverter x:Key="StatusConverter" />
<convert:InputQuantityConverter x:Key="InputQuantityConverter" />
<Style x:Key="st" TargetType="GridViewColumnHeader">
<Style.Setters>
<Setter Property="Height">
<Setter.Value>55</Setter.Value>
</Setter>
<Setter Property="Background">
<Setter.Value>#31ccec</Setter.Value>
</Setter>
<Setter Property="Foreground">
<Setter.Value>white</Setter.Value>
</Setter>
</Style.Setters>
</Style>
</UserControl.Resources>
<materialDesign:Card Padding="0">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="50" />
<RowDefinition Height="Auto" />
<RowDefinition Height="10" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid Background="#03a9f4" Grid.Row="0">
<TextBlock VerticalAlignment="Center" Foreground="{DynamicResource PrimaryHueDarkForegroundBrush}" Margin="16 4 16 4" Style="{StaticResource MaterialDesignHeadline5TextBlock}" Text="{Binding Title}" />
<Button
Style="{StaticResource MaterialDesignIconForegroundButton}"
Foreground="{DynamicResource PrimaryHueDarkForegroundBrush}"
HorizontalAlignment="Right"
Command="{Binding BtnCloseCommand}"
ToolTip="关闭">
<materialDesign:PackIcon Kind="Close" Width="34" Height="34" />
</Button>
</Grid>
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock
Grid.Column="0"
Margin="16 0 16 8"
VerticalAlignment="Center"
HorizontalAlignment="Right"
Style="{StaticResource MaterialDesignBody2TextBlock}"
Text="药品:" />
<TextBlock
Grid.Column="1"
Margin="16 0 16 8"
VerticalAlignment="Center"
HorizontalAlignment="Left"
Style="{StaticResource MaterialDesignBody2TextBlock}"
Text="{Binding _ChannelStock.DrugInfo.DrugName}" />
<TextBlock
Grid.Column="2"
Margin="16 0 16 8"
VerticalAlignment="Center"
HorizontalAlignment="Right"
Style="{StaticResource MaterialDesignBody2TextBlock}"
Text="规格:" />
<TextBlock
Grid.Column="3"
Margin="16 0 16 8"
VerticalAlignment="Center"
HorizontalAlignment="Left"
Style="{StaticResource MaterialDesignBody2TextBlock}"
Text="{Binding _ChannelStock.DrugInfo.DrugSpec}" />
<TextBlock
Grid.Column="4"
Margin="16 0 16 8"
VerticalAlignment="Center"
HorizontalAlignment="Right"
Style="{StaticResource MaterialDesignBody2TextBlock}"
Text="批次:" />
<TextBlock
Grid.Column="5"
Margin="16 0 16 8"
VerticalAlignment="Center"
HorizontalAlignment="Left"
Style="{StaticResource MaterialDesignBody2TextBlock}"
Text="{Binding _ChannelStock.ManuNo}" />
<TextBlock
Grid.Column="6"
Margin="16 0 16 8"
VerticalAlignment="Center"
HorizontalAlignment="Right"
Style="{StaticResource MaterialDesignBody2TextBlock}"
Text="库存:" />
<TextBlock
Grid.Column="7"
Margin="16 0 16 8"
VerticalAlignment="Center"
HorizontalAlignment="Left"
Style="{StaticResource MaterialDesignBody2TextBlock}"
Text="{Binding _ChannelStock.Quantity}" />
</Grid>
<Grid Grid.Row="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="3*" />
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="3*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<ComboBox
Grid.Column="1" Grid.ColumnSpan="2"
Margin="6 0 0 0"
Style="{StaticResource MaterialDesignOutlinedComboBox}"
SelectedItem="{Binding SelectedItem}"
DisplayMemberPath="Name"
ItemsSource="{Binding Selects}"
/>
<TextBox
Grid.Column="4" Grid.ColumnSpan="2"
Text="{Binding RemoveQuantity}"
materialDesign:HintAssist.Hint="移入数量"
Margin="6 0 0 0"
Style="{StaticResource MaterialDesignOutlinedTextBox}"/>
</Grid>
<Grid Grid.Row="4">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" Grid.Row="1" Grid.Column="1" HorizontalAlignment="Center" Margin="6">
<Button
Margin="2"
Style="{StaticResource MaterialDesignRaisedAccentButton}"
Visibility="{Binding Status,Converter={StaticResource StatusConverter}, ConverterParameter=opearBtnVisible}"
materialDesign:ButtonProgressAssist.IsIndicatorVisible="{Binding Status, Converter={StaticResource StatusConverter}, ConverterParameter=opearBtnLoading}"
materialDesign:ButtonProgressAssist.IsIndeterminate="{Binding Status, Converter={StaticResource StatusConverter}, ConverterParameter=opearBtnLoading}"
Content="开药箱"
Command="{Binding OpenDrawer}">
</Button>
<Button
Margin="2" Style="{StaticResource MaterialDesignRaisedAccentButton}"
Content="完成"
Command="{Binding FinishCommand}"/>
<Button
Margin="2" Style="{StaticResource MaterialDesignRaisedButton}"
Background="Orange"
BorderBrush="Orange"
Content="取消"
Command="{Binding CancleCommand}" Cursor="Hand" />
</StackPanel>
</Grid>
</Grid>
</materialDesign:Card>
</UserControl>

View File

@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace DM_Weight.Views.Dialog
{
/// <summary>
/// RemoveDialog.xaml 的交互逻辑
/// </summary>
public partial class RemoveDialog : UserControl
{
public RemoveDialog()
{
InitializeComponent();
}
}
}

View File

@ -0,0 +1,40 @@
<UserControl x:Class="DM_Weight.Views.Dialog.SelectOperationTypeDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:DM_Weight.Views.Dialog"
xmlns:prism="http://prismlibrary.com/"
prism:ViewModelLocator.AutoWireViewModel="True"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
xmlns:convert="clr-namespace:DM_Weight.Converter"
mc:Ignorable="d" MinHeight="615" MinWidth="880"
Width="Auto"
Height="Auto">
<materialDesign:Card Padding="0">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="200" />
<RowDefinition Height="Auto" />
<RowDefinition Height="200" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="5*" />
<ColumnDefinition Width="5*" />
</Grid.ColumnDefinitions>
<Grid Background="#03a9f4" Grid.Row="0" Grid.ColumnSpan="2">
<TextBlock VerticalAlignment="Center" Foreground="{DynamicResource PrimaryHueDarkForegroundBrush}" Margin="16 4 16 4" Style="{StaticResource MaterialDesignHeadline5TextBlock}" Text="{Binding Title}" />
</Grid>
<Grid Grid.Row="1" Margin="0 4 0 4">
<!--<TextBlock VerticalAlignment="Center" FontSize="14" FontFamily="YouYuan" FontWeight="Bold" Margin="16 4 16 4" Style="{StaticResource MaterialDesignHeadline5TextBlock}" Text="{Binding ConfirmInfo,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" />-->
</Grid>
<!--<StackPanel Grid.Row="2" Orientation="Horizontal" HorizontalAlignment="Center">-->
<Button Grid.Row="2" Grid.Column="0" Content="取药箱" Command="{Binding ConfirmCommand}" Width="130px" Height="50px" Style="{StaticResource MaterialDesignRaisedAccentButton}"/>
<Button Grid.Row="2" Grid.Column="1" Content="还药箱" Command="{Binding CancelCommand}" Width="130px" Height="50px" Style="{StaticResource MaterialDesignRaisedAccentButton}" Background="Orange" BorderBrush="Orange"/>
<!--</StackPanel>-->
</Grid>
</materialDesign:Card>
</UserControl>

View File

@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace DM_Weight.Views.Dialog
{
/// <summary>
/// SelectOperationTypeDialog.xaml 的交互逻辑
/// </summary>
public partial class SelectOperationTypeDialog : UserControl
{
public SelectOperationTypeDialog()
{
InitializeComponent();
}
}
}

View File

@ -0,0 +1,110 @@
<UserControl x:Class="DM_Weight.Views.EmergencyWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:DM_Weight.Views"
mc:Ignorable="d"
xmlns:pagination="clr-namespace:DM_Weight.Components.pagination"
xmlns:prism="http://prismlibrary.com/"
prism:ViewModelLocator.AutoWireViewModel="True"
xmlns:convert="clr-namespace:DM_Weight.Converter"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes">
<UserControl.Resources>
</UserControl.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="80"></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid Background="#00bcd4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Text="交接柜管理系统" Grid.Column="0" Margin="30 0 30 0" HorizontalAlignment="Left" Width="Auto" Height="26" Foreground="White" FontSize="20" FontWeight="Bold" />
</Grid>
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid Margin="6" Grid.Column="0">
<Grid.Resources>
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource MaterialDesignPaperLightButton}">
<Setter Property="Foreground" Value="#00a0ea" />
<Setter Property="BorderBrush" Value="#00a0ea" />
</Style>
</Grid.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Button Margin="0 0 3 0" Grid.Row="0" Grid.Column="0" Width="150" Content="1号药箱" Command="{Binding UpdateDrawerNo}" CommandParameter="1" />
<Button Margin="0 0 3 0" Grid.Row="1" Grid.Column="0" Width="150" Content="2号药箱" Command="{Binding UpdateDrawerNo}" CommandParameter="2" />
<Button Margin="0 0 3 0" Grid.Row="2" Grid.Column="0" Width="150" Content="3号药箱" Command="{Binding UpdateDrawerNo}" CommandParameter="3" />
<Button Margin="0 0 3 0" Grid.Row="3" Grid.Column="0" Width="150" Content="4号药箱" Command="{Binding UpdateDrawerNo}" CommandParameter="4" />
<Button Margin="0 0 3 0" Grid.Row="4" Grid.Column="0" Width="150" Content="5号药箱" Command="{Binding UpdateDrawerNo}" CommandParameter="5" />
<Button Margin="0 0 3 0" Grid.Row="5" Grid.Column="0" Width="150" Content="6号药箱" Command="{Binding UpdateDrawerNo}" CommandParameter="6" />
<Button Margin="0 0 3 0" Grid.Row="6" Grid.Column="0" Width="150" Content="7号药箱" Command="{Binding UpdateDrawerNo}" CommandParameter="7" />
<Button Margin="0 0 3 0" Grid.Row="7" Grid.Column="0" Width="150" Content="8号药箱" Command="{Binding UpdateDrawerNo}" CommandParameter="8" />
<Button Margin="0 0 3 0" Grid.Row="8" Grid.Column="0" Width="150" Content="9号药箱" Command="{Binding UpdateDrawerNo}" CommandParameter="9" />
<Button Margin="0 0 3 0" Grid.Row="0" Grid.Column="1" Width="150" Content="10号药箱" Command="{Binding UpdateDrawerNo}" CommandParameter="10" />
<Button Margin="0 0 3 0" Grid.Row="1" Grid.Column="1" Width="150" Content="11号药箱" Command="{Binding UpdateDrawerNo}" CommandParameter="11" />
<Button Margin="0 0 3 0" Grid.Row="2" Grid.Column="1" Width="150" Content="12号药箱" Command="{Binding UpdateDrawerNo}" CommandParameter="12" />
<Button Margin="0 0 3 0" Grid.Row="3" Grid.Column="1" Width="150" Content="13号药箱" Command="{Binding UpdateDrawerNo}" CommandParameter="13" />
<Button Margin="0 0 3 0" Grid.Row="4" Grid.Column="1" Width="150" Content="14号药箱" Command="{Binding UpdateDrawerNo}" CommandParameter="14" />
<Button Margin="0 0 3 0" Grid.Row="5" Grid.Column="1" Width="150" Content="15号药箱" Command="{Binding UpdateDrawerNo}" CommandParameter="15" />
<Button Margin="0 0 3 0" Grid.Row="6" Grid.Column="1" Width="150" Content="16号药箱" Command="{Binding UpdateDrawerNo}" CommandParameter="16" />
<Button Margin="0 0 3 0" Grid.Row="7" Grid.Column="1" Width="150" Content="17号药箱" Command="{Binding UpdateDrawerNo}" CommandParameter="17" />
<Button Margin="0 0 3 0" Grid.Row="8" Grid.Column="1" Width="150" Content="18号药箱" Command="{Binding UpdateDrawerNo}" CommandParameter="18" />
</Grid>
</Grid>
<Grid Grid.Column="1" Margin="0 6 0 0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<Button Margin="0 0 6 0" Content="返回登录" Command="{Binding ReturnLoginDelegate}" CommandParameter="0"
Visibility="{Binding DBConnectionStatus, Converter={StaticResource BooleanToVisibilityConverter}}" Style="{StaticResource MaterialDesignOutlinedLightButton}"/>
<Button
Style="{StaticResource MaterialDesignRaisedLightButton}"
Background="#7986cb"
BorderBrush="#7986cb"
materialDesign:ButtonAssist.CornerRadius="5" Cursor="Hand" IsCancel="true"
Command="{ Binding ExitCommand }" >
<TextBlock Foreground="{DynamicResource MaterialDesignPaper}" Text="退出" />
</Button>
</StackPanel>
<StackPanel HorizontalAlignment="Left" Orientation="Horizontal" Grid.Row="1">
<GroupBox Width="800px"
Header="重要提示"
Style="{StaticResource MaterialDesignGroupBox}"
Margin="0 6 0 0"
materialDesign:ColorZoneAssist.Mode="SecondaryMid">
<TextBlock Foreground="Red" FontWeight="Bold" FontSize="16" Text="数据库连接失败,此页面为紧急开锁页面!!!" />
</GroupBox>
</StackPanel>
<!--<materialDesign:Snackbar
Background="{Binding SnackbarBackground}"
MessageQueue="{Binding SnackbarMessageQueue}"/>-->
</Grid>
</Grid>
</Grid>
</UserControl>

View File

@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace DM_Weight.Views
{
/// <summary>
/// EmergencyWindow.xaml 的交互逻辑
/// </summary>
public partial class EmergencyWindow : UserControl
{
public EmergencyWindow()
{
InitializeComponent();
}
}
}

View File

@ -0,0 +1,12 @@
<UserControl x:Class="DM_Weight.Views.EmptyWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:DM_Weight.Views"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid>
</Grid>
</UserControl>

View File

@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace DM_Weight.Views
{
/// <summary>
/// EmptyWindow.xaml 的交互逻辑
/// </summary>
public partial class EmptyWindow : UserControl
{
public EmptyWindow()
{
InitializeComponent();
}
}
}

View File

@ -0,0 +1,151 @@
<UserControl x:Class="DM_Weight.Views.ExchangeWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:DM_Weight.Views"
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
xmlns:convert="clr-namespace:DM_Weight.Converter"
xmlns:prism="http://prismlibrary.com/"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<UserControl.Resources>
<convert:DrawerSelectConverter x:Key="DrawerSelectConverter" />
<Style x:Key="st" TargetType="GridViewColumnHeader">
<Style.Setters>
<Setter Property="Height">
<Setter.Value>55</Setter.Value>
</Setter>
<Setter Property="Background">
<Setter.Value>#31ccec</Setter.Value>
</Setter>
<Setter Property="Foreground">
<Setter.Value>white</Setter.Value>
</Setter>
</Style.Setters>
</Style>
</UserControl.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="15*" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid Margin="6" Grid.Column="0" >
<Grid.Resources>
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource MaterialDesignPaperLightButton}">
<Setter Property="Foreground" Value="#00a0ea" />
<Setter Property="BorderBrush" Value="#00a0ea" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#d1e7f5" />
<Setter Property="BorderBrush" Value="#d1e7f5" />
</Trigger>
<DataTrigger Value="True">
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource DrawerSelectConverter}">
<Binding RelativeSource="{ RelativeSource Mode=Self }" Path="Content" />
<Binding Path="DrawerNo" />
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="Background" Value="#d1e7f5" />
<Setter Property="BorderBrush" Value="#d1e7f5" />
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<!--<RowDefinition />-->
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Button Margin="0 0 3 0" Grid.Row="0" Grid.Column="0" Width="120" Content="一号手术间" Command="{Binding UpdateDrawerNo}" CommandParameter="0" />
<Button Margin="0 0 3 0" Grid.Row="1" Grid.Column="0" Width="120" Content="二号手术间" Command="{Binding UpdateDrawerNo}" CommandParameter="1" />
<Button Margin="0 0 3 0" Grid.Row="2" Grid.Column="0" Width="120" Content="三号手术间" Command="{Binding UpdateDrawerNo}" CommandParameter="2" />
<Button Margin="0 0 3 0" Grid.Row="3" Grid.Column="0" Width="120" Content="四号手术间" Command="{Binding UpdateDrawerNo}" CommandParameter="3" />
<Button Margin="0 0 3 0" Grid.Row="4" Grid.Column="0" Width="120" Content="五号手术间" Command="{Binding UpdateDrawerNo}" CommandParameter="4" />
<Button Margin="0 0 3 0" Grid.Row="5" Grid.Column="0" Width="120" Content="六号手术间" Command="{Binding UpdateDrawerNo}" CommandParameter="5" />
<Button Margin="0 0 3 0" Grid.Row="6" Grid.Column="0" Width="120" Content="七号手术间" Command="{Binding UpdateDrawerNo}" CommandParameter="6" />
<Button Margin="0 0 3 0" Grid.Row="7" Grid.Column="0" Width="120" Content="八号手术间" Command="{Binding UpdateDrawerNo}" CommandParameter="7" />
<Button Margin="0 0 3 0" Grid.Row="8" Grid.Column="0" Width="120" Content="九号手术间" Command="{Binding UpdateDrawerNo}" CommandParameter="8" />
<Button Margin="0 0 3 0" Grid.Row="0" Grid.Column="1" Width="120" Content="十号手术间" Command="{Binding UpdateDrawerNo}" CommandParameter="9" />
<Button Margin="0 0 3 0" Grid.Row="1" Grid.Column="1" Width="120" Content="十一号手术间" Command="{Binding UpdateDrawerNo}" CommandParameter="10" />
<Button Margin="0 0 3 0" Grid.Row="2" Grid.Column="1" Width="120" Content="十二号手术间" Command="{Binding UpdateDrawerNo}" CommandParameter="11" />
<Button Margin="0 0 3 0" Grid.Row="3" Grid.Column="1" Width="120" Content="十三号手术间" Command="{Binding UpdateDrawerNo}" CommandParameter="12" />
<Button Margin="0 0 3 0" Grid.Row="4" Grid.Column="1" Width="120" Content="十四号手术间" Command="{Binding UpdateDrawerNo}" CommandParameter="13" />
<Button Margin="0 0 3 0" Grid.Row="5" Grid.Column="1" Width="120" Content="十五号手术间" Command="{Binding UpdateDrawerNo}" CommandParameter="14" />
<Button Margin="0 0 3 0" Grid.Row="6" Grid.Column="1" Width="120" Content="十六号手术间" Command="{Binding UpdateDrawerNo}" CommandParameter="15" />
<Button Margin="0 0 3 0" Grid.Row="7" Grid.Column="1" Width="120" Content="十七号手术间" Command="{Binding UpdateDrawerNo}" CommandParameter="16" />
<Button Margin="0 0 3 0" Grid.Row="8" Grid.Column="1" Width="120" Content="十八号手术间" Command="{Binding UpdateDrawerNo}" CommandParameter="17" />
<!--<Button Grid.Row="8" Grid.Column="1" Width="120" Content="19号药箱" Command="{Binding UpdateDrawerNo}" CommandParameter="19" />
<Button Grid.Row="9" Grid.Column="1" Width="120" Content="20号药箱" Command="{Binding UpdateDrawerNo}" CommandParameter="20" />-->
</Grid>
</Grid>
<Grid Grid.Column="1" Margin="6">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition />
</Grid.RowDefinitions>
<StackPanel HorizontalAlignment="Right" Orientation="Horizontal" Grid.ColumnSpan="2">
<Button Margin="6 0 6 6"
Content="替换药品"
Command="{Binding ExchangeCommand}"
Style="{StaticResource MaterialDesignOutlinedLightButton}" />
<Button
Margin="0 0 6 6"
Style="{StaticResource MaterialDesignOutlinedLightButton}"
Content="移出药品"
Command="{Binding RemoveCommand}"/>
</StackPanel>
<ListView Grid.ColumnSpan="2"
Padding="0 6 0 0" Grid.Row="1"
ItemsSource="{Binding _ChannelStocks, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
SelectedItem="{Binding _ChannelStock}"
materialDesign:ListViewAssist.HeaderRowBackground="#31ccec"
materialDesign:DataGridAssist.ColumnHeaderPadding="10"
materialDesign:ListViewAssist.ListViewItemPadding="13">
<ListView.Resources>
<Style TargetType="{x:Type GridViewColumnHeader}" BasedOn="{StaticResource {x:Type GridViewColumnHeader}}">
<Setter Property="Foreground" Value="White" />
</Style>
</ListView.Resources>
<!--<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding RowSelected}" />
</i:EventTrigger>
</i:Interaction.Triggers>-->
<ListView.View>
<GridView ColumnHeaderContainerStyle="{StaticResource st}">
<GridViewColumn Header="药品名称" Width="150" DisplayMemberBinding="{Binding DrugInfo.DrugName}"/>
<GridViewColumn Header="规格" Width="150" DisplayMemberBinding="{Binding DrugInfo.DrugSpec}"/>
<GridViewColumn Header="批次" Width="130" DisplayMemberBinding="{Binding ManuNo}"/>
<GridViewColumn Header="库存" Width="50" DisplayMemberBinding="{Binding Quantity}"/>
</GridView>
</ListView.View>
</ListView>
<!--<materialDesign:Snackbar
Background="{Binding SnackbarBackground}"
MessageQueue="{Binding SnackbarMessageQueue}"/>-->
</Grid>
</Grid>
</UserControl>

View File

@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace DM_Weight.Views
{
/// <summary>
/// ExchangeWindow.xaml 的交互逻辑
/// </summary>
public partial class ExchangeWindow : UserControl
{
public ExchangeWindow()
{
InitializeComponent();
}
}
}

View File

@ -27,12 +27,12 @@
</Grid.ColumnDefinitions>
<!--<Image Grid.Column="0" Margin="30 0 30 0" HorizontalAlignment="Left" Width="Auto" Height="26" Source="/Images/logo.png" />-->
<TextBlock Text="交接柜管理系统" Grid.Column="0" Margin="30 0 30 0" HorizontalAlignment="Left" Width="Auto" Height="26" Foreground="White" FontSize="20" FontWeight="Bold" />
<ListBox Name="ListBoxName" Grid.Column="1" SelectedItem="{Binding SelectedMenu}" ItemsSource="{Binding PremissionDmList}" HorizontalAlignment="Right" Cursor="Hand">
<i:Interaction.Triggers>
<ListBox SelectionMode="Extended" Name="ListBoxName" Grid.Column="1" SelectedItem="{Binding SelectedMenu}" ItemsSource="{Binding PremissionDmList}" HorizontalAlignment="Right" Cursor="Hand">
<!--<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding SelectionCommon}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</i:Interaction.Triggers>-->
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal" IsItemsHost="True"/>

View File

@ -28,7 +28,7 @@
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid Margin="0 6 0 6" Grid.Row="0">
@ -87,17 +87,19 @@
<GridViewColumn Width="100"
DisplayMemberBinding="{Binding DrawerNo}"
Header="手术间药箱号"/>
<GridViewColumn Width="180"
<GridViewColumn Width="580"
DisplayMemberBinding="{Binding InvoiceId}"
Header="操作内容"/>
</GridView>
</ListView.View>
</ListView>
<pagination:Pagination Grid.Row="2"
<DockPanel Grid.Row="2">
<pagination:Pagination
CurrentPage="{Binding PageNum}"
PageSize="{Binding PageSize}"
TotalPages="{Binding TotalCount}"
InfoTextIsEnabel="True"
/>
</DockPanel>
</Grid>
</UserControl>

View File

@ -19,9 +19,9 @@
Topmost="False"
prism:ViewModelLocator.AutoWireViewModel="True"
Title="主窗口" Height="768" Width="1024" WindowStyle="None" WindowState="Maximized">
<WindowChrome.WindowChrome>
<!--<WindowChrome.WindowChrome>
<WindowChrome CornerRadius="4" GlassFrameThickness="1" />
</WindowChrome.WindowChrome>
</WindowChrome.WindowChrome>-->
<materialDesign:DialogHost
DialogMargin="0"

View File

@ -1,4 +1,10 @@
using Prism.Events;
using DM_Weight.msg;
using DM_Weight.Port;
using DM_Weight.util;
using DM_Weight.ViewModels;
using log4net;
using log4net.Repository.Hierarchy;
using Prism.Events;
using Prism.Ioc;
using Prism.Regions;
using System;
@ -16,11 +22,6 @@ using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using Unity;
using Unity.Lifetime;
using DM_Weight.msg;
using DM_Weight.util;
using log4net.Repository.Hierarchy;
using DM_Weight.Port;
using log4net;
namespace DM_Weight.Views
{
@ -31,10 +32,12 @@ namespace DM_Weight.Views
{
//IRegionManager _regionManager;
//IUnityContainer _container;
//MainWindowViewModel vms;
private readonly ILog logger = LogManager.GetLogger(typeof(PortUtil));
public MainWindow()
{
InitializeComponent();
//vms = MainWindowViewModel.vm;
//_regionManager = regionManager;
//_container = container;
//System.Windows.Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() =>
@ -46,6 +49,10 @@ namespace DM_Weight.Views
//}));
}
//protected override void OnClosed(EventArgs e)
//{
// vms._recorder?.Dispose();
// base.OnClosed(e);
//}
}
}

View File

@ -28,7 +28,7 @@
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid Margin="0 6 0 6" Grid.Row="0">

View File

@ -0,0 +1,13 @@
using Prism.Events;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DM_Weight.msg
{
internal class PrintScreenEvent : PubSubEvent<int>
{
}
}

View File

@ -0,0 +1,79 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
namespace DM_Weight.util
{
public class FFmpegHelper
{
private Process _ffmpegProcess;
private string _ffmpegPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ffmpeg.exe");
//是否停止录屏标志
public bool stopFlag = false;
public void StartRecording(string outputPath, int frameRate = 30)
{
//int width = (int)SystemParameters.PrimaryScreenWidth;
//int height = (int)SystemParameters.PrimaryScreenHeight;
//string args = $"-f gdigrab -framerate 30 -i desktop -c:v libx264 -crf 25 -preset ultrafast -t {segmentDuration} {segmentPath}";
int segmentDuration = 1800; // 每段半小时
string args = $"-f gdigrab -framerate {frameRate} " +
$"-i desktop -preset ultrafast -t {segmentDuration} {outputPath}";
_ffmpegProcess = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = _ffmpegPath,
Arguments = args,
UseShellExecute = false,
CreateNoWindow = true,
RedirectStandardInput = true
}
};
_ffmpegProcess.Start();
ThreadPool.QueueUserWorkItem(CheckFFmpegProcess); // 检查FFmpeg进程是否完成以开始下一个录制段
}
public void StopRecording()
{
_ffmpegProcess?.StandardInput.WriteLine("q");
_ffmpegProcess?.WaitForExit(1000);
_ffmpegProcess?.Close();
}
private void CheckFFmpegProcess(object state)
{
try
{
if (!stopFlag)
{
_ffmpegProcess.WaitForExit(); // 等待FFmpeg进程结束
if (!_ffmpegProcess.HasExited) return; // 如果进程未结束,则不继续
// 开始下一个录制段,如果需要循环录制,可以取消注释下面的代码行并适当调整逻辑
// StartRecording(); // 注意:这将无限循环录制,可能需要用户界面干预来停止或重置计数器。
string _outputFolder;
string _outputFilePath;
_outputFolder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "Log", "ScreenRecordings");
if (!Directory.Exists(_outputFolder))
{
Directory.CreateDirectory(_outputFolder);
}
// 生成输出文件名
string timestamp = DateTime.Now.ToString("yyyyMMdd_HHmmss");
_outputFilePath = Path.Combine(_outputFolder, $"{timestamp}.webm");
StartRecording(_outputFilePath, 25);
}
}
catch (Exception ex)
{
}
}
}
}

View File

@ -1,2 +0,0 @@
湘潭麻醉科交接柜
18个药箱、每个药师与药箱绑定药师拿药箱放药箱。管理员管理所有药箱核对麻醉单与用药数量是否一致、药箱补药。