更新不刷新页面、新增多批次入库、修改调拨入库、添加账册页面、修改盘点页面、添加盘点记录页等
This commit is contained in:
		
							parent
							
								
									d6066ef0ca
								
							
						
					
					
						commit
						3df79378b7
					
				| 
						 | 
					@ -3,7 +3,7 @@
 | 
				
			||||||
  <connectionStrings>
 | 
					  <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;database=wpf_dm_program;userid=root;password=qq1223" />-->
 | 
				
			||||||
	<add name="database" connectionString="server=127.0.0.1;port=3306;database=hkcdb;userid=root;password=root" />
 | 
						<add name="database" connectionString="server=127.0.0.1;port=3306;database=hunanxianchang_db;userid=root;password=root" />
 | 
				
			||||||
  </connectionStrings>
 | 
					  </connectionStrings>
 | 
				
			||||||
	<!--<runtime>
 | 
						<!--<runtime>
 | 
				
			||||||
		--><!--配置之后,Appdomain.CurrentDomain.UnhandledException 事件的 IsTerminating 就变成了 false 啦!也就是说,程序并不会因为这次的异常而崩溃退出。--><!--
 | 
							--><!--配置之后,Appdomain.CurrentDomain.UnhandledException 事件的 IsTerminating 就变成了 false 啦!也就是说,程序并不会因为这次的异常而崩溃退出。--><!--
 | 
				
			||||||
| 
						 | 
					@ -13,10 +13,14 @@
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		<!-- 设备id -->
 | 
							<!-- 设备id -->
 | 
				
			||||||
		<add key="machineId" value="DM1" />
 | 
							<add key="machineId" value="DM1" />
 | 
				
			||||||
 | 
							<!-- 供应单位 -->
 | 
				
			||||||
 | 
							<add key="supplierDept" value="药库" />
 | 
				
			||||||
 | 
							<!-- 领用部门 -->
 | 
				
			||||||
 | 
							<add key="receiveDept" value="麻精药房" />
 | 
				
			||||||
		<!--2023/7/13 药房代码 有则写无则空 -->
 | 
							<!--2023/7/13 药房代码 有则写无则空 -->
 | 
				
			||||||
		<add key="storage" value="" />
 | 
							<add key="storage" value="" />
 | 
				
			||||||
		<!-- 登录模式 1单人登录2双人登录 -->
 | 
							<!-- 登录模式 1单人登录2双人登录 -->
 | 
				
			||||||
		<add key="loginMode" value="1" />
 | 
							<add key="loginMode" value="2" />
 | 
				
			||||||
		<!-- 登录顺序,指定先登录的人的名称有效值,只有在登录模式等于2时才会生效; 发药人:【operator】审核人:【reviewer】 -->
 | 
							<!-- 登录顺序,指定先登录的人的名称有效值,只有在登录模式等于2时才会生效; 发药人:【operator】审核人:【reviewer】 -->
 | 
				
			||||||
		<add key="firstLogin" value="operator" />
 | 
							<add key="firstLogin" value="operator" />
 | 
				
			||||||
		<!-- 按处方还药或者按取药记录还药 1:处方2:药品-->
 | 
							<!-- 按处方还药或者按取药记录还药 1:处方2:药品-->
 | 
				
			||||||
| 
						 | 
					@ -24,7 +28,7 @@
 | 
				
			||||||
		<!-- 自动退出时间,单位秒,为0时不自动退出 -->
 | 
							<!-- 自动退出时间,单位秒,为0时不自动退出 -->
 | 
				
			||||||
		<add key="autoExit" value="0"/>
 | 
							<add key="autoExit" value="0"/>
 | 
				
			||||||
		<!--报表数据库连接-->
 | 
							<!--报表数据库连接-->
 | 
				
			||||||
		<add key="gridConnectionString" value="MYSQL; Database=hkcdb; Password=root; Port=3306; Server=127.0.0.1; User=root;"/>
 | 
							<add key="gridConnectionString" value="MYSQL; Database=hunanxianchang_db; Password=root; Port=3306; Server=127.0.0.1; User=root;"/>
 | 
				
			||||||
		<!-- 查询处方是orderNo还是orderGroupNo -->
 | 
							<!-- 查询处方是orderNo还是orderGroupNo -->
 | 
				
			||||||
		<add key="OrderNoName" value="orderNo" />
 | 
							<add key="OrderNoName" value="orderNo" />
 | 
				
			||||||
		<!-- 后门耗材板地址 没有则填写0-->
 | 
							<!-- 后门耗材板地址 没有则填写0-->
 | 
				
			||||||
| 
						 | 
					@ -36,11 +40,11 @@
 | 
				
			||||||
		<!-- 抽屉串口使用的协议232或者485 -->
 | 
							<!-- 抽屉串口使用的协议232或者485 -->
 | 
				
			||||||
		<add key="DrawerProtocol" value="485" />
 | 
							<add key="DrawerProtocol" value="485" />
 | 
				
			||||||
		<!-- 抽屉串口的串口号 -->
 | 
							<!-- 抽屉串口的串口号 -->
 | 
				
			||||||
		<add key="DrawerPortPath" value="COM1" />
 | 
							<add key="DrawerPortPath" value="COM3" />
 | 
				
			||||||
		<!-- can总线串口的串口号 -->
 | 
							<!-- can总线串口的串口号 -->
 | 
				
			||||||
		<add key="CanBusPortPath" value="COM5" />
 | 
							<add key="CanBusPortPath" value="COM9" />
 | 
				
			||||||
		<!-- 条码枪串口的串口号 -->
 | 
							<!-- 条码枪串口的串口号 -->
 | 
				
			||||||
		<add key="ScanCodePortPath" value="COM8" />
 | 
							<add key="ScanCodePortPath" value="COM11" />
 | 
				
			||||||
		<!-- 抽屉串口的串口号 --><!--
 | 
							<!-- 抽屉串口的串口号 --><!--
 | 
				
			||||||
		<add key="DrawerPortPath" value="COM11" />
 | 
							<add key="DrawerPortPath" value="COM11" />
 | 
				
			||||||
		--><!-- can总线串口的串口号 --><!--
 | 
							--><!-- can总线串口的串口号 --><!--
 | 
				
			||||||
| 
						 | 
					@ -49,12 +53,12 @@
 | 
				
			||||||
		<add key="ScanPortPath" value="COM7" />-->
 | 
							<add key="ScanPortPath" value="COM7" />-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		<!-- 指纹机类型 1:无屏幕;2:有屏幕 -->
 | 
							<!-- 指纹机类型 1:无屏幕(BW设备);2:有屏幕(TFT设备) -->
 | 
				
			||||||
		<add  key="machineType" value="2"/>
 | 
							<add  key="machineType" value="2"/>
 | 
				
			||||||
		<!-- 指纹机号码 -->
 | 
							<!-- 指纹机号码 -->
 | 
				
			||||||
		<add  key="machineNumber" value="1"/>
 | 
							<add  key="machineNumber" value="1"/>
 | 
				
			||||||
		<!-- 指纹机ip -->
 | 
							<!-- 指纹机ip -->
 | 
				
			||||||
		<add  key="fingerIp" value="192.168.1.201"/>
 | 
							<add  key="fingerIp" value="192.168.50.201"/>
 | 
				
			||||||
		<!--一个抽屉对应标签数-->
 | 
							<!--一个抽屉对应标签数-->
 | 
				
			||||||
		<add  key="labelCount" value="2"/>
 | 
							<add  key="labelCount" value="2"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,7 +6,7 @@
 | 
				
			||||||
             d1p1:Ignorable="d"
 | 
					             d1p1:Ignorable="d"
 | 
				
			||||||
             xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
 | 
					             xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
 | 
				
			||||||
             xmlns:local="clr-namespace:DM_Weight"
 | 
					             xmlns:local="clr-namespace:DM_Weight"
 | 
				
			||||||
             xmlns:prism="http://prismlibrary.com/">
 | 
					             xmlns:prism="http://prismlibrary.com/" Startup="PrismApplication_Startup">
 | 
				
			||||||
    <Application.Resources>
 | 
					    <Application.Resources>
 | 
				
			||||||
        <ResourceDictionary>
 | 
					        <ResourceDictionary>
 | 
				
			||||||
            <ResourceDictionary.MergedDictionaries>
 | 
					            <ResourceDictionary.MergedDictionaries>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -26,6 +26,9 @@ using System.Timers;
 | 
				
			||||||
using DM_Weight.Models;
 | 
					using DM_Weight.Models;
 | 
				
			||||||
using SqlSugar;
 | 
					using SqlSugar;
 | 
				
			||||||
using Microsoft.Extensions.DependencyInjection;
 | 
					using Microsoft.Extensions.DependencyInjection;
 | 
				
			||||||
 | 
					using DM_Weight.Services;
 | 
				
			||||||
 | 
					using System.Diagnostics;
 | 
				
			||||||
 | 
					using System.Runtime.InteropServices;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace DM_Weight
 | 
					namespace DM_Weight
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -114,7 +117,7 @@ namespace DM_Weight
 | 
				
			||||||
            // 串口工具
 | 
					            // 串口工具
 | 
				
			||||||
            containerRegistry.RegisterSingleton<PortUtil>();
 | 
					            containerRegistry.RegisterSingleton<PortUtil>();
 | 
				
			||||||
            // 指纹机工具
 | 
					            // 指纹机工具
 | 
				
			||||||
            //containerRegistry.RegisterSingleton<FingerprintUtil>();
 | 
					            containerRegistry.RegisterSingleton<FingerprintUtil>();
 | 
				
			||||||
            // 组态屏工具
 | 
					            // 组态屏工具
 | 
				
			||||||
            containerRegistry.RegisterSingleton<ScreenUtil>();
 | 
					            containerRegistry.RegisterSingleton<ScreenUtil>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -164,6 +167,8 @@ namespace DM_Weight
 | 
				
			||||||
            containerRegistry.RegisterForNavigation<SelfAddWindow, SelfAddWindowViewModel>();
 | 
					            containerRegistry.RegisterForNavigation<SelfAddWindow, SelfAddWindowViewModel>();
 | 
				
			||||||
            // 调拨加药页面
 | 
					            // 调拨加药页面
 | 
				
			||||||
            containerRegistry.RegisterForNavigation<InvoiceInWindow, InvoiceInWindowViewModel>();
 | 
					            containerRegistry.RegisterForNavigation<InvoiceInWindow, InvoiceInWindowViewModel>();
 | 
				
			||||||
 | 
					            // 调拨加药页面
 | 
				
			||||||
 | 
					            containerRegistry.RegisterForNavigation<InvoiceInNewWindow, InvoiceInNewWindowViewModel>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // 调拨取药模态框
 | 
					            // 调拨取药模态框
 | 
				
			||||||
            containerRegistry.RegisterDialog<InvoiceAddDialog>();
 | 
					            containerRegistry.RegisterDialog<InvoiceAddDialog>();
 | 
				
			||||||
| 
						 | 
					@ -173,6 +178,8 @@ namespace DM_Weight
 | 
				
			||||||
            // 自选加药模态框
 | 
					            // 自选加药模态框
 | 
				
			||||||
            containerRegistry.RegisterDialog<SelfAddDialog>();
 | 
					            containerRegistry.RegisterDialog<SelfAddDialog>();
 | 
				
			||||||
            containerRegistry.RegisterForNavigation<SelfAddDialog, SelfAddDialogViewModel>();
 | 
					            containerRegistry.RegisterForNavigation<SelfAddDialog, SelfAddDialogViewModel>();
 | 
				
			||||||
 | 
					            //多批次抽屉加药
 | 
				
			||||||
 | 
					            containerRegistry.RegisterForNavigation<AddDrugControl, AddDrugControlViewModel>();
 | 
				
			||||||
            #endregion
 | 
					            #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            #region 还药
 | 
					            #region 还药
 | 
				
			||||||
| 
						 | 
					@ -200,11 +207,24 @@ namespace DM_Weight
 | 
				
			||||||
            // 库位绑定模态框
 | 
					            // 库位绑定模态框
 | 
				
			||||||
            containerRegistry.RegisterDialog<BindingChannelDialog>();
 | 
					            containerRegistry.RegisterDialog<BindingChannelDialog>();
 | 
				
			||||||
            containerRegistry.RegisterForNavigation<BindingChannelDialog, BindingChannelDialogViewModel>();
 | 
					            containerRegistry.RegisterForNavigation<BindingChannelDialog, BindingChannelDialogViewModel>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // 库位绑定模态框
 | 
				
			||||||
 | 
					            containerRegistry.RegisterDialog<BindingChannelNewDialog>();
 | 
				
			||||||
 | 
					            containerRegistry.RegisterForNavigation<BindingChannelNewDialog, BindingChannelNewDialogViewModel>();
 | 
				
			||||||
            // 库存盘点页面
 | 
					            // 库存盘点页面
 | 
				
			||||||
            containerRegistry.RegisterForNavigation<CheckStockWindow, CheckStockWindowViewModel>();
 | 
					            containerRegistry.RegisterForNavigation<CheckStockWindow, CheckStockWindowViewModel>();
 | 
				
			||||||
 | 
					            containerRegistry.RegisterDialog<CheckRecordDetailDialog>();
 | 
				
			||||||
 | 
					            containerRegistry.RegisterForNavigation<CheckRecordDetailDialog, CheckRecordDetailDialogViewModel>();
 | 
				
			||||||
 | 
					            // 库存盘点页面--新(类似库存列表页面)
 | 
				
			||||||
 | 
					            containerRegistry.RegisterForNavigation<CheckStockNewWindow, CheckStockNewWindowViewModel>();
 | 
				
			||||||
 | 
					            // 库存盘点页面--新(类似库存列表页面)
 | 
				
			||||||
 | 
					            containerRegistry.RegisterForNavigation<CheckStockNew2Window, CheckStockNew2WindowViewModel>();
 | 
				
			||||||
 | 
					            // 库存盘点页面--新(类似库存列表页面)
 | 
				
			||||||
 | 
					            containerRegistry.RegisterForNavigation<CheckRecordNewWindow, CheckRecordNewWindowViewModel>();
 | 
				
			||||||
            // 药品列表页面
 | 
					            // 药品列表页面
 | 
				
			||||||
            containerRegistry.RegisterForNavigation<DrugListWindow, DrugListWindowViewModel>();
 | 
					            containerRegistry.RegisterForNavigation<DrugListWindow, DrugListWindowViewModel>();
 | 
				
			||||||
 | 
					            //库存列表导出账册弹窗
 | 
				
			||||||
 | 
					            containerRegistry.RegisterForNavigation<StockListAccountDialog, StockListAccountDialogViewModel>();
 | 
				
			||||||
            #endregion
 | 
					            #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            #region 系统设置
 | 
					            #region 系统设置
 | 
				
			||||||
| 
						 | 
					@ -239,9 +259,48 @@ namespace DM_Weight
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            containerRegistry.RegisterSingleton<SqlSugarScope>(() => SqlSugarHelperNew.GetInstance());
 | 
					            containerRegistry.RegisterSingleton<SqlSugarScope>(() => SqlSugarHelperNew.GetInstance());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            containerRegistry.RegisterForNavigation<TestCheckBox, TestCheckBoxViewModel>();
 | 
					            //账册页面
 | 
				
			||||||
 | 
					            containerRegistry.RegisterForNavigation<AccountWindow,AccountWindowViewModel>();
 | 
				
			||||||
 | 
					            //账册服务类
 | 
				
			||||||
 | 
					            containerRegistry.Register<MachineRecordService>();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private void PrismApplication_Startup(object sender, StartupEventArgs e)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            //获取欲启动程序名
 | 
				
			||||||
 | 
					            string processName = System.Diagnostics.Process.GetCurrentProcess().ProcessName;
 | 
				
			||||||
 | 
					            //检查程序是否已经启动,已经启动则显示提示退出程序
 | 
				
			||||||
 | 
					            if (System.Diagnostics.Process.GetProcessesByName(processName).Length > 1)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                //系统在运行
 | 
				
			||||||
 | 
					                RaiseOtherProcess();
 | 
				
			||||||
 | 
					                Application.Current.Shutdown();
 | 
				
			||||||
 | 
					                return;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        private static void RaiseOtherProcess()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Process proc = Process.GetCurrentProcess();
 | 
				
			||||||
 | 
					            foreach (Process otherProc in Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName))
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (proc.Id != otherProc.Id)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    IntPtr hWnd = otherProc.MainWindowHandle;
 | 
				
			||||||
 | 
					                    if (IsIconic(hWnd))
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        ShowWindowAsync(hWnd, 9);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    SetForegroundWindow(hWnd);
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        [DllImport("user32.dll")]
 | 
				
			||||||
 | 
					        private static extern bool SetForegroundWindow(IntPtr hWnd);
 | 
				
			||||||
 | 
					        [DllImport("user32.dll")]
 | 
				
			||||||
 | 
					        private static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);
 | 
				
			||||||
 | 
					        [DllImport("user32.dll")]
 | 
				
			||||||
 | 
					        private static extern bool IsIconic(IntPtr hWnd);
 | 
				
			||||||
        //protected IServiceProvider ConfigureServices(IServiceCollection services)
 | 
					        //protected IServiceProvider ConfigureServices(IServiceCollection services)
 | 
				
			||||||
        //{
 | 
					        //{
 | 
				
			||||||
        //    // 创建 SqlSugar 实例
 | 
					        //    // 创建 SqlSugar 实例
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,7 +23,15 @@ namespace DM_Weight.Converter
 | 
				
			||||||
                foreach (var item in items)
 | 
					                foreach (var item in items)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    var de = item as ChannelStock;
 | 
					                    var de = item as ChannelStock;
 | 
				
			||||||
                    total += de.Quantity;
 | 
					                    try
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        total += de.Quantity;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    catch (Exception)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        var de2 = item as CheckRecordStock;
 | 
				
			||||||
 | 
					                        total = de2.quantity;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            return "总库存:" + total;
 | 
					            return "总库存:" + total;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,33 @@
 | 
				
			||||||
 | 
					using DM_Weight.Models;
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Globalization;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using System.Windows.Data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace DM_Weight.Converter
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class TotalCountConverter : IValueConverter
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var total = 0;
 | 
				
			||||||
 | 
					            if (value is List<ChannelStock> items)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                foreach (var item in items)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    var de = item as ChannelStock;
 | 
				
			||||||
 | 
					                    total += de.Quantity;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            return total;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            throw new NotImplementedException();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -70,6 +70,7 @@
 | 
				
			||||||
    <PackageReference Include="MaterialDesignThemes" Version="4.8.0" />
 | 
					    <PackageReference Include="MaterialDesignThemes" Version="4.8.0" />
 | 
				
			||||||
    <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.0" />
 | 
					    <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.0" />
 | 
				
			||||||
    <PackageReference Include="Microsoft.Xaml.Behaviors.Wpf" Version="1.1.39" />
 | 
					    <PackageReference Include="Microsoft.Xaml.Behaviors.Wpf" Version="1.1.39" />
 | 
				
			||||||
 | 
					    <PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
 | 
				
			||||||
    <PackageReference Include="Prism.Unity" Version="8.1.97" />
 | 
					    <PackageReference Include="Prism.Unity" Version="8.1.97" />
 | 
				
			||||||
    <PackageReference Include="SqlSugarCore" Version="5.1.4.67" />
 | 
					    <PackageReference Include="SqlSugarCore" Version="5.1.4.67" />
 | 
				
			||||||
    <PackageReference Include="SuperSimpleTcp" Version="3.0.10" />
 | 
					    <PackageReference Include="SuperSimpleTcp" Version="3.0.10" />
 | 
				
			||||||
| 
						 | 
					@ -87,6 +88,12 @@
 | 
				
			||||||
    </ApplicationDefinition>
 | 
					    </ApplicationDefinition>
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <ItemGroup>
 | 
				
			||||||
 | 
					    <Compile Update="Views\CheckStockNew2Window.xaml.cs">
 | 
				
			||||||
 | 
					      <SubType>Code</SubType>
 | 
				
			||||||
 | 
					    </Compile>
 | 
				
			||||||
 | 
					  </ItemGroup>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
    <None Update="App.config">
 | 
					    <None Update="App.config">
 | 
				
			||||||
      <CopyToOutputDirectory>Never</CopyToOutputDirectory>
 | 
					      <CopyToOutputDirectory>Never</CopyToOutputDirectory>
 | 
				
			||||||
| 
						 | 
					@ -106,6 +113,12 @@
 | 
				
			||||||
    <None Update="ReportTemp\machine_log_check.grf">
 | 
					    <None Update="ReportTemp\machine_log_check.grf">
 | 
				
			||||||
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
 | 
					      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
 | 
				
			||||||
    </None>
 | 
					    </None>
 | 
				
			||||||
 | 
					    <None Update="ReportTemp\machine_log_check_new.grf">
 | 
				
			||||||
 | 
					      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
 | 
				
			||||||
 | 
					    </None>
 | 
				
			||||||
 | 
					    <None Update="ReportTemp\machine_log_check_new2.grf">
 | 
				
			||||||
 | 
					      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
 | 
				
			||||||
 | 
					    </None>
 | 
				
			||||||
    <None Update="ReportTemp\machine_log_return.grf">
 | 
					    <None Update="ReportTemp\machine_log_return.grf">
 | 
				
			||||||
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
 | 
					      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
 | 
				
			||||||
    </None>
 | 
					    </None>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -20,22 +20,22 @@ namespace DM_Weight.Finger
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private readonly ILog logger = LogManager.GetLogger(typeof(FingerprintUtil));
 | 
					        private readonly ILog logger = LogManager.GetLogger(typeof(FingerprintUtil));
 | 
				
			||||||
        public zkemkeeper.CZKEMClass axCZKEM1; //= new zkemkeeper.CZKEMClass();
 | 
					        public zkemkeeper.CZKEMClass axCZKEM1;// = new zkemkeeper.CZKEMClass();
 | 
				
			||||||
        public bool bIsConnected = false;
 | 
					        public bool bIsConnected = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private string fingerIp = ConfigurationManager.AppSettings["fingerIp"]?.ToString()??"";
 | 
					        private string fingerIp = ConfigurationManager.AppSettings["fingerIp"]?.ToString() ?? "";
 | 
				
			||||||
        private int fingerPort = 4370;
 | 
					        private int fingerPort = 4370;
 | 
				
			||||||
        private int machineNumber = Convert.ToInt32(ConfigurationManager.AppSettings["machineNumber"]?.ToString()??"0");
 | 
					        private int machineNumber = Convert.ToInt32(ConfigurationManager.AppSettings["machineNumber"]?.ToString() ?? "0");
 | 
				
			||||||
        private int machineType = Convert.ToInt32(ConfigurationManager.AppSettings["machineType"]?.ToString()??"0");
 | 
					        private int machineType = Convert.ToInt32(ConfigurationManager.AppSettings["machineType"]?.ToString() ?? "0");
 | 
				
			||||||
        private readonly IEventAggregator _eventAggregator;
 | 
					        private readonly IEventAggregator _eventAggregator;
 | 
				
			||||||
        public FingerprintUtil(IEventAggregator eventAggregator)
 | 
					        public FingerprintUtil(IEventAggregator eventAggregator)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            _eventAggregator = eventAggregator;
 | 
					            _eventAggregator = eventAggregator;
 | 
				
			||||||
            logger.Info($"进入构造器,开始连接指纹机");
 | 
					            logger.Info($"进入构造器,开始连接指纹机");
 | 
				
			||||||
            Task.Run(() =>
 | 
					           // Task.Factory.StartNew(() =>
 | 
				
			||||||
           {
 | 
					           //{
 | 
				
			||||||
               ConnectionMain();
 | 
					               ConnectionMain();
 | 
				
			||||||
           });
 | 
					        //});
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void ConnectionMain()
 | 
					        public void ConnectionMain()
 | 
				
			||||||
| 
						 | 
					@ -47,7 +47,7 @@ namespace DM_Weight.Finger
 | 
				
			||||||
                logger.Info($"连接指纹机,IP:{fingerIp},端口:{fingerPort},机器号:{machineNumber},连接结果:{bIsConnected}");
 | 
					                logger.Info($"连接指纹机,IP:{fingerIp},端口:{fingerPort},机器号:{machineNumber},连接结果:{bIsConnected}");
 | 
				
			||||||
                if (bIsConnected)
 | 
					                if (bIsConnected)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    if (axCZKEM1.RegEvent(machineNumber, 65535))
 | 
					                    if (axCZKEM1.RegEvent(machineNumber, 9))
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        this.axCZKEM1.OnAttTransactionEx += new zkemkeeper._IZKEMEvents_OnAttTransactionExEventHandler(axCZKEM1_OnAttTransactionEx);
 | 
					                        this.axCZKEM1.OnAttTransactionEx += new zkemkeeper._IZKEMEvents_OnAttTransactionExEventHandler(axCZKEM1_OnAttTransactionEx);
 | 
				
			||||||
                        //this.axCZKEM1.OnEnrollFinger += new zkemkeeper._IZKEMEvents_OnEnrollFingerEventHandler(axCZKEM1_OnEnrollFinger);
 | 
					                        //this.axCZKEM1.OnEnrollFinger += new zkemkeeper._IZKEMEvents_OnEnrollFingerEventHandler(axCZKEM1_OnEnrollFinger);
 | 
				
			||||||
| 
						 | 
					@ -62,7 +62,7 @@ namespace DM_Weight.Finger
 | 
				
			||||||
                    Result = bIsConnected,
 | 
					                    Result = bIsConnected,
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            catch(Exception ex)
 | 
					            catch (Exception ex)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                logger.Info($"连接指纹机异常{ex.Message.ToString()}");
 | 
					                logger.Info($"连接指纹机异常{ex.Message.ToString()}");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
| 
						 | 
					@ -90,10 +90,10 @@ namespace DM_Weight.Finger
 | 
				
			||||||
                Id = iEnrollNumber,
 | 
					                Id = iEnrollNumber,
 | 
				
			||||||
                FingerIndex = iFingerIndex
 | 
					                FingerIndex = iFingerIndex
 | 
				
			||||||
            };
 | 
					            };
 | 
				
			||||||
            
 | 
					
 | 
				
			||||||
            axCZKEM1.StartIdentify();
 | 
					            axCZKEM1.StartIdentify();
 | 
				
			||||||
            axCZKEM1.RefreshData(1);
 | 
					            axCZKEM1.RefreshData(1);
 | 
				
			||||||
            
 | 
					
 | 
				
			||||||
            logger.Info($"触发用户登记指纹事件,用户id:{iEnrollNumber}指纹索引:{iFingerIndex}登记结果:{(iActionResult == 0)}");
 | 
					            logger.Info($"触发用户登记指纹事件,用户id:{iEnrollNumber}指纹索引:{iFingerIndex}登记结果:{(iActionResult == 0)}");
 | 
				
			||||||
            message.Result = (iActionResult == 0);
 | 
					            message.Result = (iActionResult == 0);
 | 
				
			||||||
            _eventAggregator.GetEvent<FingerprintEvent>().Publish(message);
 | 
					            _eventAggregator.GetEvent<FingerprintEvent>().Publish(message);
 | 
				
			||||||
| 
						 | 
					@ -161,8 +161,16 @@ namespace DM_Weight.Finger
 | 
				
			||||||
            bool result = false;
 | 
					            bool result = false;
 | 
				
			||||||
            // 取消其他操作
 | 
					            // 取消其他操作
 | 
				
			||||||
            bool res2 = axCZKEM1.CancelOperation();
 | 
					            bool res2 = axCZKEM1.CancelOperation();
 | 
				
			||||||
            // 删除源指纹
 | 
					            if (machineType == 1)
 | 
				
			||||||
            bool res = axCZKEM1.DelUserTmp(machineNumber, Id, FingerIndex);
 | 
					            {
 | 
				
			||||||
 | 
					                // 删除源指纹
 | 
				
			||||||
 | 
					                bool res = axCZKEM1.DelUserTmp(machineNumber, Id, FingerIndex);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                // 删除源指纹
 | 
				
			||||||
 | 
					                bool res = axCZKEM1.SSR_DelUserTmp(machineNumber, Id.ToString(), FingerIndex);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
            // 添加新指纹
 | 
					            // 添加新指纹
 | 
				
			||||||
            result = axCZKEM1.StartEnrollEx(Id.ToString(), FingerIndex, 3);
 | 
					            result = axCZKEM1.StartEnrollEx(Id.ToString(), FingerIndex, 3);
 | 
				
			||||||
            return result;
 | 
					            return result;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,87 @@
 | 
				
			||||||
 | 
					using SqlSugar;
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace DM_Weight.Models
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    /// <summary>
 | 
				
			||||||
 | 
					    /// 账册
 | 
				
			||||||
 | 
					    /// </summary>
 | 
				
			||||||
 | 
					    public class AccountModel
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 总结存
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public int StockQuantity { get; set; }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 借入数量
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public int InQuantity { get; set; }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 发出数量
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public int OutQuantity { get; set; }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 日期
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public string OperationTime { get; set; }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 凭证号
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public string InvoiceId { get;set; }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 药品名称
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public string DrugName { get; set; }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 药品ID
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public string DrugId { get; set; }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 单位
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public string PackUnit { get; set; }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 剂型
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public string Dosage { get; set; }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 厂家
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public string Manufactory { get; set; }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 批次
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public string ManuNo { get;set; }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 效期
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public string EffDate { get; set; }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 操作人
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public string OperatorName { get;set; }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 复核人
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public string ReviewerName { get; set; }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 规格
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public string DrugSpec { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public DrugInfo DrugInfo { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 供应单位
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public string SupplierDept { get; set; }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 领用部门
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public string ReceiveDept { get; set; }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,23 @@
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace DM_Weight.Models
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    /// <summary>
 | 
				
			||||||
 | 
					    /// 账册类型
 | 
				
			||||||
 | 
					    /// </summary>
 | 
				
			||||||
 | 
					    public class AccountType
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 账册类型名称
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public string  AccountTypeName { get; set; }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 账册类型值
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public int AccountTypeValue { get; set; }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,184 @@
 | 
				
			||||||
 | 
					using Prism.Commands;
 | 
				
			||||||
 | 
					using Prism.Mvvm;
 | 
				
			||||||
 | 
					using SqlSugar;
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace DM_Weight.Models
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    [SugarTable("channel_list")]
 | 
				
			||||||
 | 
					    public class ChannelList : BindableBase
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///  
 | 
				
			||||||
 | 
					        ///</summary>
 | 
				
			||||||
 | 
					        [SugarColumn(ColumnName = "chnguid", IsPrimaryKey = true)]
 | 
				
			||||||
 | 
					        //[SugarColumn(ColumnName = "id", IsPrimaryKey = true)]
 | 
				
			||||||
 | 
					        public string Id { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///  
 | 
				
			||||||
 | 
					        /// 默认值: NULL
 | 
				
			||||||
 | 
					        ///</summary>
 | 
				
			||||||
 | 
					        [SugarColumn(ColumnName = "machine_id")]
 | 
				
			||||||
 | 
					        public string MachineId { get; set; }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///  
 | 
				
			||||||
 | 
					        /// 默认值: NULL
 | 
				
			||||||
 | 
					        ///</summary>
 | 
				
			||||||
 | 
					        [SugarColumn(ColumnName = "row_no")]
 | 
				
			||||||
 | 
					        public int DrawerNo { get; set; }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///  
 | 
				
			||||||
 | 
					        /// 默认值: NULL
 | 
				
			||||||
 | 
					        ///</summary>
 | 
				
			||||||
 | 
					        [SugarColumn(ColumnName = "col_no")]
 | 
				
			||||||
 | 
					        public int ColNo { get; set; }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///  
 | 
				
			||||||
 | 
					        /// 默认值: NULL
 | 
				
			||||||
 | 
					        ///</summary>
 | 
				
			||||||
 | 
					        [SugarColumn(ColumnName = "pos_no")]
 | 
				
			||||||
 | 
					        public int PosNo { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///  
 | 
				
			||||||
 | 
					        /// 默认值: NULL
 | 
				
			||||||
 | 
					        ///</summary>
 | 
				
			||||||
 | 
					        [SugarColumn(ColumnName = "drug_id")]
 | 
				
			||||||
 | 
					        public string DrugId { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ///// <summary>
 | 
				
			||||||
 | 
					        /////  
 | 
				
			||||||
 | 
					        ///// 默认值: NULL
 | 
				
			||||||
 | 
					        /////</summary>
 | 
				
			||||||
 | 
					        //[SugarColumn(ColumnName = "manu_no")]
 | 
				
			||||||
 | 
					        //public string ManuNo { get; set; }
 | 
				
			||||||
 | 
					        ///// <summary>
 | 
				
			||||||
 | 
					        /////  
 | 
				
			||||||
 | 
					        ///// 默认值: NULL
 | 
				
			||||||
 | 
					        /////</summary>
 | 
				
			||||||
 | 
					        //[SugarColumn(ColumnName = "eff_date")]
 | 
				
			||||||
 | 
					        //public string EffDate { get; set; }
 | 
				
			||||||
 | 
					        ///// <summary>
 | 
				
			||||||
 | 
					        /////  
 | 
				
			||||||
 | 
					        ///// 默认值: NULL
 | 
				
			||||||
 | 
					        /////</summary>
 | 
				
			||||||
 | 
					        //[SugarColumn(ColumnName = "quantity")]
 | 
				
			||||||
 | 
					        //public int Quantity { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///  
 | 
				
			||||||
 | 
					        /// 默认值: 1
 | 
				
			||||||
 | 
					        ///</summary>
 | 
				
			||||||
 | 
					        [SugarColumn(ColumnName = "drawer_type")]
 | 
				
			||||||
 | 
					        public int DrawerType { get; set; }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///  
 | 
				
			||||||
 | 
					        /// 默认值: 1
 | 
				
			||||||
 | 
					        ///</summary>
 | 
				
			||||||
 | 
					        [SugarColumn(ColumnName = "board_type")]
 | 
				
			||||||
 | 
					        public int BoardType { get; set; }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///  
 | 
				
			||||||
 | 
					        /// 默认值: 1
 | 
				
			||||||
 | 
					        ///</summary>
 | 
				
			||||||
 | 
					        [SugarColumn(ColumnName = "state")]
 | 
				
			||||||
 | 
					        public int? State { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        [SugarColumn(IsIgnore = true)]
 | 
				
			||||||
 | 
					        public bool IsSelected { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        [SugarColumn(IsIgnore = true)]
 | 
				
			||||||
 | 
					        public InOutInvoice Invoice { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        [SugarColumn(IsIgnore = true)]
 | 
				
			||||||
 | 
					        public string Location
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => DrawerNo + "-" + ColNo;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        //private int _addQuantity = 0;
 | 
				
			||||||
 | 
					        //[SugarColumn(IsIgnore = true)]
 | 
				
			||||||
 | 
					        //public int AddQuantity
 | 
				
			||||||
 | 
					        //{
 | 
				
			||||||
 | 
					        //    get => _addQuantity;
 | 
				
			||||||
 | 
					        //    set
 | 
				
			||||||
 | 
					        //    {
 | 
				
			||||||
 | 
					        //        SetProperty(ref _addQuantity, value);
 | 
				
			||||||
 | 
					        //    }
 | 
				
			||||||
 | 
					        //}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //private int _takeQuantity = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //[SugarColumn(IsIgnore = true)]
 | 
				
			||||||
 | 
					        //public int TakeQuantity
 | 
				
			||||||
 | 
					        //{
 | 
				
			||||||
 | 
					        //    get => _takeQuantity;
 | 
				
			||||||
 | 
					        //    set
 | 
				
			||||||
 | 
					        //    {
 | 
				
			||||||
 | 
					        //        if (value > Quantity)
 | 
				
			||||||
 | 
					        //        {
 | 
				
			||||||
 | 
					        //            throw new ArgumentException("取药数量不能大于库存");
 | 
				
			||||||
 | 
					        //        }
 | 
				
			||||||
 | 
					        //        SetProperty(ref _takeQuantity, value);
 | 
				
			||||||
 | 
					        //    }
 | 
				
			||||||
 | 
					        //}
 | 
				
			||||||
 | 
					        //private int _returnQuantity = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //[SugarColumn(IsIgnore = true)]
 | 
				
			||||||
 | 
					        //public int ReturnQuantity
 | 
				
			||||||
 | 
					        //{
 | 
				
			||||||
 | 
					        //    get => _returnQuantity;
 | 
				
			||||||
 | 
					        //    set
 | 
				
			||||||
 | 
					        //    {
 | 
				
			||||||
 | 
					        //        SetProperty(ref _returnQuantity, value);
 | 
				
			||||||
 | 
					        //    }
 | 
				
			||||||
 | 
					        //}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //private int _checkQuantity = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //[SugarColumn(IsIgnore = true)]
 | 
				
			||||||
 | 
					        //public int CheckQuantity
 | 
				
			||||||
 | 
					        //{
 | 
				
			||||||
 | 
					        //    get => _checkQuantity;
 | 
				
			||||||
 | 
					        //    set
 | 
				
			||||||
 | 
					        //    {
 | 
				
			||||||
 | 
					        //        if (value < 0)
 | 
				
			||||||
 | 
					        //        {
 | 
				
			||||||
 | 
					        //            throw new ArgumentException("盘点数量不能是负数");
 | 
				
			||||||
 | 
					        //        }
 | 
				
			||||||
 | 
					        //        SetProperty(ref _checkQuantity, value);
 | 
				
			||||||
 | 
					        //    }
 | 
				
			||||||
 | 
					        //}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //[SugarColumn(IsIgnore = true)]
 | 
				
			||||||
 | 
					        //public int? CanReturnQuantity { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private DrugInfo? _DrugInfo;
 | 
				
			||||||
 | 
					        [Navigate(NavigateType.ManyToOne, nameof(DrugId))]
 | 
				
			||||||
 | 
					        public DrugInfo Drug { get => _DrugInfo; set => SetProperty(ref _DrugInfo, value); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //[SugarColumn(IsIgnore = true)]
 | 
				
			||||||
 | 
					        //public int process { get; set; } = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private DrugManuNo? _drugManuNo;
 | 
				
			||||||
 | 
					        [SugarColumn(IsIgnore = true)]
 | 
				
			||||||
 | 
					        public DrugManuNo? drugManuNo { get => _drugManuNo; set => SetProperty(ref _drugManuNo, value); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private List<ChannelStock>? _channelStocks;
 | 
				
			||||||
 | 
					        [Navigate(NavigateType.OneToMany, nameof(ChannelStock.Chnguid))]
 | 
				
			||||||
 | 
					        public List<ChannelStock> channelStocks { get => _channelStocks; set => SetProperty(ref _channelStocks, value); }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        public int _totalCount;
 | 
				
			||||||
 | 
					        [SugarColumn(IsIgnore = true)]
 | 
				
			||||||
 | 
					        public int totalCount { get => _totalCount;set=> SetProperty(ref _totalCount, value); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -19,6 +19,8 @@ namespace DM_Weight.Models
 | 
				
			||||||
        //[SugarColumn(ColumnName = "id", IsPrimaryKey = true)]
 | 
					        //[SugarColumn(ColumnName = "id", IsPrimaryKey = true)]
 | 
				
			||||||
        public string Id { get; set; }
 | 
					        public string Id { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        [SugarColumn(ColumnName = "chnguid")]
 | 
				
			||||||
 | 
					        public string Chnguid { get; set; }
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
        ///  
 | 
					        ///  
 | 
				
			||||||
        /// 默认值: NULL
 | 
					        /// 默认值: NULL
 | 
				
			||||||
| 
						 | 
					@ -185,5 +187,10 @@ namespace DM_Weight.Models
 | 
				
			||||||
        //private string _manuNoEffDate;
 | 
					        //private string _manuNoEffDate;
 | 
				
			||||||
        //[SugarColumn(IsIgnore = true)]
 | 
					        //[SugarColumn(IsIgnore = true)]
 | 
				
			||||||
        //public string ManuNoEffDate { get => _manuNoEffDate; set => SetProperty(ref _manuNoEffDate, value); }
 | 
					        //public string ManuNoEffDate { get => _manuNoEffDate; set => SetProperty(ref _manuNoEffDate, value); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private ChannelList? _channelList;
 | 
				
			||||||
 | 
					        [Navigate(NavigateType.ManyToOne, nameof(Chnguid))]
 | 
				
			||||||
 | 
					        public ChannelList ChannelLst { get => _channelList; set => SetProperty(ref _channelList, value); }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,25 @@
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace DM_Weight.Models
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class ChannelStockCount
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public int DrawerNo { get; set; }
 | 
				
			||||||
 | 
					        public int ColNo { get; set; }
 | 
				
			||||||
 | 
					        public string DrugId { get; set; }
 | 
				
			||||||
 | 
					        public string ManuNo { get;set; }
 | 
				
			||||||
 | 
					        public int Quantity { get;set; }
 | 
				
			||||||
 | 
					        public string EffDate { get; set; }
 | 
				
			||||||
 | 
					        public string DrugName { get; set; }
 | 
				
			||||||
 | 
					        public string DrugSpec { get; set; }
 | 
				
			||||||
 | 
					        public string Dosage { get;set; }
 | 
				
			||||||
 | 
					        public string ManuFactory { get;set; }
 | 
				
			||||||
 | 
					        public string SmallUnit { get;set; }
 | 
				
			||||||
 | 
					        public string PackUnit { get; set; }
 | 
				
			||||||
 | 
					        public string MachineId { get; set; }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,94 @@
 | 
				
			||||||
 | 
					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("check_stock")]
 | 
				
			||||||
 | 
					    public class CheckRecordStock
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        [SugarColumn(ColumnName = "id", IsPrimaryKey = true)]
 | 
				
			||||||
 | 
					        public int ID { get; set; }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 抽屉号
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        [SugarColumn(ColumnName = "row_no")]
 | 
				
			||||||
 | 
					        public int rowNo { get; set; }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 列号
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        [SugarColumn(ColumnName = "col_no")]
 | 
				
			||||||
 | 
					        public int colNo { get; set; }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 数量
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        [SugarColumn(ColumnName = "quantity")]
 | 
				
			||||||
 | 
					        public int quantity { get; set; }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 批次
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        [SugarColumn(ColumnName = "manu_no")]
 | 
				
			||||||
 | 
					        public string manuNo { get; set; }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 效期
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        [SugarColumn(ColumnName = "eff_date")]
 | 
				
			||||||
 | 
					        public string effDate { get; set; }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 药品名称
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        [SugarColumn(ColumnName = "drug_name")]
 | 
				
			||||||
 | 
					        public string drugName { get; set; }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 规格
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        [SugarColumn(ColumnName = "drug_spec")]
 | 
				
			||||||
 | 
					        public string drugSpec { get; set; }
 | 
				
			||||||
 | 
					        //
 | 
				
			||||||
 | 
					        [SugarColumn(ColumnName = "pack_unit")]
 | 
				
			||||||
 | 
					        public string packUnit { get; set; }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 厂商
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        [SugarColumn(ColumnName = "manufactory")]
 | 
				
			||||||
 | 
					        public string manufactory { get; set; }
 | 
				
			||||||
 | 
					        [SugarColumn(ColumnName = "max_stock")]
 | 
				
			||||||
 | 
					        public int maxStock { get; set; }
 | 
				
			||||||
 | 
					        [SugarColumn(ColumnName = "drug_id")]
 | 
				
			||||||
 | 
					        public string drugId { get; set; }
 | 
				
			||||||
 | 
					        [SugarColumn(ColumnName = "machine_id")]
 | 
				
			||||||
 | 
					        public string MachineId { get; set; }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 批次总库存
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        [SugarColumn(ColumnName = "manuQuantity")]
 | 
				
			||||||
 | 
					        public int ManuQuantity { get; set; }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 操作时间
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        [SugarColumn(ColumnName = "optdate")]
 | 
				
			||||||
 | 
					        public string optdate { get; set; }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 操作人
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        [SugarColumn(ColumnName = "operator")]
 | 
				
			||||||
 | 
					        public string operatorUser { get; set; }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 审核人
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        [SugarColumn(ColumnName = "reviewer")]
 | 
				
			||||||
 | 
					        public string reviewerUser { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        [SugarColumn(IsIgnore =true)]
 | 
				
			||||||
 | 
					        public List<CheckRecordStock> manuNoDetails { get;set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        [Navigate(NavigateType.ManyToOne, nameof(drugId))]
 | 
				
			||||||
 | 
					        public DrugInfo DrugInfo { get; set; }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,77 @@
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace DM_Weight.Models
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    internal class Class1
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    /// <summary>    /// 行政区表    
 | 
				
			||||||
 | 
					    /// /// </summary>  
 | 
				
			||||||
 | 
					    public class DistrictModel
 | 
				
			||||||
 | 
					    {        /// <summary>        /// 主键        /// </summary>        
 | 
				
			||||||
 | 
					        private int id;        /// <summary>        /// 代码        /// </summary>        
 | 
				
			||||||
 | 
					        private int code;        /// <summary>        /// 名称        /// </summary>        
 | 
				
			||||||
 | 
					        private string name;
 | 
				
			||||||
 | 
					        public int Id { get { return id; } set { id = value; } }
 | 
				
			||||||
 | 
					        /// <summary>        /// 代码        /// </summary>        
 | 
				
			||||||
 | 
					        public int Code { get { return code; } set { code = value; } }
 | 
				
			||||||
 | 
					        /// <summary>        /// 名称        /// </summary>        
 | 
				
			||||||
 | 
					        public string Name { get { return name; } set { name = value; } }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    /// <summary>    /// 表    /// </summary>    
 | 
				
			||||||
 | 
					    public class MapSpotModel
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        private int id;        //名称
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private string name;        //代码
 | 
				
			||||||
 | 
					        private int code;        //个数
 | 
				
			||||||
 | 
					        private int allNumber;        //面积
 | 
				
			||||||
 | 
					        private double allArea;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private int hCTureNumber;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private double hCTrueArea;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 通过个数
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        private int hCTruePassNumber;        //不通过个数
 | 
				
			||||||
 | 
					        private int hCTrueNoPassNumber;        //通过率
 | 
				
			||||||
 | 
					        private string hCTruePassingRate;        //个数
 | 
				
			||||||
 | 
					        private int jLTureNumber;        //面积
 | 
				
			||||||
 | 
					        private double jLTrueArea;        //通过个数
 | 
				
			||||||
 | 
					        private int jLTruePassNumber;        //不通过个数
 | 
				
			||||||
 | 
					        private int jLTrueNoPassNumber;        //通过率
 | 
				
			||||||
 | 
					        private string jLTruePassingRate;
 | 
				
			||||||
 | 
					        private DistrictModel districtModels;
 | 
				
			||||||
 | 
					        public int Id { get { return id; } set { id = value; } }
 | 
				
			||||||
 | 
					        /// <summary>        /// 名称        /// </summary>        
 | 
				
			||||||
 | 
					        public string Name { get { return name; } set { name = value; } }        /// <summary>        /// 代码        /// </summary>        
 | 
				
			||||||
 | 
					        public int Code { get { return code; } set { code = value; } }        /// <summary>        /// 个数        /// </summary>        
 | 
				
			||||||
 | 
					        public int AllNumber { get { return allNumber; } set { allNumber = value; } }        /// <summary>        /// 面积        /// </summary>        
 | 
				
			||||||
 | 
					        public double AllArea { get { return allArea; } set { allArea = value; } }        /// <summary>        /// 个数        /// </summary>        
 | 
				
			||||||
 | 
					        public int HCTureNumber { get { return hCTureNumber; } set { hCTureNumber = value; } }        /// <summary>        /// 面积        /// </summary>        
 | 
				
			||||||
 | 
					        public double HCTrueArea { get { return hCTrueArea; } set { hCTrueArea = value; } }
 | 
				
			||||||
 | 
					        /// <summary>        /// 通过个数        /// </summary>        
 | 
				
			||||||
 | 
					        public int HCTruePassNumber { get { return hCTruePassNumber; } set { hCTruePassNumber = value; } }
 | 
				
			||||||
 | 
					        /// /// <summary>        /// 不通过个数        /// </summary>        
 | 
				
			||||||
 | 
					        public int HCTrueNoPassNumber { get { return hCTrueNoPassNumber; } set { hCTrueNoPassNumber = value; } }
 | 
				
			||||||
 | 
					        /// /// <summary>        /// 通过率        /// </summary>        
 | 
				
			||||||
 | 
					        public string HCTruePassingRate { get { return hCTruePassingRate; } set { hCTruePassingRate = value; } }        /// <summary>        /// 个数        /// </summary>        
 | 
				
			||||||
 | 
					        public int JLTureNumber { get { return jLTureNumber; } set { jLTureNumber = value; } }
 | 
				
			||||||
 | 
					        /// <summary>        /// 面积        /// </summary>        
 | 
				
			||||||
 | 
					        public double JLTrueArea { get { return jLTrueArea; } set { jLTrueArea = value; } }
 | 
				
			||||||
 | 
					        /// /// <summary>        /// 通过个数        /// </summary>        
 | 
				
			||||||
 | 
					        public int JLTruePassNumber { get { return jLTruePassNumber; } set { jLTruePassNumber = value; } }
 | 
				
			||||||
 | 
					        /// /// <summary>        /// 不通过个数        /// </summary>        
 | 
				
			||||||
 | 
					        public int JLTrueNoPassNumber { get { return jLTrueNoPassNumber; } set { jLTrueNoPassNumber = value; } }
 | 
				
			||||||
 | 
					        /// /// <summary>        /// 监理单位已审核图斑-通过率        /// </summary>        
 | 
				
			||||||
 | 
					        public string JLTruePassingRate { get { return jLTruePassingRate; } set { jLTruePassingRate = value; } }
 | 
				
			||||||
 | 
					        public DistrictModel DistrictModels { get { return districtModels; } set { districtModels = value; } }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -145,5 +145,11 @@ namespace DM_Weight.Models
 | 
				
			||||||
        [SugarColumn(ColumnName = "cancel_flag")]
 | 
					        [SugarColumn(ColumnName = "cancel_flag")]
 | 
				
			||||||
        public int CancelFlag { get; set; }
 | 
					        public int CancelFlag { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        [SugarColumn(IsIgnore =true)]
 | 
				
			||||||
 | 
					        public int CountNum { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        [SugarColumn(IsIgnore =true)]
 | 
				
			||||||
 | 
					        public int SumQuantity { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -143,5 +143,15 @@ namespace DM_Weight.Models
 | 
				
			||||||
        /// </summary>
 | 
					        /// </summary>
 | 
				
			||||||
        [SugarColumn(ColumnName = "manunoQuantity")]
 | 
					        [SugarColumn(ColumnName = "manunoQuantity")]
 | 
				
			||||||
        public int? ManunoQuantity { get; set; }
 | 
					        public int? ManunoQuantity { get; set; }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 供应单位
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        [SugarColumn(ColumnName = "supplierDept")]
 | 
				
			||||||
 | 
					        public string SupplierDept { get; set; }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 领用部门
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        [SugarColumn(ColumnName = "receiveDept")]
 | 
				
			||||||
 | 
					        public string ReceiveDept { get; set; }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -63,9 +63,9 @@ namespace DM_Weight.Port
 | 
				
			||||||
        // 取药操作的窗口名【处方取药、抽屉取药、自选取药、调拨出库】
 | 
					        // 取药操作的窗口名【处方取药、抽屉取药、自选取药、调拨出库】
 | 
				
			||||||
        private string[] TakeNames = new string[] { "DrawerTakeDrugWindow", "OrderTakeDrugWindow", "SelfTakeDrugWindow", "InvoiceTakeDrugWindow" };
 | 
					        private string[] TakeNames = new string[] { "DrawerTakeDrugWindow", "OrderTakeDrugWindow", "SelfTakeDrugWindow", "InvoiceTakeDrugWindow" };
 | 
				
			||||||
        // 加药操作的窗口名【自选加药、抽屉加药、还药】
 | 
					        // 加药操作的窗口名【自选加药、抽屉加药、还药】
 | 
				
			||||||
        private string[] AddNames = new string[] { "SelfAddWindow", "ReturnDrugWindow", "ReturnDrug1Window", "DrawerAddDrugWindow" };
 | 
					        private string[] AddNames = new string[] { "SelfAddWindow", "ReturnDrugWindow", "ReturnDrug1Window", "DrawerAddDrugWindow", "AddDrugControl" };
 | 
				
			||||||
        // 盘点操作的窗口名【盘点】
 | 
					        // 盘点操作的窗口名【盘点】
 | 
				
			||||||
        private string[] CheckNames = new string[] { "CheckStockWindow" };
 | 
					        private string[] CheckNames = new string[] { "CheckStockWindow", "CheckStockNewWindow" };
 | 
				
			||||||
        // 归还空瓶操作的窗口名【盘点】
 | 
					        // 归还空瓶操作的窗口名【盘点】
 | 
				
			||||||
        private string[] ReturnEmptyNames = new string[] { "ReturnEmptyWindow" };
 | 
					        private string[] ReturnEmptyNames = new string[] { "ReturnEmptyWindow" };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -85,7 +85,7 @@ namespace DM_Weight.Port
 | 
				
			||||||
        public DateTime dateTime { get; set; } = DateTime.Now;
 | 
					        public DateTime dateTime { get; set; } = DateTime.Now;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public async void ResetData()
 | 
					        public async Task ResetData()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            logger.Info($"重新设置串口数据状态【{statue}】,抽屉【{DrawerNo}】");
 | 
					            logger.Info($"重新设置串口数据状态【{statue}】,抽屉【{DrawerNo}】");
 | 
				
			||||||
            if (!"HomeWindow".Equals(WindowName) && statue == 1)
 | 
					            if (!"HomeWindow".Equals(WindowName) && statue == 1)
 | 
				
			||||||
| 
						 | 
					@ -112,7 +112,7 @@ namespace DM_Weight.Port
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                if (BoardType == 5)
 | 
					                if (BoardType == 5)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    await WriteQuantityArray();
 | 
					                    //await WriteQuantityArray();
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            Operate = false;
 | 
					            Operate = false;
 | 
				
			||||||
| 
						 | 
					@ -139,9 +139,10 @@ namespace DM_Weight.Port
 | 
				
			||||||
                if (BoardType == 4)
 | 
					                if (BoardType == 4)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    byte[] result = await OpenStorage();
 | 
					                    byte[] result = await OpenStorage();
 | 
				
			||||||
 | 
					                    logger.Info($"储物箱使能返回:" + Convert.ToHexString(result));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    int[] r = result.Select(it => Convert.ToInt32(it)).ToArray();
 | 
					                    int[] r = result.Select(it => Convert.ToInt32(it)).ToArray();
 | 
				
			||||||
                    logger.Info($"储物箱使能返回:" + string.Join("", r));
 | 
					                    logger.Info($"储物箱使能返回:{Convert.ToHexString(result)}");
 | 
				
			||||||
                    if (r[4] != 0)
 | 
					                    if (r[4] != 0)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        logger.Info($"储物箱使能成功");
 | 
					                        logger.Info($"储物箱使能成功");
 | 
				
			||||||
| 
						 | 
					@ -151,6 +152,7 @@ namespace DM_Weight.Port
 | 
				
			||||||
                    else
 | 
					                    else
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        string _WindowName = WindowName;
 | 
					                        string _WindowName = WindowName;
 | 
				
			||||||
 | 
					                        logger.Info($"储物箱使能失败r:" + string.Join("", r));
 | 
				
			||||||
                        // 重新初始化数据
 | 
					                        // 重新初始化数据
 | 
				
			||||||
                        ResetData();
 | 
					                        ResetData();
 | 
				
			||||||
                        // 指令发送错误,未打开
 | 
					                        // 指令发送错误,未打开
 | 
				
			||||||
| 
						 | 
					@ -161,7 +163,6 @@ namespace DM_Weight.Port
 | 
				
			||||||
                            WindowName = _WindowName,
 | 
					                            WindowName = _WindowName,
 | 
				
			||||||
                            Message = "储物箱使能失败"
 | 
					                            Message = "储物箱使能失败"
 | 
				
			||||||
                        });
 | 
					                        });
 | 
				
			||||||
                        logger.Info($"储物箱使能失败r:" + string.Join("", r));
 | 
					 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                else
 | 
					                else
 | 
				
			||||||
| 
						 | 
					@ -190,6 +191,7 @@ namespace DM_Weight.Port
 | 
				
			||||||
                            else
 | 
					                            else
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                string _WindowName = WindowName;
 | 
					                                string _WindowName = WindowName;
 | 
				
			||||||
 | 
					                                logger.Info($"回收箱打开失败");
 | 
				
			||||||
                                // 重新初始化数据
 | 
					                                // 重新初始化数据
 | 
				
			||||||
                                ResetData();
 | 
					                                ResetData();
 | 
				
			||||||
                                // 返回消息开启失败
 | 
					                                // 返回消息开启失败
 | 
				
			||||||
| 
						 | 
					@ -200,7 +202,6 @@ namespace DM_Weight.Port
 | 
				
			||||||
                                    WindowName = _WindowName,
 | 
					                                    WindowName = _WindowName,
 | 
				
			||||||
                                    Message = "回收箱打开失败"
 | 
					                                    Message = "回收箱打开失败"
 | 
				
			||||||
                                });
 | 
					                                });
 | 
				
			||||||
                                logger.Info($"回收箱打开失败");
 | 
					 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
| 
						 | 
					@ -300,6 +301,7 @@ namespace DM_Weight.Port
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                string _WindowName = WindowName;
 | 
					                string _WindowName = WindowName;
 | 
				
			||||||
                statue = 1;
 | 
					                statue = 1;
 | 
				
			||||||
 | 
					                logger.Info(ex.Message);
 | 
				
			||||||
                // 重新初始化数据
 | 
					                // 重新初始化数据
 | 
				
			||||||
                ResetData();
 | 
					                ResetData();
 | 
				
			||||||
                // 返回消息  抽屉打开失败
 | 
					                // 返回消息  抽屉打开失败
 | 
				
			||||||
| 
						 | 
					@ -309,7 +311,6 @@ namespace DM_Weight.Port
 | 
				
			||||||
                    WindowName = _WindowName,
 | 
					                    WindowName = _WindowName,
 | 
				
			||||||
                    Message = $"操作异常{ex.Message}"
 | 
					                    Message = $"操作异常{ex.Message}"
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
                logger.Info(ex.Message);
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					@ -439,15 +440,16 @@ namespace DM_Weight.Port
 | 
				
			||||||
                            await BoxLockLightOff2();
 | 
					                            await BoxLockLightOff2();
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                        string _WindowName = WindowName;
 | 
					                        string _WindowName = WindowName;
 | 
				
			||||||
 | 
					                        logger.Info($"抽屉【{DrawerNo}】已关闭");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        // 重新初始化数据
 | 
					                        // 重新初始化数据
 | 
				
			||||||
                        ResetData();
 | 
					                        await ResetData();
 | 
				
			||||||
                        // 返回消息  抽屉已经关闭
 | 
					                        // 返回消息  抽屉已经关闭
 | 
				
			||||||
                        _eventAggregator.GetEvent<PortUtilEvent>().Publish(new util.DeviceMsg()
 | 
					                        _eventAggregator.GetEvent<PortUtilEvent>().Publish(new util.DeviceMsg()
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            EventType = util.EventType.DRAWERCLOSE,
 | 
					                            EventType = util.EventType.DRAWERCLOSE,
 | 
				
			||||||
                            WindowName = _WindowName,
 | 
					                            WindowName = _WindowName,
 | 
				
			||||||
                        });
 | 
					                        });
 | 
				
			||||||
                        logger.Info($"抽屉【{DrawerNo}】已关闭");
 | 
					 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -456,6 +458,7 @@ namespace DM_Weight.Port
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                string _WindowName = WindowName;
 | 
					                string _WindowName = WindowName;
 | 
				
			||||||
 | 
					                logger.Info($"GetDrawerStatus异常:{ex.Message}");
 | 
				
			||||||
                // 重新初始化数据
 | 
					                // 重新初始化数据
 | 
				
			||||||
                ResetData();
 | 
					                ResetData();
 | 
				
			||||||
                _eventAggregator.GetEvent<PortUtilEvent>().Publish(new util.DeviceMsg()
 | 
					                _eventAggregator.GetEvent<PortUtilEvent>().Publish(new util.DeviceMsg()
 | 
				
			||||||
| 
						 | 
					@ -464,7 +467,6 @@ namespace DM_Weight.Port
 | 
				
			||||||
                    WindowName = _WindowName,
 | 
					                    WindowName = _WindowName,
 | 
				
			||||||
                    Message = $"GetDrawerStatus异常:{ex.Message}"
 | 
					                    Message = $"GetDrawerStatus异常:{ex.Message}"
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
                logger.Info($"GetDrawerStatus异常:{ex.Message}");
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -552,9 +554,9 @@ namespace DM_Weight.Port
 | 
				
			||||||
                            statue = 2;
 | 
					                            statue = 2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            string _WindowName = WindowName;
 | 
					                            string _WindowName = WindowName;
 | 
				
			||||||
 | 
					                            logger.Info($"储物箱关闭");
 | 
				
			||||||
                            // 重新初始化数据
 | 
					                            // 重新初始化数据
 | 
				
			||||||
                            ResetData();
 | 
					                            ResetData();
 | 
				
			||||||
                            logger.Info($"储物箱关闭");
 | 
					 | 
				
			||||||
                            _eventAggregator.GetEvent<PortUtilEvent>().Publish(new util.DeviceMsg()
 | 
					                            _eventAggregator.GetEvent<PortUtilEvent>().Publish(new util.DeviceMsg()
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                EventType = util.EventType.DRAWERCLOSE,
 | 
					                                EventType = util.EventType.DRAWERCLOSE,
 | 
				
			||||||
| 
						 | 
					@ -587,6 +589,8 @@ namespace DM_Weight.Port
 | 
				
			||||||
            catch (Exception ex)
 | 
					            catch (Exception ex)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                logger.Info($"GetBackDoorState异常{ex.Message}");
 | 
					                logger.Info($"GetBackDoorState异常{ex.Message}");
 | 
				
			||||||
 | 
					                // 重新初始化数据
 | 
				
			||||||
 | 
					                ResetData();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -665,7 +669,44 @@ namespace DM_Weight.Port
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if (_length != length)
 | 
					            if (_length != length)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                throw new TimeoutException($"串口【{serialPort.PortName}】交互超时");
 | 
					                if(_length!=0)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    byte[] _buffer = new byte[_length]; 
 | 
				
			||||||
 | 
					                    serialPort.Read(_buffer, 0, _length);
 | 
				
			||||||
 | 
					                    logger.Info($"交互超时回复:{Convert.ToHexString(buffer)}");
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					               throw new TimeoutException($"串口【{serialPort.PortName}】交互超时");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            serialPort.Read(buffer, 0, length);
 | 
				
			||||||
 | 
					            //}
 | 
				
			||||||
 | 
					            //catch (Exception ex)
 | 
				
			||||||
 | 
					            //{
 | 
				
			||||||
 | 
					            //    logger.Error($"GetBufferByPort:{ex.Message}");
 | 
				
			||||||
 | 
					            //}
 | 
				
			||||||
 | 
					            return buffer;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        private byte[] GetBufferByPort(SerialPort serialPort, int length, int timeout,string operation)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            byte[] buffer = new byte[length];
 | 
				
			||||||
 | 
					            //try
 | 
				
			||||||
 | 
					            //{
 | 
				
			||||||
 | 
					            int _length = 0;
 | 
				
			||||||
 | 
					            DateTime start = DateTime.Now;
 | 
				
			||||||
 | 
					            DateTime end = DateTime.Now;
 | 
				
			||||||
 | 
					            while (_length != length && end.Subtract(start).TotalMilliseconds < timeout)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                _length = serialPort.BytesToRead;
 | 
				
			||||||
 | 
					                end = DateTime.Now;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (_length != length)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (_length != 0)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    byte[] _buffer = new byte[_length];
 | 
				
			||||||
 | 
					                    serialPort.Read(_buffer, 0, _length);
 | 
				
			||||||
 | 
					                    logger.Info($"交互超时回复:{Convert.ToHexString(buffer)},{operation}");
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                throw new TimeoutException($"串口【{serialPort.PortName}】交互超时,操作为{operation}");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            serialPort.Read(buffer, 0, length);
 | 
					            serialPort.Read(buffer, 0, length);
 | 
				
			||||||
            //}
 | 
					            //}
 | 
				
			||||||
| 
						 | 
					@ -681,6 +722,11 @@ namespace DM_Weight.Port
 | 
				
			||||||
            return Task.Run(() => GetBufferByPort(serialPort, length, 3000));
 | 
					            return Task.Run(() => GetBufferByPort(serialPort, length, 3000));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private Task<byte[]> GetBufferByPort(SerialPort serialPort, int length,string operation)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return Task.Run(() => GetBufferByPort(serialPort, length, 3000,operation));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public static SpeechSynthesizer speechSynthesizer = new SpeechSynthesizer();
 | 
					        public static SpeechSynthesizer speechSynthesizer = new SpeechSynthesizer();
 | 
				
			||||||
        public void SpeakAsync(string textinfo)
 | 
					        public void SpeakAsync(string textinfo)
 | 
				
			||||||
| 
						 | 
					@ -764,9 +810,9 @@ namespace DM_Weight.Port
 | 
				
			||||||
            canBusSerial.DiscardInBuffer();
 | 
					            canBusSerial.DiscardInBuffer();
 | 
				
			||||||
            byte[] buffer = new byte[] { 0xaa, (byte)(_doorAddr), 0x01, (byte)_storageBoxAddr, 0x00, 0x00, 0x00, 0xee };
 | 
					            byte[] buffer = new byte[] { 0xaa, (byte)(_doorAddr), 0x01, (byte)_storageBoxAddr, 0x00, 0x00, 0x00, 0xee };
 | 
				
			||||||
            canBusSerial.Write(buffer, 0, 8);
 | 
					            canBusSerial.Write(buffer, 0, 8);
 | 
				
			||||||
            logger.Info($"OpenStorage:{string.Join("", buffer)}");
 | 
					            logger.Info($"OpenStorage:{Convert.ToHexString(buffer)}");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return await GetBufferByPort(canBusSerial, 8);
 | 
					            return await GetBufferByPort(canBusSerial, 8,"开储物箱");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        // 关闭电控门储物箱(有灯失能)
 | 
					        // 关闭电控门储物箱(有灯失能)
 | 
				
			||||||
        public void CloseStorage()
 | 
					        public void CloseStorage()
 | 
				
			||||||
| 
						 | 
					@ -806,9 +852,9 @@ namespace DM_Weight.Port
 | 
				
			||||||
            Array.Reverse(schar);
 | 
					            Array.Reverse(schar);
 | 
				
			||||||
            int[] iArray = Array.ConvertAll(schar, c => (int)Char.GetNumericValue(c));
 | 
					            int[] iArray = Array.ConvertAll(schar, c => (int)Char.GetNumericValue(c));
 | 
				
			||||||
            int[] addArray = new int[8 - iArray.Length];
 | 
					            int[] addArray = new int[8 - iArray.Length];
 | 
				
			||||||
            if(iArray.Length<8)
 | 
					            if (iArray.Length < 8)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                for (int i = 0; i < 8- iArray.Length; i++)
 | 
					                for (int i = 0; i < 8 - iArray.Length; i++)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    addArray[i] = 0;
 | 
					                    addArray[i] = 0;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
| 
						 | 
					@ -837,7 +883,7 @@ namespace DM_Weight.Port
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            byte[] buffer = new byte[] { 0xaa, (byte)(0xf0 + DrawerNo), 0x01, 0x00, 0x00, 0x00, 0x00, 0xee };
 | 
					            byte[] buffer = new byte[] { 0xaa, (byte)(0xf0 + DrawerNo), 0x01, 0x00, 0x00, 0x00, 0x00, 0xee };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            logger.Info($"单支板发送库位数量查询【{string.Join(",", buffer)}】");
 | 
					            logger.Info($"单支板发送库位数量查询【{Convert.ToHexString(buffer)}】");
 | 
				
			||||||
            canBusSerial.Write(buffer, 0, 8);
 | 
					            canBusSerial.Write(buffer, 0, 8);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return await GetBufferByPort(canBusSerial, 13);
 | 
					            return await GetBufferByPort(canBusSerial, 13);
 | 
				
			||||||
| 
						 | 
					@ -969,6 +1015,7 @@ namespace DM_Weight.Port
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            try
 | 
					            try
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
 | 
					                logger.Info($"写标签数据:{type}-{content}-{drawerNo}-{colNo}");
 | 
				
			||||||
                canBusSerial.DiscardInBuffer();
 | 
					                canBusSerial.DiscardInBuffer();
 | 
				
			||||||
                Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
 | 
					                Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
 | 
				
			||||||
                byte[] contentBuf = Encoding.GetEncoding("gb2312").GetBytes(trim(content));
 | 
					                byte[] contentBuf = Encoding.GetEncoding("gb2312").GetBytes(trim(content));
 | 
				
			||||||
| 
						 | 
					@ -1071,6 +1118,39 @@ namespace DM_Weight.Port
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        // 写入数量
 | 
					        // 写入数量
 | 
				
			||||||
        public void WriteQuantity(int drawerNo, int colNo, int quantity)
 | 
					        public void WriteQuantity(int drawerNo, int colNo, int quantity)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            try
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                logger.Info($"写入数量:{drawerNo}-{colNo}-{quantity}");
 | 
				
			||||||
 | 
					                canBusSerial.DiscardInBuffer();
 | 
				
			||||||
 | 
					                int channel = ((drawerNo > 8 ? (drawerNo - 8) * 2 : (drawerNo * 2 - 1)) - 1) * this.labelCount + 10 + colNo;
 | 
				
			||||||
 | 
					                byte[] buffer = new byte[] { 0xaa, (byte)channel, 0x21, 0, 0, 0, 0, 0xee };
 | 
				
			||||||
 | 
					                buffer[5] = (byte)(quantity >> 8);
 | 
				
			||||||
 | 
					                buffer[6] = (byte)(quantity & 0xff);
 | 
				
			||||||
 | 
					                logger.Info($"写入数量buffer:{Convert.ToHexString(buffer)}");
 | 
				
			||||||
 | 
					                canBusSerial.Write(buffer, 0, 8);
 | 
				
			||||||
 | 
					                Task<byte[]> task = GetBufferByPort(canBusSerial, 8);
 | 
				
			||||||
 | 
					                if (task.Status == TaskStatus.Created)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    task.Start();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                byte[] bytes = task.Result;
 | 
				
			||||||
 | 
					                logger.Info($"写入数量返回:" + Convert.ToHexString(bytes));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            catch (Exception ex)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                _eventAggregator.GetEvent<PortUtilEvent>().Publish(new util.DeviceMsg()
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    EventType = util.EventType.OPENERROR,
 | 
				
			||||||
 | 
					                    WindowName = WindowName,
 | 
				
			||||||
 | 
					                    Message = $"操作发生异常{ex.InnerException}"
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					                logger.Info($"操作发生异常:ex:{ex.InnerException}");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        // 写入数量
 | 
				
			||||||
 | 
					        public async void WriteQuantityAsync(int drawerNo, int colNo, int quantity)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            try
 | 
					            try
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
| 
						 | 
					@ -1080,6 +1160,8 @@ namespace DM_Weight.Port
 | 
				
			||||||
                buffer[5] = (byte)(quantity >> 8);
 | 
					                buffer[5] = (byte)(quantity >> 8);
 | 
				
			||||||
                buffer[6] = (byte)(quantity & 0xff);
 | 
					                buffer[6] = (byte)(quantity & 0xff);
 | 
				
			||||||
                canBusSerial.Write(buffer, 0, 8);
 | 
					                canBusSerial.Write(buffer, 0, 8);
 | 
				
			||||||
 | 
					                byte[] bufferReturn=await GetBufferByPort(canBusSerial, 8);
 | 
				
			||||||
 | 
					                logger.Info($"写入数量返回:" + Convert.ToHexString(bufferReturn));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            catch (Exception ex)
 | 
					            catch (Exception ex)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
| 
						 | 
					@ -1114,7 +1196,7 @@ namespace DM_Weight.Port
 | 
				
			||||||
                byte[] buffer = new byte[] { 0xAA, 0x9A, 0x04, 0x00, 0x00, 0x00, 0x00, 0xEE };
 | 
					                byte[] buffer = new byte[] { 0xAA, 0x9A, 0x04, 0x00, 0x00, 0x00, 0x00, 0xEE };
 | 
				
			||||||
                canBusSerial.Write(buffer, 0, 8);
 | 
					                canBusSerial.Write(buffer, 0, 8);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                return await GetBufferByPort(canBusSerial, 8);
 | 
					                return await GetBufferByPort(canBusSerial, 8, "打开回收箱");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            catch (Exception ex)
 | 
					            catch (Exception ex)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
| 
						 | 
					@ -1188,14 +1270,14 @@ namespace DM_Weight.Port
 | 
				
			||||||
            canBusSerial.DiscardInBuffer();
 | 
					            canBusSerial.DiscardInBuffer();
 | 
				
			||||||
            var channel = Convert.ToInt32((DrawerNo * 10 + 1).ToString(), 16);
 | 
					            var channel = Convert.ToInt32((DrawerNo * 10 + 1).ToString(), 16);
 | 
				
			||||||
            byte[] buffer = new byte[] { 0xaa, (byte)(channel), 0x28, 0x00, 0x00, 0x00, 0x00, 0xee };
 | 
					            byte[] buffer = new byte[] { 0xaa, (byte)(channel), 0x28, 0x00, 0x00, 0x00, 0x00, 0xee };
 | 
				
			||||||
            logger.Info($"称重发送库位数量查询1【{string.Join(",", buffer)}】");
 | 
					            logger.Info($"称重发送库位数量查询1【{Convert.ToHexString(buffer)}】");
 | 
				
			||||||
            canBusSerial.Write(buffer, 0, 8);
 | 
					            canBusSerial.Write(buffer, 0, 8);
 | 
				
			||||||
            byte[] result1 = await GetBufferByPort(canBusSerial, 8);
 | 
					            byte[] result1 = await GetBufferByPort(canBusSerial, 8);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            var channel2 = Convert.ToInt32((DrawerNo * 10 + 2).ToString(), 16);
 | 
					            var channel2 = Convert.ToInt32((DrawerNo * 10 + 2).ToString(), 16);
 | 
				
			||||||
            byte[] buffer2 = new byte[] { 0xaa, (byte)(channel2), 0x28, 0x00, 0x00, 0x00, 0x00, 0xee };
 | 
					            byte[] buffer2 = new byte[] { 0xaa, (byte)(channel2), 0x28, 0x00, 0x00, 0x00, 0x00, 0xee };
 | 
				
			||||||
            logger.Info($"称重发送库位数量查询2【{string.Join(",", buffer2)}】");
 | 
					            logger.Info($"称重发送库位数量查询2【{Convert.ToHexString(buffer2)}】");
 | 
				
			||||||
            canBusSerial.Write(buffer2, 0, 8);
 | 
					            canBusSerial.Write(buffer2, 0, 8);
 | 
				
			||||||
            byte[] result2 = await GetBufferByPort(canBusSerial, 8);
 | 
					            byte[] result2 = await GetBufferByPort(canBusSerial, 8);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1221,10 +1303,10 @@ namespace DM_Weight.Port
 | 
				
			||||||
                var channel = Convert.ToInt32((DrawerNo * 10 + index).ToString(), 16);
 | 
					                var channel = Convert.ToInt32((DrawerNo * 10 + index).ToString(), 16);
 | 
				
			||||||
                byte[] buffer = new byte[] { 0xaa, (byte)(channel), 0x27, (byte)lock1, 0x00, 0x00, 0x00, 0xee };
 | 
					                byte[] buffer = new byte[] { 0xaa, (byte)(channel), 0x27, (byte)lock1, 0x00, 0x00, 0x00, 0xee };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                logger.Info($"称重发送库位数量查询1【{string.Join(",", buffer)}】");
 | 
					                logger.Info($"称重发送库位数量查询1【{Convert.ToHexString(buffer)}】");
 | 
				
			||||||
                canBusSerial.Write(buffer, 0, 8);
 | 
					                canBusSerial.Write(buffer, 0, 8);
 | 
				
			||||||
                byte[] result = await GetBufferByPort(canBusSerial, 8);
 | 
					                byte[] result = await GetBufferByPort(canBusSerial, 8);
 | 
				
			||||||
                logger.Info($"称重发送库位数量查询1返回结果【{string.Join(",", result)}】");
 | 
					                logger.Info($"称重发送库位数量查询1返回结果【{Convert.ToHexString(result)}】");
 | 
				
			||||||
                byte[] hl = result.Skip(3).Take(2).ToArray();
 | 
					                byte[] hl = result.Skip(3).Take(2).ToArray();
 | 
				
			||||||
                int quantity = BitConverter.ToInt16(hl.Reverse().ToArray(), 0);
 | 
					                int quantity = BitConverter.ToInt16(hl.Reverse().ToArray(), 0);
 | 
				
			||||||
                res[ColNos[i] - 1] = quantity;
 | 
					                res[ColNos[i] - 1] = quantity;
 | 
				
			||||||
| 
						 | 
					@ -1243,7 +1325,7 @@ namespace DM_Weight.Port
 | 
				
			||||||
                var lock1 = ColNos[i] % 3 == 0 ? 3 : ColNos[i] % 3;
 | 
					                var lock1 = ColNos[i] % 3 == 0 ? 3 : ColNos[i] % 3;
 | 
				
			||||||
                var channel = Convert.ToInt32((DrawerNo * 10 + index).ToString(), 16);
 | 
					                var channel = Convert.ToInt32((DrawerNo * 10 + index).ToString(), 16);
 | 
				
			||||||
                byte[] buffer = new byte[] { 0xaa, (byte)(channel), 0x03, (byte)lock1, 0x00, 0x00, 0x00, 0xee };
 | 
					                byte[] buffer = new byte[] { 0xaa, (byte)(channel), 0x03, (byte)lock1, 0x00, 0x00, 0x00, 0xee };
 | 
				
			||||||
                logger.Info($"称重发送药盒使能【{string.Join(",", buffer)}】");
 | 
					                logger.Info($"称重发送药盒使能【{Convert.ToHexString(buffer)}】");
 | 
				
			||||||
                canBusSerial.Write(buffer, 0, 8);
 | 
					                canBusSerial.Write(buffer, 0, 8);
 | 
				
			||||||
                await Task.Delay(TimeSpan.FromMilliseconds(500));
 | 
					                await Task.Delay(TimeSpan.FromMilliseconds(500));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
| 
						 | 
					@ -1258,7 +1340,7 @@ namespace DM_Weight.Port
 | 
				
			||||||
                var lock1 = ColNos[i] % 3 == 0 ? 3 : ColNos[i] % 3;
 | 
					                var lock1 = ColNos[i] % 3 == 0 ? 3 : ColNos[i] % 3;
 | 
				
			||||||
                var channel = Convert.ToInt32((DrawerNo * 10 + index).ToString(), 16);
 | 
					                var channel = Convert.ToInt32((DrawerNo * 10 + index).ToString(), 16);
 | 
				
			||||||
                byte[] buffer = new byte[] { 0xaa, (byte)(channel), 0x04, (byte)lock1, 0x00, 0x00, 0x00, 0xee };
 | 
					                byte[] buffer = new byte[] { 0xaa, (byte)(channel), 0x04, (byte)lock1, 0x00, 0x00, 0x00, 0xee };
 | 
				
			||||||
                logger.Info($"称重发送药盒失能【{string.Join(",", buffer)}】");
 | 
					                logger.Info($"称重发送药盒失能【{Convert.ToHexString(buffer)}】");
 | 
				
			||||||
                canBusSerial.Write(buffer, 0, 8);
 | 
					                canBusSerial.Write(buffer, 0, 8);
 | 
				
			||||||
                await Task.Delay(TimeSpan.FromMilliseconds(50));
 | 
					                await Task.Delay(TimeSpan.FromMilliseconds(50));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
| 
						 | 
					@ -1274,7 +1356,7 @@ namespace DM_Weight.Port
 | 
				
			||||||
                var channel = Convert.ToInt32((DrawerNo * 10 + index).ToString(), 16);
 | 
					                var channel = Convert.ToInt32((DrawerNo * 10 + index).ToString(), 16);
 | 
				
			||||||
                byte[] buffer = new byte[] { 0xaa, (byte)(channel), 0x25, (byte)lock1, 0x00, 0x00, 0x00, 0xee };
 | 
					                byte[] buffer = new byte[] { 0xaa, (byte)(channel), 0x25, (byte)lock1, 0x00, 0x00, 0x00, 0xee };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                logger.Info($"称重发送清空计数【{string.Join(",", buffer)}】");
 | 
					                logger.Info($"称重发送清空计数【{Convert.ToHexString(buffer)}】");
 | 
				
			||||||
                canBusSerial.Write(buffer, 0, 8);
 | 
					                canBusSerial.Write(buffer, 0, 8);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            catch (Exception ex)
 | 
					            catch (Exception ex)
 | 
				
			||||||
| 
						 | 
					@ -1305,7 +1387,7 @@ namespace DM_Weight.Port
 | 
				
			||||||
                buffer[5] = (byte)(Quantity & 0xff);
 | 
					                buffer[5] = (byte)(Quantity & 0xff);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                logger.Info($"称重发送数量【{string.Join(",", buffer)}】");
 | 
					                logger.Info($"称重发送数量【{Convert.ToHexString(buffer)}】");
 | 
				
			||||||
                canBusSerial.Write(buffer, 0, 8);
 | 
					                canBusSerial.Write(buffer, 0, 8);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            catch (Exception ex)
 | 
					            catch (Exception ex)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -53,7 +53,32 @@ namespace DM_Weight.Report
 | 
				
			||||||
            Report.DetailGrid.Recordset.QuerySQL = SQL;
 | 
					            Report.DetailGrid.Recordset.QuerySQL = SQL;
 | 
				
			||||||
            Report.PrintPreview(true);
 | 
					            Report.PrintPreview(true);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        public static void PrintReportAccountBook(DateTime? startDate, DateTime? endDate,string drug_id)
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 导出盘点后库存信息
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <param name="startDate"></param>
 | 
				
			||||||
 | 
					        /// <param name="endDate"></param>
 | 
				
			||||||
 | 
					        public static void PrintReportStockNew(DateTime? startDate, DateTime? endDate)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            DateTime? p_startDate = startDate ?? Convert.ToDateTime("2010-1-1");
 | 
				
			||||||
 | 
					            DateTime? p_endDate = endDate ?? DateTime.Now.AddDays(1);
 | 
				
			||||||
 | 
					            // 定义Grid++Report报表主对象
 | 
				
			||||||
 | 
					            GridppReport Report = new GridppReport();
 | 
				
			||||||
 | 
					            //Report.Initialize += new _IGridppReportEvents_InitializeEventHandler(() =>
 | 
				
			||||||
 | 
					            //{
 | 
				
			||||||
 | 
					            //    Report.ParameterByName("machine_id").Value = (ConfigurationManager.AppSettings["machineId"] ?? "DM1");
 | 
				
			||||||
 | 
					            //});
 | 
				
			||||||
 | 
					            string machine_id = (ConfigurationManager.AppSettings["machineId"] ?? "DM1");
 | 
				
			||||||
 | 
					            string SQL = $@"SELECT cl.`row_no` AS drawerNo,cl.`col_no` AS colNo,cl.`quantity` AS quantity,cl.`manu_no` AS manuNo,cl.`eff_date` AS effDate,
 | 
				
			||||||
 | 
					                          `drug_name` AS drugName,`drug_spec` AS drugSpec,`pack_unit` AS packUnit,`manufactory` AS manuFactory,`max_stock` AS baseQuantity,
 | 
				
			||||||
 | 
					                          cl.`drug_id` AS drugId,cl.manuquantity, cl.`optdate` FROM check_stock cl WHERE cl.`machine_id` =  '{machine_id}' AND cl.`optdate` > '{p_startDate}' AND cl.`optdate` < '{p_endDate}' ORDER BY cl.`optdate` desc, cl.`drug_id`";
 | 
				
			||||||
 | 
					            // 加载模板文件
 | 
				
			||||||
 | 
					            Report.LoadFromFile(new FileInfo(AppDomain.CurrentDomain.BaseDirectory) + "ReportTemp//" + "machine_log_check_new2.grf");
 | 
				
			||||||
 | 
					            Report.DetailGrid.Recordset.ConnectionString = gridConnectionString;
 | 
				
			||||||
 | 
					            Report.DetailGrid.Recordset.QuerySQL = SQL;
 | 
				
			||||||
 | 
					            Report.PrintPreview(true);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        public static void PrintReportAccountBook(DateTime? startDate, DateTime? endDate,int type,string drug_id)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            DateTime? p_startDate = startDate ?? Convert.ToDateTime("2010-1-1");
 | 
					            DateTime? p_startDate = startDate ?? Convert.ToDateTime("2010-1-1");
 | 
				
			||||||
            DateTime? p_endDate = endDate ?? DateTime.Now.AddDays(1);
 | 
					            DateTime? p_endDate = endDate ?? DateTime.Now.AddDays(1);
 | 
				
			||||||
| 
						 | 
					@ -71,19 +96,36 @@ namespace DM_Weight.Report
 | 
				
			||||||
                Report.ParameterByName("endDate").Value = endDate ?? DateTime.Now.AddDays(1);
 | 
					                Report.ParameterByName("endDate").Value = endDate ?? DateTime.Now.AddDays(1);
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
            //Report.DetailGrid.Recordset.QuerySQL = SQL;
 | 
					            //Report.DetailGrid.Recordset.QuerySQL = SQL;
 | 
				
			||||||
            SQL = $@"SELECT  mr.`stock_quantity` AS `stockQuantity`, IF(mr.`type` IN (1, 31), mr.`quantity`, IF(mr.`type` = 4 AND mr.`quantity` > 0, mr.`quantity`, 0)) 
 | 
					            SQL = $@"SELECT TYPE, stockQuantity,inQuantity,outQuantity,operationTime,invoiceId,drugName,drugId,drugSpec,packUnit,dosage,manufactory,manuNo,effDate,
 | 
				
			||||||
 | 
					                        operatorName,reviewerName,supplierDept,receiveDept,bigUnit FROM 
 | 
				
			||||||
 | 
					                        (SELECT mr.type, mr.`stock_quantity` AS `stockQuantity`, IF(mr.`type` IN (1, 31), mr.`quantity`, IF(mr.`type` = 4 AND mr.`quantity` > 0, mr.`quantity`, 0)) 
 | 
				
			||||||
                        AS `inQuantity`, IF(mr.`type` = 2, mr.`quantity`, IF(mr.`type` = 4 AND mr.`quantity` < 0, (0 - mr.`quantity`), 0)) AS `outQuantity`,
 | 
					                        AS `inQuantity`, IF(mr.`type` = 2, mr.`quantity`, IF(mr.`type` = 4 AND mr.`quantity` < 0, (0 - mr.`quantity`), 0)) AS `outQuantity`,
 | 
				
			||||||
                         mr.`operation_time` AS `operationTime`,IF(mr.`type`=1,mr.`invoice_id`,NULL) AS `invoiceId`, di.`drug_name` AS `drugName`, di.`drug_id` AS `drugId`,
 | 
					                         mr.`operation_time` AS `operationTime`,IF(mr.`type`=1,mr.`invoice_id`,NULL) AS `invoiceId`, di.`drug_name` AS `drugName`, di.`drug_id` AS `drugId`,
 | 
				
			||||||
                         di.`drug_spec` AS `drugSpec`, di.`pack_unit` AS `packUnit`, di.`dosage` AS `dosage`, di.`manufactory` AS `manufactory`, 
 | 
					                         di.`drug_spec` AS `drugSpec`, di.`pack_unit` AS `packUnit`,di.big_unit as bigUnit, di.`dosage` AS `dosage`, di.`manufactory` AS `manufactory`, 
 | 
				
			||||||
                        mr.`manu_no` AS `manuNo`, mr.`eff_date` AS `effDate`, u1.`user_name` AS `operatorName`, u2.`user_name` AS `reviewerName` FROM 
 | 
					                        mr.`manu_no` AS `manuNo`, mr.`eff_date` AS `effDate`, u1.`user_name` AS `operatorName`, u2.`user_name` AS `reviewerName`,mr.supplierDept,mr.receiveDept FROM 
 | 
				
			||||||
                        dm_machine_record mr  LEFT JOIN drug_info di ON mr.`drug_id` = di.`drug_id`  LEFT JOIN user_list u1 ON mr.`operator` = u1.`id`  
 | 
					                        dm_machine_record mr  LEFT JOIN drug_info di ON mr.`drug_id` = di.`drug_id`  LEFT JOIN user_list u1 ON mr.`operator` = u1.`id`  
 | 
				
			||||||
                        LEFT JOIN user_list u2 ON mr.`reviewer` = u2.`id` WHERE mr.`machine_id` = '{p_machine_id}' AND mr.`operation_time` > '{p_startDate}'
 | 
					                        LEFT JOIN user_list u2 ON mr.`reviewer` = u2.`id` WHERE mr.`machine_id` = '{p_machine_id}' AND mr.`operation_time` > '{p_startDate}'
 | 
				
			||||||
                        AND mr.`operation_time` < '{p_endDate}' ";
 | 
					                        AND mr.`operation_time` < '{p_endDate}'  and IF(mr.`type` = 4 AND mr.`quantity` = 0, 99999, mr.`quantity`) <>99999 ";
 | 
				
			||||||
            if(!string.IsNullOrEmpty(drug_id))
 | 
					            if(!string.IsNullOrEmpty(drug_id))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                SQL+= " AND mr.drug_id='"+ drug_id+"' ";
 | 
					                SQL+= " AND mr.drug_id='"+ drug_id+"' ";
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            SQL+="ORDER BY mr.`drug_id`, mr.`operation_time`, mr.`id`";
 | 
					            SQL+= " ORDER BY mr.`drug_id`, mr.`operation_time`, mr.`id`) AS T";
 | 
				
			||||||
 | 
					            if (type > 0)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (type == 1)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    SQL += " WHERE inQuantity>0 ";
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                if (type == 2)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    SQL += " WHERE outQuantity>0 ";
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                if (type == 5)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    SQL += " WHERE type=5 ";
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
            Report.DetailGrid.Recordset.QuerySQL = SQL;
 | 
					            Report.DetailGrid.Recordset.QuerySQL = SQL;
 | 
				
			||||||
            Report.PrintPreview(true);
 | 
					            Report.PrintPreview(true);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					@ -203,5 +245,25 @@ namespace DM_Weight.Report
 | 
				
			||||||
            Report.DetailGrid.Recordset.QuerySQL = SQL;
 | 
					            Report.DetailGrid.Recordset.QuerySQL = SQL;
 | 
				
			||||||
            Report.PrintPreview(true);
 | 
					            Report.PrintPreview(true);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 盘点页面导出记录,按选中行进行导出
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <param name="type"></param>
 | 
				
			||||||
 | 
					        /// <param name="startDate"></param>
 | 
				
			||||||
 | 
					        /// <param name="endDate"></param>
 | 
				
			||||||
 | 
					        public static void PrintReportMechineRecordForSelect(List<MachineRecord> data)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            // 定义Grid++Report报表主对象
 | 
				
			||||||
 | 
					            GridppReport Report = new GridppReport();
 | 
				
			||||||
 | 
					            // 加载模板文件
 | 
				
			||||||
 | 
					            Report.LoadFromFile(new FileInfo(AppDomain.CurrentDomain.BaseDirectory) + "ReportTemp//machine_log_check.grf");
 | 
				
			||||||
 | 
					            Dictionary<string,List<MachineRecord>> records = new Dictionary<string,List<MachineRecord>>();
 | 
				
			||||||
 | 
					            records.Add("table", data);
 | 
				
			||||||
 | 
					           string str=  JsonConvert.SerializeObject(records);
 | 
				
			||||||
 | 
					            Report.LoadDataFromXML(str);
 | 
				
			||||||
 | 
					            // 加载数据
 | 
				
			||||||
 | 
					            Report.PrintPreview(true);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -15,7 +15,6 @@
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	"DetailGrid":{
 | 
						"DetailGrid":{
 | 
				
			||||||
		"CenterView":true,
 | 
							"CenterView":true,
 | 
				
			||||||
		"AppendBlankRow":true,
 | 
					 | 
				
			||||||
		"Recordset":{
 | 
							"Recordset":{
 | 
				
			||||||
			"Field":[
 | 
								"Field":[
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
| 
						 | 
					@ -75,7 +74,7 @@
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					"Name":"单位",
 | 
										"Name":"单位",
 | 
				
			||||||
					"DBFieldName":"packUnit"
 | 
										"DBFieldName":"bigUnit"
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					"Name":"剂型",
 | 
										"Name":"剂型",
 | 
				
			||||||
| 
						 | 
					@ -105,6 +104,14 @@
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					"Name":"凭证号",
 | 
										"Name":"凭证号",
 | 
				
			||||||
					"DBFieldName":"invoiceId"
 | 
										"DBFieldName":"invoiceId"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Name":"供应单位",
 | 
				
			||||||
 | 
										"DBFieldName":"supplierDept"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Name":"领用部门",
 | 
				
			||||||
 | 
										"DBFieldName":"receiveDept"
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			]
 | 
								]
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
| 
						 | 
					@ -222,11 +229,11 @@
 | 
				
			||||||
					"FreeCell":true,
 | 
										"FreeCell":true,
 | 
				
			||||||
					"Control":[
 | 
										"Control":[
 | 
				
			||||||
						{
 | 
											{
 | 
				
			||||||
							"Type":"StaticBox",
 | 
												"Type":"FieldBox",
 | 
				
			||||||
							"Name":"StaticBox6",
 | 
												"Name":"FieldBox14",
 | 
				
			||||||
							"Dock":"Fill",
 | 
												"Dock":"Fill",
 | 
				
			||||||
							"TextAlign":"MiddleCenter",
 | 
												"TextAlign":"MiddleCenter",
 | 
				
			||||||
							"Text":"药库"
 | 
												"DataField":"供应单位"
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
					]
 | 
										]
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
| 
						 | 
					@ -235,11 +242,11 @@
 | 
				
			||||||
					"FreeCell":true,
 | 
										"FreeCell":true,
 | 
				
			||||||
					"Control":[
 | 
										"Control":[
 | 
				
			||||||
						{
 | 
											{
 | 
				
			||||||
							"Type":"StaticBox",
 | 
												"Type":"FieldBox",
 | 
				
			||||||
							"Name":"StaticBox7",
 | 
												"Name":"FieldBox15",
 | 
				
			||||||
							"Dock":"Fill",
 | 
												"Dock":"Fill",
 | 
				
			||||||
							"TextAlign":"MiddleCenter",
 | 
												"TextAlign":"MiddleCenter",
 | 
				
			||||||
							"Text":"门诊药房11"
 | 
												"DataField":"领用部门"
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
					]
 | 
										]
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,7 +13,6 @@
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	"DetailGrid":{
 | 
						"DetailGrid":{
 | 
				
			||||||
		"CenterView":true,
 | 
							"CenterView":true,
 | 
				
			||||||
		"AppendBlankRow":true,
 | 
					 | 
				
			||||||
		"Recordset":{
 | 
							"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  dmr.`quantity` 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` = 1 \r\n AND dmr.`machine_id` = :machine_id\r\n AND dmr.`operation_time` > :startDate\r\n AND dmr.`operation_time` < :endDate",
 | 
								"QuerySQL":"SELECT \r\n  dmr.`drawer_no` AS drawerNo,\r\n  dmr.`col_no` AS colNo,\r\n  dmr.`type` AS `type`,\r\n  dmr.`quantity` 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` = 1 \r\n AND dmr.`machine_id` = :machine_id\r\n AND dmr.`operation_time` > :startDate\r\n AND dmr.`operation_time` < :endDate",
 | 
				
			||||||
			"Field":[
 | 
								"Field":[
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,7 +13,6 @@
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	"DetailGrid":{
 | 
						"DetailGrid":{
 | 
				
			||||||
		"CenterView":true,
 | 
							"CenterView":true,
 | 
				
			||||||
		"AppendBlankRow":true,
 | 
					 | 
				
			||||||
		"Recordset":{
 | 
							"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  dmr.`quantity` 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` = 4 \r\n AND dmr.`machine_id` = :machine_id\r\n AND dmr.`operation_time` > :startDate\r\n AND dmr.`operation_time` < :endDate",
 | 
								"QuerySQL":"SELECT \r\n  dmr.`drawer_no` AS drawerNo,\r\n  dmr.`col_no` AS colNo,\r\n  dmr.`type` AS `type`,\r\n  dmr.`quantity` 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` = 4 \r\n AND dmr.`machine_id` = :machine_id\r\n AND dmr.`operation_time` > :startDate\r\n AND dmr.`operation_time` < :endDate",
 | 
				
			||||||
			"Field":[
 | 
								"Field":[
 | 
				
			||||||
| 
						 | 
					@ -60,6 +59,10 @@
 | 
				
			||||||
					"Name":"type2",
 | 
										"Name":"type2",
 | 
				
			||||||
					"Type":"Integer",
 | 
										"Type":"Integer",
 | 
				
			||||||
					"DBFieldName":"type"
 | 
										"DBFieldName":"type"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Name":"规格",
 | 
				
			||||||
 | 
										"DBFieldName":"drugSpec"
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			]
 | 
								]
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
| 
						 | 
					@ -80,6 +83,10 @@
 | 
				
			||||||
				"Name":"药品名称",
 | 
									"Name":"药品名称",
 | 
				
			||||||
				"Width":4.63021
 | 
									"Width":4.63021
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									"Name":"规格",
 | 
				
			||||||
 | 
									"Width":1.69333
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				"Name":"数量",
 | 
									"Name":"数量",
 | 
				
			||||||
				"Width":1.98438
 | 
									"Width":1.98438
 | 
				
			||||||
| 
						 | 
					@ -119,6 +126,10 @@
 | 
				
			||||||
					"TextAlign":"MiddleCenter",
 | 
										"TextAlign":"MiddleCenter",
 | 
				
			||||||
					"DataField":"药品名称"
 | 
										"DataField":"药品名称"
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Column":"规格",
 | 
				
			||||||
 | 
										"DataField":"规格"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					"Column":"数量",
 | 
										"Column":"数量",
 | 
				
			||||||
					"TextAlign":"MiddleCenter",
 | 
										"TextAlign":"MiddleCenter",
 | 
				
			||||||
| 
						 | 
					@ -210,6 +221,18 @@
 | 
				
			||||||
					"TextAlign":"MiddleCenter",
 | 
										"TextAlign":"MiddleCenter",
 | 
				
			||||||
					"Text":"药品名称"
 | 
										"Text":"药品名称"
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"GroupTitle":false,
 | 
				
			||||||
 | 
										"Column":"规格",
 | 
				
			||||||
 | 
										"Font":{
 | 
				
			||||||
 | 
											"Name":"宋体",
 | 
				
			||||||
 | 
											"Size":120000,
 | 
				
			||||||
 | 
											"Bold":true,
 | 
				
			||||||
 | 
											"Charset":134
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										"TextAlign":"MiddleCenter",
 | 
				
			||||||
 | 
										"Text":"规格"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					"GroupTitle":false,
 | 
										"GroupTitle":false,
 | 
				
			||||||
					"Column":"数量",
 | 
										"Column":"数量",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,313 @@
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						"Version":"6.3.0.1",
 | 
				
			||||||
 | 
						"Font":{
 | 
				
			||||||
 | 
							"Name":"宋体",
 | 
				
			||||||
 | 
							"Size":105000,
 | 
				
			||||||
 | 
							"Weight":400,
 | 
				
			||||||
 | 
							"Charset":134
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						"Printer":{
 | 
				
			||||||
 | 
							"Oriention":"Landscape"
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						"DetailGrid":{
 | 
				
			||||||
 | 
							"CenterView":true,
 | 
				
			||||||
 | 
							"PrintAdaptMethod":"ResizeToFit",
 | 
				
			||||||
 | 
							"Recordset":{
 | 
				
			||||||
 | 
								"QuerySQL":"SELECT \r\n  cl.`row_no` AS drawerNo,\r\n  cl.`col_no` AS colNo,\r\n  cl.`quantity` AS quantity,\r\n  cl.`manu_no` AS manuNo,\r\n  cl.`eff_date` AS effDate,\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  cl.`drug_id` AS drugId\r\nFROM\r\n  channel_stock cl\r\nINNER JOIN drug_info di ON di.`drug_id` = cl.`drug_id`\r\nWHERE cl.`machine_id` =  :machine_id\r\n AND cl.`drawer_type` = 1\r\n ORDER BY cl.`drug_id`",
 | 
				
			||||||
 | 
								"Field":[
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Name":"drugName"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Name":"drugSpec"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Name":"manuFactory"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Name":"quantityCount",
 | 
				
			||||||
 | 
										"Type":"Integer"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Name":"manuNo"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Name":"effDate"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Name":"quantity",
 | 
				
			||||||
 | 
										"Type":"Integer",
 | 
				
			||||||
 | 
										"Format":"0"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Name":"drawerNo"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Name":"drugId"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Name":"baseQuantity",
 | 
				
			||||||
 | 
										"Type":"Integer"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Name":"manuquantity",
 | 
				
			||||||
 | 
										"Type":"Integer"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Name":"optDate",
 | 
				
			||||||
 | 
										"DBFieldName":"optdate"
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								]
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							"Column":[
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									"Name":"optDate",
 | 
				
			||||||
 | 
									"Width":4.20688
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									"Name":"drugName",
 | 
				
			||||||
 | 
									"Width":4.57729
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									"Name":"drugSpec"
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									"Name":"manuFactory",
 | 
				
			||||||
 | 
									"Width":4.60375
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									"Name":"quantityCount",
 | 
				
			||||||
 | 
									"Width":2.19604
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									"Name":"manuNo"
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									"Name":"effDate",
 | 
				
			||||||
 | 
									"Width":2.61938
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									"Name":"quantity",
 | 
				
			||||||
 | 
									"Width":1.42875
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							],
 | 
				
			||||||
 | 
							"ColumnContent":{
 | 
				
			||||||
 | 
								"Height":0.79375,
 | 
				
			||||||
 | 
								"ColumnContentCell":[
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Column":"optDate",
 | 
				
			||||||
 | 
										"DataField":"optDate"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Column":"drugName",
 | 
				
			||||||
 | 
										"TextAlign":"MiddleCenter",
 | 
				
			||||||
 | 
										"DataField":"drugName"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Column":"drugSpec",
 | 
				
			||||||
 | 
										"TextAlign":"MiddleCenter",
 | 
				
			||||||
 | 
										"DataField":"drugSpec"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Column":"manuFactory",
 | 
				
			||||||
 | 
										"TextAlign":"MiddleCenter",
 | 
				
			||||||
 | 
										"DataField":"manuFactory"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Column":"quantityCount",
 | 
				
			||||||
 | 
										"FreeCell":true,
 | 
				
			||||||
 | 
										"Control":[
 | 
				
			||||||
 | 
											{
 | 
				
			||||||
 | 
												"Type":"MemoBox",
 | 
				
			||||||
 | 
												"Name":"MemoBox1",
 | 
				
			||||||
 | 
												"Dock":"Fill",
 | 
				
			||||||
 | 
												"Text":"[#Sum(manuquantity)#]"
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
										]
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Column":"manuNo",
 | 
				
			||||||
 | 
										"TextAlign":"MiddleCenter",
 | 
				
			||||||
 | 
										"DataField":"manuNo"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Column":"effDate",
 | 
				
			||||||
 | 
										"TextAlign":"MiddleCenter",
 | 
				
			||||||
 | 
										"DataField":"effDate"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Column":"quantity",
 | 
				
			||||||
 | 
										"TextAlign":"MiddleCenter",
 | 
				
			||||||
 | 
										"DataField":"manuquantity"
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								]
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							"ColumnTitle":{
 | 
				
			||||||
 | 
								"Height":1.19063,
 | 
				
			||||||
 | 
								"RepeatStyle":"OnPage",
 | 
				
			||||||
 | 
								"ColumnTitleCell":[
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"GroupTitle":false,
 | 
				
			||||||
 | 
										"Column":"optDate",
 | 
				
			||||||
 | 
										"Font":{
 | 
				
			||||||
 | 
											"Name":"宋体",
 | 
				
			||||||
 | 
											"Size":142500,
 | 
				
			||||||
 | 
											"Bold":true,
 | 
				
			||||||
 | 
											"Charset":134
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										"TextAlign":"MiddleCenter",
 | 
				
			||||||
 | 
										"Text":"盘点日期"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"GroupTitle":false,
 | 
				
			||||||
 | 
										"Column":"drugName",
 | 
				
			||||||
 | 
										"Font":{
 | 
				
			||||||
 | 
											"Name":"宋体",
 | 
				
			||||||
 | 
											"Size":142500,
 | 
				
			||||||
 | 
											"Bold":true,
 | 
				
			||||||
 | 
											"Charset":134
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										"TextAlign":"MiddleCenter",
 | 
				
			||||||
 | 
										"Text":"药品名称"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"GroupTitle":false,
 | 
				
			||||||
 | 
										"Column":"drugSpec",
 | 
				
			||||||
 | 
										"Font":{
 | 
				
			||||||
 | 
											"Name":"宋体",
 | 
				
			||||||
 | 
											"Size":142500,
 | 
				
			||||||
 | 
											"Bold":true,
 | 
				
			||||||
 | 
											"Charset":134
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										"TextAlign":"MiddleCenter",
 | 
				
			||||||
 | 
										"Text":"规格"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"GroupTitle":false,
 | 
				
			||||||
 | 
										"Column":"manuFactory",
 | 
				
			||||||
 | 
										"Font":{
 | 
				
			||||||
 | 
											"Name":"宋体",
 | 
				
			||||||
 | 
											"Size":142500,
 | 
				
			||||||
 | 
											"Bold":true,
 | 
				
			||||||
 | 
											"Charset":134
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										"TextAlign":"MiddleCenter",
 | 
				
			||||||
 | 
										"Text":"厂家"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"GroupTitle":false,
 | 
				
			||||||
 | 
										"Column":"quantityCount",
 | 
				
			||||||
 | 
										"Font":{
 | 
				
			||||||
 | 
											"Name":"宋体",
 | 
				
			||||||
 | 
											"Size":142500,
 | 
				
			||||||
 | 
											"Bold":true,
 | 
				
			||||||
 | 
											"Charset":134
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										"TextAlign":"MiddleCenter",
 | 
				
			||||||
 | 
										"Text":"总库存"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"GroupTitle":false,
 | 
				
			||||||
 | 
										"Column":"manuNo",
 | 
				
			||||||
 | 
										"Font":{
 | 
				
			||||||
 | 
											"Name":"宋体",
 | 
				
			||||||
 | 
											"Size":142500,
 | 
				
			||||||
 | 
											"Bold":true,
 | 
				
			||||||
 | 
											"Charset":134
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										"TextAlign":"MiddleCenter",
 | 
				
			||||||
 | 
										"Text":"批次"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"GroupTitle":false,
 | 
				
			||||||
 | 
										"Column":"effDate",
 | 
				
			||||||
 | 
										"Font":{
 | 
				
			||||||
 | 
											"Name":"宋体",
 | 
				
			||||||
 | 
											"Size":142500,
 | 
				
			||||||
 | 
											"Bold":true,
 | 
				
			||||||
 | 
											"Charset":134
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										"TextAlign":"MiddleCenter",
 | 
				
			||||||
 | 
										"Text":"效期"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"GroupTitle":false,
 | 
				
			||||||
 | 
										"Column":"quantity",
 | 
				
			||||||
 | 
										"Font":{
 | 
				
			||||||
 | 
											"Name":"宋体",
 | 
				
			||||||
 | 
											"Size":142500,
 | 
				
			||||||
 | 
											"Bold":true,
 | 
				
			||||||
 | 
											"Charset":134
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										"TextAlign":"MiddleCenter",
 | 
				
			||||||
 | 
										"Text":"数量"
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								]
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							"Group":[
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									"Name":"Group2",
 | 
				
			||||||
 | 
									"ByFields":"optDate",
 | 
				
			||||||
 | 
									"GroupHeader":{
 | 
				
			||||||
 | 
										"Height":0.635,
 | 
				
			||||||
 | 
										"OccupyColumn":true,
 | 
				
			||||||
 | 
										"OccupiedColumns":"optDate",
 | 
				
			||||||
 | 
										"VAlign":"Middle"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									"GroupFooter":{
 | 
				
			||||||
 | 
										"Visible":false,
 | 
				
			||||||
 | 
										"Height":0
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									"Name":"drugId",
 | 
				
			||||||
 | 
									"ByFields":"drugId",
 | 
				
			||||||
 | 
									"GroupHeader":{
 | 
				
			||||||
 | 
										"Visible":false,
 | 
				
			||||||
 | 
										"Height":0.79375,
 | 
				
			||||||
 | 
										"RepeatOnPage":true,
 | 
				
			||||||
 | 
										"OccupyColumn":true,
 | 
				
			||||||
 | 
										"IncludeFooter":true,
 | 
				
			||||||
 | 
										"OccupiedColumns":"drugName;drugSpec;manuFactory;quantityCount",
 | 
				
			||||||
 | 
										"VAlign":"Middle"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									"GroupFooter":{
 | 
				
			||||||
 | 
										"Visible":false,
 | 
				
			||||||
 | 
										"Height":0
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						"Parameter":[
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								"Name":"machine_id",
 | 
				
			||||||
 | 
								"Value":"DM1"
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"ReportHeader":[
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								"Name":"ReportHeader1",
 | 
				
			||||||
 | 
								"Height":2.40771,
 | 
				
			||||||
 | 
								"Control":[
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Type":"StaticBox",
 | 
				
			||||||
 | 
										"Name":"StaticBox1",
 | 
				
			||||||
 | 
										"Center":"Horizontal",
 | 
				
			||||||
 | 
										"Left":8.22854,
 | 
				
			||||||
 | 
										"Top":0.608542,
 | 
				
			||||||
 | 
										"Width":9.18104,
 | 
				
			||||||
 | 
										"Height":1.21708,
 | 
				
			||||||
 | 
										"Font":{
 | 
				
			||||||
 | 
											"Name":"宋体",
 | 
				
			||||||
 | 
											"Size":217500,
 | 
				
			||||||
 | 
											"Bold":true,
 | 
				
			||||||
 | 
											"Charset":134
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										"TextAlign":"MiddleCenter",
 | 
				
			||||||
 | 
										"Text":"毒麻药品盘点后库存信息"
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								],
 | 
				
			||||||
 | 
								"RepeatOnPage":true
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,278 @@
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						"Version":"6.3.0.1",
 | 
				
			||||||
 | 
						"Font":{
 | 
				
			||||||
 | 
							"Name":"宋体",
 | 
				
			||||||
 | 
							"Size":105000,
 | 
				
			||||||
 | 
							"Weight":400,
 | 
				
			||||||
 | 
							"Charset":134
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						"Printer":{
 | 
				
			||||||
 | 
							"LeftMargin":1,
 | 
				
			||||||
 | 
							"TopMargin":1,
 | 
				
			||||||
 | 
							"RightMargin":1,
 | 
				
			||||||
 | 
							"BottomMargin":1
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						"DetailGrid":{
 | 
				
			||||||
 | 
							"Recordset":{
 | 
				
			||||||
 | 
								"Field":[
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Name":"盘点日期",
 | 
				
			||||||
 | 
										"DBFieldName":"optDate"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Name":"药品名称",
 | 
				
			||||||
 | 
										"DBFieldName":"drugName"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Name":"drugId"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Name":"规格",
 | 
				
			||||||
 | 
										"DBFieldName":"drugSpec"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Name":"厂家",
 | 
				
			||||||
 | 
										"DBFieldName":"manuFactory"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Name":"总库存",
 | 
				
			||||||
 | 
										"DBFieldName":"quantity"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Name":"批次",
 | 
				
			||||||
 | 
										"DBFieldName":"manuNo"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Name":"效期",
 | 
				
			||||||
 | 
										"DBFieldName":"effDate"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Name":"数量",
 | 
				
			||||||
 | 
										"DBFieldName":"manuquantity"
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								]
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							"Column":[
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									"Name":"盘点日期",
 | 
				
			||||||
 | 
									"Width":2.56646
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									"Name":"药品名称",
 | 
				
			||||||
 | 
									"Width":2.80458
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									"Name":"规格",
 | 
				
			||||||
 | 
									"Width":2.01083
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									"Name":"厂家",
 | 
				
			||||||
 | 
									"Width":2.98979
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									"Name":"总库存",
 | 
				
			||||||
 | 
									"Width":1.69333
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									"Name":"批次",
 | 
				
			||||||
 | 
									"Width":2.06375
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									"Name":"效期",
 | 
				
			||||||
 | 
									"Width":2.19604
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									"Name":"数量",
 | 
				
			||||||
 | 
									"Width":1.69333
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							],
 | 
				
			||||||
 | 
							"ColumnContent":{
 | 
				
			||||||
 | 
								"Height":0.79375,
 | 
				
			||||||
 | 
								"ColumnContentCell":[
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Column":"盘点日期",
 | 
				
			||||||
 | 
										"DataField":"盘点日期"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Column":"药品名称",
 | 
				
			||||||
 | 
										"DataField":"药品名称"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Column":"规格",
 | 
				
			||||||
 | 
										"DataField":"规格"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Column":"厂家",
 | 
				
			||||||
 | 
										"DataField":"厂家"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Column":"总库存",
 | 
				
			||||||
 | 
										"DataField":"总库存"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Column":"批次",
 | 
				
			||||||
 | 
										"DataField":"批次"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Column":"效期",
 | 
				
			||||||
 | 
										"DataField":"效期"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Column":"数量",
 | 
				
			||||||
 | 
										"DataField":"数量"
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								]
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							"ColumnTitle":{
 | 
				
			||||||
 | 
								"Height":1.19063,
 | 
				
			||||||
 | 
								"RepeatStyle":"OnPage",
 | 
				
			||||||
 | 
								"ColumnTitleCell":[
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"GroupTitle":false,
 | 
				
			||||||
 | 
										"Column":"盘点日期",
 | 
				
			||||||
 | 
										"Font":{
 | 
				
			||||||
 | 
											"Name":"宋体",
 | 
				
			||||||
 | 
											"Size":142500,
 | 
				
			||||||
 | 
											"Bold":true,
 | 
				
			||||||
 | 
											"Charset":134
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										"TextAlign":"MiddleCenter",
 | 
				
			||||||
 | 
										"Text":"盘点日期"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"GroupTitle":false,
 | 
				
			||||||
 | 
										"Column":"药品名称",
 | 
				
			||||||
 | 
										"Font":{
 | 
				
			||||||
 | 
											"Name":"宋体",
 | 
				
			||||||
 | 
											"Size":142500,
 | 
				
			||||||
 | 
											"Bold":true,
 | 
				
			||||||
 | 
											"Charset":134
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										"TextAlign":"MiddleCenter",
 | 
				
			||||||
 | 
										"Text":"药品名称"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"GroupTitle":false,
 | 
				
			||||||
 | 
										"Column":"规格",
 | 
				
			||||||
 | 
										"Font":{
 | 
				
			||||||
 | 
											"Name":"宋体",
 | 
				
			||||||
 | 
											"Size":142500,
 | 
				
			||||||
 | 
											"Bold":true,
 | 
				
			||||||
 | 
											"Charset":134
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										"TextAlign":"MiddleCenter",
 | 
				
			||||||
 | 
										"Text":"规格"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"GroupTitle":false,
 | 
				
			||||||
 | 
										"Column":"厂家",
 | 
				
			||||||
 | 
										"Font":{
 | 
				
			||||||
 | 
											"Name":"宋体",
 | 
				
			||||||
 | 
											"Size":142500,
 | 
				
			||||||
 | 
											"Bold":true,
 | 
				
			||||||
 | 
											"Charset":134
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										"TextAlign":"MiddleCenter",
 | 
				
			||||||
 | 
										"Text":"厂家"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"GroupTitle":false,
 | 
				
			||||||
 | 
										"Column":"总库存",
 | 
				
			||||||
 | 
										"Font":{
 | 
				
			||||||
 | 
											"Name":"宋体",
 | 
				
			||||||
 | 
											"Size":142500,
 | 
				
			||||||
 | 
											"Bold":true,
 | 
				
			||||||
 | 
											"Charset":134
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										"TextAlign":"MiddleCenter",
 | 
				
			||||||
 | 
										"Text":"总库存"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"GroupTitle":false,
 | 
				
			||||||
 | 
										"Column":"批次",
 | 
				
			||||||
 | 
										"Font":{
 | 
				
			||||||
 | 
											"Name":"宋体",
 | 
				
			||||||
 | 
											"Size":142500,
 | 
				
			||||||
 | 
											"Bold":true,
 | 
				
			||||||
 | 
											"Charset":134
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										"TextAlign":"MiddleCenter",
 | 
				
			||||||
 | 
										"Text":"批次"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"GroupTitle":false,
 | 
				
			||||||
 | 
										"Column":"效期",
 | 
				
			||||||
 | 
										"Font":{
 | 
				
			||||||
 | 
											"Name":"宋体",
 | 
				
			||||||
 | 
											"Size":142500,
 | 
				
			||||||
 | 
											"Bold":true,
 | 
				
			||||||
 | 
											"Charset":134
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										"TextAlign":"MiddleCenter",
 | 
				
			||||||
 | 
										"Text":"效期"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"GroupTitle":false,
 | 
				
			||||||
 | 
										"Column":"数量",
 | 
				
			||||||
 | 
										"Font":{
 | 
				
			||||||
 | 
											"Name":"宋体",
 | 
				
			||||||
 | 
											"Size":142500,
 | 
				
			||||||
 | 
											"Bold":true,
 | 
				
			||||||
 | 
											"Charset":134
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										"TextAlign":"MiddleCenter",
 | 
				
			||||||
 | 
										"Text":"数量"
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								]
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							"Group":[
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									"Name":"Group1",
 | 
				
			||||||
 | 
									"ByFields":"盘点日期",
 | 
				
			||||||
 | 
									"GroupHeader":{
 | 
				
			||||||
 | 
										"Height":0.635,
 | 
				
			||||||
 | 
										"OccupyColumn":true,
 | 
				
			||||||
 | 
										"OccupiedColumns":"盘点日期",
 | 
				
			||||||
 | 
										"VAlign":"Middle"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									"GroupFooter":{
 | 
				
			||||||
 | 
										"Height":0
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									"Name":"Group2",
 | 
				
			||||||
 | 
									"ByFields":"drugId",
 | 
				
			||||||
 | 
									"GroupHeader":{
 | 
				
			||||||
 | 
										"Height":0.635,
 | 
				
			||||||
 | 
										"OccupyColumn":true,
 | 
				
			||||||
 | 
										"OccupiedColumns":"药品名称;厂家;规格;总库存",
 | 
				
			||||||
 | 
										"VAlign":"Middle"
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									"GroupFooter":{
 | 
				
			||||||
 | 
										"Height":0
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						"ReportHeader":[
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								"Name":"ReportHeader1",
 | 
				
			||||||
 | 
								"Height":1.32292,
 | 
				
			||||||
 | 
								"Control":[
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"Type":"MemoBox",
 | 
				
			||||||
 | 
										"Name":"MemoBox1",
 | 
				
			||||||
 | 
										"Dock":"Fill",
 | 
				
			||||||
 | 
										"Font":{
 | 
				
			||||||
 | 
											"Name":"宋体",
 | 
				
			||||||
 | 
											"Size":157500,
 | 
				
			||||||
 | 
											"Bold":true,
 | 
				
			||||||
 | 
											"Charset":134
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										"TextAlign":"MiddleCenter",
 | 
				
			||||||
 | 
										"Text":"毒麻药品盘点后库存信息"
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								]
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -13,7 +13,6 @@
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	"DetailGrid":{
 | 
						"DetailGrid":{
 | 
				
			||||||
		"CenterView":true,
 | 
							"CenterView":true,
 | 
				
			||||||
		"AppendBlankRow":true,
 | 
					 | 
				
			||||||
		"Recordset":{
 | 
							"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",
 | 
								"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":[
 | 
								"Field":[
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,7 +13,6 @@
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	"DetailGrid":{
 | 
						"DetailGrid":{
 | 
				
			||||||
		"CenterView":true,
 | 
							"CenterView":true,
 | 
				
			||||||
		"AppendBlankRow":true,
 | 
					 | 
				
			||||||
		"Recordset":{
 | 
							"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  dmr.`quantity` 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` = 2 \r\n AND dmr.`machine_id` = :machine_id\r\n AND dmr.`operation_time` > :startDate\r\n AND dmr.`operation_time` < :endDate",
 | 
								"QuerySQL":"SELECT \r\n  dmr.`drawer_no` AS drawerNo,\r\n  dmr.`col_no` AS colNo,\r\n  dmr.`type` AS `type`,\r\n  dmr.`quantity` 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` = 2 \r\n AND dmr.`machine_id` = :machine_id\r\n AND dmr.`operation_time` > :startDate\r\n AND dmr.`operation_time` < :endDate",
 | 
				
			||||||
			"Field":[
 | 
								"Field":[
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -12,7 +12,6 @@
 | 
				
			||||||
	"DetailGrid":{
 | 
						"DetailGrid":{
 | 
				
			||||||
		"CenterView":true,
 | 
							"CenterView":true,
 | 
				
			||||||
		"PrintAdaptMethod":"ResizeToFit",
 | 
							"PrintAdaptMethod":"ResizeToFit",
 | 
				
			||||||
		"AppendBlankRow":true,
 | 
					 | 
				
			||||||
		"Recordset":{
 | 
							"Recordset":{
 | 
				
			||||||
			"QuerySQL":"SELECT \r\n  cl.`row_no` AS drawerNo,\r\n  cl.`col_no` AS colNo,\r\n  cl.`quantity` AS quantity,\r\n  cl.`manu_no` AS manuNo,\r\n  cl.`eff_date` AS effDate,\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  cl.`drug_id` AS drugId\r\nFROM\r\n  channel_stock cl\r\nINNER JOIN drug_info di ON di.`drug_id` = cl.`drug_id`\r\nWHERE cl.`machine_id` =  :machine_id\r\n AND cl.`drawer_type` = 1\r\n ORDER BY cl.`drug_id`",
 | 
								"QuerySQL":"SELECT \r\n  cl.`row_no` AS drawerNo,\r\n  cl.`col_no` AS colNo,\r\n  cl.`quantity` AS quantity,\r\n  cl.`manu_no` AS manuNo,\r\n  cl.`eff_date` AS effDate,\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  cl.`drug_id` AS drugId\r\nFROM\r\n  channel_stock cl\r\nINNER JOIN drug_info di ON di.`drug_id` = cl.`drug_id`\r\nWHERE cl.`machine_id` =  :machine_id\r\n AND cl.`drawer_type` = 1\r\n ORDER BY cl.`drug_id`",
 | 
				
			||||||
			"Field":[
 | 
								"Field":[
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,37 @@
 | 
				
			||||||
 | 
					using DM_Weight.Models;
 | 
				
			||||||
 | 
					using DM_Weight.util;
 | 
				
			||||||
 | 
					using SqlSugar;
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Configuration;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace DM_Weight.Services
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class ChannelStockService
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        ////private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
 | 
					        //public ChannelStockService(SqlSugarScope sqlSugarScope)
 | 
				
			||||||
 | 
					        //{
 | 
				
			||||||
 | 
					        //    //this.SqlSugarHelper.Db = sqlSugarScope;
 | 
				
			||||||
 | 
					        //}
 | 
				
			||||||
 | 
					        public List<ChannelStockCount> GetAll()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            string p_machine_id = (ConfigurationManager.AppSettings["machineId"] ?? "DM1");
 | 
				
			||||||
 | 
					            string SQL = $@"SELECT CS.drug_id as DrugId,CS.manu_no as ManuNo,sum(quantity) as Quantity,CS.eff_date as EffDate,DI.drug_name as DrugName,
 | 
				
			||||||
 | 
					                          DI.drug_spec as DrugSpec,DI.dosage as Dosage,DI.manufactory as ManuFactory,DI.small_unit as SmallUnit,DI.pack_unit as PackUnit,
 | 
				
			||||||
 | 
					                          CS.machine_id as MachineId FROM channel_stock CS 
 | 
				
			||||||
 | 
					                          INNER JOIN drug_info DI ON CS.drug_id=DI.drug_id where CS.machine_id='{p_machine_id}'  AND quantity>0 GROUP BY CS.drug_id,CS.manu_no ";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            List<ChannelStockCount> accountList = SqlSugarHelper.Db.SqlQueryable<ChannelStockCount>(SQL).ToList();
 | 
				
			||||||
 | 
					            //List<ChannelStock> accountList = SqlSugarHelper.Db.Queryable<ChannelStock>().Includes<DrugInfo>(cs=>cs.DrugInfo)
 | 
				
			||||||
 | 
					            //    .GroupBy(cs=>new { cs.DrugId, cs.ManuNo })
 | 
				
			||||||
 | 
					            //    .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"]??"DM1"))
 | 
				
			||||||
 | 
					            //    .Where(cs=>cs.Quantity>0)
 | 
				
			||||||
 | 
					            //    .ToList();
 | 
				
			||||||
 | 
					            return accountList;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,79 @@
 | 
				
			||||||
 | 
					using DM_Weight.Models;
 | 
				
			||||||
 | 
					using DM_Weight.util;
 | 
				
			||||||
 | 
					using DM_Weight.Views.Dialog;
 | 
				
			||||||
 | 
					using gregn6Lib;
 | 
				
			||||||
 | 
					using SqlSugar;
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Configuration;
 | 
				
			||||||
 | 
					using System.IO;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace DM_Weight.Services
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    /// <summary>
 | 
				
			||||||
 | 
					    /// 账册服务类
 | 
				
			||||||
 | 
					    /// </summary>
 | 
				
			||||||
 | 
					    public class MachineRecordService
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        ////private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
 | 
					        public MachineRecordService()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            ////this.SqlSugarHelper.Db = sqlSugarScope;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        public List<AccountModel> ReportAccountBook(DateTime? startDate, DateTime? endDate,int type, string drug_id="")
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            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 TYPE, stockQuantity,inQuantity,outQuantity,operationTime,invoiceId,drugName,drugId,drugSpec,packUnit,dosage,manufactory,manuNo,effDate,
 | 
				
			||||||
 | 
					                        operatorName,reviewerName,supplierDept,receiveDept FROM
 | 
				
			||||||
 | 
					                        (SELECT   mr.type,mr.`stock_quantity` AS `stockQuantity`, IF(mr.`type` IN (1, 31), mr.`quantity`, IF(mr.`type` = 4 AND mr.`quantity` > 0, mr.`quantity`, 0)) 
 | 
				
			||||||
 | 
					                        AS `inQuantity`, IF(mr.`type` = 2, mr.`quantity`, IF(mr.`type` = 4 AND mr.`quantity` < 0, (0 - mr.`quantity`), 0)) AS `outQuantity`,
 | 
				
			||||||
 | 
					                         DATE_FORMAT(mr.`operation_time`,'%m/%d')  AS `operationTime`,IF(mr.`type`=1,mr.`invoice_id`,NULL) AS `invoiceId`, di.`drug_name` AS `drugName`, di.`drug_id` AS `drugId`,
 | 
				
			||||||
 | 
					                         di.`drug_spec` AS `drugSpec`, di.`pack_unit` AS `packUnit`, di.`dosage` AS `dosage`, di.`manufactory` AS `manufactory`,
 | 
				
			||||||
 | 
					                        mr.`manu_no` AS `manuNo`, DATE_FORMAT(mr.`eff_date`,'%y/%m/%d') AS `effDate`, u1.`user_name` AS `operatorName`, u2.`user_name` AS `reviewerName`,mr.supplierDept,mr.receiveDept FROM 
 | 
				
			||||||
 | 
					                        dm_machine_record mr  LEFT JOIN drug_info di ON mr.`drug_id` = di.`drug_id`  LEFT JOIN user_list u1 ON mr.`operator` = u1.`id`  
 | 
				
			||||||
 | 
					                        LEFT JOIN user_list u2 ON mr.`reviewer` = u2.`id` WHERE mr.`machine_id` = '{p_machine_id}' AND mr.`operation_time` > '{p_startDate}'
 | 
				
			||||||
 | 
					                        AND mr.`operation_time` < '{p_endDate}'  and IF(mr.`type` = 4 AND mr.`quantity` = 0, 99999, mr.`quantity`) <>99999 ";
 | 
				
			||||||
 | 
					            if (!string.IsNullOrEmpty(drug_id))
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SQL += " AND mr.drug_id='" + drug_id + "' ";
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            SQL += " ORDER BY mr.`drug_id`, mr.`operation_time`, mr.`id`) AS T";
 | 
				
			||||||
 | 
					            if(type>0)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if(type==1)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    SQL += " WHERE inQuantity>0 ";
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                if(type==2)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    SQL += " WHERE outQuantity>0 ";
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                if(type==5)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    SQL += " WHERE type=5 ";
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            //ChannelStocks = q.Select(it => { it.CheckQuantity = it.Quantity; return it; }).ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            List<AccountModel> accountList = SqlSugarHelper.Db.SqlQueryable<AccountModel>(SQL)
 | 
				
			||||||
 | 
					                                                                         .AddParameters(new
 | 
				
			||||||
 | 
					                                                                         {
 | 
				
			||||||
 | 
					                                                                             machineId = ConfigurationManager.AppSettings["machineId"] ?? "DM1"
 | 
				
			||||||
 | 
					                                                                         })
 | 
				
			||||||
 | 
					                                                                        //.Select(it => new { o = new AccountModel(), i = new DrugInfo() })
 | 
				
			||||||
 | 
					                                                                        //.Select(it=>new AccountModel())
 | 
				
			||||||
 | 
					                                                                        //.Select("*") //让上面一行不生成sql
 | 
				
			||||||
 | 
					                                                                       .ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            //List<AccountModel> accountList=new List<AccountModel>();
 | 
				
			||||||
 | 
					            return accountList;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,54 @@
 | 
				
			||||||
 | 
					using DM_Weight.Models;
 | 
				
			||||||
 | 
					using MySqlConnector;
 | 
				
			||||||
 | 
					using Newtonsoft.Json;
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Configuration;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace DM_Weight.Services
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class UserService
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        //public static string connStr = ConfigurationManager.AppSettings["database"].ToString();
 | 
				
			||||||
 | 
					        public static string connStr = ConfigurationManager.ConnectionStrings["database"].ToString();
 | 
				
			||||||
 | 
					        public UserList CheckUserByFingerPrinter(int fingerPrinterId)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            UserList? user = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            using (MySqlConnection con = new MySqlConnection(connStr))
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                con.Open();
 | 
				
			||||||
 | 
					                string sql = @"select ul.id as id,ul.User_name as userName,r.id,r.role_name,r.permissions,r.machine_id from user_list ul 
 | 
				
			||||||
 | 
					                                INNER JOIN role r on ul.machine_role_id=r.id where ul.Id=@ID and ul.machine_id=@machine_id and r.machine_id=@machine_id;";
 | 
				
			||||||
 | 
					                MySqlCommand cmd = new MySqlCommand(sql, con);
 | 
				
			||||||
 | 
					                cmd.Parameters.Clear();
 | 
				
			||||||
 | 
					                MySqlParameter[] mySqlParameter = new MySqlParameter[] {new MySqlParameter("ID", fingerPrinterId),new MySqlParameter("machine_id", (ConfigurationManager.AppSettings["machineId"] ?? "DM1")) };
 | 
				
			||||||
 | 
					                cmd.Parameters.AddRange(mySqlParameter);
 | 
				
			||||||
 | 
					                //执行语句
 | 
				
			||||||
 | 
					                MySqlDataReader reader = cmd.ExecuteReader();
 | 
				
			||||||
 | 
					                while (reader.Read())
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    user = new UserList();
 | 
				
			||||||
 | 
					                    user.Id = reader.GetInt32("id");
 | 
				
			||||||
 | 
					                    user.UserName = reader["userName"] is DBNull ? "" : reader.GetString("userName");
 | 
				
			||||||
 | 
					                    //user.UserName = reader["id"] is DBNull ? "" : reader.GetString("id");
 | 
				
			||||||
 | 
					                    user.Nickname= reader["userName"] is DBNull ? "" : reader.GetString("userName");
 | 
				
			||||||
 | 
					                    user.MachineId = reader["machine_id"] is DBNull ? "" : reader.GetString("machine_id");
 | 
				
			||||||
 | 
					                    RoleDm role= new RoleDm();
 | 
				
			||||||
 | 
					                    role.Id= reader.GetInt32("id");
 | 
				
			||||||
 | 
					                    //role.Permissions = reader["permissions"] is DBNull ? "" : reader.GetString("permissions");
 | 
				
			||||||
 | 
					                    role.RoleName = reader["role_name"] is DBNull ? "" : reader.GetString("role_name");
 | 
				
			||||||
 | 
					                    role.Permissions = JsonConvert.DeserializeObject<List<PremissionDm>>(reader["permissions"] is DBNull ? "" : reader.GetString("permissions"));  // JsonConvert.SerializeObject(reader.GetString("permissions")).ToList();
 | 
				
			||||||
 | 
					                    user.Role = role;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                reader.Close();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                return user;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,414 @@
 | 
				
			||||||
 | 
					using DM_Weight.Models;
 | 
				
			||||||
 | 
					using DM_Weight.msg;
 | 
				
			||||||
 | 
					using DM_Weight.Report;
 | 
				
			||||||
 | 
					using DM_Weight.Services;
 | 
				
			||||||
 | 
					using DM_Weight.util;
 | 
				
			||||||
 | 
					using Prism.Commands;
 | 
				
			||||||
 | 
					using Prism.Events;
 | 
				
			||||||
 | 
					using Prism.Mvvm;
 | 
				
			||||||
 | 
					using Prism.Regions;
 | 
				
			||||||
 | 
					using SqlSugar;
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.ComponentModel;
 | 
				
			||||||
 | 
					using System.Configuration;
 | 
				
			||||||
 | 
					using System.Drawing.Printing;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using System.Windows.Data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class AccountWindowViewModel : BindableBase, INavigationAware, IRegionMemberLifetime
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public static AccountWindowViewModel vm;
 | 
				
			||||||
 | 
					        //private int _pageNum = 1;
 | 
				
			||||||
 | 
					        //public int PageNum
 | 
				
			||||||
 | 
					        //{
 | 
				
			||||||
 | 
					        //    get => _pageNum;
 | 
				
			||||||
 | 
					        //    set
 | 
				
			||||||
 | 
					        //    {
 | 
				
			||||||
 | 
					        //        SetProperty(ref _pageNum, value);
 | 
				
			||||||
 | 
					        //        RequestData();
 | 
				
			||||||
 | 
					        //    }
 | 
				
			||||||
 | 
					        //}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //private int _pageCount = 1;
 | 
				
			||||||
 | 
					        //public int PageCount
 | 
				
			||||||
 | 
					        //{
 | 
				
			||||||
 | 
					        //    get => _pageCount;
 | 
				
			||||||
 | 
					        //    set
 | 
				
			||||||
 | 
					        //    {
 | 
				
			||||||
 | 
					        //        SetProperty(ref _pageCount, value);
 | 
				
			||||||
 | 
					        //    }
 | 
				
			||||||
 | 
					        //}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //private int _pageSize = 8;
 | 
				
			||||||
 | 
					        //public int PageSize
 | 
				
			||||||
 | 
					        //{
 | 
				
			||||||
 | 
					        //    get => _pageSize;
 | 
				
			||||||
 | 
					        //    set
 | 
				
			||||||
 | 
					        //    {
 | 
				
			||||||
 | 
					        //        SetProperty(ref _pageSize, value);
 | 
				
			||||||
 | 
					        //    }
 | 
				
			||||||
 | 
					        //}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //private int _totalCount = 0;
 | 
				
			||||||
 | 
					        //public int TotalCount
 | 
				
			||||||
 | 
					        //{
 | 
				
			||||||
 | 
					        //    get => _totalCount;
 | 
				
			||||||
 | 
					        //    set
 | 
				
			||||||
 | 
					        //    {
 | 
				
			||||||
 | 
					        //        SetProperty(ref _totalCount, value);
 | 
				
			||||||
 | 
					        //    }
 | 
				
			||||||
 | 
					        //}
 | 
				
			||||||
 | 
					        private DateTime? _startDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private DateTime? nowDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public DateTime? StartDate
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _startDate;
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (value != null)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    SetProperty(ref _startDate, new DateTime(value?.Year ?? 0, value?.Month ?? 0, value?.Day ?? 0));
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    SetProperty(ref _startDate, value);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                RequestData();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private DateTime? _endDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 23, 59, 59);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public DateTime? EndDate
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _endDate;
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (value != null)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    TimeSpan ershisi = new TimeSpan(23, 59, 59);
 | 
				
			||||||
 | 
					                    SetProperty(ref _endDate, new DateTime(value?.Year ?? 0, value?.Month ?? 0, value?.Day ?? 0, 23, 59, 59));
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    SetProperty(ref _endDate, value);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                RequestData();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        private static readonly DateTime Jan1st1970 = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 账册
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        private List<AccountModel> _accountList = new();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public List<AccountModel> AccountList
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _accountList;
 | 
				
			||||||
 | 
					            set => SetProperty(ref _accountList, value);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        /// <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);
 | 
				
			||||||
 | 
					                //if (_drugInfo != null)
 | 
				
			||||||
 | 
					                //{
 | 
				
			||||||
 | 
					                //DrugManuNos = _drugInfo.DrugManuNos.OrderByDescending(dm => dm.ManuNo).ToList();
 | 
				
			||||||
 | 
					                //}
 | 
				
			||||||
 | 
					                RequestData();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 账册类型1入2出3总结存
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        private List<AccountType> _accountTypeList = new List<AccountType>() {
 | 
				
			||||||
 | 
					                new AccountType
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    AccountTypeName="借入",
 | 
				
			||||||
 | 
					                    AccountTypeValue=1
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                new AccountType
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    AccountTypeName="发出",
 | 
				
			||||||
 | 
					                    AccountTypeValue=2
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                new AccountType
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    AccountTypeName="日结存",
 | 
				
			||||||
 | 
					                    AccountTypeValue=5
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					        public List<AccountType>? AccountTypeList
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _accountTypeList;
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _accountTypeList, value);
 | 
				
			||||||
 | 
					                RequestData();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        private AccountType? _accountType;
 | 
				
			||||||
 | 
					        public AccountType AccountType
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _accountType;
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _accountType, value);
 | 
				
			||||||
 | 
					                RequestData();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        MachineRecordService _machineRecordService;
 | 
				
			||||||
 | 
					        ChannelStockService _channelStockService;
 | 
				
			||||||
 | 
					        IEventAggregator _eventAggregator;
 | 
				
			||||||
 | 
					        ////private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
 | 
					        public AccountWindowViewModel(MachineRecordService machineRecord, ChannelStockService channelStockService, IEventAggregator eventAggregator)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            _machineRecordService = machineRecord;
 | 
				
			||||||
 | 
					            _channelStockService = channelStockService;
 | 
				
			||||||
 | 
					            ////this.SqlSugarHelper.Db = sqlSugarScope;
 | 
				
			||||||
 | 
					            _eventAggregator = eventAggregator;
 | 
				
			||||||
 | 
					            vm = this;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        void RequestData()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            int totalCount = 0;
 | 
				
			||||||
 | 
					            AccountList = _machineRecordService.ReportAccountBook(StartDate, EndDate, AccountType == null ? 0 : AccountType.AccountTypeValue, DrugInfo == null ? "" : DrugInfo.DrugId ?? "");
 | 
				
			||||||
 | 
					            //for (int i = 0; i < accountList.Count; i++)
 | 
				
			||||||
 | 
					            //{
 | 
				
			||||||
 | 
					            //    if (accountList[i].DrugInfo is null)
 | 
				
			||||||
 | 
					            //    {
 | 
				
			||||||
 | 
					            //        DrugInfo drug= new DrugInfo();
 | 
				
			||||||
 | 
					            //        drug.DrugId = accountList[i].DrugId;
 | 
				
			||||||
 | 
					            //        drug.DrugName = accountList[i].DrugName;
 | 
				
			||||||
 | 
					            //        drug.DrugSpec = accountList[i].DrugSpec;
 | 
				
			||||||
 | 
					            //        drug.Dosage= accountList[i].Dosage;
 | 
				
			||||||
 | 
					            //        drug.PackUnit= accountList[i].PackUnit;
 | 
				
			||||||
 | 
					            //        drug.Manufactory= accountList[i].Manufactory;
 | 
				
			||||||
 | 
					            //        accountList[i].DrugInfo= drug;
 | 
				
			||||||
 | 
					            //    }
 | 
				
			||||||
 | 
					            //}
 | 
				
			||||||
 | 
					            //ICollectionView vw = CollectionViewSource.GetDefaultView(accountList);
 | 
				
			||||||
 | 
					            //vw.GroupDescriptions.Add(new PropertyGroupDescription("DrugInfo"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        private void GetAllDrugInfos()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var list = SqlSugarHelper.Db.Queryable<DrugInfo>().Includes<DrugManuNo>(di => di.DrugManuNos).OrderBy(di => di.DrugId).ToList();
 | 
				
			||||||
 | 
					            DrugInfos = list;
 | 
				
			||||||
 | 
					            DrugInfo = list[0];
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 生成日结存
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public DelegateCommand DayAccountBook
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                DayAccountAction();
 | 
				
			||||||
 | 
					                RequestData();
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        //生成一条当日没有记录的账册记录
 | 
				
			||||||
 | 
					        private void DayAccountAction()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            try
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                //查询账册中所有记录,与库存中的记录做比校,如果账册中没有,则添加一条
 | 
				
			||||||
 | 
					                List<AccountModel> accountList = _machineRecordService.ReportAccountBook(nowDate, null, 0);
 | 
				
			||||||
 | 
					                //库存中的记录
 | 
				
			||||||
 | 
					                List<ChannelStockCount> channelStockList = _channelStockService.GetAll();
 | 
				
			||||||
 | 
					                //List<ChannelStock> channelStockInsert = new List<ChannelStock>();
 | 
				
			||||||
 | 
					                if (accountList != null && accountList.Count() > 0)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    //账册中有记录则与库存记录对比
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    for (int i = 0; i < channelStockList.Count; i++)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        int Count = accountList.Where(cs => cs.DrugId == channelStockList[i].DrugId && cs.ManuNo == channelStockList[i].ManuNo).Count();
 | 
				
			||||||
 | 
					                        if (Count <= 0)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            //没有直接插入
 | 
				
			||||||
 | 
					                            // 保存数据 出/入库记录
 | 
				
			||||||
 | 
					                            string InvoiceId = "Account_" + CurrentTimeMillis();
 | 
				
			||||||
 | 
					                            SqlSugarHelper.Db.Insertable(new MachineRecord()
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                MachineId = channelStockList[i].MachineId,
 | 
				
			||||||
 | 
					                                DrawerNo = 0,//channelStockList[i].DrawerNo,
 | 
				
			||||||
 | 
					                                ColNo = 0,// channelStockList[i].ColNo,FV
 | 
				
			||||||
 | 
					                                DrugId = channelStockList[i].DrugId,
 | 
				
			||||||
 | 
					                                ManuNo = channelStockList[i].ManuNo,
 | 
				
			||||||
 | 
					                                EffDate = !String.IsNullOrEmpty(channelStockList[i].EffDate) ? DateTime.ParseExact(channelStockList[i].EffDate, "yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture) : null,
 | 
				
			||||||
 | 
					                                Operator = HomeWindowViewModel.Operator?.Id,
 | 
				
			||||||
 | 
					                                Reviewer = HomeWindowViewModel.Reviewer?.Id,
 | 
				
			||||||
 | 
					                                OperationTime = DateTime.Now,
 | 
				
			||||||
 | 
					                                Quantity = 0,
 | 
				
			||||||
 | 
					                                Type = 5,
 | 
				
			||||||
 | 
					                                InvoiceId = string.Empty,//InvoiceId,
 | 
				
			||||||
 | 
					                                StockQuantity = channelStockList[i].Quantity,
 | 
				
			||||||
 | 
					                                ManunoQuantity = 0,
 | 
				
			||||||
 | 
					                                SupplierDept = ConfigurationManager.AppSettings["supplierDept"].ToString(),
 | 
				
			||||||
 | 
					                                ReceiveDept = ConfigurationManager.AppSettings["receiveDept"].ToString()
 | 
				
			||||||
 | 
					                            }).ExecuteCommand();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    for (int i = 0; i < channelStockList.Count; i++)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        //账册中没有记录则把库存中的所有数据都要生成一条账册记录
 | 
				
			||||||
 | 
					                        // 保存数据 出/入库记录
 | 
				
			||||||
 | 
					                        string InvoiceId = "Account_" + CurrentTimeMillis();
 | 
				
			||||||
 | 
					                        SqlSugarHelper.Db.Insertable(new MachineRecord()
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            MachineId = channelStockList[i].MachineId,
 | 
				
			||||||
 | 
					                            DrawerNo = 0,//channelStockList[i].DrawerNo,
 | 
				
			||||||
 | 
					                            ColNo = 0,//channelStockList[i].ColNo,
 | 
				
			||||||
 | 
					                            DrugId = channelStockList[i].DrugId,
 | 
				
			||||||
 | 
					                            ManuNo = channelStockList[i].ManuNo,
 | 
				
			||||||
 | 
					                            EffDate = !String.IsNullOrEmpty(channelStockList[i].EffDate) ? DateTime.ParseExact(channelStockList[i].EffDate, "yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture) : null,
 | 
				
			||||||
 | 
					                            Operator = HomeWindowViewModel.Operator?.Id,
 | 
				
			||||||
 | 
					                            Reviewer = HomeWindowViewModel.Reviewer?.Id,
 | 
				
			||||||
 | 
					                            OperationTime = DateTime.Now,
 | 
				
			||||||
 | 
					                            Quantity = 0,
 | 
				
			||||||
 | 
					                            Type = 5,
 | 
				
			||||||
 | 
					                            InvoiceId = string.Empty,//InvoiceId,
 | 
				
			||||||
 | 
					                            StockQuantity = channelStockList[i].Quantity,
 | 
				
			||||||
 | 
					                            ManunoQuantity = 0,
 | 
				
			||||||
 | 
					                            SupplierDept = ConfigurationManager.AppSettings["supplierDept"].ToString(),
 | 
				
			||||||
 | 
					                            ReceiveDept = ConfigurationManager.AppSettings["receiveDept"].ToString()
 | 
				
			||||||
 | 
					                        }).ExecuteCommand();
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    Message = "日结存已生成完成",
 | 
				
			||||||
 | 
					                    Type = MsgType.SUCCESS,
 | 
				
			||||||
 | 
					                };
 | 
				
			||||||
 | 
					                _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            catch (Exception ex)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    Message = "生成日结存失败",
 | 
				
			||||||
 | 
					                    Type = MsgType.ERROR,
 | 
				
			||||||
 | 
					                };
 | 
				
			||||||
 | 
					                _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            RequestData();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        public long CurrentTimeMillis()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return (long)(DateTime.UtcNow - Jan1st1970).TotalMilliseconds;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        //public void InsertDayAccount()
 | 
				
			||||||
 | 
					        //{
 | 
				
			||||||
 | 
					        //    // 保存数据 出/入库记录
 | 
				
			||||||
 | 
					        //    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.AddQuantity,
 | 
				
			||||||
 | 
					        //        Type = 1,
 | 
				
			||||||
 | 
					        //        InvoiceId = InvoiceId,
 | 
				
			||||||
 | 
					        //        StockQuantity = nowChannels.Sum(it => it.Quantity),
 | 
				
			||||||
 | 
					        //        ManunoQuantity = nowChannels.FindAll(it2 => it2.ManuNo == it.ManuNo).Sum(it => it.Quantity),
 | 
				
			||||||
 | 
					        //        SupplierDept = Invoice.PharmacyName1 ?? ConfigurationManager.AppSettings["supplierDept"].ToString(),
 | 
				
			||||||
 | 
					        //        ReceiveDept = Invoice.PharmacyName2 ?? ConfigurationManager.AppSettings["receiveDept"].ToString()
 | 
				
			||||||
 | 
					        //    }).ExecuteCommand();
 | 
				
			||||||
 | 
					        //}
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 导出账册
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public DelegateCommand DownloadAccountBook
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                GridReportUtil.PrintReportAccountBook(StartDate, EndDate, AccountType == null ? 0 : AccountType.AccountTypeValue, DrugInfo == null ? "" : DrugInfo.DrugId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 刷新
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public DelegateCommand Query
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                RequestData();
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        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 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) || di.DrugId.Contains(text)).OrderBy(di => di.DrugName).OrderBy(di => di.DrugId).ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void OnNavigatedTo(NavigationContext navigationContext)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            //药品信息
 | 
				
			||||||
 | 
					            GetAllDrugInfos();
 | 
				
			||||||
 | 
					            //查询表格数据
 | 
				
			||||||
 | 
					            RequestData();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool IsNavigationTarget(NavigationContext navigationContext)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void OnNavigatedFrom(NavigationContext navigationContext)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,545 @@
 | 
				
			||||||
 | 
					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 Prism.Services.Dialogs;
 | 
				
			||||||
 | 
					using SqlSugar;
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Collections.ObjectModel;
 | 
				
			||||||
 | 
					using System.Configuration;
 | 
				
			||||||
 | 
					using System.Drawing.Printing;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Reflection.PortableExecutable;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using System.Windows.Documents;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class AddDrugControlViewModel : BindableBase, IConfirmNavigationRequest, IRegionMemberLifetime
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        private readonly ILog logger = LogManager.GetLogger(typeof(AddDrugControlViewModel));
 | 
				
			||||||
 | 
					        private List<int> _drawerNoList = new List<int>();
 | 
				
			||||||
 | 
					        public static AddDrugControlViewModel vm;
 | 
				
			||||||
 | 
					        //凭证号
 | 
				
			||||||
 | 
					        private string _pzh;
 | 
				
			||||||
 | 
					        public string PZH { get => _pzh; set { SetProperty(ref _pzh, value); } }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private List<ChannelList>? _channelLsts;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public List<ChannelList>? ChannelLsts
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _channelLsts;
 | 
				
			||||||
 | 
					            set => SetProperty(ref _channelLsts, value);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        private List<ChannelStock> __channelStocks = new List<ChannelStock>();
 | 
				
			||||||
 | 
					        public List<ChannelStock> ChannelStocks
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => __channelStocks;
 | 
				
			||||||
 | 
					            set => SetProperty(ref __channelStocks, value);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private ChannelStock? _channelStock;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public ChannelStock? CStock
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _channelStock;
 | 
				
			||||||
 | 
					            set => SetProperty(ref _channelStock, value);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //private ChannelList? _channelList;
 | 
				
			||||||
 | 
					        //public ChannelList? ChannelLst
 | 
				
			||||||
 | 
					        //{
 | 
				
			||||||
 | 
					        //    get => _channelList;
 | 
				
			||||||
 | 
					        //    set => SetProperty(ref _channelList, value);
 | 
				
			||||||
 | 
					        //}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private static readonly DateTime Jan1st1970 = new DateTime
 | 
				
			||||||
 | 
					    (1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private PortUtil _portUtil;
 | 
				
			||||||
 | 
					        IEventAggregator _eventAggregator;
 | 
				
			||||||
 | 
					        IDialogService _dialogService;
 | 
				
			||||||
 | 
					        ////private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
 | 
					        public AddDrugControlViewModel(IDialogService DialogService, PortUtil portUtil, IEventAggregator eventAggregator)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            _dialogService = DialogService;
 | 
				
			||||||
 | 
					            _portUtil = portUtil;
 | 
				
			||||||
 | 
					            _eventAggregator = eventAggregator;
 | 
				
			||||||
 | 
					            ////this.SqlSugarHelper.Db = sqlSugarScope;
 | 
				
			||||||
 | 
					            vm = this;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        public DelegateCommand SelectionChangedCommand => new DelegateCommand(selectionAction);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private async void selectionAction()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (CStock != null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                // 此处延时1毫秒,等待页面渲染
 | 
				
			||||||
 | 
					                await Task.Delay(TimeSpan.FromMilliseconds(1));
 | 
				
			||||||
 | 
					                DialogParameters dialogParameters = new DialogParameters();
 | 
				
			||||||
 | 
					                dialogParameters.Add("addManuno", CStock);
 | 
				
			||||||
 | 
					                DialogServiceExtensions.ShowDialogHost(_dialogService, "AddManunoDialog", dialogParameters, DoDialogResult, "RootDialog");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        private void DoDialogResult(IDialogResult dialogResult)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            // 委托   被动执行     被子窗口执行
 | 
				
			||||||
 | 
					            // dialogResult  第一方面可以拿到任意参数   第二方面   可判断关闭状态
 | 
				
			||||||
 | 
					            //if(dialogResult.Result == ButtonResult.OK)
 | 
				
			||||||
 | 
					            //{
 | 
				
			||||||
 | 
					            CStock = null;
 | 
				
			||||||
 | 
					            RequestData();
 | 
				
			||||||
 | 
					            //}
 | 
				
			||||||
 | 
					            //MessageBox.Show("返回值:" + dialogResult.Result.ToString());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        void DoMyPrismEvent(DeviceMsg msg)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (msg.WindowName == "AddDrugControl")
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                switch (msg.EventType)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    // 抽屉打开
 | 
				
			||||||
 | 
					                    case EventType.DRAWEROPEN:
 | 
				
			||||||
 | 
					                        if (Status == 1)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            Status = 2;
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                    // 抽屉关闭
 | 
				
			||||||
 | 
					                    case EventType.DRAWERCLOSE:
 | 
				
			||||||
 | 
					                        if (Status == 2)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            Status = 3;
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                    // 数量变化
 | 
				
			||||||
 | 
					                    case EventType.UPDATEQUANTITY:
 | 
				
			||||||
 | 
					                        if (Status == 2)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            //ChannelStocks.ForEach(it => it.AddQuantity = msg.Quantitys[it.ColNo - 1]);
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                    // 打开失败
 | 
				
			||||||
 | 
					                    case EventType.OPENERROR:
 | 
				
			||||||
 | 
					                        AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            Message = msg.Message,
 | 
				
			||||||
 | 
					                            Type = MsgType.ERROR,
 | 
				
			||||||
 | 
					                        };
 | 
				
			||||||
 | 
					                        _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
 | 
					                        Status = 0;
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private int _status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public int Status { get => _status; set => SetProperty(ref _status, value); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private int _drawerNo = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public int DrawerNo
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _drawerNo;
 | 
				
			||||||
 | 
					            set => SetProperty(ref _drawerNo, value);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private bool _is8Drawer = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool Is8Drawer { get => _is8Drawer; set => SetProperty(ref _is8Drawer, value); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private bool _is16Drawer = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool Is16Drawer { get => _is16Drawer; set => SetProperty(ref _is16Drawer, value); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private bool _is17Drawer = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool Is17Drawer { get => _is17Drawer; set => SetProperty(ref _is17Drawer, value); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public DelegateCommand<string> UpdateDrawerNo
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand<string>((DrawerNo) =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                this.DrawerNo = Convert.ToInt32(DrawerNo);
 | 
				
			||||||
 | 
					                RequestData();
 | 
				
			||||||
 | 
					            }, (DrawerNo) => Status == 0
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        public DelegateCommand OpenDrawer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Status = 1;
 | 
				
			||||||
 | 
					                _portUtil.SpeakAsync("正在打开" + DrawerNo + "号抽屉");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                try
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    //List<ChannelStock> singleChannels = ChannelStocks.FindAll(it => it.BoardType != 1);
 | 
				
			||||||
 | 
					                    List<ChannelList> singleChannels = ChannelLsts.FindAll(it => it.BoardType != 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    _portUtil.WindowName = "AddDrugControl";
 | 
				
			||||||
 | 
					                    _portUtil.Operate = true;
 | 
				
			||||||
 | 
					                    _portUtil.BoardType = singleChannels.Count > 0 ? singleChannels[0].BoardType : 1;
 | 
				
			||||||
 | 
					                    _portUtil.ColNos = new int[] { };// singleChannels.Select(it => it.ColNo).ToArray();
 | 
				
			||||||
 | 
					                    //_portUtil.Stocks = singleChannels.Select(it => it.Quantity).ToArray();
 | 
				
			||||||
 | 
					                    _portUtil.DrawerNo = DrawerNo;
 | 
				
			||||||
 | 
					                    _portUtil.Start();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                catch (Exception ex)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    logger.Info($"OpenDrawer异常:{ex.Message}");
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }, () => Status == 0).ObservesProperty(() => Status);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        private bool _isFinishClick = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // 完成按钮
 | 
				
			||||||
 | 
					        public DelegateCommand TakeFinish
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (!_isFinishClick)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    _isFinishClick = true;
 | 
				
			||||||
 | 
					                    foreach (ChannelList lst in ChannelLsts)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        ChannelStocks.AddRange(lst.channelStocks);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    List<ChannelStock> record = ChannelStocks.FindAll(it => it.AddQuantity != 0).ToList();
 | 
				
			||||||
 | 
					                    if (record.Count > 0)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        //string InvoiceId = "DRAWER_" + CurrentTimeMillis();
 | 
				
			||||||
 | 
					                        string InvoiceId = PZH;
 | 
				
			||||||
 | 
					                        //List<string> repeatList = new List<string>();
 | 
				
			||||||
 | 
					                        List<ChannelStock> stockRepeats = new List<ChannelStock>();
 | 
				
			||||||
 | 
					                        var f = SqlSugarHelper.Db.UseTran(() =>
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            for (int i = 0; i < record.Count; i++)
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                ChannelStock it = record[i];
 | 
				
			||||||
 | 
					                                it.ManuNo = it.drugManuNo.ManuNo;
 | 
				
			||||||
 | 
					                                it.EffDate = it.drugManuNo.EffDate;
 | 
				
			||||||
 | 
					                                if (it.Id != null)
 | 
				
			||||||
 | 
					                                {
 | 
				
			||||||
 | 
					                                    // 更新数据 库存信息
 | 
				
			||||||
 | 
					                                    SqlSugarHelper.Db.Updateable(new ChannelStock()
 | 
				
			||||||
 | 
					                                    {
 | 
				
			||||||
 | 
					                                        Quantity = it.Quantity + it.AddQuantity,
 | 
				
			||||||
 | 
					                                        ManuNo = it.ManuNo,
 | 
				
			||||||
 | 
					                                        EffDate = it.EffDate,
 | 
				
			||||||
 | 
					                                        Id = it.Id,
 | 
				
			||||||
 | 
					                                    }).UpdateColumns(it => new { it.Quantity, it.ManuNo, it.EffDate }).ExecuteCommand();
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                                else
 | 
				
			||||||
 | 
					                                {
 | 
				
			||||||
 | 
					                                    //如果批号重复则不让添加
 | 
				
			||||||
 | 
					                                    List<ChannelStock> csCount = SqlSugarHelper.Db.Queryable<ChannelStock>().Where(cs => cs.DrawerNo == it.DrawerNo && cs.ManuNo == it.ManuNo && cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).ToList();
 | 
				
			||||||
 | 
					                                    if (csCount.Count > 0)
 | 
				
			||||||
 | 
					                                    {
 | 
				
			||||||
 | 
					                                        //repeatList.Add(it.ManuNo);
 | 
				
			||||||
 | 
					                                        stockRepeats.Add(it);
 | 
				
			||||||
 | 
					                                        continue;
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    // 更新数据 库存信息
 | 
				
			||||||
 | 
					                                    SqlSugarHelper.Db.Insertable(new ChannelStock()
 | 
				
			||||||
 | 
					                                    {
 | 
				
			||||||
 | 
					                                        Quantity = it.AddQuantity,
 | 
				
			||||||
 | 
					                                        Chnguid = it.Chnguid,
 | 
				
			||||||
 | 
					                                        ManuNo = it.ManuNo,
 | 
				
			||||||
 | 
					                                        EffDate = it.EffDate,
 | 
				
			||||||
 | 
					                                        DrawerNo = it.DrawerNo,
 | 
				
			||||||
 | 
					                                        ColNo = it.ColNo,
 | 
				
			||||||
 | 
					                                        DrugId = it.DrugId,
 | 
				
			||||||
 | 
					                                        DrawerType = it.DrawerType,
 | 
				
			||||||
 | 
					                                        BoardType = it.BoardType,
 | 
				
			||||||
 | 
					                                        Id = Guid.NewGuid().ToString(),
 | 
				
			||||||
 | 
					                                        MachineId = ConfigurationManager.AppSettings["machineId"] ?? "DM1"
 | 
				
			||||||
 | 
					                                    }).ExecuteCommand();
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                                // 获取更新完库存后的药品库存
 | 
				
			||||||
 | 
					                                List<ChannelStock> nowChannels = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
 | 
					                                    .Where(cs => cs.MachineId.Equals(it.MachineId))
 | 
				
			||||||
 | 
					                                    .Where(cs => cs.DrugId.Equals(it.DrugId))
 | 
				
			||||||
 | 
					                                    .Where(cs => cs.DrawerType == 1)
 | 
				
			||||||
 | 
					                                    .ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                // 保存数据 入库记录
 | 
				
			||||||
 | 
					                                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.AddQuantity,
 | 
				
			||||||
 | 
					                                    Type = 1,
 | 
				
			||||||
 | 
					                                    InvoiceId = InvoiceId,
 | 
				
			||||||
 | 
					                                    StockQuantity = nowChannels.Sum(it => it.Quantity),
 | 
				
			||||||
 | 
					                                    ManunoQuantity = nowChannels.FindAll(it2 => it2.ManuNo == it.ManuNo).Sum(it => it.Quantity)
 | 
				
			||||||
 | 
					                                }).ExecuteCommand();
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                            return true;
 | 
				
			||||||
 | 
					                        });
 | 
				
			||||||
 | 
					                        //ChannelStocks.Clear();
 | 
				
			||||||
 | 
					                        if (stockRepeats.Count == record.Count)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                Message = $"该抽屉已存在此药品批次{string.Join(',', stockRepeats.Select(r=>r.ManuNo).ToArray())},请选择其他批次",
 | 
				
			||||||
 | 
					                                Type = MsgType.ERROR
 | 
				
			||||||
 | 
					                            };
 | 
				
			||||||
 | 
					                            _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                        else
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            if (f.Data)
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                string msg = string.Empty;
 | 
				
			||||||
 | 
					                                MsgType type = MsgType.SUCCESS;
 | 
				
			||||||
 | 
					                                if (stockRepeats.Count > 0)
 | 
				
			||||||
 | 
					                                {
 | 
				
			||||||
 | 
					                                    msg = $"该抽屉下批次{string.Join(',', stockRepeats.Select(r => r.ManuNo).ToArray())}已存在,不可重复添加,其他批次加药完成,库存已更新";
 | 
				
			||||||
 | 
					                                    foreach(var stockRpt in stockRepeats)
 | 
				
			||||||
 | 
					                                    {
 | 
				
			||||||
 | 
					                                        //移除重复的信息,以免更新屏显库存时更新了重复数据
 | 
				
			||||||
 | 
					                                        record.Remove(stockRpt);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					                                    type = MsgType.WARING;
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                                else
 | 
				
			||||||
 | 
					                                {
 | 
				
			||||||
 | 
					                                    msg = "抽屉加药完成,库存已更新";
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                                // 更新屏显库存
 | 
				
			||||||
 | 
					                                //List<ChannelStock> singleChannels = record.FindAll(it => it.BoardType != 1);
 | 
				
			||||||
 | 
					                                List<ChannelStock> singleChannels = ChannelStocks.Where(it => it.BoardType != 1)
 | 
				
			||||||
 | 
					                                                                          .GroupBy(it => it.ColNo)
 | 
				
			||||||
 | 
					                                                                          .Select(it =>
 | 
				
			||||||
 | 
					                                                                          {
 | 
				
			||||||
 | 
					                                                                              var ret = it.First();
 | 
				
			||||||
 | 
					                                                                              ret.Quantity = it.Sum(itx => itx.Quantity);
 | 
				
			||||||
 | 
					                                                                              ret.AddQuantity = it.Sum(itx => itx.AddQuantity);
 | 
				
			||||||
 | 
					                                                                              ret.EffDate = it.Min(it => it.EffDate);
 | 
				
			||||||
 | 
					                                                                              ret.ManuNo = it.OrderBy(it=>it.ManuNo).Select(it=>it.ManuNo).First().ToString();
 | 
				
			||||||
 | 
					                                                                              return ret;
 | 
				
			||||||
 | 
					                                                                          })
 | 
				
			||||||
 | 
					                                                                          .OrderBy(it=>it.EffDate)
 | 
				
			||||||
 | 
					                                                                          .ToList();
 | 
				
			||||||
 | 
					                                singleChannels = singleChannels.Where(it => it.AddQuantity > 0).ToList();
 | 
				
			||||||
 | 
					                                if ((singleChannels.Count > 0 ? singleChannels[0].BoardType : 1) == 5)
 | 
				
			||||||
 | 
					                                {
 | 
				
			||||||
 | 
					                                    //将库位多批次的总库存数更新标签
 | 
				
			||||||
 | 
					                                    //_portUtil.WriteQuantity(singleChannels[0].DrawerNo, singleChannels[0].ColNo, singleChannels.Sum(it => it.Quantity) + singleChannels.Sum(it => it.AddQuantity));
 | 
				
			||||||
 | 
					                                    
 | 
				
			||||||
 | 
					                                    singleChannels.ForEach(it =>
 | 
				
			||||||
 | 
					                                    {
 | 
				
			||||||
 | 
					                                        
 | 
				
			||||||
 | 
					                                        _portUtil.WriteChannelInfo(6, it.EffDate == null ? "" : it.EffDate, it.DrawerNo, it.ColNo);
 | 
				
			||||||
 | 
					                                        Thread.Sleep(200);
 | 
				
			||||||
 | 
					                                        _portUtil.WriteChannelInfo(5, it.ManuNo, it.DrawerNo, it.ColNo);
 | 
				
			||||||
 | 
					                                        Thread.Sleep(200);
 | 
				
			||||||
 | 
					                                        _portUtil.ShowContent(it.DrawerNo, it.ColNo);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                        Thread.Sleep(500);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                        //写库存数量
 | 
				
			||||||
 | 
					                                        _portUtil.WriteQuantity(it.DrawerNo, it.ColNo, it.Quantity + it.AddQuantity);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    });
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                                RequestData();
 | 
				
			||||||
 | 
					                                AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
 | 
					                                {
 | 
				
			||||||
 | 
					                                    Message = msg,
 | 
				
			||||||
 | 
					                                    Type = type,
 | 
				
			||||||
 | 
					                                };
 | 
				
			||||||
 | 
					                                _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                            else
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
 | 
					                                {
 | 
				
			||||||
 | 
					                                    Message = "更新库存失败",
 | 
				
			||||||
 | 
					                                    Type = MsgType.SUCCESS,
 | 
				
			||||||
 | 
					                                };
 | 
				
			||||||
 | 
					                                _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                        Status = 0;
 | 
				
			||||||
 | 
					                        _isFinishClick = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        PZH = string.Empty;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        ChannelStocks.Clear();
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    else
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        _isFinishClick = false;
 | 
				
			||||||
 | 
					                        AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            Message = "没有填写加药数量",
 | 
				
			||||||
 | 
					                            Type = MsgType.ERROR
 | 
				
			||||||
 | 
					                        };
 | 
				
			||||||
 | 
					                        _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // 取消按钮
 | 
				
			||||||
 | 
					        public DelegateCommand CancleTake
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                _portUtil.ResetData();
 | 
				
			||||||
 | 
					                Status = 0;
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //添加批次
 | 
				
			||||||
 | 
					        public void AddAction(ChannelList channelLS)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (channelLS != null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                ChannelStock cls = new ChannelStock();
 | 
				
			||||||
 | 
					                DrugManuNo drugManu = new DrugManuNo();
 | 
				
			||||||
 | 
					                cls.DrugInfo = channelLS.Drug;
 | 
				
			||||||
 | 
					                if (channelLS.channelStocks.Count > 0)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    cls.drugManuNo = channelLS.channelStocks[0].drugManuNo;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    //drugManu= cls.DrugInfo.DrugManuNos[0];
 | 
				
			||||||
 | 
					                    if (cls.DrugInfo.DrugManuNos.Count > 0)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        cls.drugManuNo = cls.DrugInfo.DrugManuNos[0];
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    else
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            Message = "该药品下没有批次,请先添加批次",
 | 
				
			||||||
 | 
					                            Type = MsgType.ERROR
 | 
				
			||||||
 | 
					                        };
 | 
				
			||||||
 | 
					                        _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
 | 
					                        return;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                //cls.Id = "";
 | 
				
			||||||
 | 
					                cls.Chnguid = channelLS.Id;
 | 
				
			||||||
 | 
					                cls.MachineId = ConfigurationManager.AppSettings["machineId"] ?? "DM1";
 | 
				
			||||||
 | 
					                cls.DrawerNo = channelLS.DrawerNo;
 | 
				
			||||||
 | 
					                cls.BoardType = channelLS.BoardType;
 | 
				
			||||||
 | 
					                cls.DrawerType = channelLS.DrawerType;
 | 
				
			||||||
 | 
					                cls.ColNo = channelLS.ColNo;
 | 
				
			||||||
 | 
					                cls.DrugId = channelLS.DrugId;
 | 
				
			||||||
 | 
					                cls.AddQuantity = 0;
 | 
				
			||||||
 | 
					                List<ChannelStock> stockList = new List<ChannelStock>();
 | 
				
			||||||
 | 
					                stockList.AddRange(channelLS.channelStocks);
 | 
				
			||||||
 | 
					                stockList.Add(cls);
 | 
				
			||||||
 | 
					                channelLS.channelStocks = stockList;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public long CurrentTimeMillis()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return (long)(DateTime.UtcNow - Jan1st1970).TotalMilliseconds;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void FindDrawerCount()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            int count = SqlSugarHelper.Db.Queryable<ChannelList>().Where(cs => cs.DrawerType != 3)
 | 
				
			||||||
 | 
					                .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).GroupBy(cs => cs.DrawerNo).Select(cs => SqlFunc.AggregateCount(cs.DrawerNo)).Count();
 | 
				
			||||||
 | 
					            Is8Drawer = count < 9;
 | 
				
			||||||
 | 
					            Is16Drawer = count >= 16;
 | 
				
			||||||
 | 
					            Is17Drawer = count > 16;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //这个方法用于拦截请求,continuationCallback(true)就是不拦截,continuationCallback(false)拦截本次操作
 | 
				
			||||||
 | 
					        public void ConfirmNavigationRequest(NavigationContext navigationContext, Action<bool> continuationCallback)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            continuationCallback(true);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        public void RequestData()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            List<ChannelList> queryData = SqlSugarHelper.Db.Queryable<ChannelList>()
 | 
				
			||||||
 | 
					                .Includes(cl => cl.Drug, di => di.DrugManuNos)
 | 
				
			||||||
 | 
					                .Includes(cl => cl.channelStocks, dr => dr.DrugInfo, d => d.DrugManuNos)
 | 
				
			||||||
 | 
					                .Where(cl => cl.DrawerNo == DrawerNo)
 | 
				
			||||||
 | 
					                .Where(cl => cl.DrawerType == 1)
 | 
				
			||||||
 | 
					                .Where(cl => cl.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1"))
 | 
				
			||||||
 | 
					                .Where(cl => cl.DrugId != null)
 | 
				
			||||||
 | 
					                .OrderBy(cl => cl.ColNo)
 | 
				
			||||||
 | 
					                .ToList();
 | 
				
			||||||
 | 
					            ChannelLsts = queryData.Select(cl =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                cl.channelStocks = cl.channelStocks.Select(cs =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    cs.drugManuNo = cl.Drug.DrugManuNos.Find(it => it.ManuNo.Equals(cs.ManuNo));
 | 
				
			||||||
 | 
					                    return cs;
 | 
				
			||||||
 | 
					                }).ToList();
 | 
				
			||||||
 | 
					                return cl;
 | 
				
			||||||
 | 
					            }).ToList();
 | 
				
			||||||
 | 
					            //ChannelLsts = new ObservableCollection<ChannelList>(queryData);
 | 
				
			||||||
 | 
					            ChannelLsts.ForEach(cl => cl.channelStocks.ForEach(cs => cs.DrugInfo = cl.Drug));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //接收导航传过来的参数  现在是在此处初始化了表格数据
 | 
				
			||||||
 | 
					        public void OnNavigatedTo(NavigationContext navigationContext)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            _eventAggregator.GetEvent<PortUtilEvent>().Subscribe(DoMyPrismEvent);
 | 
				
			||||||
 | 
					            _eventAggregator.GetEvent<AddDrugEvent>().Subscribe(AddAction);
 | 
				
			||||||
 | 
					            FindDrawerCount();
 | 
				
			||||||
 | 
					            RequestData();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //每次导航的时候,该实列用不用重新创建,true是不重新创建,false是重新创建
 | 
				
			||||||
 | 
					        public bool IsNavigationTarget(NavigationContext navigationContext)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //这个方法用于拦截请求
 | 
				
			||||||
 | 
					        public void OnNavigatedFrom(NavigationContext navigationContext)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            // 取消消息订阅
 | 
				
			||||||
 | 
					            _eventAggregator.GetEvent<PortUtilEvent>().Unsubscribe(DoMyPrismEvent);
 | 
				
			||||||
 | 
					            _eventAggregator.GetEvent<AddDrugEvent>().Unsubscribe(AddAction);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -21,7 +21,7 @@ using System.Threading;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace DM_Weight.ViewModels
 | 
					namespace DM_Weight.ViewModels
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class BindingChannelDialogViewModel : BindableBase, IDialogAware, IRegionMemberLifetime
 | 
					    public class BindingChannelDialogViewModel : BindableBase, IDialogAware
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public string Title => "库位绑定";
 | 
					        public string Title => "库位绑定";
 | 
				
			||||||
| 
						 | 
					@ -50,14 +50,14 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        IEventAggregator _eventAggregator;
 | 
					        IEventAggregator _eventAggregator;
 | 
				
			||||||
        PortUtil _portUtil;
 | 
					        PortUtil _portUtil;
 | 
				
			||||||
        //ScreenUtil _screenUtil;
 | 
					        //ScreenUtil _screenUtil;
 | 
				
			||||||
        private SqlSugarScope _sqlSugarScope1;
 | 
					        ////private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
        public BindingChannelDialogViewModel(IEventAggregator eventAggregator, PortUtil portUtil, SqlSugarScope sqlSugarScope//, ScreenUtil screenUtil
 | 
					        public BindingChannelDialogViewModel(IEventAggregator eventAggregator, PortUtil portUtil//, ScreenUtil screenUtil
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            _eventAggregator = eventAggregator;
 | 
					            _eventAggregator = eventAggregator;
 | 
				
			||||||
            _portUtil = portUtil;
 | 
					            _portUtil = portUtil;
 | 
				
			||||||
            //_screenUtil = screenUtil;
 | 
					            //_screenUtil = screenUtil;
 | 
				
			||||||
            this._sqlSugarScope1 = sqlSugarScope;
 | 
					            ////this.SqlSugarHelper.Db = sqlSugarScope;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public int DrawerNo
 | 
					        public int DrawerNo
 | 
				
			||||||
| 
						 | 
					@ -110,13 +110,13 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            List<DrugInfo> DrugList = null;
 | 
					            List<DrugInfo> DrugList = null;
 | 
				
			||||||
            if (!string.IsNullOrEmpty(pycode))
 | 
					            if (!string.IsNullOrEmpty(pycode))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                //DrugList = _sqlSugarScope1.Queryable<DrugInfo>().Includes<DrugManuNo>(di => di.DrugManuNos).Where(di => di.PyCode.Contains(pycode)).OrderBy(di => di.DrugId).ToList();
 | 
					                //DrugList = SqlSugarHelper.Db.Queryable<DrugInfo>().Includes<DrugManuNo>(di => di.DrugManuNos).Where(di => di.PyCode.Contains(pycode)).OrderBy(di => di.DrugId).ToList();
 | 
				
			||||||
                DrugList = _sqlSugarScope1.Queryable<DrugInfo>().Includes<DrugManuNo>(di => di.DrugManuNos).Where(di => di.PyCode.Contains(pycode)).OrderBy(di => di.DrugId).ToList();
 | 
					                DrugList = SqlSugarHelper.Db.Queryable<DrugInfo>().Includes<DrugManuNo>(di => di.DrugManuNos).Where(di => di.PyCode.Contains(pycode)).OrderBy(di => di.DrugId).ToList();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            else
 | 
					            else
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                //DrugList = _sqlSugarScope1.Queryable<DrugInfo>().Includes<DrugManuNo>(di => di.DrugManuNos).OrderBy(di => di.DrugId).ToList();
 | 
					                //DrugList = SqlSugarHelper.Db.Queryable<DrugInfo>().Includes<DrugManuNo>(di => di.DrugManuNos).OrderBy(di => di.DrugId).ToList();
 | 
				
			||||||
                DrugList = _sqlSugarScope1.Queryable<DrugInfo>().Includes<DrugManuNo>(di => di.DrugManuNos).OrderBy(di => di.DrugId).ToList();
 | 
					                DrugList = SqlSugarHelper.Db.Queryable<DrugInfo>().Includes<DrugManuNo>(di => di.DrugManuNos).OrderBy(di => di.DrugId).ToList();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            return DrugList;
 | 
					            return DrugList;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					@ -209,8 +209,8 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private void GetAllDrugInfos()
 | 
					        private void GetAllDrugInfos()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            //var list = _sqlSugarScope1.Queryable<DrugInfo>().Includes<DrugManuNo>(di => di.DrugManuNos).OrderBy(di => di.DrugId).ToList();
 | 
					            //var list = SqlSugarHelper.Db.Queryable<DrugInfo>().Includes<DrugManuNo>(di => di.DrugManuNos).OrderBy(di => di.DrugId).ToList();
 | 
				
			||||||
            var list = _sqlSugarScope1.Queryable<DrugInfo>().Includes<DrugManuNo>(di => di.DrugManuNos).OrderBy(di => di.DrugId).ToList();
 | 
					            var list = SqlSugarHelper.Db.Queryable<DrugInfo>().Includes<DrugManuNo>(di => di.DrugManuNos).OrderBy(di => di.DrugId).ToList();
 | 
				
			||||||
            DrugInfos = list;
 | 
					            DrugInfos = list;
 | 
				
			||||||
            DrugInfos_PY = list;
 | 
					            DrugInfos_PY = list;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					@ -219,14 +219,14 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            Channels?.Clear();
 | 
					            Channels?.Clear();
 | 
				
			||||||
            int totalCount = 0;
 | 
					            int totalCount = 0;
 | 
				
			||||||
            //var list = _sqlSugarScope1.Queryable<ChannelStock>()
 | 
					            //var list = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
            //    .Includes<DrugInfo>(cs => cs.DrugInfo)
 | 
					            //    .Includes<DrugInfo>(cs => cs.DrugInfo)
 | 
				
			||||||
            //    .WhereIF(DrawerNo > 0, cs => cs.DrawerNo == DrawerNo)
 | 
					            //    .WhereIF(DrawerNo > 0, cs => cs.DrawerNo == DrawerNo)
 | 
				
			||||||
            //    .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1"))
 | 
					            //    .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1"))
 | 
				
			||||||
            //    .OrderBy(cs => cs.DrawerNo)
 | 
					            //    .OrderBy(cs => cs.DrawerNo)
 | 
				
			||||||
            //    .OrderBy(cs => cs.ColNo)
 | 
					            //    .OrderBy(cs => cs.ColNo)
 | 
				
			||||||
            //    .ToPageList(PageNum, PageSize, ref totalCount);
 | 
					            //    .ToPageList(PageNum, PageSize, ref totalCount);
 | 
				
			||||||
            var list = _sqlSugarScope1.Queryable<ChannelStock>()
 | 
					            var list = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
        .Includes<DrugInfo>(cs => cs.DrugInfo)
 | 
					        .Includes<DrugInfo>(cs => cs.DrugInfo)
 | 
				
			||||||
        .WhereIF(DrawerNo > 0, cs => cs.DrawerNo == DrawerNo)
 | 
					        .WhereIF(DrawerNo > 0, cs => cs.DrawerNo == DrawerNo)
 | 
				
			||||||
        .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1"))
 | 
					        .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1"))
 | 
				
			||||||
| 
						 | 
					@ -268,7 +268,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        if (DrugInfo != null)
 | 
					                        if (DrugInfo != null)
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            int count = _sqlSugarScope1.Queryable<ChannelStock>().Where(cs => cs.DrugId.Equals(DrugInfo.DrugId.ToString())).Where(cs => cs.DrawerType != 1).Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).Count();
 | 
					                            int count = SqlSugarHelper.Db.Queryable<ChannelStock>().Where(cs => cs.DrugId.Equals(DrugInfo.DrugId.ToString())).Where(cs => cs.DrawerType != 1).Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).Count();
 | 
				
			||||||
                            if (count == 0)
 | 
					                            if (count == 0)
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                var item = SelectChannels[0];
 | 
					                                var item = SelectChannels[0];
 | 
				
			||||||
| 
						 | 
					@ -278,8 +278,8 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                                    item.PosNo = 0;
 | 
					                                    item.PosNo = 0;
 | 
				
			||||||
                                }
 | 
					                                }
 | 
				
			||||||
                                item.DrugId = DrugInfo.DrugId.ToString();
 | 
					                                item.DrugId = DrugInfo.DrugId.ToString();
 | 
				
			||||||
                                //_sqlSugarScope1.Updateable(item).UpdateColumns(it => new { it.DrugId, it.PosNo }).ExecuteCommand();
 | 
					                                //SqlSugarHelper.Db.Updateable(item).UpdateColumns(it => new { it.DrugId, it.PosNo }).ExecuteCommand();
 | 
				
			||||||
                                _sqlSugarScope1.Updateable(item).UpdateColumns(it => new { it.DrugId, it.PosNo }).ExecuteCommand();
 | 
					                                SqlSugarHelper.Db.Updateable(item).UpdateColumns(it => new { it.DrugId, it.PosNo }).ExecuteCommand();
 | 
				
			||||||
                                GetChannelsByDrawerNo();
 | 
					                                GetChannelsByDrawerNo();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                if (item.BoardType == 5)
 | 
					                                if (item.BoardType == 5)
 | 
				
			||||||
| 
						 | 
					@ -339,7 +339,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                            //    item.ManuNo = DrugManuNo.ManuNo;
 | 
					                            //    item.ManuNo = DrugManuNo.ManuNo;
 | 
				
			||||||
                            //    item.DrugInfo = DrugInfo;
 | 
					                            //    item.DrugInfo = DrugInfo;
 | 
				
			||||||
                            //    item.EffDate = String.Format("{0:yyyy-MM-dd}", DrugManuNo.EffDate);
 | 
					                            //    item.EffDate = String.Format("{0:yyyy-MM-dd}", DrugManuNo.EffDate);
 | 
				
			||||||
                            //    _sqlSugarScope1.Updateable(item).UpdateColumns(it => new { it.DrugId, it.ManuNo, it.EffDate, it.PosNo }).ExecuteCommand();
 | 
					                            //    SqlSugarHelper.Db.Updateable(item).UpdateColumns(it => new { it.DrugId, it.ManuNo, it.EffDate, it.PosNo }).ExecuteCommand();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            //    if (item.BoardType == 5)
 | 
					                            //    if (item.BoardType == 5)
 | 
				
			||||||
                            //    {
 | 
					                            //    {
 | 
				
			||||||
| 
						 | 
					@ -369,7 +369,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                            //    item.ManuNo = DrugManuNo.ManuNo;
 | 
					                            //    item.ManuNo = DrugManuNo.ManuNo;
 | 
				
			||||||
                            //    item.DrugInfo = DrugInfo;
 | 
					                            //    item.DrugInfo = DrugInfo;
 | 
				
			||||||
                            //    item.EffDate = String.Format("{0:yyyy-MM-dd}", DrugManuNo.EffDate);
 | 
					                            //    item.EffDate = String.Format("{0:yyyy-MM-dd}", DrugManuNo.EffDate);
 | 
				
			||||||
                            //    _sqlSugarScope1.Updateable(item).UpdateColumns(it => new { it.DrugId, it.ManuNo, it.EffDate, it.PosNo }).ExecuteCommand();
 | 
					                            //    SqlSugarHelper.Db.Updateable(item).UpdateColumns(it => new { it.DrugId, it.ManuNo, it.EffDate, it.PosNo }).ExecuteCommand();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            //    if (item.BoardType == 5)
 | 
					                            //    if (item.BoardType == 5)
 | 
				
			||||||
                            //    {
 | 
					                            //    {
 | 
				
			||||||
| 
						 | 
					@ -402,8 +402,8 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                                item.ManuNo = DrugManuNo.ManuNo;
 | 
					                                item.ManuNo = DrugManuNo.ManuNo;
 | 
				
			||||||
                                item.DrugInfo = DrugInfo;
 | 
					                                item.DrugInfo = DrugInfo;
 | 
				
			||||||
                                item.EffDate = String.Format("{0:yyyy-MM-dd}", DrugManuNo.EffDate);
 | 
					                                item.EffDate = String.Format("{0:yyyy-MM-dd}", DrugManuNo.EffDate);
 | 
				
			||||||
                                //_sqlSugarScope1.Updateable(item).UpdateColumns(it => new { it.DrugId, it.ManuNo, it.EffDate, it.PosNo }).ExecuteCommand();
 | 
					                                //SqlSugarHelper.Db.Updateable(item).UpdateColumns(it => new { it.DrugId, it.ManuNo, it.EffDate, it.PosNo }).ExecuteCommand();
 | 
				
			||||||
                                _sqlSugarScope1.Updateable(item).UpdateColumns(it => new { it.DrugId, it.ManuNo, it.EffDate, it.PosNo }).ExecuteCommand();
 | 
					                                SqlSugarHelper.Db.Updateable(item).UpdateColumns(it => new { it.DrugId, it.ManuNo, it.EffDate, it.PosNo }).ExecuteCommand();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                if (item.BoardType == 5)
 | 
					                                if (item.BoardType == 5)
 | 
				
			||||||
                                {
 | 
					                                {
 | 
				
			||||||
| 
						 | 
					@ -460,8 +460,8 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                        item.ManuNo = null;
 | 
					                        item.ManuNo = null;
 | 
				
			||||||
                        item.EffDate = null;
 | 
					                        item.EffDate = null;
 | 
				
			||||||
                        item.DrugInfo = null;
 | 
					                        item.DrugInfo = null;
 | 
				
			||||||
                        //_sqlSugarScope1.Updateable(item).UpdateColumns(it => new { it.DrugId, it.ManuNo, it.EffDate }).ExecuteCommand();
 | 
					                        //SqlSugarHelper.Db.Updateable(item).UpdateColumns(it => new { it.DrugId, it.ManuNo, it.EffDate }).ExecuteCommand();
 | 
				
			||||||
                        _sqlSugarScope1.Updateable(item).UpdateColumns(it => new { it.DrugId, it.ManuNo, it.EffDate }).ExecuteCommand();
 | 
					                        SqlSugarHelper.Db.Updateable(item).UpdateColumns(it => new { it.DrugId, it.ManuNo, it.EffDate }).ExecuteCommand();
 | 
				
			||||||
                        if (item.BoardType == 5)
 | 
					                        if (item.BoardType == 5)
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            // 清除显示屏库位信息
 | 
					                            // 清除显示屏库位信息
 | 
				
			||||||
| 
						 | 
					@ -499,8 +499,8 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                        item.ManuNo = null;
 | 
					                        item.ManuNo = null;
 | 
				
			||||||
                        item.EffDate = null;
 | 
					                        item.EffDate = null;
 | 
				
			||||||
                        item.DrugInfo = null;
 | 
					                        item.DrugInfo = null;
 | 
				
			||||||
                        //_sqlSugarScope1.Updateable(item).UpdateColumns(it => new { it.DrugId, it.ManuNo, it.EffDate }).ExecuteCommand();
 | 
					                        //SqlSugarHelper.Db.Updateable(item).UpdateColumns(it => new { it.DrugId, it.ManuNo, it.EffDate }).ExecuteCommand();
 | 
				
			||||||
                        _sqlSugarScope1.Updateable(item).UpdateColumns(it => new { it.DrugId, it.ManuNo, it.EffDate }).ExecuteCommand();
 | 
					                        SqlSugarHelper.Db.Updateable(item).UpdateColumns(it => new { it.DrugId, it.ManuNo, it.EffDate }).ExecuteCommand();
 | 
				
			||||||
                        if (item.BoardType == 5)
 | 
					                        if (item.BoardType == 5)
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            // 清除显示屏库位信息
 | 
					                            // 清除显示屏库位信息
 | 
				
			||||||
| 
						 | 
					@ -532,7 +532,6 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public bool KeepAlive => false;
 | 
					 | 
				
			||||||
        string message = string.Empty;
 | 
					        string message = string.Empty;
 | 
				
			||||||
        private void DoMyPrismEvent(DeviceMsg msg)
 | 
					        private void DoMyPrismEvent(DeviceMsg msg)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,544 @@
 | 
				
			||||||
 | 
					using MaterialDesignThemes.Wpf;
 | 
				
			||||||
 | 
					using Prism.Commands;
 | 
				
			||||||
 | 
					using Prism.Events;
 | 
				
			||||||
 | 
					using Prism.Mvvm;
 | 
				
			||||||
 | 
					using Prism.Regions;
 | 
				
			||||||
 | 
					using Prism.Services.Dialogs;
 | 
				
			||||||
 | 
					using SqlSugar;
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Configuration;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using System.Windows.Media;
 | 
				
			||||||
 | 
					using DM_Weight.Models;
 | 
				
			||||||
 | 
					using DM_Weight.msg;
 | 
				
			||||||
 | 
					using DM_Weight.Port;
 | 
				
			||||||
 | 
					using DM_Weight.util;
 | 
				
			||||||
 | 
					using log4net;
 | 
				
			||||||
 | 
					using System.Threading;
 | 
				
			||||||
 | 
					using System.Reflection.Metadata.Ecma335;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class BindingChannelNewDialogViewModel : BindableBase, IDialogAware, IRegionMemberLifetime
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public string Title => "库位绑定";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public event Action<IDialogResult> RequestClose;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private int _drawerNo = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        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);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        IEventAggregator _eventAggregator;
 | 
				
			||||||
 | 
					        PortUtil _portUtil;
 | 
				
			||||||
 | 
					        //ScreenUtil _screenUtil;
 | 
				
			||||||
 | 
					        ////private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
 | 
					        public static BindingChannelNewDialogViewModel vm;
 | 
				
			||||||
 | 
					        public BindingChannelNewDialogViewModel(IEventAggregator eventAggregator, PortUtil portUtil//, ScreenUtil screenUtil
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            _eventAggregator = eventAggregator;
 | 
				
			||||||
 | 
					            _portUtil = portUtil;
 | 
				
			||||||
 | 
					            //_screenUtil = screenUtil;
 | 
				
			||||||
 | 
					            ////this.SqlSugarHelper.Db = sqlSugarScope;
 | 
				
			||||||
 | 
					            vm = this;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public int DrawerNo
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _drawerNo;
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _drawerNo, value);
 | 
				
			||||||
 | 
					                GetChannelsByDrawerNo();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private DrugInfo? _drugInfo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public DrugInfo? DrugInfo
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _drugInfo;
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _drugInfo, value);
 | 
				
			||||||
 | 
					                //if (_drugInfo != null)
 | 
				
			||||||
 | 
					                //{
 | 
				
			||||||
 | 
					                //    DrugManuNos = _drugInfo.DrugManuNos.OrderByDescending(dm => dm.ManuNo).ToList();
 | 
				
			||||||
 | 
					                //}
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        private List<DrugInfo>? _drugInfos;
 | 
				
			||||||
 | 
					        public List<DrugInfo>? DrugInfos
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _drugInfos;
 | 
				
			||||||
 | 
					            set => SetProperty(ref _drugInfos, value);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        ////拼音码对应药品实体
 | 
				
			||||||
 | 
					        //private DrugInfo? _durgInfo_for_py;
 | 
				
			||||||
 | 
					        //public DrugInfo? DrugInfo_Py
 | 
				
			||||||
 | 
					        //{
 | 
				
			||||||
 | 
					        //    get => _durgInfo_for_py;
 | 
				
			||||||
 | 
					        //    set
 | 
				
			||||||
 | 
					        //    {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //        SetProperty(ref _durgInfo_for_py, value);
 | 
				
			||||||
 | 
					        //        if (_durgInfo_for_py != null)
 | 
				
			||||||
 | 
					        //        {
 | 
				
			||||||
 | 
					        //            DrugInfos = GetDrugByDrugPY(_durgInfo_for_py.PyCode);
 | 
				
			||||||
 | 
					        //        }
 | 
				
			||||||
 | 
					        //        else
 | 
				
			||||||
 | 
					        //        {
 | 
				
			||||||
 | 
					        //            DrugInfos = GetDrugByDrugPY("");
 | 
				
			||||||
 | 
					        //        }
 | 
				
			||||||
 | 
					        //    }
 | 
				
			||||||
 | 
					        //}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //#region 根据药品拼音码查询药品名称
 | 
				
			||||||
 | 
					        //private List<DrugInfo> GetDrugByDrugPY(string pycode)
 | 
				
			||||||
 | 
					        //{
 | 
				
			||||||
 | 
					        //    List<DrugInfo> DrugList = null;
 | 
				
			||||||
 | 
					        //    if (!string.IsNullOrEmpty(pycode))
 | 
				
			||||||
 | 
					        //    {
 | 
				
			||||||
 | 
					        //        DrugList = SqlSugarHelper.Db.Queryable<DrugInfo>().Includes<DrugManuNo>(di => di.DrugManuNos).Where(di => di.PyCode.Contains(pycode)).OrderBy(di => di.DrugId).ToList();
 | 
				
			||||||
 | 
					        //    }
 | 
				
			||||||
 | 
					        //    else
 | 
				
			||||||
 | 
					        //    {
 | 
				
			||||||
 | 
					        //        DrugList = SqlSugarHelper.Db.Queryable<DrugInfo>().Includes<DrugManuNo>(di => di.DrugManuNos).OrderBy(di => di.DrugId).ToList();
 | 
				
			||||||
 | 
					        //    }
 | 
				
			||||||
 | 
					        //    return DrugList;
 | 
				
			||||||
 | 
					        //}
 | 
				
			||||||
 | 
					        //private List<DrugInfo>? _drugInfos_py;
 | 
				
			||||||
 | 
					        //public List<DrugInfo>? DrugInfos_PY
 | 
				
			||||||
 | 
					        //{
 | 
				
			||||||
 | 
					        //    get => _drugInfos_py;
 | 
				
			||||||
 | 
					        //    set => SetProperty(ref _drugInfos_py, value);
 | 
				
			||||||
 | 
					        //}
 | 
				
			||||||
 | 
					        //#endregion 根据药品拼音码查询药品名称
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        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 drug_name_spec 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) || di.DrugId.Contains(text)).OrderBy(di => di.DrugName).OrderBy(di => di.DrugId).ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        //private List<DrugInfo>? _drugInfos;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //public List<DrugInfo>? DrugInfos
 | 
				
			||||||
 | 
					        //{
 | 
				
			||||||
 | 
					        //    get => _drugInfos;
 | 
				
			||||||
 | 
					        //    set => SetProperty(ref _drugInfos, 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<ChannelList>? _channels;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public List<ChannelList>? Channels
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _channels;
 | 
				
			||||||
 | 
					            set => SetProperty(ref _channels, value);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private int _totalCount = 0;
 | 
				
			||||||
 | 
					        public int TotalCount { get => _totalCount; set => SetProperty(ref _totalCount, value); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private int _pageNum = 1;
 | 
				
			||||||
 | 
					        public int PageNum
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _pageNum;
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _pageNum, value);
 | 
				
			||||||
 | 
					                GetChannelsByDrawerNo();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private int _pageCount = 1;
 | 
				
			||||||
 | 
					        public int PageCount
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _pageCount;
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _pageCount, value);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private int _pageSize = 8;
 | 
				
			||||||
 | 
					        public int PageSize
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _pageSize;
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _pageSize, value);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool CanCloseDialog()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void OnDialogClosed()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            _eventAggregator.GetEvent<PortUtilEvent>().Unsubscribe(DoMyPrismEvent);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private void GetAllDrugInfos()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            //var list = SqlSugarHelper.Db.Queryable<DrugInfo>().Includes<DrugManuNo>(di => di.DrugManuNos).OrderBy(di => di.DrugId).ToList();
 | 
				
			||||||
 | 
					            //DrugInfos = list;
 | 
				
			||||||
 | 
					            //DrugInfos_PY = list;
 | 
				
			||||||
 | 
					            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 drug_name_spec FROM `drug_info` d";
 | 
				
			||||||
 | 
					            DrugInfos = SqlSugarHelper.Db.SqlQueryable<DrugInfo>(str).OrderBy(di => di.DrugName).OrderBy(di => di.DrugId).ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private void GetChannelsByDrawerNo()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Channels?.Clear();
 | 
				
			||||||
 | 
					            int totalCount = 0;
 | 
				
			||||||
 | 
					            var list = SqlSugarHelper.Db.Queryable<ChannelList>()
 | 
				
			||||||
 | 
					                .Includes<DrugInfo>(cl => cl.Drug)
 | 
				
			||||||
 | 
					                .Includes<ChannelStock>(cs => cs.channelStocks)
 | 
				
			||||||
 | 
					                .WhereIF(DrawerNo > 0, cl => cl.DrawerNo == DrawerNo)
 | 
				
			||||||
 | 
					                .Where(cl => cl.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1"))
 | 
				
			||||||
 | 
					                .OrderBy(cl => cl.DrawerNo)
 | 
				
			||||||
 | 
					                .OrderBy(cl => cl.ColNo)
 | 
				
			||||||
 | 
					                .ToPageList(PageNum, PageSize, ref totalCount);
 | 
				
			||||||
 | 
					            if(list!=null&&list.Count>0)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                for (int i = 0; i < list.Count; i++)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    if(list[i].channelStocks!=null&& list[i].channelStocks.Count>0)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        for (int j = 0; j < list[i].channelStocks.Count; j++)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            list[i].totalCount += list[i].channelStocks[j].Quantity;
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            Channels = list;
 | 
				
			||||||
 | 
					            TotalCount = totalCount;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        public void OnDialogOpened(IDialogParameters parameters)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (parameters.ContainsKey("DrawerNo"))
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                DrawerNo = parameters.GetValue<int>("DrawerNo");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            GetAllDrugInfos();
 | 
				
			||||||
 | 
					            GetChannelsByDrawerNo();
 | 
				
			||||||
 | 
					            _eventAggregator.GetEvent<PortUtilEvent>().Subscribe(DoMyPrismEvent);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        public DelegateCommand Query
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                GetChannelsByDrawerNo();
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public DelegateCommand BindingDrug
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand(async () =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                var SelectChannels = Channels.FindAll(item => item.IsSelected);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (SelectChannels.All(it => it.DrawerType != 1))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    if (SelectChannels.Count == 1)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        if (DrugInfo != null)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            int count = SqlSugarHelper.Db.Queryable<ChannelList>().Where(cs => cs.DrugId.Equals(DrugInfo.DrugId.ToString())).Where(cs => cs.DrawerType != 1).Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).Count();
 | 
				
			||||||
 | 
					                            if (count == 0)
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                var item = SelectChannels[0];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                if (item.DrugId == null || !DrugInfo.DrugId.ToString().Equals(item.DrugId))
 | 
				
			||||||
 | 
					                                {
 | 
				
			||||||
 | 
					                                    item.PosNo = 0;
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                                item.DrugId = DrugInfo.DrugId.ToString();
 | 
				
			||||||
 | 
					                                SqlSugarHelper.Db.Updateable(item).UpdateColumns(it => new { it.DrugId, it.PosNo }).ExecuteCommand();
 | 
				
			||||||
 | 
					                                GetChannelsByDrawerNo();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                if (item.BoardType == 5)
 | 
				
			||||||
 | 
					                                {
 | 
				
			||||||
 | 
					                                    _portUtil.WindowName = "BindingChannelDialog";
 | 
				
			||||||
 | 
					                                    // 向显示屏写入库位信息
 | 
				
			||||||
 | 
					                                    _portUtil.WriteChannelInfo(1, DrugInfo.DrugName, item.DrawerNo, item.ColNo);
 | 
				
			||||||
 | 
					                                    await Task.Delay(200);
 | 
				
			||||||
 | 
					                                    _portUtil.WriteChannelInfo(2, DrugInfo.DrugSpec, item.DrawerNo, item.ColNo);
 | 
				
			||||||
 | 
					                                    await Task.Delay(200);
 | 
				
			||||||
 | 
					                                    _portUtil.WriteChannelInfo(8, DrugInfo.Manufactory.Length>10? DrugInfo.Manufactory.Substring(0, 10): DrugInfo.Manufactory, item.DrawerNo, item.ColNo);
 | 
				
			||||||
 | 
					                                    await Task.Delay(200);
 | 
				
			||||||
 | 
					                                    //_portUtil.WriteChannelInfo(6, DrugManuNo.EffDate==null?"": DrugManuNo.EffDate, item.DrawerNo, item.ColNo);
 | 
				
			||||||
 | 
					                                    //await Task.Delay(200);
 | 
				
			||||||
 | 
					                                    //_portUtil.WriteChannelInfo(5, DrugManuNo.ManuNo, item.DrawerNo, item.ColNo);
 | 
				
			||||||
 | 
					                                    //await Task.Delay(200);
 | 
				
			||||||
 | 
					                                    _portUtil.ShowContent(item.DrawerNo, item.ColNo);
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                                //_screenUtil.SetStockInfo(item, 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                            else
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                SnackbarBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#b71c1c"));
 | 
				
			||||||
 | 
					                                SnackbarMessageQueue.Enqueue($"药品【{DrugInfo.DrugName}】已经绑定了回收库位不可再次绑定");
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                        else
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            SnackbarBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#b71c1c"));
 | 
				
			||||||
 | 
					                            SnackbarMessageQueue.Enqueue("请选择库位需要绑定的药品信息");
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    else
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        SnackbarBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#b71c1c"));
 | 
				
			||||||
 | 
					                        SnackbarMessageQueue.Enqueue("每种药品只能绑定一个回收库位");
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    //if (DrugInfo != null && DrugManuNo != null)
 | 
				
			||||||
 | 
					                    //{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    var c = SelectChannels.Count;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    if (c > 0)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        if(c>1)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            SnackbarBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#b71c1c"));
 | 
				
			||||||
 | 
					                            SnackbarMessageQueue.Enqueue("同一药品不可绑多个库位");
 | 
				
			||||||
 | 
					                            return;
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                        //else
 | 
				
			||||||
 | 
					                        //{
 | 
				
			||||||
 | 
					                        //    int count = SqlSugarHelper.Db.Queryable<ChannelList>()
 | 
				
			||||||
 | 
					                        //    .Where(cs => cs.DrugId.Equals(DrugInfo.DrugId.ToString()))
 | 
				
			||||||
 | 
					                        //    .Where(cs => cs.DrawerType == 1)
 | 
				
			||||||
 | 
					                        //    .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1"))
 | 
				
			||||||
 | 
					                        //    .Where(cs=>cs.DrawerNo=)
 | 
				
			||||||
 | 
					                        //    .Count();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        //    if (count > 0)
 | 
				
			||||||
 | 
					                        //    {
 | 
				
			||||||
 | 
					                        //        SnackbarBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#b71c1c"));
 | 
				
			||||||
 | 
					                        //        SnackbarMessageQueue.Enqueue("该药品已绑定库位,不可绑定多个库位");
 | 
				
			||||||
 | 
					                        //        return;
 | 
				
			||||||
 | 
					                        //    }
 | 
				
			||||||
 | 
					                        //}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        for (int i = 0; i < SelectChannels.Count; i++)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            var item = SelectChannels[i];
 | 
				
			||||||
 | 
					                            int count = SqlSugarHelper.Db.Queryable<ChannelList>()
 | 
				
			||||||
 | 
					                           .Where(cs => cs.DrugId.Equals(DrugInfo.DrugId.ToString()))
 | 
				
			||||||
 | 
					                           .Where(cs => cs.DrawerType == 1)
 | 
				
			||||||
 | 
					                           .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1"))
 | 
				
			||||||
 | 
					                           .Where(cs => cs.DrawerNo == item.DrawerNo)
 | 
				
			||||||
 | 
					                           .Count();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            if (count > 0)
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                SnackbarBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#b71c1c"));
 | 
				
			||||||
 | 
					                                SnackbarMessageQueue.Enqueue("该药品已绑定库位,不可绑定多个库位");
 | 
				
			||||||
 | 
					                                return;
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                            var channelStock = SqlSugarHelper.Db.Queryable<ChannelStock>().Where(cs => cs.Chnguid == item.Id&&cs.Quantity>0).ToList();
 | 
				
			||||||
 | 
					                            if(channelStock.Count>0)
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                //有库存,不能解绑
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                SnackbarBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#b71c1c"));
 | 
				
			||||||
 | 
					                                SnackbarMessageQueue.Enqueue($"库位{item.DrawerNo}-{item.ColNo}中还存在药品,不能绑定其他药品");
 | 
				
			||||||
 | 
					                                continue;
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                            if (item.DrugId == null || !DrugInfo.DrugId.ToString().Equals(item.DrugId))
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                item.PosNo = 0;
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            item.DrugId = DrugInfo.DrugId.ToString();
 | 
				
			||||||
 | 
					                            //item.ManuNo = DrugManuNo.ManuNo;
 | 
				
			||||||
 | 
					                            item.Drug = DrugInfo;
 | 
				
			||||||
 | 
					                            //item.EffDate = String.Format("{0:yyyy-MM-dd}", DrugManuNo.EffDate);
 | 
				
			||||||
 | 
					                            SqlSugarHelper.Db.Updateable(item).UpdateColumns(it => new { it.DrugId, it.PosNo }).ExecuteCommand();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            if (item.BoardType == 5)
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                _portUtil.WindowName = "BindingChannelDialog";
 | 
				
			||||||
 | 
					                                // 向显示屏写入库位信息
 | 
				
			||||||
 | 
					                                _portUtil.WriteChannelInfo(1, DrugInfo.DrugName, item.DrawerNo, item.ColNo);
 | 
				
			||||||
 | 
					                                await Task.Delay(200);
 | 
				
			||||||
 | 
					                                //Thread.Sleep(200);
 | 
				
			||||||
 | 
					                                _portUtil.WriteChannelInfo(2, DrugInfo.DrugSpec, item.DrawerNo, item.ColNo);
 | 
				
			||||||
 | 
					                                await Task.Delay(200);
 | 
				
			||||||
 | 
					                                //Thread.Sleep(200);
 | 
				
			||||||
 | 
					                                _portUtil.WriteChannelInfo(8, DrugInfo.Manufactory.Length > 10 ? DrugInfo.Manufactory.Substring(0, 10) : DrugInfo.Manufactory, item.DrawerNo, item.ColNo);
 | 
				
			||||||
 | 
					                                await Task.Delay(200);
 | 
				
			||||||
 | 
					                                //Thread.Sleep(200);
 | 
				
			||||||
 | 
					                                //_portUtil.WriteChannelInfo(6, DrugManuNo.ManuNo, item.DrawerNo, item.ColNo);
 | 
				
			||||||
 | 
					                                //await Task.Delay(200);
 | 
				
			||||||
 | 
					                                //Thread.Sleep(200);
 | 
				
			||||||
 | 
					                                //_portUtil.WriteChannelInfo(5, String.Format("{0:yyyy-MM-dd}", DrugManuNo.EffDate), item.DrawerNo, item.ColNo);
 | 
				
			||||||
 | 
					                                ////await Task.Delay(200);
 | 
				
			||||||
 | 
					                                //Thread.Sleep(200);
 | 
				
			||||||
 | 
					                                _portUtil.ShowContent(item.DrawerNo, item.ColNo);
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        GetChannelsByDrawerNo();
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    else
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        SnackbarBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#b71c1c"));
 | 
				
			||||||
 | 
					                        SnackbarMessageQueue.Enqueue("所选库位中无可绑定库位【库位还存在药品】");
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    //}
 | 
				
			||||||
 | 
					                    //else
 | 
				
			||||||
 | 
					                    //{
 | 
				
			||||||
 | 
					                    //    SnackbarBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#b71c1c"));
 | 
				
			||||||
 | 
					                    //    SnackbarMessageQueue.Enqueue("请选择库位需要绑定的药品及批次信息");
 | 
				
			||||||
 | 
					                    //}
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public DelegateCommand RemoveBinding
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand(async () =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var SelectChannels = Channels.FindAll(item => item.IsSelected && item.DrugId != null);
 | 
				
			||||||
 | 
					                var c = SelectChannels.Count;
 | 
				
			||||||
 | 
					                if (c > 0)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    SelectChannels.ForEach(async item =>
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        var channelStock = SqlSugarHelper.Db.Queryable<ChannelStock>().Where(cs => cs.Chnguid == item.Id && cs.Quantity > 0).ToList();
 | 
				
			||||||
 | 
					                        if (channelStock.Count > 0)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            SnackbarBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#b71c1c"));
 | 
				
			||||||
 | 
					                            SnackbarMessageQueue.Enqueue("所选库位中无可解绑药品【库位还存在药品】");
 | 
				
			||||||
 | 
					                            //该药品下的批次还有库存则不能解绑
 | 
				
			||||||
 | 
					                            return;
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        item.DrugId = null;
 | 
				
			||||||
 | 
					                        //item.ManuNo = null;
 | 
				
			||||||
 | 
					                        //item.EffDate = null;
 | 
				
			||||||
 | 
					                        item.Drug = null;
 | 
				
			||||||
 | 
					                        SqlSugarHelper.Db.Updateable(item).UpdateColumns(it => new { it.DrugId }).ExecuteCommand();
 | 
				
			||||||
 | 
					                        SqlSugarHelper.Db.Updateable<ChannelStock>().SetColumns(it =>new ChannelStock { DrugId = null, ManuNo = null, EffDate = null} ).Where(it=>it.Chnguid==item.Id).ExecuteCommand();
 | 
				
			||||||
 | 
					                        if (item.BoardType == 5)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            // 清除显示屏库位信息
 | 
				
			||||||
 | 
					                            _portUtil.ClearContent(item.DrawerNo, item.ColNo);
 | 
				
			||||||
 | 
					                            await Task.Delay(200);
 | 
				
			||||||
 | 
					                            _portUtil.ShowContent(item.DrawerNo, item.ColNo);
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        //_screenUtil.SetStockInfo(item, 1);
 | 
				
			||||||
 | 
					                    });
 | 
				
			||||||
 | 
					                    GetChannelsByDrawerNo();
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    SnackbarBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#b71c1c"));
 | 
				
			||||||
 | 
					                    SnackbarMessageQueue.Enqueue("所选库位中无可解绑药品");
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public DelegateCommand BtnCloseCommand
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                //DialogParameters parameters = new DialogParameters();
 | 
				
			||||||
 | 
					                //parameters.Add("",);
 | 
				
			||||||
 | 
					                // 关闭当前窗口
 | 
				
			||||||
 | 
					                RequestClose?.Invoke(new DialogResult(ButtonResult.Cancel));
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
 | 
					        string message = string.Empty;
 | 
				
			||||||
 | 
					        private void DoMyPrismEvent(DeviceMsg msg)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (msg.WindowName == "BindingChannelDialog")
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                switch (msg.EventType)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    case EventType.OPENERROR:
 | 
				
			||||||
 | 
					                        AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            Message = msg.Message,
 | 
				
			||||||
 | 
					                            Type = MsgType.ERROR,
 | 
				
			||||||
 | 
					                        };
 | 
				
			||||||
 | 
					                        if (message != msg.Message)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            message = msg.Message;
 | 
				
			||||||
 | 
					                            _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -29,7 +29,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        public string Title => "交接班";
 | 
					        public string Title => "交接班";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public bool KeepAlive => false;
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
        //交班人 发药人
 | 
					        //交班人 发药人
 | 
				
			||||||
        public UserList Operator { get; set; }
 | 
					        public UserList Operator { get; set; }
 | 
				
			||||||
        private bool _operatorLogin = false;
 | 
					        private bool _operatorLogin = false;
 | 
				
			||||||
| 
						 | 
					@ -164,10 +164,10 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            //{
 | 
					            //{
 | 
				
			||||||
            DateTime dt = DateTime.Now;
 | 
					            DateTime dt = DateTime.Now;
 | 
				
			||||||
            //保存交接班信息(查询当前值班人的最后一条交接班信息(如有则修改状态,没有则插入一条)并写入一条接班人信息)
 | 
					            //保存交接班信息(查询当前值班人的最后一条交接班信息(如有则修改状态,没有则插入一条)并写入一条接班人信息)
 | 
				
			||||||
            //var f = _sqlSugarScope1.UseTran(() =>
 | 
					            //var f = SqlSugarHelper.Db.UseTran(() =>
 | 
				
			||||||
            var f = _sqlSugarScope1.UseTran(() =>
 | 
					            var f = SqlSugarHelper.Db.UseTran(() =>
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                List<HkcChangeShifts> listHkcChangeShifts = _sqlSugarScope1.Queryable<HkcChangeShifts>()
 | 
					                List<HkcChangeShifts> listHkcChangeShifts = SqlSugarHelper.Db.Queryable<HkcChangeShifts>()
 | 
				
			||||||
                  .Where(cs => cs.State == "0")
 | 
					                  .Where(cs => cs.State == "0")
 | 
				
			||||||
                  .WhereIF(Operator != null && !string.IsNullOrEmpty(Operator.UserName), cs => cs.FromOperator == Operator.UserName)
 | 
					                  .WhereIF(Operator != null && !string.IsNullOrEmpty(Operator.UserName), cs => cs.FromOperator == Operator.UserName)
 | 
				
			||||||
                  .WhereIF(Reviewer != null && !string.IsNullOrEmpty(Reviewer.UserName), cs => cs.FromRviewer == Reviewer.UserName)
 | 
					                  .WhereIF(Reviewer != null && !string.IsNullOrEmpty(Reviewer.UserName), cs => cs.FromRviewer == Reviewer.UserName)
 | 
				
			||||||
| 
						 | 
					@ -177,7 +177,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                if (listHkcChangeShifts != null && listHkcChangeShifts.Count > 0)
 | 
					                if (listHkcChangeShifts != null && listHkcChangeShifts.Count > 0)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    //存在则修改,不存在则插入一条
 | 
					                    //存在则修改,不存在则插入一条
 | 
				
			||||||
                    _sqlSugarScope1.Updateable(new HkcChangeShifts()
 | 
					                    SqlSugarHelper.Db.Updateable(new HkcChangeShifts()
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        Id = listHkcChangeShifts[0].Id,
 | 
					                        Id = listHkcChangeShifts[0].Id,
 | 
				
			||||||
                        ToOperator = JieOperator == null ? "" : JieOperator.UserName,
 | 
					                        ToOperator = JieOperator == null ? "" : JieOperator.UserName,
 | 
				
			||||||
| 
						 | 
					@ -188,7 +188,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                else
 | 
					                else
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    _sqlSugarScope1.Insertable(new HkcChangeShifts()
 | 
					                    SqlSugarHelper.Db.Insertable(new HkcChangeShifts()
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        FromOperator = Operator == null ? "" : Operator.UserName,
 | 
					                        FromOperator = Operator == null ? "" : Operator.UserName,
 | 
				
			||||||
                        FromRviewer = Reviewer == null ? "" : Reviewer.UserName,
 | 
					                        FromRviewer = Reviewer == null ? "" : Reviewer.UserName,
 | 
				
			||||||
| 
						 | 
					@ -201,7 +201,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                    }).ExecuteCommand();
 | 
					                    }).ExecuteCommand();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                _sqlSugarScope1.Insertable(new HkcChangeShifts()
 | 
					                SqlSugarHelper.Db.Insertable(new HkcChangeShifts()
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    FromOperator = JieOperator == null ? "" : JieOperator.UserName,
 | 
					                    FromOperator = JieOperator == null ? "" : JieOperator.UserName,
 | 
				
			||||||
                    FromRviewer = JieReviewer == null ? "" : JieReviewer.UserName,
 | 
					                    FromRviewer = JieReviewer == null ? "" : JieReviewer.UserName,
 | 
				
			||||||
| 
						 | 
					@ -225,7 +225,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                                    ORDER BY d2.operation_time DESC,d2.id DESC LIMIT 1) AS beforeNum from (SELECT drug_id,manu_no, SUM(IF(d1.`type` = 1, d1.quantity, 0)) AS getNum,SUM(IF(d1.`type` = 2, d1.quantity, 0)) AS useNum FROM dm_machine_record d1 
 | 
					                                    ORDER BY d2.operation_time DESC,d2.id DESC LIMIT 1) AS beforeNum from (SELECT drug_id,manu_no, SUM(IF(d1.`type` = 1, d1.quantity, 0)) AS getNum,SUM(IF(d1.`type` = 2, d1.quantity, 0)) AS useNum FROM dm_machine_record d1 
 | 
				
			||||||
                                     WHERE d1.`type` IN (1, 2) AND d1.`operation_time` >= @startDate and d1.`operation_time` <=@endDate and d1.machine_id=@machineId GROUP BY d1.Drug_ID ,d1.manu_no) d	
 | 
					                                     WHERE d1.`type` IN (1, 2) AND d1.`operation_time` >= @startDate and d1.`operation_time` <=@endDate and d1.machine_id=@machineId GROUP BY d1.Drug_ID ,d1.manu_no) d	
 | 
				
			||||||
                                    LEFT JOIN drug_info drug on d.drug_id=drug.drug_id left JOIN		 channel_stock		c on c.drug_id=d.drug_id and c.manu_no=d.manu_no AND c.machine_id=@machineId GROUP BY d.Drug_ID ,d.manu_no ";
 | 
					                                    LEFT JOIN drug_info drug on d.drug_id=drug.drug_id left JOIN		 channel_stock		c on c.drug_id=d.drug_id and c.manu_no=d.manu_no AND c.machine_id=@machineId GROUP BY d.Drug_ID ,d.manu_no ";
 | 
				
			||||||
                List<ShiftsReport> shiftsReports = _sqlSugarScope1.SqlQueryable<dynamic>(strSql)
 | 
					                List<ShiftsReport> shiftsReports = SqlSugarHelper.Db.SqlQueryable<dynamic>(strSql)
 | 
				
			||||||
                 .AddParameters(new
 | 
					                 .AddParameters(new
 | 
				
			||||||
                 {
 | 
					                 {
 | 
				
			||||||
                     machineId = ConfigurationManager.AppSettings["machineId"] ?? "DM1",
 | 
					                     machineId = ConfigurationManager.AppSettings["machineId"] ?? "DM1",
 | 
				
			||||||
| 
						 | 
					@ -240,7 +240,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                    for (int i = 0; i < shiftsReports.Count; i++)
 | 
					                    for (int i = 0; i < shiftsReports.Count; i++)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        _sqlSugarScope1.Insertable(new ShiftsReport()
 | 
					                        SqlSugarHelper.Db.Insertable(new ShiftsReport()
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            OptDate = dt,
 | 
					                            OptDate = dt,
 | 
				
			||||||
                            DrugName = shiftsReports[i].DrugName,
 | 
					                            DrugName = shiftsReports[i].DrugName,
 | 
				
			||||||
| 
						 | 
					@ -312,7 +312,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            LoginBtnEnable = false;
 | 
					            LoginBtnEnable = false;
 | 
				
			||||||
            if (!string.IsNullOrEmpty(Username) && !string.IsNullOrEmpty(Password))
 | 
					            if (!string.IsNullOrEmpty(Username) && !string.IsNullOrEmpty(Password))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                UserList userList = _sqlSugarScope1.Queryable<UserList>()
 | 
					                UserList userList = SqlSugarHelper.Db.Queryable<UserList>()
 | 
				
			||||||
                                    .Includes<RoleDm>(u => u.Role)
 | 
					                                    .Includes<RoleDm>(u => u.Role)
 | 
				
			||||||
                                   .InnerJoin<RoleDm>((u, r) => u.RoleId == r.Id)
 | 
					                                   .InnerJoin<RoleDm>((u, r) => u.RoleId == r.Id)
 | 
				
			||||||
                                   .First(u => u.UserName == username && ConfigurationManager.AppSettings["machineId"].ToString().Equals(u.MachineId));
 | 
					                                   .First(u => u.UserName == username && ConfigurationManager.AppSettings["machineId"].ToString().Equals(u.MachineId));
 | 
				
			||||||
| 
						 | 
					@ -508,7 +508,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                if (msg.Message.Equals("LOGIN"))
 | 
					                if (msg.Message.Equals("LOGIN"))
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    UserList userList = _sqlSugarScope1.Queryable<UserList>()
 | 
					                    UserList userList = SqlSugarHelper.Db.Queryable<UserList>()
 | 
				
			||||||
                    .Includes<RoleDm>(u => u.Role)
 | 
					                    .Includes<RoleDm>(u => u.Role)
 | 
				
			||||||
                    .First(u => u.Id == msg.Id);
 | 
					                    .First(u => u.Id == msg.Id);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -609,11 +609,11 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        IEventAggregator _eventAggregator;
 | 
					        IEventAggregator _eventAggregator;
 | 
				
			||||||
        private SqlSugarScope _sqlSugarScope1;
 | 
					        ////private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
        public ChangeShiftsDialogViewModel(IEventAggregator eventAggregator,SqlSugarScope sqlSugarScope)
 | 
					        public ChangeShiftsDialogViewModel(IEventAggregator eventAggregator)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            _eventAggregator = eventAggregator;
 | 
					            _eventAggregator = eventAggregator;
 | 
				
			||||||
            this._sqlSugarScope1 = sqlSugarScope;
 | 
					            ////this.SqlSugarHelper.Db = sqlSugarScope;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public bool CanCloseDialog()
 | 
					        public bool CanCloseDialog()
 | 
				
			||||||
| 
						 | 
					@ -631,8 +631,8 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            HkcChangeShifts changeOperator = GetOperator();
 | 
					            HkcChangeShifts changeOperator = GetOperator();
 | 
				
			||||||
            if (changeOperator != null)
 | 
					            if (changeOperator != null)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                Operator = _sqlSugarScope1.Queryable<UserList>().Where(u => u.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).Single(u => u.UserName == changeOperator.FromOperator);
 | 
					                Operator = SqlSugarHelper.Db.Queryable<UserList>().Where(u => u.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).Single(u => u.UserName == changeOperator.FromOperator);
 | 
				
			||||||
                Reviewer = _sqlSugarScope1.Queryable<UserList>().Where(u => u.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).Single(u => u.UserName == changeOperator.FromRviewer);
 | 
					                Reviewer = SqlSugarHelper.Db.Queryable<UserList>().Where(u => u.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).Single(u => u.UserName == changeOperator.FromRviewer);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            FingerMsg = false;// !_fingerprintUtil.bIsConnected;
 | 
					            FingerMsg = false;// !_fingerprintUtil.bIsConnected;
 | 
				
			||||||
| 
						 | 
					@ -642,11 +642,11 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        private HkcChangeShifts GetOperator()
 | 
					        private HkcChangeShifts GetOperator()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            //查询发药人及审核人
 | 
					            //查询发药人及审核人
 | 
				
			||||||
            HkcChangeShifts changeOperator = _sqlSugarScope1.Queryable<HkcChangeShifts>().Single(change => change.State == "0");
 | 
					            HkcChangeShifts changeOperator = SqlSugarHelper.Db.Queryable<HkcChangeShifts>().Single(change => change.State == "0");
 | 
				
			||||||
            //if (changeOperator != null)
 | 
					            //if (changeOperator != null)
 | 
				
			||||||
            //{
 | 
					            //{
 | 
				
			||||||
            //    Operator = _sqlSugarScope1.Queryable<UserList>().Single(u => u.UserName == changeOperator.FromOperator);
 | 
					            //    Operator = SqlSugarHelper.Db.Queryable<UserList>().Single(u => u.UserName == changeOperator.FromOperator);
 | 
				
			||||||
            //    Reviewer = _sqlSugarScope1.Queryable<UserList>().Single(u => u.UserName == changeOperator.ToOperator);
 | 
					            //    Reviewer = SqlSugarHelper.Db.Queryable<UserList>().Single(u => u.UserName == changeOperator.ToOperator);
 | 
				
			||||||
            //}
 | 
					            //}
 | 
				
			||||||
            return changeOperator;
 | 
					            return changeOperator;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -104,7 +104,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            set { SetProperty(ref hkcChangeShifts, value); }
 | 
					            set { SetProperty(ref hkcChangeShifts, value); }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public bool KeepAlive => false;
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
        IDialogService _dialogService;
 | 
					        IDialogService _dialogService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //交接班
 | 
					        //交接班
 | 
				
			||||||
| 
						 | 
					@ -124,11 +124,11 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            GridReportUtil.PrintChangeShiftsReport(StartDate, EndDate);
 | 
					            GridReportUtil.PrintChangeShiftsReport(StartDate, EndDate);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        private SqlSugarScope _sqlSugarScope1;
 | 
					        ////private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
        public ChangeShiftsListWindowViewModel(IDialogService dialogService,SqlSugarScope sqlSugarScope)
 | 
					        public ChangeShiftsListWindowViewModel(IDialogService dialogService)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            _dialogService = dialogService;
 | 
					            _dialogService = dialogService;
 | 
				
			||||||
            this._sqlSugarScope1 = sqlSugarScope;
 | 
					            ////this.SqlSugarHelper.Db = sqlSugarScope;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        void RequestData()
 | 
					        void RequestData()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
| 
						 | 
					@ -147,7 +147,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                sqlStr += " and c.optdate<=@endOptDate ";
 | 
					                sqlStr += " and c.optdate<=@endOptDate ";
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            sqlStr+=" group by c.id";
 | 
					            sqlStr+=" group by c.id";
 | 
				
			||||||
            HkcChangeShifts = _sqlSugarScope1.SqlQueryable<dynamic>(sqlStr)
 | 
					            HkcChangeShifts = SqlSugarHelper.Db.SqlQueryable<dynamic>(sqlStr)
 | 
				
			||||||
                .AddParameters(new
 | 
					                .AddParameters(new
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    machineId = machineId,
 | 
					                    machineId = machineId,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -102,7 +102,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            set { SetProperty(ref machineRecords, value); }
 | 
					            set { SetProperty(ref machineRecords, value); }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public bool KeepAlive => false;
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
        IDialogService _dialogService;
 | 
					        IDialogService _dialogService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //交接班
 | 
					        //交接班
 | 
				
			||||||
| 
						 | 
					@ -124,7 +124,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            int totalCount = 0;
 | 
					            int totalCount = 0;
 | 
				
			||||||
            string machineId = ConfigurationManager.AppSettings["machineId"] ?? "DM1";
 | 
					            string machineId = ConfigurationManager.AppSettings["machineId"] ?? "DM1";
 | 
				
			||||||
            //MachineRecords = _sqlSugarScope1.Queryable<MachineRecord>()
 | 
					            //MachineRecords = SqlSugarHelper.Db.Queryable<MachineRecord>()
 | 
				
			||||||
            //    .Includes<DrugInfo>(mr => mr.DrugInfo)
 | 
					            //    .Includes<DrugInfo>(mr => mr.DrugInfo)
 | 
				
			||||||
            //    .Includes<UserList>(mr => mr.User)
 | 
					            //    .Includes<UserList>(mr => mr.User)
 | 
				
			||||||
            //    .Where(mr => mr.MachineId == machineId)
 | 
					            //    .Where(mr => mr.MachineId == machineId)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -79,7 +79,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        private PortUtil _portUtil;
 | 
					        private PortUtil _portUtil;
 | 
				
			||||||
        IRegionManager _regionManager;
 | 
					        IRegionManager _regionManager;
 | 
				
			||||||
        IEventAggregator _eventAggregator;
 | 
					        IEventAggregator _eventAggregator;
 | 
				
			||||||
        public bool KeepAlive => false;
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private bool _fingerMsg;
 | 
					        private bool _fingerMsg;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -88,13 +88,13 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            get => _fingerMsg;
 | 
					            get => _fingerMsg;
 | 
				
			||||||
            set => SetProperty(ref _fingerMsg, value);
 | 
					            set => SetProperty(ref _fingerMsg, value);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        private SqlSugarScope _sqlSugarScope1;
 | 
					        ////private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
        public ChangeShiftsWindowViewModel(IRegionManager regionManager, IEventAggregator eventAggregator, PortUtil portUtil,SqlSugarScope sqlSugarScope)
 | 
					        public ChangeShiftsWindowViewModel(IRegionManager regionManager, IEventAggregator eventAggregator, PortUtil portUtil)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            _portUtil = portUtil;
 | 
					            _portUtil = portUtil;
 | 
				
			||||||
            _regionManager = regionManager;
 | 
					            _regionManager = regionManager;
 | 
				
			||||||
            _eventAggregator = eventAggregator;
 | 
					            _eventAggregator = eventAggregator;
 | 
				
			||||||
            this._sqlSugarScope1 = sqlSugarScope;
 | 
					            ////this.SqlSugarHelper.Db = sqlSugarScope;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        #region 交班确认按钮
 | 
					        #region 交班确认按钮
 | 
				
			||||||
| 
						 | 
					@ -188,22 +188,22 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            if ((JiaoBanFYRFlag || JiaoBanSHRFlag) && (JieBanFYRFlag || JieBanSHRFlag))
 | 
					            if ((JiaoBanFYRFlag || JiaoBanSHRFlag) && (JieBanFYRFlag || JieBanSHRFlag))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                //保存交接班信息(查询当前值班人的最后一条交接班信息(如有则修改状态,没有则插入一条)并写入一条接班人信息)
 | 
					                //保存交接班信息(查询当前值班人的最后一条交接班信息(如有则修改状态,没有则插入一条)并写入一条接班人信息)
 | 
				
			||||||
                var f = _sqlSugarScope1.UseTran(() =>
 | 
					                var f = SqlSugarHelper.Db.UseTran(() =>
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    List<HkcChangeShifts> listHkcChangeShifts = _sqlSugarScope1.Queryable<HkcChangeShifts>()
 | 
					                    List<HkcChangeShifts> listHkcChangeShifts = SqlSugarHelper.Db.Queryable<HkcChangeShifts>()
 | 
				
			||||||
                      .Where(cs => cs.State == "0")
 | 
					                      .Where(cs => cs.State == "0")
 | 
				
			||||||
                      .WhereIF(App.CurrentFaUserList != null && !string.IsNullOrEmpty(App.CurrentFaUserList.UserName), cs => cs.FromOperator == App.CurrentFaUserList.UserName)
 | 
					                      .WhereIF(App.CurrentFaUserList != null && !string.IsNullOrEmpty(App.CurrentFaUserList.UserName), cs => cs.FromOperator == App.CurrentFaUserList.UserName)
 | 
				
			||||||
                      .WhereIF(App.CurrentShenUserList != null && !string.IsNullOrEmpty(App.CurrentShenUserList.UserName), cs => cs.FromRviewer == App.CurrentShenUserList.UserName)
 | 
					                      .WhereIF(App.CurrentShenUserList != null && !string.IsNullOrEmpty(App.CurrentShenUserList.UserName), cs => cs.FromRviewer == App.CurrentShenUserList.UserName)
 | 
				
			||||||
                      .OrderByDescending(cs => cs.OptState)
 | 
					                      .OrderByDescending(cs => cs.OptState)
 | 
				
			||||||
                      .ToList();
 | 
					                      .ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    //List<MachineRecord> listMachineRecord=_sqlSugarScope1.Queryable<MachineRecord>()
 | 
					                    //List<MachineRecord> listMachineRecord=SqlSugarHelper.Db.Queryable<MachineRecord>()
 | 
				
			||||||
                    //.Where(m=>)
 | 
					                    //.Where(m=>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    if (listHkcChangeShifts != null && listHkcChangeShifts.Count > 0)
 | 
					                    if (listHkcChangeShifts != null && listHkcChangeShifts.Count > 0)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        //存在则修改,不存在则插入一条
 | 
					                        //存在则修改,不存在则插入一条
 | 
				
			||||||
                        _sqlSugarScope1.Updateable(new HkcChangeShifts()
 | 
					                        SqlSugarHelper.Db.Updateable(new HkcChangeShifts()
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            Id = listHkcChangeShifts[0].Id,
 | 
					                            Id = listHkcChangeShifts[0].Id,
 | 
				
			||||||
                            ToOperator = Operator == null ? "" : Operator.UserName,
 | 
					                            ToOperator = Operator == null ? "" : Operator.UserName,
 | 
				
			||||||
| 
						 | 
					@ -215,7 +215,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    else
 | 
					                    else
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        _sqlSugarScope1.Insertable(new HkcChangeShifts()
 | 
					                        SqlSugarHelper.Db.Insertable(new HkcChangeShifts()
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            FromOperator = App.CurrentFaUserList.UserName,
 | 
					                            FromOperator = App.CurrentFaUserList.UserName,
 | 
				
			||||||
                            FromRviewer = App.CurrentShenUserList.UserName,
 | 
					                            FromRviewer = App.CurrentShenUserList.UserName,
 | 
				
			||||||
| 
						 | 
					@ -227,7 +227,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                        }).ExecuteCommand();
 | 
					                        }).ExecuteCommand();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    _sqlSugarScope1.Insertable(new HkcChangeShifts()
 | 
					                    SqlSugarHelper.Db.Insertable(new HkcChangeShifts()
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        FromOperator = App.CurrentFaUserList.UserName,
 | 
					                        FromOperator = App.CurrentFaUserList.UserName,
 | 
				
			||||||
                        FromRviewer = App.CurrentShenUserList.UserName,
 | 
					                        FromRviewer = App.CurrentShenUserList.UserName,
 | 
				
			||||||
| 
						 | 
					@ -266,7 +266,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            if (!string.IsNullOrEmpty(userName) && !string.IsNullOrEmpty(passWord))
 | 
					            if (!string.IsNullOrEmpty(userName) && !string.IsNullOrEmpty(passWord))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    UserList userList = _sqlSugarScope1.Queryable<UserList>()
 | 
					                    UserList userList = SqlSugarHelper.Db.Queryable<UserList>()
 | 
				
			||||||
                                        .Includes<RoleDm>(u => u.Role)
 | 
					                                        .Includes<RoleDm>(u => u.Role)
 | 
				
			||||||
                                       .InnerJoin<RoleDm>((u, r) => u.RoleId == r.Id)
 | 
					                                       .InnerJoin<RoleDm>((u, r) => u.RoleId == r.Id)
 | 
				
			||||||
                                       .First(u => u.UserName == userName && ConfigurationManager.AppSettings["machineId"].ToString().Equals(u.MachineId));
 | 
					                                       .First(u => u.UserName == userName && ConfigurationManager.AppSettings["machineId"].ToString().Equals(u.MachineId));
 | 
				
			||||||
| 
						 | 
					@ -350,7 +350,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            if (!string.IsNullOrEmpty(userName) && !string.IsNullOrEmpty(passWord))
 | 
					            if (!string.IsNullOrEmpty(userName) && !string.IsNullOrEmpty(passWord))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    UserList userList = _sqlSugarScope1.Queryable<UserList>()
 | 
					                    UserList userList = SqlSugarHelper.Db.Queryable<UserList>()
 | 
				
			||||||
                                        .Includes<RoleDm>(u => u.Role)
 | 
					                                        .Includes<RoleDm>(u => u.Role)
 | 
				
			||||||
                                       .InnerJoin<RoleDm>((u, r) => u.RoleId == r.Id)
 | 
					                                       .InnerJoin<RoleDm>((u, r) => u.RoleId == r.Id)
 | 
				
			||||||
                                       .First(u => u.UserName == userName && ConfigurationManager.AppSettings["machineId"].ToString().Equals(u.MachineId));
 | 
					                                       .First(u => u.UserName == userName && ConfigurationManager.AppSettings["machineId"].ToString().Equals(u.MachineId));
 | 
				
			||||||
| 
						 | 
					@ -419,7 +419,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                if (msg.Message.Equals("LOGIN"))
 | 
					                if (msg.Message.Equals("LOGIN"))
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    UserList userList = _sqlSugarScope1.Queryable<UserList>()
 | 
					                    UserList userList = SqlSugarHelper.Db.Queryable<UserList>()
 | 
				
			||||||
                    .Includes<RoleDm>(u => u.Role)
 | 
					                    .Includes<RoleDm>(u => u.Role)
 | 
				
			||||||
                    .First(u => u.Id == msg.Id);
 | 
					                    .First(u => u.Id == msg.Id);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,198 @@
 | 
				
			||||||
 | 
					using DM_Weight.Models;
 | 
				
			||||||
 | 
					using DM_Weight.msg;
 | 
				
			||||||
 | 
					using DM_Weight.Port;
 | 
				
			||||||
 | 
					using DM_Weight.Report;
 | 
				
			||||||
 | 
					using DM_Weight.util;
 | 
				
			||||||
 | 
					using Prism.Commands;
 | 
				
			||||||
 | 
					using Prism.Events;
 | 
				
			||||||
 | 
					using Prism.Mvvm;
 | 
				
			||||||
 | 
					using Prism.Regions;
 | 
				
			||||||
 | 
					using Prism.Services.Dialogs;
 | 
				
			||||||
 | 
					using SqlSugar;
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Collections.ObjectModel;
 | 
				
			||||||
 | 
					using System.ComponentModel;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using System.Windows.Data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class CheckRecordDetailDialogViewModel : BindableBase, IDialogAware, IRegionMemberLifetime
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public string Title => "盘点记录明细";
 | 
				
			||||||
 | 
					        private int _pageNum = 1;
 | 
				
			||||||
 | 
					        public int PageNum
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _pageNum;
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _pageNum, value);
 | 
				
			||||||
 | 
					                RequestData();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private int _pageCount = 1;
 | 
				
			||||||
 | 
					        public int PageCount
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _pageCount;
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _pageCount, value);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private int _pageSize = 8;
 | 
				
			||||||
 | 
					        public int PageSize
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _pageSize;
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _pageSize, value);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private int _totalCount = 0;
 | 
				
			||||||
 | 
					        public int TotalCount
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _totalCount;
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _totalCount, value);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        private DateTime? _startDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public DateTime? StartDate
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _startDate;
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (value != null)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    SetProperty(ref _startDate, new DateTime(value?.Year ?? 0, value?.Month ?? 0, value?.Day ?? 0));
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    SetProperty(ref _startDate, value);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                RequestData();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private DateTime? _endDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 23, 59, 59);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public DateTime? EndDate
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _endDate;
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (value != null)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    TimeSpan ershisi = new TimeSpan(23, 59, 59);
 | 
				
			||||||
 | 
					                    SetProperty(ref _endDate, new DateTime(value?.Year ?? 0, value?.Month ?? 0, value?.Day ?? 0, 23, 59, 59));
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    SetProperty(ref _endDate, value);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                RequestData();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private string _optDate;
 | 
				
			||||||
 | 
					        public string OptDate
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _optDate;
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _optDate, value);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private ObservableCollection<CheckRecordStock> _obsCheckRecordStock = new ObservableCollection<CheckRecordStock>();
 | 
				
			||||||
 | 
					        public ObservableCollection<CheckRecordStock> obsCheckRecordStock
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _obsCheckRecordStock;
 | 
				
			||||||
 | 
					            set => SetProperty(ref _obsCheckRecordStock, value);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        private CheckRecordStock _checkRecordStock = new CheckRecordStock();
 | 
				
			||||||
 | 
					        public CheckRecordStock checkRecordStock
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _checkRecordStock;
 | 
				
			||||||
 | 
					            set => SetProperty(ref _checkRecordStock, value);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private List<CheckRecordStock>? _channelStocks = new();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public List<CheckRecordStock>? ChannelStocks
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _channelStocks;
 | 
				
			||||||
 | 
					            set => SetProperty(ref _channelStocks, value);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        ////private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
 | 
					        private PortUtil _portUtil;
 | 
				
			||||||
 | 
					        IEventAggregator _eventAggregator;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public event Action<IDialogResult> RequestClose;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public CheckRecordDetailDialogViewModel(PortUtil portUtil, IEventAggregator eventAggregator, IDialogService dialogService)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            ////this.SqlSugarHelper.Db = sqlSugarScope;
 | 
				
			||||||
 | 
					            _portUtil = portUtil;
 | 
				
			||||||
 | 
					            _eventAggregator = eventAggregator;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        public void RequestData()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            ChannelStocks.Clear();
 | 
				
			||||||
 | 
					            obsCheckRecordStock.Clear();
 | 
				
			||||||
 | 
					            //string strSql = "SELECT optDate AS optdate,U.User_name AS operatorUser,R.User_name AS reviewerUser,Drug_ID AS drugId,Drug_name AS drugName FROM check_stock C LEFT JOIN user_list U ON C.operator=U.ID  LEFT JOIN user_list R ON C.reviewer=R.ID WHERE 1=1";
 | 
				
			||||||
 | 
					            //if (StartDate != null)
 | 
				
			||||||
 | 
					            //{
 | 
				
			||||||
 | 
					            //    strSql += " AND C.optDate=@OPTSTARTDATE ";
 | 
				
			||||||
 | 
					            //}
 | 
				
			||||||
 | 
					            //strSql += "  GROUP BY C.optdate,Drug_id  ORDER BY C.OPTDATE DESC";
 | 
				
			||||||
 | 
					            List<CheckRecordStock> checkList = SqlSugarHelper.Db.Queryable<CheckRecordStock>()
 | 
				
			||||||
 | 
					                .Includes<DrugInfo>(cs => cs.DrugInfo)
 | 
				
			||||||
 | 
					                .Where(cs => cs.optdate == OptDate).OrderByDescending(cs => cs.optdate).ToList();
 | 
				
			||||||
 | 
					            ICollectionView vw = CollectionViewSource.GetDefaultView(checkList);
 | 
				
			||||||
 | 
					            vw.GroupDescriptions.Add(new PropertyGroupDescription("DrugInfo"));
 | 
				
			||||||
 | 
					            obsCheckRecordStock = new ObservableCollection<CheckRecordStock>(checkList);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            ChannelStocks = checkList;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool CanCloseDialog()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void OnDialogClosed()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					             
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void OnDialogOpened(IDialogParameters parameters)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (parameters.ContainsKey("OptDate"))
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                OptDate = parameters.GetValue<string>("OptDate");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            RequestData();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        public DelegateCommand BtnCloseCommand {
 | 
				
			||||||
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                // 关闭当前窗口
 | 
				
			||||||
 | 
					                RequestClose?.Invoke(new DialogResult(ButtonResult.Cancel));
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,211 @@
 | 
				
			||||||
 | 
					using DM_Weight.Models;
 | 
				
			||||||
 | 
					using DM_Weight.Port;
 | 
				
			||||||
 | 
					using DM_Weight.Report;
 | 
				
			||||||
 | 
					using DM_Weight.util;
 | 
				
			||||||
 | 
					using Prism.Commands;
 | 
				
			||||||
 | 
					using Prism.Events;
 | 
				
			||||||
 | 
					using Prism.Mvvm;
 | 
				
			||||||
 | 
					using Prism.Regions;
 | 
				
			||||||
 | 
					using Prism.Services.Dialogs;
 | 
				
			||||||
 | 
					using SqlSugar;
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Collections.ObjectModel;
 | 
				
			||||||
 | 
					using System.ComponentModel;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using System.Windows.Data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class CheckRecordNewWindowViewModel : BindableBase, INavigationAware, IRegionMemberLifetime
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        private int _pageNum = 1;
 | 
				
			||||||
 | 
					        public int PageNum
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _pageNum;
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _pageNum, value);
 | 
				
			||||||
 | 
					                RequestData();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private int _pageCount = 1;
 | 
				
			||||||
 | 
					        public int PageCount
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _pageCount;
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _pageCount, value);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private int _pageSize = 8;
 | 
				
			||||||
 | 
					        public int PageSize
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _pageSize;
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _pageSize, value);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private int _totalCount = 0;
 | 
				
			||||||
 | 
					        public int TotalCount
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _totalCount;
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _totalCount, value);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        private DateTime? _startDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public DateTime? StartDate
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _startDate;
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (value != null)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    SetProperty(ref _startDate, new DateTime(value?.Year ?? 0, value?.Month ?? 0, value?.Day ?? 0));
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    SetProperty(ref _startDate, value);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                RequestData();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private DateTime? _endDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 23, 59, 59);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public DateTime? EndDate
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _endDate;
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (value != null)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    TimeSpan ershisi = new TimeSpan(23, 59, 59);
 | 
				
			||||||
 | 
					                    SetProperty(ref _endDate, new DateTime(value?.Year ?? 0, value?.Month ?? 0, value?.Day ?? 0, 23, 59, 59));
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    SetProperty(ref _endDate, value);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                RequestData();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        public event Action<IDialogResult> RequestClose;
 | 
				
			||||||
 | 
					        private ObservableCollection<CheckRecordStock> _obsCheckRecordStock = new ObservableCollection<CheckRecordStock>();
 | 
				
			||||||
 | 
					        public ObservableCollection<CheckRecordStock> obsCheckRecordStock
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _obsCheckRecordStock;
 | 
				
			||||||
 | 
					            set=>SetProperty(ref _obsCheckRecordStock, value);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        private CheckRecordStock _checkRecordStock=new CheckRecordStock();
 | 
				
			||||||
 | 
					        public CheckRecordStock checkRecordStock
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _checkRecordStock;
 | 
				
			||||||
 | 
					            set=>SetProperty(ref _checkRecordStock, value);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ////private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
 | 
					        private PortUtil _portUtil;
 | 
				
			||||||
 | 
					        IEventAggregator _eventAggregator;
 | 
				
			||||||
 | 
					        IDialogService _dialogService;
 | 
				
			||||||
 | 
					        public CheckRecordNewWindowViewModel(IDialogService DialogService, PortUtil portUtil, IEventAggregator eventAggregator, IDialogService dialogService)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            _dialogService = DialogService;
 | 
				
			||||||
 | 
					            ////this.SqlSugarHelper.Db = sqlSugarScope;
 | 
				
			||||||
 | 
					            _portUtil = portUtil;
 | 
				
			||||||
 | 
					            _eventAggregator = eventAggregator;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        public DelegateCommand DownLoadCommond
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                GridReportUtil.PrintReportStockNew(StartDate, EndDate);
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        public DelegateCommand Query
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                RequestData();
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        public void RequestData()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            int totalCount = 0;
 | 
				
			||||||
 | 
					            string strSql = @"SELECT optDate AS optdate,U.User_name AS operatorUser,R.User_name AS reviewerUser,Drug_spec AS drugSpec,Manufactory AS manufactory,Quantity FROM check_stock C 
 | 
				
			||||||
 | 
					                                LEFT JOIN user_list U ON C.operator=U.ID  LEFT JOIN user_list R ON C.reviewer=R.ID WHERE 1=1";
 | 
				
			||||||
 | 
					            if(StartDate!=null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                strSql += " AND C.optDate>@OPTSTARTDATE ";
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if(EndDate!=null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                strSql += " AND C.optDate<@OPTENDDATE ";
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            strSql += "  GROUP BY C.optdate  ORDER BY C.OPTDATE DESC";
 | 
				
			||||||
 | 
					            List<CheckRecordStock> checkList = SqlSugarHelper.Db.SqlQueryable<CheckRecordStock>(strSql)
 | 
				
			||||||
 | 
					                .AddParameters(new
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    OPTSTARTDATE = StartDate,
 | 
				
			||||||
 | 
					                    OPTENDDATE = EndDate
 | 
				
			||||||
 | 
					                }).ToPageList(PageNum, PageSize, ref totalCount);
 | 
				
			||||||
 | 
					            //SqlSugarHelper.Db.ThenMapper(checkList, item =>
 | 
				
			||||||
 | 
					            //{
 | 
				
			||||||
 | 
					            //    //item.drugDetails = SqlSugarHelper.Db.Queryable<CheckRecordStock>().SetContext(x => x.optdate, () => item.optdate, item).ToList();
 | 
				
			||||||
 | 
					            //    item.manuNoDetails = SqlSugarHelper.Db.Queryable<CheckRecordStock>().SetContext(x => x.optdate, () => item.optdate, item).ToList();
 | 
				
			||||||
 | 
					            //});
 | 
				
			||||||
 | 
					            obsCheckRecordStock = new ObservableCollection<CheckRecordStock>(checkList);
 | 
				
			||||||
 | 
					          
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public DelegateCommand RowSelected
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand(async () =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (checkRecordStock != null && checkRecordStock.optdate!=null)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    // 此处延时1毫秒,等待页面渲染
 | 
				
			||||||
 | 
					                    await Task.Delay(TimeSpan.FromMilliseconds(1));
 | 
				
			||||||
 | 
					                    DialogParameters dialogParameters = new DialogParameters();
 | 
				
			||||||
 | 
					                    dialogParameters.Add("OptDate", checkRecordStock.optdate);
 | 
				
			||||||
 | 
					                    DialogServiceExtensions.ShowDialogHost(_dialogService, "CheckRecordDetailDialog", dialogParameters, DoDialogResult, "RootDialog");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private void DoDialogResult(IDialogResult dialogResult)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            checkRecordStock = null;
 | 
				
			||||||
 | 
					            RequestData();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool IsNavigationTarget(NavigationContext navigationContext)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void OnNavigatedFrom(NavigationContext navigationContext)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void OnNavigatedTo(NavigationContext navigationContext)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            RequestData();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,604 @@
 | 
				
			||||||
 | 
					using DM_Weight.Models;
 | 
				
			||||||
 | 
					using DM_Weight.msg;
 | 
				
			||||||
 | 
					using DM_Weight.Port;
 | 
				
			||||||
 | 
					using DM_Weight.Report;
 | 
				
			||||||
 | 
					using DM_Weight.select;
 | 
				
			||||||
 | 
					using DM_Weight.util;
 | 
				
			||||||
 | 
					using log4net;
 | 
				
			||||||
 | 
					using log4net.Repository.Hierarchy;
 | 
				
			||||||
 | 
					using Prism.Commands;
 | 
				
			||||||
 | 
					using Prism.Events;
 | 
				
			||||||
 | 
					using Prism.Mvvm;
 | 
				
			||||||
 | 
					using Prism.Regions;
 | 
				
			||||||
 | 
					using Prism.Services.Dialogs;
 | 
				
			||||||
 | 
					using SqlSugar;
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.ComponentModel;
 | 
				
			||||||
 | 
					using System.Configuration;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using System.Windows.Data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class CheckStockNew2WindowViewModel : BindableBase, IConfirmNavigationRequest, IRegionMemberLifetime
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        //public static CheckStockNewWindowViewModel vm;
 | 
				
			||||||
 | 
					        private readonly ILog logger = LogManager.GetLogger(typeof(CheckStockWindowViewModel));
 | 
				
			||||||
 | 
					        public string drugId;
 | 
				
			||||||
 | 
					        //public string Stock;
 | 
				
			||||||
 | 
					        private static readonly DateTime Jan1st1970 = new DateTime
 | 
				
			||||||
 | 
					    (1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
 | 
				
			||||||
 | 
					        public static List<OrderTakeSelect> StaticSelects = new()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            new OrderTakeSelect
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Code = "DrugName",
 | 
				
			||||||
 | 
					                Name = "药品名称"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            new OrderTakeSelect
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Code = "PyCode",
 | 
				
			||||||
 | 
					                Name = "拼音码"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            new OrderTakeSelect
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Code = "DrugBarcode",
 | 
				
			||||||
 | 
					                Name = "药品条码"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            new OrderTakeSelect
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Code = "DrugId",
 | 
				
			||||||
 | 
					                Name = "药品编码"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private List<OrderTakeSelect> _selects = StaticSelects;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public List<OrderTakeSelect> Selects
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get { return _selects; }
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _selects, value);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private OrderTakeSelect _selectedItem = StaticSelects[0];
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 查询条件 查询字段
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public OrderTakeSelect SelectedItem
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get { return _selectedItem; }
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _selectedItem, value);
 | 
				
			||||||
 | 
					                RequestData();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private string? _searchValue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 查询条件 查询字段值
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public string? SearchValue
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get { return _searchValue; }
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _searchValue, value);
 | 
				
			||||||
 | 
					                RequestData();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        IDialogService _dialogService;
 | 
				
			||||||
 | 
					        IEventAggregator _eventAggregator;
 | 
				
			||||||
 | 
					        ////private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
 | 
					        private PortUtil _portUtil;
 | 
				
			||||||
 | 
					        private int _status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public int Status { get => _status; set => SetProperty(ref _status, value); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private int _drawerNo = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public int DrawerNo
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _drawerNo;
 | 
				
			||||||
 | 
					            set => SetProperty(ref _drawerNo, value);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public long CurrentTimeMillis()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return (long)(DateTime.UtcNow - Jan1st1970).TotalMilliseconds;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public CheckStockNew2WindowViewModel(PortUtil portUtil, IEventAggregator eventAggregator, IDialogService dialogService)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            _dialogService = dialogService;
 | 
				
			||||||
 | 
					            ////this.SqlSugarHelper.Db = sqlSugarScope;
 | 
				
			||||||
 | 
					            _portUtil = portUtil;
 | 
				
			||||||
 | 
					            _portUtil = portUtil;
 | 
				
			||||||
 | 
					            _eventAggregator = eventAggregator;
 | 
				
			||||||
 | 
					            //vm= this;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        void DoMyPrismEvent(DeviceMsg msg)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (msg.WindowName == "CheckStockNewWindow")
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                IGrouping<int, ChannelStock> grouping = enumerator.Current;
 | 
				
			||||||
 | 
					                int DrawerNo = grouping.Key;
 | 
				
			||||||
 | 
					                List<ChannelStock> channelStocks = grouping.ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                switch (msg.EventType)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    // 抽屉打开
 | 
				
			||||||
 | 
					                    case EventType.DRAWEROPEN:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        if (Status == 1)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            if (channelStocks[0].process == 1)
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                channelStocks.ForEach(it => it.process = 2);
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                            //Status = 2;
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                    // 抽屉关闭
 | 
				
			||||||
 | 
					                    case EventType.DRAWERCLOSE:
 | 
				
			||||||
 | 
					                        if (Status == 1)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            if (channelStocks[0].process == 2)
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                channelStocks.ForEach(it => it.process = 3);
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                            IGrouping<int, ChannelStock> groupingBefore = enumerator.Current;
 | 
				
			||||||
 | 
					                            int DrawerNoBefore = groupingBefore.Key;
 | 
				
			||||||
 | 
					                            if (enumerator.MoveNext())
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                IGrouping<int, ChannelStock> groupingAfter = enumerator.Current;
 | 
				
			||||||
 | 
					                                int DrawerNoAfter = groupingAfter.Key;
 | 
				
			||||||
 | 
					                                //if (DrawerNoBefore < 9 && DrawerNoAfter > 8)
 | 
				
			||||||
 | 
					                                //{
 | 
				
			||||||
 | 
					                                //    Thread.Sleep(50);
 | 
				
			||||||
 | 
					                                //}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                logger.Info($"抽屉号DrawerNoBefore【{DrawerNoBefore}】抽屉号DrawerNoAfter【{DrawerNoAfter}】");
 | 
				
			||||||
 | 
					                                if (DrawerNoAfter == 17)
 | 
				
			||||||
 | 
					                                {
 | 
				
			||||||
 | 
					                                    if (DrawerNoBefore == 17)
 | 
				
			||||||
 | 
					                                    {
 | 
				
			||||||
 | 
					                                        Thread.Sleep(1000);
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					                                    else
 | 
				
			||||||
 | 
					                                    {
 | 
				
			||||||
 | 
					                                        Thread.Sleep(500);
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                                else
 | 
				
			||||||
 | 
					                                {
 | 
				
			||||||
 | 
					                                    Thread.Sleep(80);
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                                logger.Info($"抽屉号DrawerNoBefore【{DrawerNoBefore}】抽屉号DrawerNoAfter【{DrawerNoAfter}】");
 | 
				
			||||||
 | 
					                                OpenOneByOne();
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                            // 已经全部取出
 | 
				
			||||||
 | 
					                            else
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                Status = 3;
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                    // 数量变化
 | 
				
			||||||
 | 
					                    case EventType.UPDATEQUANTITY:
 | 
				
			||||||
 | 
					                        if (Status == 1)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            logger.Info($"抽屉【{DrawerNo}】库位药品数量【{msg.Quantitys}】");
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                    // 打开失败
 | 
				
			||||||
 | 
					                    case EventType.OPENERROR:
 | 
				
			||||||
 | 
					                        AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            Message = msg.Message,
 | 
				
			||||||
 | 
					                            Type = MsgType.ERROR,
 | 
				
			||||||
 | 
					                        };
 | 
				
			||||||
 | 
					                        _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
 | 
					                        Status = 0;
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        private ChannelStock? _selectedChannel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public ChannelStock? SelectedChannel
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _selectedChannel;
 | 
				
			||||||
 | 
					            set => SetProperty(ref _selectedChannel, value);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private List<ChannelStock>? _channelStocks = new();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public List<ChannelStock>? ChannelStocks
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _channelStocks;
 | 
				
			||||||
 | 
					            set => SetProperty(ref _channelStocks, value);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private IEnumerable<IGrouping<int, ChannelStock>> enumerable;
 | 
				
			||||||
 | 
					        private IEnumerator<IGrouping<int, ChannelStock>> enumerator;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public DelegateCommand BindingChannelDialog
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                DialogParameters dialogParameters = new DialogParameters();
 | 
				
			||||||
 | 
					                DialogServiceExtensions.ShowDialogHost(_dialogService, "BindingChannelDialog", dialogParameters, DoDialogResult, "RootDialog");
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public DelegateCommand QueryCommand
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                RequestData();
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 盘点
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public DelegateCommand OpenDrawer
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (Status == 0)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    enumerable = ChannelStocks.GroupBy(cs => cs.DrawerNo, cs => cs);
 | 
				
			||||||
 | 
					                    //enumerable = ChannelStocks.GroupBy(cs => cs.Location, cs => cs);
 | 
				
			||||||
 | 
					                    enumerator = enumerable.GetEnumerator();
 | 
				
			||||||
 | 
					                    enumerator.MoveNext();
 | 
				
			||||||
 | 
					                    Status = 1;
 | 
				
			||||||
 | 
					                    OpenOneByOne();
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        private void OpenOneByOne()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            IGrouping<int, ChannelStock> grouping = enumerator.Current;
 | 
				
			||||||
 | 
					            int DrawerNo =grouping.Key;
 | 
				
			||||||
 | 
					            List<ChannelStock> channelStocks = grouping.ToList();
 | 
				
			||||||
 | 
					            channelStocks.ForEach(it => it.process = 1);
 | 
				
			||||||
 | 
					            _portUtil.SpeakAsync("正在打开" + DrawerNo + "号抽屉");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            List<ChannelStock> singleChannels = channelStocks.GroupBy(it => new
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                it.DrawerNo,
 | 
				
			||||||
 | 
					                it.ColNo
 | 
				
			||||||
 | 
					            }).Select(it =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var ret = it.First();
 | 
				
			||||||
 | 
					                ret.Quantity = it.Sum(itx => itx.Quantity);
 | 
				
			||||||
 | 
					                ret.AddQuantity = it.Sum(itx => itx.AddQuantity);
 | 
				
			||||||
 | 
					                return ret;
 | 
				
			||||||
 | 
					            }).ToList().FindAll(it => it.BoardType != 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // 发送取药数量
 | 
				
			||||||
 | 
					            //singleChannels.ForEach(it =>
 | 
				
			||||||
 | 
					            //{
 | 
				
			||||||
 | 
					            //    try
 | 
				
			||||||
 | 
					            //    {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            //        _portUtil.TakeQuantity(DrawerNo, it.ColNo, it.TakeQuantity, it.Quantity - it.TakeQuantity);
 | 
				
			||||||
 | 
					            //    }
 | 
				
			||||||
 | 
					            //    catch (Exception ex)
 | 
				
			||||||
 | 
					            //    {
 | 
				
			||||||
 | 
					            //        AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
 | 
					            //        {
 | 
				
			||||||
 | 
					            //            Message = $"打开抽屉异常{ex.Message}",
 | 
				
			||||||
 | 
					            //            Type = MsgType.ERROR,
 | 
				
			||||||
 | 
					            //        };
 | 
				
			||||||
 | 
					            //        _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
 | 
					            //    }
 | 
				
			||||||
 | 
					            //});
 | 
				
			||||||
 | 
					            _portUtil.WindowName = "CheckStockNewWindow";
 | 
				
			||||||
 | 
					            _portUtil.Operate = true;
 | 
				
			||||||
 | 
					            _portUtil.BoardType = singleChannels.Count > 0 ? singleChannels[0].BoardType : 1;
 | 
				
			||||||
 | 
					            _portUtil.ColNos = singleChannels.Select(it => it.ColNo).ToArray();
 | 
				
			||||||
 | 
					            _portUtil.Stocks = singleChannels.Select(it => it.Quantity).ToArray();
 | 
				
			||||||
 | 
					            _portUtil.DrawerNo = DrawerNo;
 | 
				
			||||||
 | 
					            _portUtil.Start();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private bool _isFinishClick = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // 完成按钮
 | 
				
			||||||
 | 
					        public DelegateCommand TakeFinish
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                _isFinishClick = true;
 | 
				
			||||||
 | 
					                //List<ChannelStock> record = ChannelStocks.FindAll(it => it.Quantity != it.CheckQuantity).ToList();
 | 
				
			||||||
 | 
					                List<ChannelStock> record = ChannelStocks;
 | 
				
			||||||
 | 
					                if (record.Count > 0)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    string InvoiceId = "CHECK_" + CurrentTimeMillis();
 | 
				
			||||||
 | 
					                    var f = SqlSugarHelper.Db.UseTran(() =>
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        for (int i = 0; i < record.Count; i++)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            ChannelStock it = record[i];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            // 更新数据 库存信息
 | 
				
			||||||
 | 
					                            SqlSugarHelper.Db.Updateable(new ChannelStock()
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                Quantity = it.CheckQuantity,
 | 
				
			||||||
 | 
					                                ManuNo = it.ManuNo,
 | 
				
			||||||
 | 
					                                EffDate = it.EffDate,
 | 
				
			||||||
 | 
					                                Id = it.Id,
 | 
				
			||||||
 | 
					                            }).UpdateColumns(it => new { it.Quantity, it.ManuNo, it.EffDate }).ExecuteCommand();
 | 
				
			||||||
 | 
					                            // 获取更新完库存后的药品库存
 | 
				
			||||||
 | 
					                            List<ChannelStock> nowChannels = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
 | 
					                                .Where(cs => cs.MachineId.Equals(it.MachineId))
 | 
				
			||||||
 | 
					                                .Where(cs => cs.DrugId.Equals(it.DrugId))
 | 
				
			||||||
 | 
					                                .Where(cs => cs.DrawerType == 1)
 | 
				
			||||||
 | 
					                                .ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            // 保存数据 盘点记录
 | 
				
			||||||
 | 
					                            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 = InvoiceId,
 | 
				
			||||||
 | 
					                                StockQuantity = nowChannels.Sum(it => it.Quantity),
 | 
				
			||||||
 | 
					                                CheckQuantity = it.CheckQuantity,
 | 
				
			||||||
 | 
					                                ManunoQuantity = nowChannels.FindAll(it2 => it2.ManuNo == it.ManuNo).Sum(it => it.Quantity)
 | 
				
			||||||
 | 
					                            }).ExecuteCommand();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            logger.Info($"库存盘点->库位【{it.DrawerNo}-{it.ColNo}】药品【{it.DrugInfo.DrugName}】盘点前库存【{it.Quantity}】,更改后【{it.CheckQuantity}】");
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        string machine_id = (ConfigurationManager.AppSettings["machineId"] ?? "DM1");
 | 
				
			||||||
 | 
					                        string strSql = $@"SELECT cl.`row_no` AS rowNo,cl.`col_no` AS colNo,cl.`quantity` AS quantity,cl.`manu_no` AS manuNo,cl.`eff_date` AS effDate,
 | 
				
			||||||
 | 
					                          di.`drug_name` AS drugName,di.`drug_spec` AS drugSpec,di.`pack_unit` AS packUnit,di.`manufactory` AS manufactory,di.`max_stock` maxStock,
 | 
				
			||||||
 | 
					                          cl.`drug_id` AS drugId,cl.`machine_id` AS MachineId  FROM channel_stock cl INNER JOIN drug_info di ON di.`drug_id` = cl.`drug_id` WHERE cl.`machine_id` =  '{machine_id}' AND cl.`drawer_type` = 1 ORDER BY cl.`drug_id`";
 | 
				
			||||||
 | 
					                        List<CheckRecordStock> checkRecordStockList = SqlSugarHelper.Db.SqlQueryable<dynamic>(strSql)
 | 
				
			||||||
 | 
					                                                                           .AddParameters(new
 | 
				
			||||||
 | 
					                                                                           {
 | 
				
			||||||
 | 
					                                                                               machineId = ConfigurationManager.AppSettings["machineId"] ?? "DM1"
 | 
				
			||||||
 | 
					                                                                           })
 | 
				
			||||||
 | 
					                                                                          .Select(it => new CheckRecordStock())
 | 
				
			||||||
 | 
					                                                                          .ToList();
 | 
				
			||||||
 | 
					                        List<CheckRecordStock> insertList = new List<CheckRecordStock>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        if (checkRecordStockList != null && checkRecordStockList.Count > 0)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            for (int i = 0; i < checkRecordStockList.Count; i++)
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                if (!(insertList.Where(it => it.drugId == checkRecordStockList[i].drugId && it.manuNo == checkRecordStockList[i].manuNo).Count() > 0))
 | 
				
			||||||
 | 
					                                {
 | 
				
			||||||
 | 
					                                    insertList.Add(checkRecordStockList[i]);
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                            for (int j = 0; j < insertList.Count; j++)
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                CheckRecordStock cStock = insertList[j];
 | 
				
			||||||
 | 
					                                // 保存数据 盘点后药品总库存及批次库存数
 | 
				
			||||||
 | 
					                                SqlSugarHelper.Db.Insertable(new CheckRecordStock()
 | 
				
			||||||
 | 
					                                {
 | 
				
			||||||
 | 
					                                    rowNo = cStock.rowNo,
 | 
				
			||||||
 | 
					                                    colNo = cStock.colNo,
 | 
				
			||||||
 | 
					                                    ManuQuantity = checkRecordStockList.Where(it => it.drugId == cStock.drugId && it.manuNo == cStock.manuNo).Sum(it => it.quantity),
 | 
				
			||||||
 | 
					                                    manuNo = cStock.manuNo,
 | 
				
			||||||
 | 
					                                    effDate = cStock.effDate,
 | 
				
			||||||
 | 
					                                    drugName = cStock.drugName,
 | 
				
			||||||
 | 
					                                    manufactory = cStock.manufactory,
 | 
				
			||||||
 | 
					                                    drugSpec = cStock.drugSpec,
 | 
				
			||||||
 | 
					                                    packUnit = cStock.packUnit,
 | 
				
			||||||
 | 
					                                    maxStock = cStock.maxStock,
 | 
				
			||||||
 | 
					                                    drugId = cStock.drugId,
 | 
				
			||||||
 | 
					                                    MachineId = cStock.MachineId,
 | 
				
			||||||
 | 
					                                    quantity = checkRecordStockList.Where(it => it.drugId == cStock.drugId).Sum(it => it.quantity),
 | 
				
			||||||
 | 
					                                    optdate = DateTime.Now.ToString(),
 | 
				
			||||||
 | 
					                                    operatorUser = HomeWindowViewModel.Operator?.Id.ToString(),
 | 
				
			||||||
 | 
					                                    reviewerUser = HomeWindowViewModel.Reviewer?.Id.ToString()
 | 
				
			||||||
 | 
					                                }).ExecuteCommand();
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        return true;
 | 
				
			||||||
 | 
					                    });
 | 
				
			||||||
 | 
					                    if (f.Data)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        // 更新屏显库存
 | 
				
			||||||
 | 
					                        //List<ChannelStock> singleChannels = record.FindAll(it => it.BoardType != 1);
 | 
				
			||||||
 | 
					                        List<ChannelStock> singleChannels = record.FindAll(it => it.BoardType != 1)
 | 
				
			||||||
 | 
					                        .GroupBy(it => new
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            it.DrawerNo,
 | 
				
			||||||
 | 
					                            it.ColNo
 | 
				
			||||||
 | 
					                        }).Select(it =>
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            var ret = it.First();
 | 
				
			||||||
 | 
					                            ret.CheckQuantity = it.Sum(itx => itx.CheckQuantity);
 | 
				
			||||||
 | 
					                            //ret.AddQuantity = it.Sum(itx => itx.AddQuantity);
 | 
				
			||||||
 | 
					                            return ret;
 | 
				
			||||||
 | 
					                        }).ToList();
 | 
				
			||||||
 | 
					                        if ((singleChannels.Count > 0 ? singleChannels[0].BoardType : 1) == 5)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            singleChannels.ForEach(it =>
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                // 将库位多批次的总库存数更新标签
 | 
				
			||||||
 | 
					                                _portUtil.WriteQuantity(it.DrawerNo, it.ColNo, it.CheckQuantity);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            });
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        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;
 | 
				
			||||||
 | 
					                    _isFinishClick = false;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    _isFinishClick = false;
 | 
				
			||||||
 | 
					                    AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        Message = "盘点完成,库存无改变",
 | 
				
			||||||
 | 
					                        Type = MsgType.ERROR
 | 
				
			||||||
 | 
					                    };
 | 
				
			||||||
 | 
					                    _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
 | 
					                    Status = 0;
 | 
				
			||||||
 | 
					                    _isFinishClick = false;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }, () => Status == 3 && !_isFinishClick).ObservesProperty(() => Status);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // 取消按钮
 | 
				
			||||||
 | 
					        public DelegateCommand CancleTake
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                _portUtil.ResetData();
 | 
				
			||||||
 | 
					                Status = 0;
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private void DoDialogResult(IDialogResult dialogResult)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            // 委托   被动执行     被子窗口执行
 | 
				
			||||||
 | 
					            // dialogResult  第一方面可以拿到任意参数   第二方面   可判断关闭状态
 | 
				
			||||||
 | 
					            //if (dialogResult.Result == ButtonResult.OK)
 | 
				
			||||||
 | 
					            //{
 | 
				
			||||||
 | 
					            RequestData();
 | 
				
			||||||
 | 
					            //}
 | 
				
			||||||
 | 
					            //MessageBox.Show("返回值:" + dialogResult.Result.ToString());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        ///// <summary>
 | 
				
			||||||
 | 
					        ///// 导出账册
 | 
				
			||||||
 | 
					        ///// </summary>
 | 
				
			||||||
 | 
					        //public DelegateCommand DownloadAccountBook
 | 
				
			||||||
 | 
					        //{
 | 
				
			||||||
 | 
					        //    get => new DelegateCommand(() =>
 | 
				
			||||||
 | 
					        //    {
 | 
				
			||||||
 | 
					        //        if (!string.IsNullOrEmpty(Stock))
 | 
				
			||||||
 | 
					        //        {
 | 
				
			||||||
 | 
					        //            //根据库位信息查询出药品id
 | 
				
			||||||
 | 
					        //            string[] strStock = Stock.Split('-');
 | 
				
			||||||
 | 
					        //            if (strStock.Length >= 2)
 | 
				
			||||||
 | 
					        //            {
 | 
				
			||||||
 | 
					        //                //DrugId = SqlSugarHelper.Db.Queryable<ChannelStock>().Where(cs => cs.DrawerNo == Convert.ToInt32(strStock[0]) && cs.ColNo == Convert.ToInt32(strStock[1])).Select(cs => cs.DrugId).ToString();
 | 
				
			||||||
 | 
					        //                var list = SqlSugarHelper.Db.Queryable<ChannelStock>().Where(cs => cs.DrawerNo == Convert.ToInt32(strStock[0]) && cs.ColNo == Convert.ToInt32(strStock[1]) && cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).ToList();
 | 
				
			||||||
 | 
					        //                if (list != null && list.Count > 0)
 | 
				
			||||||
 | 
					        //                {
 | 
				
			||||||
 | 
					        //                    drugId = list[0].DrugId;
 | 
				
			||||||
 | 
					        //                }
 | 
				
			||||||
 | 
					        //            }
 | 
				
			||||||
 | 
					        //        }
 | 
				
			||||||
 | 
					        //        GridReportUtil.PrintReportAccountBook(StartDate, EndDate, drugId ?? "");
 | 
				
			||||||
 | 
					        //    });
 | 
				
			||||||
 | 
					        //}
 | 
				
			||||||
 | 
					        //public DelegateCommand DownLoadCommond
 | 
				
			||||||
 | 
					        //{
 | 
				
			||||||
 | 
					        //    get => new DelegateCommand(() =>
 | 
				
			||||||
 | 
					        //    {
 | 
				
			||||||
 | 
					        //        GridReportUtil.PrintReportStockNew(StartDate, EndDate);
 | 
				
			||||||
 | 
					        //    });
 | 
				
			||||||
 | 
					        //}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //这个方法用于拦截请求,continuationCallback(true)就是不拦截,continuationCallback(false)拦截本次操作
 | 
				
			||||||
 | 
					        public void ConfirmNavigationRequest(NavigationContext navigationContext, Action<bool> continuationCallback)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            continuationCallback(true);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void RequestData()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            ChannelStocks.Clear();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            List<ChannelStock> q = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
 | 
					                .Includes<DrugInfo>(cs => cs.DrugInfo)
 | 
				
			||||||
 | 
					                .InnerJoin<ChannelList>((cs, cl) => cs.Chnguid == cl.Id && cs.DrugId == cl.DrugId)
 | 
				
			||||||
 | 
					                .Where(cs => cs.DrawerType == 1)
 | 
				
			||||||
 | 
					                .Where(cs => cs.DrugId != null)
 | 
				
			||||||
 | 
					                .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                .WhereIF(!String.IsNullOrEmpty(SearchValue), cs => cs.DrugInfo.DrugName == SearchValue)
 | 
				
			||||||
 | 
					                .OrderBy(cs => cs.DrawerNo)
 | 
				
			||||||
 | 
					                .OrderBy(cs => cs.ColNo)
 | 
				
			||||||
 | 
					                //.OrderBy(cs => cs.DrugId)
 | 
				
			||||||
 | 
					                .ToList();
 | 
				
			||||||
 | 
					            ChannelStocks = q.Select(it => { it.CheckQuantity = it.Quantity; return it; }).ToList();
 | 
				
			||||||
 | 
					            ChannelStocks = q;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //接收导航传过来的参数  现在是在此处初始化了表格数据
 | 
				
			||||||
 | 
					        public void OnNavigatedTo(NavigationContext navigationContext)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            _eventAggregator.GetEvent<PortUtilEvent>().Subscribe(DoMyPrismEvent);
 | 
				
			||||||
 | 
					            Task.Factory.StartNew(() => { RequestData(); });
 | 
				
			||||||
 | 
					            //RequestData();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //每次导航的时候,该实列用不用重新创建,true是不重新创建,false是重新创建
 | 
				
			||||||
 | 
					        public bool IsNavigationTarget(NavigationContext navigationContext)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //这个方法用于拦截请求
 | 
				
			||||||
 | 
					        public void OnNavigatedFrom(NavigationContext navigationContext)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            // 取消消息订阅
 | 
				
			||||||
 | 
					            _eventAggregator.GetEvent<PortUtilEvent>().Unsubscribe(DoMyPrismEvent);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,647 @@
 | 
				
			||||||
 | 
					using DM_Weight.Models;
 | 
				
			||||||
 | 
					using DM_Weight.msg;
 | 
				
			||||||
 | 
					using DM_Weight.Port;
 | 
				
			||||||
 | 
					using DM_Weight.Report;
 | 
				
			||||||
 | 
					using DM_Weight.select;
 | 
				
			||||||
 | 
					using DM_Weight.util;
 | 
				
			||||||
 | 
					using log4net;
 | 
				
			||||||
 | 
					using log4net.Repository.Hierarchy;
 | 
				
			||||||
 | 
					using Prism.Commands;
 | 
				
			||||||
 | 
					using Prism.Events;
 | 
				
			||||||
 | 
					using Prism.Mvvm;
 | 
				
			||||||
 | 
					using Prism.Regions;
 | 
				
			||||||
 | 
					using Prism.Services.Dialogs;
 | 
				
			||||||
 | 
					using SqlSugar;
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.ComponentModel;
 | 
				
			||||||
 | 
					using System.Configuration;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using System.Windows.Data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class CheckStockNewWindowViewModel : BindableBase, IConfirmNavigationRequest, IRegionMemberLifetime
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        //public static CheckStockNewWindowViewModel vm;
 | 
				
			||||||
 | 
					        private readonly ILog logger = LogManager.GetLogger(typeof(CheckStockWindowViewModel));
 | 
				
			||||||
 | 
					        public string drugId;
 | 
				
			||||||
 | 
					        //public string Stock;
 | 
				
			||||||
 | 
					        private static readonly DateTime Jan1st1970 = new DateTime
 | 
				
			||||||
 | 
					    (1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
 | 
				
			||||||
 | 
					        public static List<OrderTakeSelect> StaticSelects = new()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            new OrderTakeSelect
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Code = "DrugName",
 | 
				
			||||||
 | 
					                Name = "药品名称"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            new OrderTakeSelect
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Code = "PyCode",
 | 
				
			||||||
 | 
					                Name = "拼音码"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            new OrderTakeSelect
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Code = "DrugBarcode",
 | 
				
			||||||
 | 
					                Name = "药品条码"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            new OrderTakeSelect
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Code = "DrugId",
 | 
				
			||||||
 | 
					                Name = "药品编码"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private List<OrderTakeSelect> _selects = StaticSelects;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public List<OrderTakeSelect> Selects
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get { return _selects; }
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _selects, value);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private OrderTakeSelect _selectedItem = StaticSelects[0];
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 查询条件 查询字段
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public OrderTakeSelect SelectedItem
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get { return _selectedItem; }
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _selectedItem, value);
 | 
				
			||||||
 | 
					                RequestData();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private string? _searchValue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 查询条件 查询字段值
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public string? SearchValue
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get { return _searchValue; }
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _searchValue, value);
 | 
				
			||||||
 | 
					                RequestData();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        //private DateTime? _startDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //public DateTime? StartDate
 | 
				
			||||||
 | 
					        //{
 | 
				
			||||||
 | 
					        //    get => _startDate;
 | 
				
			||||||
 | 
					        //    set
 | 
				
			||||||
 | 
					        //    {
 | 
				
			||||||
 | 
					        //        if (value != null)
 | 
				
			||||||
 | 
					        //        {
 | 
				
			||||||
 | 
					        //            SetProperty(ref _startDate, new DateTime(value?.Year ?? 0, value?.Month ?? 0, value?.Day ?? 0));
 | 
				
			||||||
 | 
					        //        }
 | 
				
			||||||
 | 
					        //        else
 | 
				
			||||||
 | 
					        //        {
 | 
				
			||||||
 | 
					        //            SetProperty(ref _startDate, value);
 | 
				
			||||||
 | 
					        //        }
 | 
				
			||||||
 | 
					        //        RequestData();
 | 
				
			||||||
 | 
					        //    }
 | 
				
			||||||
 | 
					        //}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //private DateTime? _endDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 23, 59, 59);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //public DateTime? EndDate
 | 
				
			||||||
 | 
					        //{
 | 
				
			||||||
 | 
					        //    get => _endDate;
 | 
				
			||||||
 | 
					        //    set
 | 
				
			||||||
 | 
					        //    {
 | 
				
			||||||
 | 
					        //        if (value != null)
 | 
				
			||||||
 | 
					        //        {
 | 
				
			||||||
 | 
					        //            TimeSpan ershisi = new TimeSpan(23, 59, 59);
 | 
				
			||||||
 | 
					        //            SetProperty(ref _endDate, new DateTime(value?.Year ?? 0, value?.Month ?? 0, value?.Day ?? 0, 23, 59, 59));
 | 
				
			||||||
 | 
					        //        }
 | 
				
			||||||
 | 
					        //        else
 | 
				
			||||||
 | 
					        //        {
 | 
				
			||||||
 | 
					        //            SetProperty(ref _endDate, value);
 | 
				
			||||||
 | 
					        //        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //        RequestData();
 | 
				
			||||||
 | 
					        //    }
 | 
				
			||||||
 | 
					        //}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        IDialogService _dialogService;
 | 
				
			||||||
 | 
					        IEventAggregator _eventAggregator;
 | 
				
			||||||
 | 
					        ////private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
 | 
					        private PortUtil _portUtil;
 | 
				
			||||||
 | 
					        private int _status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public int Status { get => _status; set => SetProperty(ref _status, value); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private int _drawerNo = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public int DrawerNo
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _drawerNo;
 | 
				
			||||||
 | 
					            set => SetProperty(ref _drawerNo, value);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public long CurrentTimeMillis()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return (long)(DateTime.UtcNow - Jan1st1970).TotalMilliseconds;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public CheckStockNewWindowViewModel(PortUtil portUtil, IEventAggregator eventAggregator, IDialogService dialogService)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            _dialogService = dialogService;
 | 
				
			||||||
 | 
					            ////this.SqlSugarHelper.Db = sqlSugarScope;
 | 
				
			||||||
 | 
					            _portUtil = portUtil;
 | 
				
			||||||
 | 
					            _portUtil = portUtil;
 | 
				
			||||||
 | 
					            _eventAggregator = eventAggregator;
 | 
				
			||||||
 | 
					            //vm= this;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        void DoMyPrismEvent(DeviceMsg msg)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (msg.WindowName == "CheckStockNewWindow")
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                IGrouping<string, ChannelStock> grouping = enumerator.Current;
 | 
				
			||||||
 | 
					                int DrawerNo =Convert.ToInt32(grouping.Key.Substring(0, grouping.Key.IndexOf('-')));
 | 
				
			||||||
 | 
					                List<ChannelStock> channelStocks = grouping.ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                switch (msg.EventType)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    // 抽屉打开
 | 
				
			||||||
 | 
					                    case EventType.DRAWEROPEN:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        if (Status == 1)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            if (channelStocks[0].process == 1)
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                channelStocks.ForEach(it => it.process = 2);
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                            //Status = 2;
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                    // 抽屉关闭
 | 
				
			||||||
 | 
					                    case EventType.DRAWERCLOSE:
 | 
				
			||||||
 | 
					                        if (Status == 1)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            if (channelStocks[0].process == 2)
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                channelStocks.ForEach(it => it.process = 3);
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                            IGrouping<string, ChannelStock> groupingBefore = enumerator.Current;
 | 
				
			||||||
 | 
					                            int DrawerNoBefore =  Convert.ToInt32(groupingBefore.Key.Substring(0, groupingBefore.Key.IndexOf('-')));
 | 
				
			||||||
 | 
					                            if (enumerator.MoveNext())
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                IGrouping<string, ChannelStock> groupingAfter = enumerator.Current;
 | 
				
			||||||
 | 
					                                int DrawerNoAfter = Convert.ToInt32(groupingAfter.Key.Substring(0, groupingAfter.Key.IndexOf('-')));
 | 
				
			||||||
 | 
					                                //if (DrawerNoBefore < 9 && DrawerNoAfter > 8)
 | 
				
			||||||
 | 
					                                //{
 | 
				
			||||||
 | 
					                                //    Thread.Sleep(50);
 | 
				
			||||||
 | 
					                                //}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                logger.Info($"抽屉号DrawerNoBefore【{DrawerNoBefore}】抽屉号DrawerNoAfter【{DrawerNoAfter}】");
 | 
				
			||||||
 | 
					                                if (DrawerNoAfter == 17)
 | 
				
			||||||
 | 
					                                {
 | 
				
			||||||
 | 
					                                    if (DrawerNoBefore == 17)
 | 
				
			||||||
 | 
					                                    {
 | 
				
			||||||
 | 
					                                        Thread.Sleep(1000);
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					                                    else
 | 
				
			||||||
 | 
					                                    {
 | 
				
			||||||
 | 
					                                        Thread.Sleep(500);
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                                else
 | 
				
			||||||
 | 
					                                {
 | 
				
			||||||
 | 
					                                    Thread.Sleep(80);
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                                logger.Info($"抽屉号DrawerNoBefore【{DrawerNoBefore}】抽屉号DrawerNoAfter【{DrawerNoAfter}】");
 | 
				
			||||||
 | 
					                                OpenOneByOne();
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                            // 已经全部取出
 | 
				
			||||||
 | 
					                            else
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                Status = 3;
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                    // 数量变化
 | 
				
			||||||
 | 
					                    case EventType.UPDATEQUANTITY:
 | 
				
			||||||
 | 
					                        if (Status == 1)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            logger.Info($"抽屉【{DrawerNo}】库位药品数量【{msg.Quantitys}】");
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                    // 打开失败
 | 
				
			||||||
 | 
					                    case EventType.OPENERROR:
 | 
				
			||||||
 | 
					                        AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            Message = msg.Message,
 | 
				
			||||||
 | 
					                            Type = MsgType.ERROR,
 | 
				
			||||||
 | 
					                        };
 | 
				
			||||||
 | 
					                        _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
 | 
					                        Status = 0;
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        private ChannelStock? _selectedChannel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public ChannelStock? SelectedChannel
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _selectedChannel;
 | 
				
			||||||
 | 
					            set => SetProperty(ref _selectedChannel, value);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private List<ChannelStock>? _channelStocks = new();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public List<ChannelStock>? ChannelStocks
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _channelStocks;
 | 
				
			||||||
 | 
					            set => SetProperty(ref _channelStocks, value);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private IEnumerable<IGrouping<string, ChannelStock>> enumerable;
 | 
				
			||||||
 | 
					        private IEnumerator<IGrouping<string, ChannelStock>> enumerator;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public DelegateCommand BindingChannelDialog
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                DialogParameters dialogParameters = new DialogParameters();
 | 
				
			||||||
 | 
					                DialogServiceExtensions.ShowDialogHost(_dialogService, "BindingChannelDialog", dialogParameters, DoDialogResult, "RootDialog");
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public DelegateCommand QueryCommand
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                RequestData();
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 盘点
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public DelegateCommand OpenDrawer
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (Status == 0)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    //enumerable = ChannelStocks.GroupBy(cs => cs.DrawerNo, cs => cs);
 | 
				
			||||||
 | 
					                    enumerable = ChannelStocks.GroupBy(cs => cs.Location, cs => cs);
 | 
				
			||||||
 | 
					                    enumerator = enumerable.GetEnumerator();
 | 
				
			||||||
 | 
					                    enumerator.MoveNext();
 | 
				
			||||||
 | 
					                    Status = 1;
 | 
				
			||||||
 | 
					                    OpenOneByOne();
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        private void OpenOneByOne()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            IGrouping<string, ChannelStock> grouping = enumerator.Current;
 | 
				
			||||||
 | 
					            int DrawerNo =Convert.ToInt32(grouping.Key.Substring(0,grouping.Key.IndexOf('-')));
 | 
				
			||||||
 | 
					            List<ChannelStock> channelStocks = grouping.ToList();
 | 
				
			||||||
 | 
					            channelStocks.ForEach(it => it.process = 1);
 | 
				
			||||||
 | 
					            _portUtil.SpeakAsync("正在打开" + DrawerNo + "号抽屉");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            List<ChannelStock> singleChannels = channelStocks.GroupBy(it => new
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                it.DrawerNo,
 | 
				
			||||||
 | 
					                it.ColNo
 | 
				
			||||||
 | 
					            }).Select(it =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var ret = it.First();
 | 
				
			||||||
 | 
					                ret.Quantity = it.Sum(itx => itx.Quantity);
 | 
				
			||||||
 | 
					                ret.AddQuantity = it.Sum(itx => itx.AddQuantity);
 | 
				
			||||||
 | 
					                return ret;
 | 
				
			||||||
 | 
					            }).ToList().FindAll(it => it.BoardType != 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // 发送取药数量
 | 
				
			||||||
 | 
					            //singleChannels.ForEach(it =>
 | 
				
			||||||
 | 
					            //{
 | 
				
			||||||
 | 
					            //    try
 | 
				
			||||||
 | 
					            //    {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            //        _portUtil.TakeQuantity(DrawerNo, it.ColNo, it.TakeQuantity, it.Quantity - it.TakeQuantity);
 | 
				
			||||||
 | 
					            //    }
 | 
				
			||||||
 | 
					            //    catch (Exception ex)
 | 
				
			||||||
 | 
					            //    {
 | 
				
			||||||
 | 
					            //        AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
 | 
					            //        {
 | 
				
			||||||
 | 
					            //            Message = $"打开抽屉异常{ex.Message}",
 | 
				
			||||||
 | 
					            //            Type = MsgType.ERROR,
 | 
				
			||||||
 | 
					            //        };
 | 
				
			||||||
 | 
					            //        _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
 | 
					            //    }
 | 
				
			||||||
 | 
					            //});
 | 
				
			||||||
 | 
					            _portUtil.WindowName = "CheckStockNewWindow";
 | 
				
			||||||
 | 
					            _portUtil.Operate = true;
 | 
				
			||||||
 | 
					            _portUtil.BoardType = singleChannels.Count > 0 ? singleChannels[0].BoardType : 1;
 | 
				
			||||||
 | 
					            _portUtil.ColNos = singleChannels.Select(it => it.ColNo).ToArray();
 | 
				
			||||||
 | 
					            _portUtil.Stocks = singleChannels.Select(it => it.Quantity).ToArray();
 | 
				
			||||||
 | 
					            _portUtil.DrawerNo = DrawerNo;
 | 
				
			||||||
 | 
					            _portUtil.Start();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private bool _isFinishClick = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // 完成按钮
 | 
				
			||||||
 | 
					        public DelegateCommand TakeFinish
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                _isFinishClick = true;
 | 
				
			||||||
 | 
					                //List<ChannelStock> record = ChannelStocks.FindAll(it => it.Quantity != it.CheckQuantity).ToList();
 | 
				
			||||||
 | 
					                List<ChannelStock> record = ChannelStocks;
 | 
				
			||||||
 | 
					                if (record.Count > 0)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    string InvoiceId = "CHECK_" + CurrentTimeMillis();
 | 
				
			||||||
 | 
					                    var f = SqlSugarHelper.Db.UseTran(() =>
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        for (int i = 0; i < record.Count; i++)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            ChannelStock it = record[i];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            // 更新数据 库存信息
 | 
				
			||||||
 | 
					                            SqlSugarHelper.Db.Updateable(new ChannelStock()
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                Quantity = it.CheckQuantity,
 | 
				
			||||||
 | 
					                                ManuNo = it.ManuNo,
 | 
				
			||||||
 | 
					                                EffDate = it.EffDate,
 | 
				
			||||||
 | 
					                                Id = it.Id,
 | 
				
			||||||
 | 
					                            }).UpdateColumns(it => new { it.Quantity, it.ManuNo, it.EffDate }).ExecuteCommand();
 | 
				
			||||||
 | 
					                            // 获取更新完库存后的药品库存
 | 
				
			||||||
 | 
					                            List<ChannelStock> nowChannels = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
 | 
					                                .Where(cs => cs.MachineId.Equals(it.MachineId))
 | 
				
			||||||
 | 
					                                .Where(cs => cs.DrugId.Equals(it.DrugId))
 | 
				
			||||||
 | 
					                                .Where(cs => cs.DrawerType == 1)
 | 
				
			||||||
 | 
					                                .ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            // 保存数据 盘点记录
 | 
				
			||||||
 | 
					                            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 = InvoiceId,
 | 
				
			||||||
 | 
					                                StockQuantity = nowChannels.Sum(it => it.Quantity),
 | 
				
			||||||
 | 
					                                CheckQuantity = it.CheckQuantity,
 | 
				
			||||||
 | 
					                                ManunoQuantity = nowChannels.FindAll(it2 => it2.ManuNo == it.ManuNo).Sum(it => it.Quantity)
 | 
				
			||||||
 | 
					                            }).ExecuteCommand();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            logger.Info($"库存盘点->库位【{it.DrawerNo}-{it.ColNo}】药品【{it.DrugInfo.DrugName}】盘点前库存【{it.Quantity}】,更改后【{it.CheckQuantity}】");
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        string machine_id = (ConfigurationManager.AppSettings["machineId"] ?? "DM1");
 | 
				
			||||||
 | 
					                        string strSql = $@"SELECT cl.`row_no` AS rowNo,cl.`col_no` AS colNo,cl.`quantity` AS quantity,cl.`manu_no` AS manuNo,cl.`eff_date` AS effDate,
 | 
				
			||||||
 | 
					                          di.`drug_name` AS drugName,di.`drug_spec` AS drugSpec,di.`pack_unit` AS packUnit,di.`manufactory` AS manufactory,di.`max_stock` maxStock,
 | 
				
			||||||
 | 
					                          cl.`drug_id` AS drugId,cl.`machine_id` AS MachineId  FROM channel_stock cl INNER JOIN drug_info di ON di.`drug_id` = cl.`drug_id` WHERE cl.`machine_id` =  '{machine_id}' AND cl.`drawer_type` = 1 ORDER BY cl.`drug_id`";
 | 
				
			||||||
 | 
					                        List<CheckRecordStock> checkRecordStockList = SqlSugarHelper.Db.SqlQueryable<dynamic>(strSql)
 | 
				
			||||||
 | 
					                                                                           .AddParameters(new
 | 
				
			||||||
 | 
					                                                                           {
 | 
				
			||||||
 | 
					                                                                               machineId = ConfigurationManager.AppSettings["machineId"] ?? "DM1"
 | 
				
			||||||
 | 
					                                                                           })
 | 
				
			||||||
 | 
					                                                                          .Select(it => new CheckRecordStock())
 | 
				
			||||||
 | 
					                                                                          .ToList();
 | 
				
			||||||
 | 
					                        List<CheckRecordStock> insertList = new List<CheckRecordStock>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        if (checkRecordStockList != null && checkRecordStockList.Count > 0)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            for (int i = 0; i < checkRecordStockList.Count; i++)
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                if (!(insertList.Where(it => it.drugId == checkRecordStockList[i].drugId && it.manuNo == checkRecordStockList[i].manuNo).Count() > 0))
 | 
				
			||||||
 | 
					                                {
 | 
				
			||||||
 | 
					                                    insertList.Add(checkRecordStockList[i]);
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                            for (int j = 0; j < insertList.Count; j++)
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                CheckRecordStock cStock = insertList[j];
 | 
				
			||||||
 | 
					                                // 保存数据 盘点后药品总库存及批次库存数
 | 
				
			||||||
 | 
					                                SqlSugarHelper.Db.Insertable(new CheckRecordStock()
 | 
				
			||||||
 | 
					                                {
 | 
				
			||||||
 | 
					                                    rowNo = cStock.rowNo,
 | 
				
			||||||
 | 
					                                    colNo = cStock.colNo,
 | 
				
			||||||
 | 
					                                    ManuQuantity = checkRecordStockList.Where(it => it.drugId == cStock.drugId && it.manuNo == cStock.manuNo).Sum(it => it.quantity),
 | 
				
			||||||
 | 
					                                    manuNo = cStock.manuNo,
 | 
				
			||||||
 | 
					                                    effDate = cStock.effDate,
 | 
				
			||||||
 | 
					                                    drugName = cStock.drugName,
 | 
				
			||||||
 | 
					                                    manufactory = cStock.manufactory,
 | 
				
			||||||
 | 
					                                    drugSpec = cStock.drugSpec,
 | 
				
			||||||
 | 
					                                    packUnit = cStock.packUnit,
 | 
				
			||||||
 | 
					                                    maxStock = cStock.maxStock,
 | 
				
			||||||
 | 
					                                    drugId = cStock.drugId,
 | 
				
			||||||
 | 
					                                    MachineId = cStock.MachineId,
 | 
				
			||||||
 | 
					                                    quantity = checkRecordStockList.Where(it => it.drugId == cStock.drugId).Sum(it => it.quantity),
 | 
				
			||||||
 | 
					                                    optdate = DateTime.Now.ToString(),
 | 
				
			||||||
 | 
					                                    operatorUser = HomeWindowViewModel.Operator?.Id.ToString(),
 | 
				
			||||||
 | 
					                                    reviewerUser = HomeWindowViewModel.Reviewer?.Id.ToString()
 | 
				
			||||||
 | 
					                                }).ExecuteCommand();
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        return true;
 | 
				
			||||||
 | 
					                    });
 | 
				
			||||||
 | 
					                    if (f.Data)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        // 更新屏显库存
 | 
				
			||||||
 | 
					                        //List<ChannelStock> singleChannels = record.FindAll(it => it.BoardType != 1);
 | 
				
			||||||
 | 
					                        List<ChannelStock> singleChannels = record.FindAll(it => it.BoardType != 1)
 | 
				
			||||||
 | 
					                        .GroupBy(it => new
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            it.DrawerNo,
 | 
				
			||||||
 | 
					                            it.ColNo
 | 
				
			||||||
 | 
					                        }).Select(it =>
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            var ret = it.First();
 | 
				
			||||||
 | 
					                            ret.CheckQuantity = it.Sum(itx => itx.CheckQuantity);
 | 
				
			||||||
 | 
					                            //ret.AddQuantity = it.Sum(itx => itx.AddQuantity);
 | 
				
			||||||
 | 
					                            return ret;
 | 
				
			||||||
 | 
					                        }).ToList();
 | 
				
			||||||
 | 
					                        if ((singleChannels.Count > 0 ? singleChannels[0].BoardType : 1) == 5)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            singleChannels.ForEach(it =>
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                // 将库位多批次的总库存数更新标签
 | 
				
			||||||
 | 
					                                _portUtil.WriteQuantity(it.DrawerNo, it.ColNo, it.CheckQuantity);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            });
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        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;
 | 
				
			||||||
 | 
					                    _isFinishClick = false;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    _isFinishClick = false;
 | 
				
			||||||
 | 
					                    AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        Message = "盘点完成,库存无改变",
 | 
				
			||||||
 | 
					                        Type = MsgType.ERROR
 | 
				
			||||||
 | 
					                    };
 | 
				
			||||||
 | 
					                    _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
 | 
					                    Status = 0;
 | 
				
			||||||
 | 
					                    _isFinishClick = false;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }, () => Status == 3 && !_isFinishClick).ObservesProperty(() => Status);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // 取消按钮
 | 
				
			||||||
 | 
					        public DelegateCommand CancleTake
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                _portUtil.ResetData();
 | 
				
			||||||
 | 
					                Status = 0;
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private void DoDialogResult(IDialogResult dialogResult)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            // 委托   被动执行     被子窗口执行
 | 
				
			||||||
 | 
					            // dialogResult  第一方面可以拿到任意参数   第二方面   可判断关闭状态
 | 
				
			||||||
 | 
					            //if (dialogResult.Result == ButtonResult.OK)
 | 
				
			||||||
 | 
					            //{
 | 
				
			||||||
 | 
					            RequestData();
 | 
				
			||||||
 | 
					            //}
 | 
				
			||||||
 | 
					            //MessageBox.Show("返回值:" + dialogResult.Result.ToString());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        ///// <summary>
 | 
				
			||||||
 | 
					        ///// 导出账册
 | 
				
			||||||
 | 
					        ///// </summary>
 | 
				
			||||||
 | 
					        //public DelegateCommand DownloadAccountBook
 | 
				
			||||||
 | 
					        //{
 | 
				
			||||||
 | 
					        //    get => new DelegateCommand(() =>
 | 
				
			||||||
 | 
					        //    {
 | 
				
			||||||
 | 
					        //        if (!string.IsNullOrEmpty(Stock))
 | 
				
			||||||
 | 
					        //        {
 | 
				
			||||||
 | 
					        //            //根据库位信息查询出药品id
 | 
				
			||||||
 | 
					        //            string[] strStock = Stock.Split('-');
 | 
				
			||||||
 | 
					        //            if (strStock.Length >= 2)
 | 
				
			||||||
 | 
					        //            {
 | 
				
			||||||
 | 
					        //                //DrugId = SqlSugarHelper.Db.Queryable<ChannelStock>().Where(cs => cs.DrawerNo == Convert.ToInt32(strStock[0]) && cs.ColNo == Convert.ToInt32(strStock[1])).Select(cs => cs.DrugId).ToString();
 | 
				
			||||||
 | 
					        //                var list = SqlSugarHelper.Db.Queryable<ChannelStock>().Where(cs => cs.DrawerNo == Convert.ToInt32(strStock[0]) && cs.ColNo == Convert.ToInt32(strStock[1]) && cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).ToList();
 | 
				
			||||||
 | 
					        //                if (list != null && list.Count > 0)
 | 
				
			||||||
 | 
					        //                {
 | 
				
			||||||
 | 
					        //                    drugId = list[0].DrugId;
 | 
				
			||||||
 | 
					        //                }
 | 
				
			||||||
 | 
					        //            }
 | 
				
			||||||
 | 
					        //        }
 | 
				
			||||||
 | 
					        //        GridReportUtil.PrintReportAccountBook(StartDate, EndDate, drugId ?? "");
 | 
				
			||||||
 | 
					        //    });
 | 
				
			||||||
 | 
					        //}
 | 
				
			||||||
 | 
					        //public DelegateCommand DownLoadCommond
 | 
				
			||||||
 | 
					        //{
 | 
				
			||||||
 | 
					        //    get => new DelegateCommand(() =>
 | 
				
			||||||
 | 
					        //    {
 | 
				
			||||||
 | 
					        //        GridReportUtil.PrintReportStockNew(StartDate, EndDate);
 | 
				
			||||||
 | 
					        //    });
 | 
				
			||||||
 | 
					        //}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //这个方法用于拦截请求,continuationCallback(true)就是不拦截,continuationCallback(false)拦截本次操作
 | 
				
			||||||
 | 
					        public void ConfirmNavigationRequest(NavigationContext navigationContext, Action<bool> continuationCallback)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            continuationCallback(true);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void RequestData()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            ChannelStocks.Clear();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            ChannelStocks.Clear();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            List<ChannelStock> q = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
 | 
					                .Includes<DrugInfo>(cs => cs.DrugInfo)
 | 
				
			||||||
 | 
					                .InnerJoin<ChannelList>((cs, cl) => cs.Chnguid == cl.Id && cs.DrugId == cl.DrugId)
 | 
				
			||||||
 | 
					                .Where(cs => cs.DrawerType == 1)
 | 
				
			||||||
 | 
					                .Where(cs => cs.DrugId != null)
 | 
				
			||||||
 | 
					                .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                .WhereIF(!String.IsNullOrEmpty(SearchValue), cs => cs.DrugInfo.DrugName == SearchValue)
 | 
				
			||||||
 | 
					                .OrderBy(cs => cs.DrawerNo)
 | 
				
			||||||
 | 
					                .OrderBy(cs => cs.ColNo)
 | 
				
			||||||
 | 
					                //.OrderBy(cs => cs.DrugId)
 | 
				
			||||||
 | 
					                .ToList();
 | 
				
			||||||
 | 
					            ChannelStocks = q.Select(it => { it.CheckQuantity = it.Quantity; return it; }).ToList();
 | 
				
			||||||
 | 
					            ChannelStocks = q;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //接收导航传过来的参数  现在是在此处初始化了表格数据
 | 
				
			||||||
 | 
					        public void OnNavigatedTo(NavigationContext navigationContext)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            _eventAggregator.GetEvent<PortUtilEvent>().Subscribe(DoMyPrismEvent);
 | 
				
			||||||
 | 
					            Task.Factory.StartNew(() => { RequestData(); });
 | 
				
			||||||
 | 
					            //RequestData();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //每次导航的时候,该实列用不用重新创建,true是不重新创建,false是重新创建
 | 
				
			||||||
 | 
					        public bool IsNavigationTarget(NavigationContext navigationContext)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //这个方法用于拦截请求
 | 
				
			||||||
 | 
					        public void OnNavigatedFrom(NavigationContext navigationContext)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            // 取消消息订阅
 | 
				
			||||||
 | 
					            _eventAggregator.GetEvent<PortUtilEvent>().Unsubscribe(DoMyPrismEvent);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -33,12 +33,12 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private PortUtil _portUtil;
 | 
					        private PortUtil _portUtil;
 | 
				
			||||||
        IEventAggregator _eventAggregator;
 | 
					        IEventAggregator _eventAggregator;
 | 
				
			||||||
        private SqlSugarScope _sqlSugarScope1;
 | 
					        ////private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
        public CheckStockWindowViewModel(PortUtil portUtil, IEventAggregator eventAggregator,SqlSugarScope sqlSugarScope)
 | 
					        public CheckStockWindowViewModel(PortUtil portUtil, IEventAggregator eventAggregator)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            _portUtil = portUtil;
 | 
					            _portUtil = portUtil;
 | 
				
			||||||
            _eventAggregator = eventAggregator;
 | 
					            _eventAggregator = eventAggregator;
 | 
				
			||||||
            this._sqlSugarScope1= sqlSugarScope;
 | 
					            //this.SqlSugarHelper.Db= sqlSugarScope;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        void DoMyPrismEvent(DeviceMsg msg)
 | 
					        void DoMyPrismEvent(DeviceMsg msg)
 | 
				
			||||||
| 
						 | 
					@ -151,7 +151,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                if (record.Count > 0)
 | 
					                if (record.Count > 0)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    string InvoiceId = "CHECK_" + CurrentTimeMillis();
 | 
					                    string InvoiceId = "CHECK_" + CurrentTimeMillis();
 | 
				
			||||||
                    var f = _sqlSugarScope1.UseTran(() =>
 | 
					                    var f = SqlSugarHelper.Db.UseTran(() =>
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        for (int i = 0; i < record.Count; i++)
 | 
					                        for (int i = 0; i < record.Count; i++)
 | 
				
			||||||
| 
						 | 
					@ -160,7 +160,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            // 更新数据 库存信息
 | 
					                            // 更新数据 库存信息
 | 
				
			||||||
                            _sqlSugarScope1.Updateable(new ChannelStock()
 | 
					                            SqlSugarHelper.Db.Updateable(new ChannelStock()
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                Quantity = it.CheckQuantity,
 | 
					                                Quantity = it.CheckQuantity,
 | 
				
			||||||
                                ManuNo = it.ManuNo,
 | 
					                                ManuNo = it.ManuNo,
 | 
				
			||||||
| 
						 | 
					@ -168,14 +168,14 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                                Id = it.Id,
 | 
					                                Id = it.Id,
 | 
				
			||||||
                            }).UpdateColumns(it => new { it.Quantity, it.ManuNo, it.EffDate }).ExecuteCommand();
 | 
					                            }).UpdateColumns(it => new { it.Quantity, it.ManuNo, it.EffDate }).ExecuteCommand();
 | 
				
			||||||
                            // 获取更新完库存后的药品库存
 | 
					                            // 获取更新完库存后的药品库存
 | 
				
			||||||
                            List<ChannelStock> nowChannels = _sqlSugarScope1.Queryable<ChannelStock>()
 | 
					                            List<ChannelStock> nowChannels = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
                                .Where(cs => cs.MachineId.Equals(it.MachineId))
 | 
					                                .Where(cs => cs.MachineId.Equals(it.MachineId))
 | 
				
			||||||
                                .Where(cs => cs.DrugId.Equals(it.DrugId))
 | 
					                                .Where(cs => cs.DrugId.Equals(it.DrugId))
 | 
				
			||||||
                                .Where(cs => cs.DrawerType == 1)
 | 
					                                .Where(cs => cs.DrawerType == 1)
 | 
				
			||||||
                                .ToList();
 | 
					                                .ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            // 保存数据 盘点记录
 | 
					                            // 保存数据 盘点记录
 | 
				
			||||||
                            _sqlSugarScope1.Insertable(new MachineRecord()
 | 
					                            SqlSugarHelper.Db.Insertable(new MachineRecord()
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                MachineId = it.MachineId,
 | 
					                                MachineId = it.MachineId,
 | 
				
			||||||
                                DrawerNo = it.DrawerNo,
 | 
					                                DrawerNo = it.DrawerNo,
 | 
				
			||||||
| 
						 | 
					@ -258,16 +258,17 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public long CurrentTimeMillis()
 | 
					        public long CurrentTimeMillis()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            return (long)(DateTime.UtcNow - Jan1st1970).TotalMilliseconds;
 | 
					            return (long)(DateTime.UtcNow - Jan1st1970).TotalMilliseconds;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public bool KeepAlive => false;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void FindDrawerCount()
 | 
					        public void FindDrawerCount()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            int count = _sqlSugarScope1.Queryable<ChannelStock>().Where(cs => cs.DrawerType != 3)
 | 
					            int count = SqlSugarHelper.Db.Queryable<ChannelList>().Where(cs => cs.DrawerType != 3)
 | 
				
			||||||
                .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).GroupBy(cs => cs.DrawerNo).Select(cs => SqlFunc.AggregateCount(cs.DrawerNo)).Count();
 | 
					                .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).GroupBy(cs => cs.DrawerNo).Select(cs => SqlFunc.AggregateCount(cs.DrawerNo)).Count();
 | 
				
			||||||
            Is8Drawer = count < 9;
 | 
					            Is8Drawer = count < 9;
 | 
				
			||||||
            Is16Drawer = count >= 16;
 | 
					            Is16Drawer = count >= 16;
 | 
				
			||||||
| 
						 | 
					@ -284,7 +285,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void RequestData()
 | 
					        public void RequestData()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            List<ChannelStock> queryData = _sqlSugarScope1.Queryable<ChannelStock>()
 | 
					            List<ChannelStock> queryData = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
                .Includes(cs => cs.DrugInfo)
 | 
					                .Includes(cs => cs.DrugInfo)
 | 
				
			||||||
                .Where(cs => cs.DrawerNo == DrawerNo)
 | 
					                .Where(cs => cs.DrawerNo == DrawerNo)
 | 
				
			||||||
                .Where(cs => cs.DrugId != null)
 | 
					                .Where(cs => cs.DrugId != null)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -49,16 +49,17 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private PortUtil _portUtil;
 | 
					        private PortUtil _portUtil;
 | 
				
			||||||
        IEventAggregator _eventAggregator;
 | 
					        IEventAggregator _eventAggregator;
 | 
				
			||||||
        private SqlSugarScope _sqlSugarScope1;
 | 
					        ////private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
        public DrawerAddDrugWindowViewModel(PortUtil portUtil, IEventAggregator eventAggregator,SqlSugarScope sqlSugarScope)
 | 
					        public DrawerAddDrugWindowViewModel(PortUtil portUtil, IEventAggregator eventAggregator)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            _portUtil = portUtil;
 | 
					            _portUtil = portUtil;
 | 
				
			||||||
            _eventAggregator = eventAggregator;
 | 
					            _eventAggregator = eventAggregator;
 | 
				
			||||||
            this._sqlSugarScope1= sqlSugarScope;
 | 
					            //this.SqlSugarHelper.Db= sqlSugarScope;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        void DoMyPrismEvent(DeviceMsg msg)
 | 
					        void DoMyPrismEvent(DeviceMsg msg)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					            logger.Info("抽屉加药页面_DoMyPrismEvent");
 | 
				
			||||||
            if (msg.WindowName == "DrawerAddDrugWindow")
 | 
					            if (msg.WindowName == "DrawerAddDrugWindow")
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                switch (msg.EventType)
 | 
					                switch (msg.EventType)
 | 
				
			||||||
| 
						 | 
					@ -142,13 +143,26 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                try
 | 
					                try
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
 | 
					                    //var groupQuery = (from t in ChannelStocks
 | 
				
			||||||
 | 
					                    //                  group t by new { t.ColNo, t.BoardType }
 | 
				
			||||||
 | 
					                    //                 into grp
 | 
				
			||||||
 | 
					                    //                  select new { grp.Key.ColNo, grp.Key.BoardType, quantity = grp.Sum(t => t.Quantity) }).ToList();
 | 
				
			||||||
 | 
					                    //    singleChannelsFor = singleChannelsFor.GroupBy(it => it.ColNo)
 | 
				
			||||||
 | 
					                    //    .Select(it => new
 | 
				
			||||||
 | 
					                    //    {
 | 
				
			||||||
 | 
					                    //        Quantity = it.Sum(itx => itx.Quantity),
 | 
				
			||||||
 | 
					                    //        AddQuantity = it.Sum(itx => itx.AddQuantity)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    //})
 | 
				
			||||||
 | 
					                    //        .ToList()
 | 
				
			||||||
 | 
					                    //        .FindAll(it => it.BoardType != 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    List<ChannelStock> singleChannels = ChannelStocks.FindAll(it => it.BoardType != 1);
 | 
					                    List<ChannelStock> singleChannels = ChannelStocks.FindAll(it => it.BoardType != 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    _portUtil.WindowName = "DrawerAddDrugWindow";
 | 
					                    _portUtil.WindowName = "DrawerAddDrugWindow";
 | 
				
			||||||
                    _portUtil.Operate = true;
 | 
					                    _portUtil.Operate = true;
 | 
				
			||||||
                    _portUtil.BoardType = singleChannels.Count > 0 ? singleChannels[0].BoardType : 1;
 | 
					                    _portUtil.BoardType = singleChannels.Count > 0 ? singleChannels[0].BoardType : 1;
 | 
				
			||||||
                    _portUtil.ColNos = singleChannels.Select(it => it.ColNo).ToArray();
 | 
					                    _portUtil.ColNos = new int[] { };// singleChannels.Select(it => it.ColNo).ToArray();
 | 
				
			||||||
                    _portUtil.Stocks = singleChannels.Select(it => it.Quantity).ToArray();
 | 
					 | 
				
			||||||
                    _portUtil.DrawerNo = DrawerNo;
 | 
					                    _portUtil.DrawerNo = DrawerNo;
 | 
				
			||||||
                    _portUtil.Start();
 | 
					                    _portUtil.Start();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -177,7 +191,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        //string InvoiceId = "DRAWER_" + CurrentTimeMillis();
 | 
					                        //string InvoiceId = "DRAWER_" + CurrentTimeMillis();
 | 
				
			||||||
                        string InvoiceId = PZH;
 | 
					                        string InvoiceId = PZH;
 | 
				
			||||||
                        var f = _sqlSugarScope1.UseTran(() =>
 | 
					                        var f = SqlSugarHelper.Db.UseTran(() =>
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            for (int i = 0; i < record.Count; i++)
 | 
					                            for (int i = 0; i < record.Count; i++)
 | 
				
			||||||
| 
						 | 
					@ -187,7 +201,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                                it.EffDate = it.drugManuNo.EffDate;
 | 
					                                it.EffDate = it.drugManuNo.EffDate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                // 更新数据 库存信息
 | 
					                                // 更新数据 库存信息
 | 
				
			||||||
                                _sqlSugarScope1.Updateable(new ChannelStock()
 | 
					                                SqlSugarHelper.Db.Updateable(new ChannelStock()
 | 
				
			||||||
                                {
 | 
					                                {
 | 
				
			||||||
                                    Quantity = it.Quantity + it.AddQuantity,
 | 
					                                    Quantity = it.Quantity + it.AddQuantity,
 | 
				
			||||||
                                    ManuNo = it.ManuNo,
 | 
					                                    ManuNo = it.ManuNo,
 | 
				
			||||||
| 
						 | 
					@ -195,14 +209,14 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                                    Id = it.Id,
 | 
					                                    Id = it.Id,
 | 
				
			||||||
                                }).UpdateColumns(it => new { it.Quantity, it.ManuNo, it.EffDate }).ExecuteCommand();
 | 
					                                }).UpdateColumns(it => new { it.Quantity, it.ManuNo, it.EffDate }).ExecuteCommand();
 | 
				
			||||||
                                // 获取更新完库存后的药品库存
 | 
					                                // 获取更新完库存后的药品库存
 | 
				
			||||||
                                List<ChannelStock> nowChannels = _sqlSugarScope1.Queryable<ChannelStock>()
 | 
					                                List<ChannelStock> nowChannels = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
                                    .Where(cs => cs.MachineId.Equals(it.MachineId))
 | 
					                                    .Where(cs => cs.MachineId.Equals(it.MachineId))
 | 
				
			||||||
                                    .Where(cs => cs.DrugId.Equals(it.DrugId))
 | 
					                                    .Where(cs => cs.DrugId.Equals(it.DrugId))
 | 
				
			||||||
                                    .Where(cs => cs.DrawerType == 1)
 | 
					                                    .Where(cs => cs.DrawerType == 1)
 | 
				
			||||||
                                    .ToList();
 | 
					                                    .ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                // 保存数据 入库记录
 | 
					                                // 保存数据 入库记录
 | 
				
			||||||
                                _sqlSugarScope1.Insertable(new MachineRecord()
 | 
					                                SqlSugarHelper.Db.Insertable(new MachineRecord()
 | 
				
			||||||
                                {
 | 
					                                {
 | 
				
			||||||
                                    MachineId = it.MachineId,
 | 
					                                    MachineId = it.MachineId,
 | 
				
			||||||
                                    DrawerNo = it.DrawerNo,
 | 
					                                    DrawerNo = it.DrawerNo,
 | 
				
			||||||
| 
						 | 
					@ -211,13 +225,15 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                                    ManuNo = it.ManuNo,
 | 
					                                    ManuNo = it.ManuNo,
 | 
				
			||||||
                                    EffDate = !String.IsNullOrEmpty(it.EffDate) ? DateTime.ParseExact(it.EffDate, "yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture) : null,
 | 
					                                    EffDate = !String.IsNullOrEmpty(it.EffDate) ? DateTime.ParseExact(it.EffDate, "yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture) : null,
 | 
				
			||||||
                                    Operator = HomeWindowViewModel.Operator?.Id,
 | 
					                                    Operator = HomeWindowViewModel.Operator?.Id,
 | 
				
			||||||
                                    Reviewer=HomeWindowViewModel.Reviewer?.Id,
 | 
					                                    Reviewer = HomeWindowViewModel.Reviewer?.Id,
 | 
				
			||||||
                                    OperationTime = DateTime.Now,
 | 
					                                    OperationTime = DateTime.Now,
 | 
				
			||||||
                                    Quantity = it.AddQuantity,
 | 
					                                    Quantity = it.AddQuantity,
 | 
				
			||||||
                                    Type = 1,
 | 
					                                    Type = 1,
 | 
				
			||||||
                                    InvoiceId = InvoiceId,
 | 
					                                    InvoiceId = InvoiceId,
 | 
				
			||||||
                                    StockQuantity = nowChannels.Sum(it => it.Quantity),
 | 
					                                    StockQuantity = nowChannels.Sum(it => it.Quantity),
 | 
				
			||||||
                                    ManunoQuantity = nowChannels.FindAll(it2 => it2.ManuNo == it.ManuNo).Sum(it => it.Quantity)
 | 
					                                    ManunoQuantity = nowChannels.FindAll(it2 => it2.ManuNo == it.ManuNo).Sum(it => it.Quantity),
 | 
				
			||||||
 | 
					                                    SupplierDept = ConfigurationManager.AppSettings["supplierDept"].ToString(),
 | 
				
			||||||
 | 
					                                    ReceiveDept = ConfigurationManager.AppSettings["receiveDept"].ToString()
 | 
				
			||||||
                                }).ExecuteCommand();
 | 
					                                }).ExecuteCommand();
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                            return true;
 | 
					                            return true;
 | 
				
			||||||
| 
						 | 
					@ -225,12 +241,22 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                        if (f.Data)
 | 
					                        if (f.Data)
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            // 更新屏显库存
 | 
					                            // 更新屏显库存
 | 
				
			||||||
                            List<ChannelStock> singleChannels = record.FindAll(it => it.BoardType != 1);
 | 
					                            List<ChannelStock> singleChannels = ChannelStocks.Where(it => it.BoardType != 1)
 | 
				
			||||||
 | 
					                                                                       .GroupBy(it => it.ColNo)
 | 
				
			||||||
 | 
					                                                                       .Select(it =>
 | 
				
			||||||
 | 
					                                                                       {
 | 
				
			||||||
 | 
					                                                                           var ret = it.First();
 | 
				
			||||||
 | 
					                                                                           ret.Quantity = it.Sum(it => it.Quantity);
 | 
				
			||||||
 | 
					                                                                           ret.AddQuantity = it.Sum(it => it.AddQuantity);
 | 
				
			||||||
 | 
					                                                                           return ret;
 | 
				
			||||||
 | 
					                                                                       }).ToList();
 | 
				
			||||||
 | 
					                            singleChannels = singleChannels.Where(it => it.AddQuantity > 0).ToList();
 | 
				
			||||||
                            if ((singleChannels.Count > 0 ? singleChannels[0].BoardType : 1) == 5)
 | 
					                            if ((singleChannels.Count > 0 ? singleChannels[0].BoardType : 1) == 5)
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
 | 
					                                //将库位多批次的总库存数更新标签
 | 
				
			||||||
                                singleChannels.ForEach(it =>
 | 
					                                singleChannels.ForEach(it =>
 | 
				
			||||||
                                {
 | 
					                                {
 | 
				
			||||||
                                    _portUtil.WriteQuantity(it.DrawerNo, it.ColNo, it.Quantity+it.AddQuantity);
 | 
					                                    _portUtil.WriteQuantity(it.DrawerNo, it.ColNo, it.Quantity + it.AddQuantity);
 | 
				
			||||||
                                });
 | 
					                                });
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                            RequestData();
 | 
					                            RequestData();
 | 
				
			||||||
| 
						 | 
					@ -288,15 +314,16 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public long CurrentTimeMillis()
 | 
					        public long CurrentTimeMillis()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            return (long)(DateTime.UtcNow - Jan1st1970).TotalMilliseconds;
 | 
					            return (long)(DateTime.UtcNow - Jan1st1970).TotalMilliseconds;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        public bool KeepAlive => false;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void FindDrawerCount()
 | 
					        public void FindDrawerCount()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            int count = _sqlSugarScope1.Queryable<ChannelStock>().Where(cs => cs.DrawerType != 3)
 | 
					            int count = SqlSugarHelper.Db.Queryable<ChannelList>().Where(cs => cs.DrawerType != 3)
 | 
				
			||||||
                .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).GroupBy(cs => cs.DrawerNo).Select(cs => SqlFunc.AggregateCount(cs.DrawerNo)).Count();
 | 
					                .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).GroupBy(cs => cs.DrawerNo).Select(cs => SqlFunc.AggregateCount(cs.DrawerNo)).Count();
 | 
				
			||||||
            Is8Drawer = count < 9;
 | 
					            Is8Drawer = count < 9;
 | 
				
			||||||
            Is16Drawer = count >= 16;
 | 
					            Is16Drawer = count >= 16;
 | 
				
			||||||
| 
						 | 
					@ -314,8 +341,13 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void RequestData()
 | 
					        public void RequestData()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            List<ChannelStock> queryData = _sqlSugarScope1.Queryable<ChannelStock>()
 | 
					            if (ChannelStocks != null)
 | 
				
			||||||
                .Includes(cs => cs.DrugInfo,di=>di.DrugManuNos)
 | 
					            {
 | 
				
			||||||
 | 
					                ChannelStocks.Clear();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            List<ChannelStock> queryData = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
 | 
					                .Includes(cs => cs.DrugInfo, di => di.DrugManuNos)
 | 
				
			||||||
 | 
					                .InnerJoin<ChannelList>((cs, cl) => cs.Chnguid==cl.Id &&cs.DrugId==cl.DrugId)
 | 
				
			||||||
                .Where(cs => cs.DrawerNo == DrawerNo)
 | 
					                .Where(cs => cs.DrawerNo == DrawerNo)
 | 
				
			||||||
                .Where(cs => cs.DrawerType == 1)
 | 
					                .Where(cs => cs.DrawerType == 1)
 | 
				
			||||||
                .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1"))
 | 
					                .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1"))
 | 
				
			||||||
| 
						 | 
					@ -328,7 +360,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                return cs;
 | 
					                return cs;
 | 
				
			||||||
            }).ToList();
 | 
					            }).ToList();
 | 
				
			||||||
             //obChannelStock = new ObservableCollection<ChannelStock>(ChannelStocks);
 | 
					            //obChannelStock = new ObservableCollection<ChannelStock>(ChannelStocks);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //接收导航传过来的参数  现在是在此处初始化了表格数据
 | 
					        //接收导航传过来的参数  现在是在此处初始化了表格数据
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -44,17 +44,18 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        private PortUtil _portUtil;
 | 
					        private PortUtil _portUtil;
 | 
				
			||||||
        IEventAggregator _eventAggregator;
 | 
					        IEventAggregator _eventAggregator;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private SqlSugarScope _sqlSugarScope1;
 | 
					        ////private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
        public DrawerTakeDrugWindowViewModel(PortUtil portUtil, IEventAggregator eventAggregator,SqlSugarScope sqlSugarScope)
 | 
					        public DrawerTakeDrugWindowViewModel(PortUtil portUtil, IEventAggregator eventAggregator)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            _portUtil = portUtil;
 | 
					            _portUtil = portUtil;
 | 
				
			||||||
            _eventAggregator = eventAggregator;
 | 
					            _eventAggregator = eventAggregator;
 | 
				
			||||||
            this._sqlSugarScope1= sqlSugarScope;
 | 
					            //this.SqlSugarHelper.Db= sqlSugarScope;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        void DoMyPrismEvent(DeviceMsg msg)
 | 
					        void DoMyPrismEvent(DeviceMsg msg)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            if(msg.WindowName == "DrawerTakeDrugWindow")
 | 
					            logger.Info($"抽屉取药页面_DoMyPrismEvent:{msg.WindowName}");
 | 
				
			||||||
 | 
					            if (msg.WindowName == "DrawerTakeDrugWindow")
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                switch (msg.EventType)
 | 
					                switch (msg.EventType)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
| 
						 | 
					@ -139,16 +140,18 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                    Status = 1;
 | 
					                    Status = 1;
 | 
				
			||||||
                    _portUtil.SpeakAsync("正在打开" + DrawerNo + "号抽屉");
 | 
					                    _portUtil.SpeakAsync("正在打开" + DrawerNo + "号抽屉");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    //var groupQuery = (from t in ChannelStocks
 | 
				
			||||||
 | 
					                    //                  group t by new { t.ColNo, t.BoardType }
 | 
				
			||||||
 | 
					                    //                 into grp
 | 
				
			||||||
 | 
					                    //                  select new { grp.Key.ColNo, grp.Key.BoardType, quantity = grp.Sum(t => t.Quantity) }).ToList();
 | 
				
			||||||
 | 
					                    
 | 
				
			||||||
                    List<ChannelStock> singleChannels = ChannelStocks.FindAll(it => it.BoardType != 1);
 | 
					                    List<ChannelStock> singleChannels = ChannelStocks.FindAll(it => it.BoardType != 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    _portUtil.WindowName = "DrawerTakeDrugWindow";
 | 
					                    _portUtil.WindowName = "DrawerTakeDrugWindow";
 | 
				
			||||||
                    _portUtil.BoardType = singleChannels.Count > 0 ? singleChannels[0].BoardType : 1;
 | 
					                    _portUtil.BoardType = singleChannels.Count > 0 ? singleChannels[0].BoardType : 1;
 | 
				
			||||||
                    _portUtil.ColNos = singleChannels.Select(it => it.ColNo).ToArray();
 | 
					                    _portUtil.ColNos = new int[] { };// groupQuery.Select(it => it.ColNo).ToArray();
 | 
				
			||||||
                    _portUtil.Stocks = singleChannels.Select(it => it.Quantity).ToArray();
 | 
					 | 
				
			||||||
                    _portUtil.DrawerNo = DrawerNo;
 | 
					                    _portUtil.DrawerNo = DrawerNo;
 | 
				
			||||||
                    Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Normal, () => _portUtil.Start())
 | 
					                    Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Normal, () => _portUtil.Start());
 | 
				
			||||||
                    ;
 | 
					 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
| 
						 | 
					@ -168,8 +171,9 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                    logger.Info("点击完成按钮,库位数据:" + JsonConvert.SerializeObject(record));
 | 
					                    logger.Info("点击完成按钮,库位数据:" + JsonConvert.SerializeObject(record));
 | 
				
			||||||
                    if (record.Count > 0)
 | 
					                    if (record.Count > 0)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
 | 
					                        logger.Info("record.Count>0");
 | 
				
			||||||
                        string InvoiceId = "DRAWER_" + CurrentTimeMillis();
 | 
					                        string InvoiceId = "DRAWER_" + CurrentTimeMillis();
 | 
				
			||||||
                        var f = _sqlSugarScope1.UseTran(() =>
 | 
					                        var f = SqlSugarHelper.Db.UseTran(() =>
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            for (int i = 0; i < record.Count; i++)
 | 
					                            for (int i = 0; i < record.Count; i++)
 | 
				
			||||||
| 
						 | 
					@ -178,22 +182,24 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                // 更新数据 库存信息
 | 
					                                // 更新数据 库存信息
 | 
				
			||||||
                                _sqlSugarScope1.Updateable(new ChannelStock()
 | 
					                                SqlSugarHelper.Db.Updateable(new ChannelStock()
 | 
				
			||||||
                                {
 | 
					                                {
 | 
				
			||||||
                                    Quantity = it.Quantity - it.TakeQuantity,
 | 
					                                    Quantity = it.Quantity - it.TakeQuantity,
 | 
				
			||||||
                                    ManuNo = it.ManuNo,
 | 
					                                    ManuNo = it.ManuNo,
 | 
				
			||||||
                                    EffDate = it.EffDate,
 | 
					                                    EffDate = it.EffDate,
 | 
				
			||||||
                                    Id = it.Id,
 | 
					                                    Id = it.Id,
 | 
				
			||||||
                                }).UpdateColumns(it => new { it.Quantity, it.ManuNo, it.EffDate }).ExecuteCommand();
 | 
					                                }).UpdateColumns(it => new { it.Quantity, it.ManuNo, it.EffDate }).ExecuteCommand();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                logger.Info("Updateable_ChannelStock完成");
 | 
				
			||||||
                                // 获取更新完库存后的药品库存
 | 
					                                // 获取更新完库存后的药品库存
 | 
				
			||||||
                                List<ChannelStock> nowChannels = _sqlSugarScope1.Queryable<ChannelStock>()
 | 
					                                List<ChannelStock> nowChannels = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
                                    .Where(cs => cs.MachineId.Equals(it.MachineId))
 | 
					                                    .Where(cs => cs.MachineId.Equals(it.MachineId))
 | 
				
			||||||
                                    .Where(cs => cs.DrugId.Equals(it.DrugId))
 | 
					                                    .Where(cs => cs.DrugId.Equals(it.DrugId))
 | 
				
			||||||
                                    .Where(cs => cs.DrawerType == 1)
 | 
					                                    .Where(cs => cs.DrawerType == 1)
 | 
				
			||||||
                                    .ToList();
 | 
					                                    .ToList();
 | 
				
			||||||
 | 
					                                logger.Info("Queryable_ChannelStock完成");
 | 
				
			||||||
                                // 保存数据 出库记录
 | 
					                                // 保存数据 出库记录
 | 
				
			||||||
                                _sqlSugarScope1.Insertable(new MachineRecord()
 | 
					                                SqlSugarHelper.Db.Insertable(new MachineRecord()
 | 
				
			||||||
                                {
 | 
					                                {
 | 
				
			||||||
                                    MachineId = it.MachineId,
 | 
					                                    MachineId = it.MachineId,
 | 
				
			||||||
                                    DrawerNo = it.DrawerNo,
 | 
					                                    DrawerNo = it.DrawerNo,
 | 
				
			||||||
| 
						 | 
					@ -208,28 +214,46 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                                    Type = 2,
 | 
					                                    Type = 2,
 | 
				
			||||||
                                    InvoiceId = InvoiceId,
 | 
					                                    InvoiceId = InvoiceId,
 | 
				
			||||||
                                    StockQuantity = nowChannels.Sum(it => it.Quantity),
 | 
					                                    StockQuantity = nowChannels.Sum(it => it.Quantity),
 | 
				
			||||||
                                    ManunoQuantity = nowChannels.FindAll(it2 => it2.ManuNo == it.ManuNo).Sum(it => it.Quantity)
 | 
					                                    ManunoQuantity = nowChannels.FindAll(it2 => it2.ManuNo == it.ManuNo).Sum(it => it.Quantity),
 | 
				
			||||||
 | 
					                                    SupplierDept = ConfigurationManager.AppSettings["supplierDept"].ToString(),
 | 
				
			||||||
 | 
					                                    ReceiveDept = ConfigurationManager.AppSettings["receiveDept"].ToString()
 | 
				
			||||||
                                }).ExecuteCommand();
 | 
					                                }).ExecuteCommand();
 | 
				
			||||||
 | 
					                                logger.Info("Insert_MachineRecord完成");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                logger.Info($"抽屉取药保存->库位【{it.DrawerNo}-{it.ColNo}】取出药品【{it.DrugInfo.DrugName}】个数【{it.TakeQuantity}】,取药前库存【{it.Quantity}】");
 | 
					                                logger.Info($"抽屉取药保存->库位【{it.DrawerNo}-{it.ColNo}】取出药品【{it.DrugInfo.DrugName}】个数【{it.TakeQuantity}】,取药前库存【{it.Quantity}】");
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                            return true;
 | 
					                            return true;
 | 
				
			||||||
                        });
 | 
					                        });
 | 
				
			||||||
                        if (f.Data)
 | 
					                         if (f.Data)
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
 | 
					                            logger.Info("更新屏显库存singleChannels");
 | 
				
			||||||
                            // 更新屏显库存
 | 
					                            // 更新屏显库存
 | 
				
			||||||
                            List<ChannelStock> singleChannels = record.FindAll(it => it.BoardType != 1);
 | 
					                            //List<ChannelStock> singleChannels = record.FindAll(it => it.BoardType != 1);
 | 
				
			||||||
 | 
					                            List<ChannelStock> singleChannels = ChannelStocks.Where(it => it.BoardType != 1)
 | 
				
			||||||
 | 
					                                                                       .GroupBy(it => it.ColNo)
 | 
				
			||||||
 | 
					                                                                       .Select(it =>
 | 
				
			||||||
 | 
					                                                                       {
 | 
				
			||||||
 | 
					                                                                           var ret = it.First();
 | 
				
			||||||
 | 
					                                                                           ret.Quantity = it.Sum(itx => itx.Quantity);
 | 
				
			||||||
 | 
					                                                                           ret.TakeQuantity = it.Sum(itx => itx.TakeQuantity);
 | 
				
			||||||
 | 
					                                                                           return ret;
 | 
				
			||||||
 | 
					                                                                       }).ToList();
 | 
				
			||||||
 | 
					                            singleChannels = singleChannels.Where(it => it.TakeQuantity > 0).ToList();
 | 
				
			||||||
                            if ((singleChannels.Count > 0 ? singleChannels[0].BoardType : 1) == 5)
 | 
					                            if ((singleChannels.Count > 0 ? singleChannels[0].BoardType : 1) == 5)
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
 | 
					                                //将库位多批次的总库存数更新标签
 | 
				
			||||||
 | 
					                                //_portUtil.WriteQuantity(singleChannels[0].DrawerNo, singleChannels[0].ColNo, singleChannels.Sum(it => it.Quantity) - singleChannels.Sum(it => it.TakeQuantity));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                singleChannels.ForEach(it =>
 | 
					                                singleChannels.ForEach(it =>
 | 
				
			||||||
                                {
 | 
					                                {
 | 
				
			||||||
                                    _portUtil.WriteQuantity(it.DrawerNo, it.ColNo, it.Quantity - it.TakeQuantity);
 | 
					                                    _portUtil.WriteQuantityAsync(it.DrawerNo, it.ColNo, it.Quantity - it.TakeQuantity);
 | 
				
			||||||
                                });
 | 
					                                });
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
 | 
					                            logger.Info("更新屏显库存singleChannels_完成");
 | 
				
			||||||
                            RequestData();
 | 
					                            RequestData();
 | 
				
			||||||
                            AlertMsg alertMsg = new AlertMsg
 | 
					                            AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                Message = "抽屉取药完成,库存已更新",
 | 
					                                Message = $"抽屉取药完成,库存已更新",
 | 
				
			||||||
                                Type = MsgType.SUCCESS,
 | 
					                                Type = MsgType.SUCCESS,
 | 
				
			||||||
                            };
 | 
					                            };
 | 
				
			||||||
                            _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
					                            _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
| 
						 | 
					@ -238,7 +262,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            AlertMsg alertMsg = new AlertMsg
 | 
					                            AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                Message = "抽屉取药完成,库存更新失败!",
 | 
					                                Message = $"抽屉取药完成,库存更新失败!{f.ErrorMessage}",
 | 
				
			||||||
                                Type = MsgType.ERROR,
 | 
					                                Type = MsgType.ERROR,
 | 
				
			||||||
                            };
 | 
					                            };
 | 
				
			||||||
                            _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
					                            _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
| 
						 | 
					@ -272,16 +296,16 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public long CurrentTimeMillis()
 | 
					        public long CurrentTimeMillis()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            return (long)(DateTime.UtcNow - Jan1st1970).TotalMilliseconds;
 | 
					            return (long)(DateTime.UtcNow - Jan1st1970).TotalMilliseconds;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public bool KeepAlive => false;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        public void FindDrawerCount()
 | 
					        public void FindDrawerCount()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            int count = _sqlSugarScope1.Queryable<ChannelStock>().Where(cs => cs.DrawerType != 3)
 | 
					            int count = SqlSugarHelper.Db.Queryable<ChannelList>().Where(cs => cs.DrawerType != 3)
 | 
				
			||||||
                .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).GroupBy(cs => cs.DrawerNo).Select(cs => SqlFunc.AggregateCount(cs.DrawerNo)).Count();
 | 
					                .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).GroupBy(cs => cs.DrawerNo).Select(cs => SqlFunc.AggregateCount(cs.DrawerNo)).Count();
 | 
				
			||||||
            Is8Drawer = count < 9;
 | 
					            Is8Drawer = count < 9;
 | 
				
			||||||
            Is16Drawer = count >= 16;
 | 
					            Is16Drawer = count >= 16;
 | 
				
			||||||
| 
						 | 
					@ -298,7 +322,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void RequestData()
 | 
					        public void RequestData()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            List<ChannelStock> queryData = _sqlSugarScope1.Queryable<ChannelStock>()
 | 
					            List<ChannelStock> queryData = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
                .Includes(cs => cs.DrugInfo)
 | 
					                .Includes(cs => cs.DrugInfo)
 | 
				
			||||||
                .Where(cs => cs.DrawerNo == DrawerNo)
 | 
					                .Where(cs => cs.DrawerNo == DrawerNo)
 | 
				
			||||||
                .Where(cs => cs.DrugId != null)
 | 
					                .Where(cs => cs.DrugId != null)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,6 +13,8 @@ using DM_Weight.util;
 | 
				
			||||||
using log4net.Repository.Hierarchy;
 | 
					using log4net.Repository.Hierarchy;
 | 
				
			||||||
using log4net;
 | 
					using log4net;
 | 
				
			||||||
using SqlSugar;
 | 
					using SqlSugar;
 | 
				
			||||||
 | 
					using DM_Weight.msg;
 | 
				
			||||||
 | 
					using Prism.Events;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace DM_Weight.ViewModels
 | 
					namespace DM_Weight.ViewModels
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -165,11 +167,12 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            set { SetProperty(ref _selectedManuno, value ?? new()); }
 | 
					            set { SetProperty(ref _selectedManuno, value ?? new()); }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public bool KeepAlive => false;
 | 
					        //private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
        private SqlSugarScope _sqlSugarScope1;
 | 
					
 | 
				
			||||||
        public DrugListWindowViewModel(SqlSugarScope sqlSugarScope)
 | 
					        IEventAggregator _eventAggregator;
 | 
				
			||||||
 | 
					        public DrugListWindowViewModel(IEventAggregator eventAggregator)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            this._sqlSugarScope1 = sqlSugarScope;
 | 
					            _eventAggregator = eventAggregator;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public DelegateCommand Query
 | 
					        public DelegateCommand Query
 | 
				
			||||||
| 
						 | 
					@ -188,7 +191,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    //SelectedDrug.DrugId = 0;
 | 
					                    //SelectedDrug.DrugId = 0;
 | 
				
			||||||
                    _sqlSugarScope1.Insertable(SelectedDrug).ExecuteCommand();
 | 
					                    SqlSugarHelper.Db.Insertable(SelectedDrug).ExecuteCommand();
 | 
				
			||||||
                    RequestData();
 | 
					                    RequestData();
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                catch (Exception ex)
 | 
					                catch (Exception ex)
 | 
				
			||||||
| 
						 | 
					@ -204,7 +207,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            get => new DelegateCommand(() =>
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                _sqlSugarScope1.Updateable(SelectedDrug).UpdateColumns(d => new { d.DrugName, d.Manufactory, d.PyCode, d.PackUnit, d.MaxStock, d.DrugSpec }).ExecuteCommand();
 | 
					                SqlSugarHelper.Db.Updateable(SelectedDrug).UpdateColumns(d => new { d.DrugName, d.Manufactory, d.PyCode, d.PackUnit, d.MaxStock, d.DrugSpec }).ExecuteCommand();
 | 
				
			||||||
                RequestData();
 | 
					                RequestData();
 | 
				
			||||||
            }, () => SelectedDrug.DrugId !=null).ObservesProperty(() => SelectedDrug);
 | 
					            }, () => SelectedDrug.DrugId !=null).ObservesProperty(() => SelectedDrug);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					@ -213,13 +216,55 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            get => new DelegateCommand(() =>
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                if (!string.IsNullOrEmpty(SelectedManuno.EffDate) && !string.IsNullOrEmpty(SelectedManuno.ManuNo))
 | 
					                try
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    SelectedManuno.Id = Guid.NewGuid().ToString();
 | 
					
 | 
				
			||||||
                    SelectedManuno.DrugId = SelectedDrug.DrugId.ToString();
 | 
					                    if (!string.IsNullOrEmpty(SelectedManuno.EffDate) && !string.IsNullOrEmpty(SelectedManuno.ManuNo))
 | 
				
			||||||
                    SelectedManuno.EffDate = DateTime.Parse(SelectedManuno.EffDate).ToString("yyyy-MM-dd");
 | 
					                    {
 | 
				
			||||||
                    _sqlSugarScope1.Insertable(SelectedManuno).ExecuteCommand();
 | 
					                        string dt = DateTime.Parse(SelectedManuno.EffDate).ToString("yyyy-MM-dd");
 | 
				
			||||||
                    GetManuNos();
 | 
					                        int repeatCount = SqlSugarHelper.Db.Queryable<DrugManuNo>().Where(dm => dm.DrugId == SelectedDrug.DrugId && dm.EffDate == dt && dm.ManuNo == SelectedManuno.ManuNo).Count();
 | 
				
			||||||
 | 
					                        if (repeatCount > 0)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                Message = "批次重复,请勿重复添加!",
 | 
				
			||||||
 | 
					                                Type = MsgType.ERROR,
 | 
				
			||||||
 | 
					                            };
 | 
				
			||||||
 | 
					                            _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                        else
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            SelectedManuno.Id = Guid.NewGuid().ToString();
 | 
				
			||||||
 | 
					                            SelectedManuno.DrugId = SelectedDrug.DrugId.ToString();
 | 
				
			||||||
 | 
					                            SelectedManuno.EffDate = DateTime.Parse(SelectedManuno.EffDate).ToString("yyyy-MM-dd");
 | 
				
			||||||
 | 
					                            SqlSugarHelper.Db.Insertable(SelectedManuno).ExecuteCommand(); GetManuNos();
 | 
				
			||||||
 | 
					                            AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                Message = "保存成功!",
 | 
				
			||||||
 | 
					                                Type = MsgType.SUCCESS,
 | 
				
			||||||
 | 
					                            };
 | 
				
			||||||
 | 
					                            _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    else
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            Message = "请输入批次及效期!",
 | 
				
			||||||
 | 
					                            Type = MsgType.ERROR,
 | 
				
			||||||
 | 
					                        };
 | 
				
			||||||
 | 
					                        _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                catch (Exception ex)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        Message = $"添加失败{ex.Message}",
 | 
				
			||||||
 | 
					                        Type = MsgType.ERROR,
 | 
				
			||||||
 | 
					                    };
 | 
				
			||||||
 | 
					                    _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            }, () => SelectedDrug.DrugId !=null).ObservesProperty(() => SelectedDrug);
 | 
					            }, () => SelectedDrug.DrugId !=null).ObservesProperty(() => SelectedDrug);
 | 
				
			||||||
| 
						 | 
					@ -229,12 +274,47 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            get => new DelegateCommand(() =>
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                SelectedManuno.EffDate = DateTime.Parse(SelectedManuno.EffDate).ToString("yyyy-MM-dd");
 | 
					                try
 | 
				
			||||||
                _sqlSugarScope1.Updateable(SelectedManuno).UpdateColumns(m => new { m.ManuNo, m.EffDate }).ExecuteCommand();
 | 
					                {
 | 
				
			||||||
                GetManuNos();
 | 
					                    string dt = DateTime.Parse(SelectedManuno.EffDate).ToString("yyyy-MM-dd");
 | 
				
			||||||
 | 
					                    int repeatCount = SqlSugarHelper.Db.Queryable<DrugManuNo>().Where(dm => dm.DrugId == SelectedDrug.DrugId && dm.EffDate == dt && dm.ManuNo == SelectedManuno.ManuNo).Count();
 | 
				
			||||||
 | 
					                    if (repeatCount > 0)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            Message = "批次重复,请勿重复添加!",
 | 
				
			||||||
 | 
					                            Type = MsgType.ERROR,
 | 
				
			||||||
 | 
					                        };
 | 
				
			||||||
 | 
					                        _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    else
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        SelectedManuno.EffDate = DateTime.Parse(SelectedManuno.EffDate).ToString("yyyy-MM-dd");
 | 
				
			||||||
 | 
					                        SqlSugarHelper.Db.Updateable(SelectedManuno).UpdateColumns(m => new { m.ManuNo, m.EffDate }).ExecuteCommand();
 | 
				
			||||||
 | 
					                        GetManuNos();
 | 
				
			||||||
 | 
					                        AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            Message = "修改成功!",
 | 
				
			||||||
 | 
					                            Type = MsgType.SUCCESS,
 | 
				
			||||||
 | 
					                        };
 | 
				
			||||||
 | 
					                        _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                catch (Exception ex)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        Message = "修改失败!",
 | 
				
			||||||
 | 
					                        Type = MsgType.ERROR,
 | 
				
			||||||
 | 
					                    };
 | 
				
			||||||
 | 
					                    _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
            }, () => !string.IsNullOrEmpty(SelectedManuno.DrugId)).ObservesProperty(() => SelectedManuno);
 | 
					            }, () => !string.IsNullOrEmpty(SelectedManuno.DrugId)).ObservesProperty(() => SelectedManuno);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //这个方法用于拦截请求,continuationCallback(true)就是不拦截,continuationCallback(false)拦截本次操作
 | 
					        //这个方法用于拦截请求,continuationCallback(true)就是不拦截,continuationCallback(false)拦截本次操作
 | 
				
			||||||
        public void ConfirmNavigationRequest(NavigationContext navigationContext, Action<bool> continuationCallback)
 | 
					        public void ConfirmNavigationRequest(NavigationContext navigationContext, Action<bool> continuationCallback)
 | 
				
			||||||
| 
						 | 
					@ -252,7 +332,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        void GetManuNos()
 | 
					        void GetManuNos()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            Manunos = _sqlSugarScope1.Queryable<DrugManuNo>()
 | 
					            Manunos = SqlSugarHelper.Db.Queryable<DrugManuNo>()
 | 
				
			||||||
                .WhereIF(SelectedDrug != null, (di) => di.DrugId.Equals(SelectedDrug.DrugId))
 | 
					                .WhereIF(SelectedDrug != null, (di) => di.DrugId.Equals(SelectedDrug.DrugId))
 | 
				
			||||||
                .Select(di => di)
 | 
					                .Select(di => di)
 | 
				
			||||||
                .ToList();
 | 
					                .ToList();
 | 
				
			||||||
| 
						 | 
					@ -261,7 +341,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        void RequestData()
 | 
					        void RequestData()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            int totalCount = 0;
 | 
					            int totalCount = 0;
 | 
				
			||||||
            DrugInfos = _sqlSugarScope1.Queryable<DrugInfo>()
 | 
					            DrugInfos = SqlSugarHelper.Db.Queryable<DrugInfo>()
 | 
				
			||||||
                .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("DrugId"), (di) => di.DrugId.ToString().Contains(SearchValue))
 | 
					                .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("DrugId"), (di) => di.DrugId.ToString().Contains(SearchValue))
 | 
				
			||||||
                .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("DrugName"), (di) => di.DrugName.Contains(SearchValue))
 | 
					                .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("DrugName"), (di) => di.DrugName.Contains(SearchValue))
 | 
				
			||||||
                .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("PyCode"), (di) => di.PyCode.Contains(SearchValue))
 | 
					                .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("PyCode"), (di) => di.PyCode.Contains(SearchValue))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,12 +23,12 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private readonly FingerprintUtil _fingerprintUtil;
 | 
					        private readonly FingerprintUtil _fingerprintUtil;
 | 
				
			||||||
        IEventAggregator _eventAggregator;
 | 
					        IEventAggregator _eventAggregator;
 | 
				
			||||||
        private SqlSugarScope _sqlSugarScope1;
 | 
					        //private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
        public EditUserDialogViewModel(FingerprintUtil fingerprintUtil, IEventAggregator eventAggregator,SqlSugarScope sqlSugarScope)
 | 
					        public EditUserDialogViewModel(FingerprintUtil fingerprintUtil, IEventAggregator eventAggregator,SqlSugarScope sqlSugarScope)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            _fingerprintUtil = fingerprintUtil;
 | 
					            _fingerprintUtil = fingerprintUtil;
 | 
				
			||||||
            _eventAggregator = eventAggregator;
 | 
					            _eventAggregator = eventAggregator;
 | 
				
			||||||
            this._sqlSugarScope1 = sqlSugarScope;
 | 
					            //this.SqlSugarHelper.Db = sqlSugarScope;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private UserList _userList = new UserList();
 | 
					        private UserList _userList = new UserList();
 | 
				
			||||||
| 
						 | 
					@ -80,7 +80,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public bool KeepAlive => false;
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private string _title = "编辑用户";
 | 
					        private string _title = "编辑用户";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -105,7 +105,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            // 旧密码输入正确
 | 
					                            // 旧密码输入正确
 | 
				
			||||||
                            UserList.PassWord = MD5.GetMD5Hash(NewPass);
 | 
					                            UserList.PassWord = MD5.GetMD5Hash(NewPass);
 | 
				
			||||||
                            _sqlSugarScope1.Updateable<UserList>(UserList).UpdateColumns(u => new { u.PassWord }).ExecuteCommand();
 | 
					                            SqlSugarHelper.Db.Updateable<UserList>(UserList).UpdateColumns(u => new { u.PassWord }).ExecuteCommand();
 | 
				
			||||||
                            // 关闭当前窗口
 | 
					                            // 关闭当前窗口
 | 
				
			||||||
                            RequestClose?.Invoke(new DialogResult(ButtonResult.OK));
 | 
					                            RequestClose?.Invoke(new DialogResult(ButtonResult.OK));
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
| 
						 | 
					@ -123,13 +123,13 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                            // 没有写密码
 | 
					                            // 没有写密码
 | 
				
			||||||
                            if (string.IsNullOrEmpty(NewPass))
 | 
					                            if (string.IsNullOrEmpty(NewPass))
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                _sqlSugarScope1.Updateable<UserList>(UserList).UpdateColumns(u => new { u.Nickname, u.UserName, u.UserBarcode, u.RoleId }).ExecuteCommand();
 | 
					                                SqlSugarHelper.Db.Updateable<UserList>(UserList).UpdateColumns(u => new { u.Nickname, u.UserName, u.UserBarcode, u.RoleId }).ExecuteCommand();
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                            // 更改了密码
 | 
					                            // 更改了密码
 | 
				
			||||||
                            else
 | 
					                            else
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                UserList.PassWord = MD5.GetMD5Hash(NewPass);
 | 
					                                UserList.PassWord = MD5.GetMD5Hash(NewPass);
 | 
				
			||||||
                                _sqlSugarScope1.Updateable<UserList>(UserList).UpdateColumns(u => new { u.Nickname, u.UserName, u.PassWord, u.UserBarcode, u.RoleId }).ExecuteCommand();
 | 
					                                SqlSugarHelper.Db.Updateable<UserList>(UserList).UpdateColumns(u => new { u.Nickname, u.UserName, u.PassWord, u.UserBarcode, u.RoleId }).ExecuteCommand();
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                        else
 | 
					                        else
 | 
				
			||||||
| 
						 | 
					@ -137,7 +137,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                            UserList.PassWord = MD5.GetMD5Hash(NewPass);
 | 
					                            UserList.PassWord = MD5.GetMD5Hash(NewPass);
 | 
				
			||||||
                            UserList.MachineId = ConfigurationManager.AppSettings["machineId"] ?? "DM1";
 | 
					                            UserList.MachineId = ConfigurationManager.AppSettings["machineId"] ?? "DM1";
 | 
				
			||||||
                            // 插入
 | 
					                            // 插入
 | 
				
			||||||
                            _sqlSugarScope1.Insertable<UserList>(UserList).InsertColumns(u => new { u.Id, u.Nickname, u.UserName, u.PassWord, u.UserBarcode, u.RoleId, u.MachineId }).ExecuteCommand();
 | 
					                            SqlSugarHelper.Db.Insertable<UserList>(UserList).InsertColumns(u => new { u.Id, u.Nickname, u.UserName, u.PassWord, u.UserBarcode, u.RoleId, u.MachineId }).ExecuteCommand();
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                        RequestClose?.Invoke(new DialogResult(ButtonResult.OK));
 | 
					                        RequestClose?.Invoke(new DialogResult(ButtonResult.OK));
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
| 
						 | 
					@ -157,7 +157,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        void GetAllRole()
 | 
					        void GetAllRole()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            Roles = _sqlSugarScope1.Queryable<RoleDm>().Where(r => r.MachineId == (ConfigurationManager.AppSettings["machineId"] ?? "DM1")).OrderBy(r => r.Id).ToList();
 | 
					            Roles = SqlSugarHelper.Db.Queryable<RoleDm>().Where(r => r.MachineId == (ConfigurationManager.AppSettings["machineId"] ?? "DM1")).OrderBy(r => r.Id).ToList();
 | 
				
			||||||
            RaisePropertyChanged("Roles");
 | 
					            RaisePropertyChanged("Roles");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -63,7 +63,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            set => SetProperty(ref _fingerIndex, value);
 | 
					            set => SetProperty(ref _fingerIndex, value);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public bool KeepAlive => false;
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private int _status = 0;
 | 
					        private int _status = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -52,65 +52,122 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            get { return _selectedChildMenu; }
 | 
					            get { return _selectedChildMenu; }
 | 
				
			||||||
            set
 | 
					            set
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                if (!_portUtil.Operate)
 | 
					                //if (!_portUtil.Operate)
 | 
				
			||||||
                {
 | 
					                //{
 | 
				
			||||||
                    if (value != null)
 | 
					                    //if (value != null)
 | 
				
			||||||
                    {
 | 
					                    //{
 | 
				
			||||||
                        if (value.PremissionPath.Equals("TakeRecordWindow"))
 | 
					                    //    if (value.PremissionPath.Equals("TakeRecordWindow"))
 | 
				
			||||||
                        {
 | 
					                    //    {
 | 
				
			||||||
                            //定义传参变量
 | 
					                    //        //定义传参变量
 | 
				
			||||||
                            NavigationParameters keys = new NavigationParameters();
 | 
					                    //        NavigationParameters keys = new NavigationParameters();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            //添加参数,键值对格式
 | 
					                    //        //添加参数,键值对格式
 | 
				
			||||||
                            keys.Add("Type", 2);
 | 
					                    //        keys.Add("Type", 2);
 | 
				
			||||||
                            _regionManager.RequestNavigate("ContentRegion", "MachineRecordWindow", keys);
 | 
					                    //        _regionManager.RequestNavigate("ContentRegion", "MachineRecordWindow", keys);
 | 
				
			||||||
                        }
 | 
					                    //    }
 | 
				
			||||||
                        else if (value.PremissionPath.Equals("AddRecordWindow"))
 | 
					                    //    else if (value.PremissionPath.Equals("AddRecordWindow"))
 | 
				
			||||||
                        {
 | 
					                    //    {
 | 
				
			||||||
                            //定义传参变量
 | 
					                    //        //定义传参变量
 | 
				
			||||||
                            NavigationParameters keys = new NavigationParameters();
 | 
					                    //        NavigationParameters keys = new NavigationParameters();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            //添加参数,键值对格式
 | 
					                    //        //添加参数,键值对格式
 | 
				
			||||||
                            keys.Add("Type", 1);
 | 
					                    //        keys.Add("Type", 1);
 | 
				
			||||||
                            _regionManager.RequestNavigate("ContentRegion", "MachineRecordWindow", keys);
 | 
					                    //        _regionManager.RequestNavigate("ContentRegion", "MachineRecordWindow", keys);
 | 
				
			||||||
                        }
 | 
					                    //    }
 | 
				
			||||||
                        else if (value.PremissionPath.Equals("ReturnRecordWindow"))
 | 
					                    //    else if (value.PremissionPath.Equals("ReturnRecordWindow"))
 | 
				
			||||||
                        {
 | 
					                    //    {
 | 
				
			||||||
                            //定义传参变量
 | 
					                    //        //定义传参变量
 | 
				
			||||||
                            NavigationParameters keys = new NavigationParameters();
 | 
					                    //        NavigationParameters keys = new NavigationParameters();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            //添加参数,键值对格式
 | 
					                    //        //添加参数,键值对格式
 | 
				
			||||||
                            keys.Add("Type", 3);
 | 
					                    //        keys.Add("Type", 3);
 | 
				
			||||||
                            _regionManager.RequestNavigate("ContentRegion", "MachineRecordWindow", keys);
 | 
					                    //        _regionManager.RequestNavigate("ContentRegion", "MachineRecordWindow", keys);
 | 
				
			||||||
                        }
 | 
					                    //    }
 | 
				
			||||||
                        else if (value.PremissionPath.Equals("RetrunEmptyRecordWindow"))
 | 
					                    //    else if (value.PremissionPath.Equals("RetrunEmptyRecordWindow"))
 | 
				
			||||||
                        {
 | 
					                    //    {
 | 
				
			||||||
                            //定义传参变量
 | 
					                    //        //定义传参变量
 | 
				
			||||||
                            NavigationParameters keys = new NavigationParameters();
 | 
					                    //        NavigationParameters keys = new NavigationParameters();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            //添加参数,键值对格式
 | 
					                    //        //添加参数,键值对格式
 | 
				
			||||||
                            keys.Add("Type", 3);
 | 
					                    //        keys.Add("Type", 3);
 | 
				
			||||||
                            _regionManager.RequestNavigate("ContentRegion", value.PremissionPath, keys);
 | 
					                    //        _regionManager.RequestNavigate("ContentRegion", value.PremissionPath, keys);
 | 
				
			||||||
                        }
 | 
					                    //    }
 | 
				
			||||||
                        else if (value.PremissionPath.Equals("CheckRecordWindow"))
 | 
					                    //    else if (value.PremissionPath.Equals("CheckRecordWindow"))
 | 
				
			||||||
                        {
 | 
					                    //    {
 | 
				
			||||||
                            //定义传参变量
 | 
					                    //        //定义传参变量
 | 
				
			||||||
                            NavigationParameters keys = new NavigationParameters();
 | 
					                    //        NavigationParameters keys = new NavigationParameters();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            //添加参数,键值对格式
 | 
					                    //        //添加参数,键值对格式
 | 
				
			||||||
                            keys.Add("Type", 4);
 | 
					                    //        keys.Add("Type", 4);
 | 
				
			||||||
                            _regionManager.RequestNavigate("ContentRegion", "MachineRecordWindow", keys);
 | 
					                    //        _regionManager.RequestNavigate("ContentRegion", "MachineRecordWindow", keys);
 | 
				
			||||||
                        }
 | 
					                    //    }
 | 
				
			||||||
                        else
 | 
					                    //    else
 | 
				
			||||||
                        {
 | 
					                    //    {
 | 
				
			||||||
                            _regionManager.RequestNavigate("ContentRegion", value.PremissionPath);
 | 
					                    //        _regionManager.RequestNavigate("ContentRegion", value.PremissionPath);
 | 
				
			||||||
                        }
 | 
					                    //    }
 | 
				
			||||||
                    }
 | 
					                    //}
 | 
				
			||||||
                    SetProperty(ref _selectedChildMenu, value);
 | 
					                    SetProperty(ref _selectedChildMenu, value);
 | 
				
			||||||
 | 
					                //}
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        private void SelectChildNavigate(PremissionDm SelectedChildMenu)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (!_portUtil.Operate)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (SelectedChildMenu != null)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    if (SelectedChildMenu.PremissionPath.Equals("TakeRecordWindow"))
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        //定义传参变量
 | 
				
			||||||
 | 
					                        NavigationParameters keys = new NavigationParameters();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        //添加参数,键值对格式
 | 
				
			||||||
 | 
					                        keys.Add("Type", 2);
 | 
				
			||||||
 | 
					                        _regionManager.RequestNavigate("ContentRegion", "MachineRecordWindow", keys);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    else if (SelectedChildMenu.PremissionPath.Equals("AddRecordWindow"))
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        //定义传参变量
 | 
				
			||||||
 | 
					                        NavigationParameters keys = new NavigationParameters();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        //添加参数,键值对格式
 | 
				
			||||||
 | 
					                        keys.Add("Type", 1);
 | 
				
			||||||
 | 
					                        _regionManager.RequestNavigate("ContentRegion", "MachineRecordWindow", keys);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    else if (SelectedChildMenu.PremissionPath.Equals("ReturnRecordWindow"))
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        //定义传参变量
 | 
				
			||||||
 | 
					                        NavigationParameters keys = new NavigationParameters();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        //添加参数,键值对格式
 | 
				
			||||||
 | 
					                        keys.Add("Type", 3);
 | 
				
			||||||
 | 
					                        _regionManager.RequestNavigate("ContentRegion", "MachineRecordWindow", keys);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    else if (SelectedChildMenu.PremissionPath.Equals("RetrunEmptyRecordWindow"))
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        //定义传参变量
 | 
				
			||||||
 | 
					                        NavigationParameters keys = new NavigationParameters();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        //添加参数,键值对格式
 | 
				
			||||||
 | 
					                        keys.Add("Type", 3);
 | 
				
			||||||
 | 
					                        _regionManager.RequestNavigate("ContentRegion", SelectedChildMenu.PremissionPath, keys);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    else if (SelectedChildMenu.PremissionPath.Equals("CheckRecordWindow"))
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        //定义传参变量
 | 
				
			||||||
 | 
					                        NavigationParameters keys = new NavigationParameters();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        //添加参数,键值对格式
 | 
				
			||||||
 | 
					                        keys.Add("Type", 4);
 | 
				
			||||||
 | 
					                        _regionManager.RequestNavigate("ContentRegion", "MachineRecordWindow", keys);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    else
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        _regionManager.RequestNavigate("ContentRegion", SelectedChildMenu.PremissionPath);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					 | 
				
			||||||
        public PremissionDm? SelectedMenu
 | 
					        public PremissionDm? SelectedMenu
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            get { return _selectedMenu; }
 | 
					            get { return _selectedMenu; }
 | 
				
			||||||
| 
						 | 
					@ -134,15 +191,17 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private DelegateCommand<ListBox> _selectionCommon;
 | 
					        #region 父菜单点击
 | 
				
			||||||
        public DelegateCommand<ListBox> SelectionCommon
 | 
					        private DelegateCommand _selectionCommon;
 | 
				
			||||||
 | 
					        public DelegateCommand SelectionCommon
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            get => _selectionCommon ?? (_selectionCommon = new DelegateCommand<ListBox>(SelectionMethod));
 | 
					            get => _selectionCommon ?? (_selectionCommon = new DelegateCommand(SelectionMethod));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        private void SelectionMethod(ListBox viewName)
 | 
					        private void SelectionMethod()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            SelectedMenu = viewName.SelectedItem as PremissionDm;
 | 
					            logger.Info("开始进入父菜单");
 | 
				
			||||||
            if (SelectedMenu.PremissionName == "退出")
 | 
					            //SelectedMenu = viewName.SelectedItem as PremissionDm;
 | 
				
			||||||
 | 
					            if (SelectedMenu!=null&&SelectedMenu.PremissionName == "退出")
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                logger.Info($"用户【{Operator?.Nickname}】退出登录");
 | 
					                logger.Info($"用户【{Operator?.Nickname}】退出登录");
 | 
				
			||||||
                Operator = null;
 | 
					                Operator = null;
 | 
				
			||||||
| 
						 | 
					@ -152,9 +211,27 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            else
 | 
					            else
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                //SelectedMenu.Children = SelectedMenu.Children;
 | 
					                //SelectedMenu.Children = SelectedMenu.Children;
 | 
				
			||||||
                SelectedChildMenu = SelectedMenu.Children[0];
 | 
					                //SelectedChildMenu = SelectedMenu.Children[0];
 | 
				
			||||||
 | 
					                if (!_portUtil.Operate)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    _regionManager.RequestNavigate("ContentRegion", SelectedMenu.Children[0].PremissionPath);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            logger.Info("结束父菜单");
 | 
				
			||||||
 | 
					        } 
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					        #region 子菜单点击
 | 
				
			||||||
 | 
					        private DelegateCommand _selectionChildCommon;
 | 
				
			||||||
 | 
					        public DelegateCommand SelectionChildCommon
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _selectionChildCommon ?? (_selectionChildCommon = new DelegateCommand(SelectionChildMethod));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        private void SelectionChildMethod()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            SelectChildNavigate(SelectedChildMenu);
 | 
				
			||||||
 | 
					        } 
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public List<PremissionDm> PremissionDmList { get { return _premissionDmList; } set { SetProperty(ref _premissionDmList, value); } }
 | 
					        public List<PremissionDm> PremissionDmList { get { return _premissionDmList; } set { SetProperty(ref _premissionDmList, value); } }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -169,9 +246,8 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private bool _is16Drawer;
 | 
					        private bool _is16Drawer;
 | 
				
			||||||
        public bool Is16Drawer { get => _is16Drawer; set => SetProperty(ref _is16Drawer, value); }
 | 
					        public bool Is16Drawer { get => _is16Drawer; set => SetProperty(ref _is16Drawer, value); }
 | 
				
			||||||
        public bool KeepAlive => false;
 | 
					 | 
				
			||||||
        private PortUtil _portUtil;
 | 
					        private PortUtil _portUtil;
 | 
				
			||||||
        private SqlSugarScope _sqlSugarScope1;
 | 
					        //private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
        IEventAggregator _eventAggregator;
 | 
					        IEventAggregator _eventAggregator;
 | 
				
			||||||
        public HomeWindowViewModel(IRegionManager iRegionManager, PortUtil portUtil, IDialogService dialogService, IUnityContainer container, SqlSugarScope sqlSugarScope, IEventAggregator eventAggregator)
 | 
					        public HomeWindowViewModel(IRegionManager iRegionManager, PortUtil portUtil, IDialogService dialogService, IUnityContainer container, SqlSugarScope sqlSugarScope, IEventAggregator eventAggregator)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
| 
						 | 
					@ -179,7 +255,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            _regionManager = iRegionManager;
 | 
					            _regionManager = iRegionManager;
 | 
				
			||||||
            _dialogService = dialogService;
 | 
					            _dialogService = dialogService;
 | 
				
			||||||
            _container = container;
 | 
					            _container = container;
 | 
				
			||||||
            this._sqlSugarScope1 = sqlSugarScope;
 | 
					            //this.SqlSugarHelper.Db = sqlSugarScope;
 | 
				
			||||||
            this._eventAggregator = eventAggregator;
 | 
					            this._eventAggregator = eventAggregator;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -237,6 +313,9 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            get => new DelegateCommand(ShiftsAction);
 | 
					            get => new DelegateCommand(ShiftsAction);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool KeepAlive => false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private void ShiftsAction()
 | 
					        private void ShiftsAction()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            _regionManager.RequestNavigate("ContentRegion", "ChangeShiftsWindow");
 | 
					            _regionManager.RequestNavigate("ContentRegion", "ChangeShiftsWindow");
 | 
				
			||||||
| 
						 | 
					@ -244,7 +323,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void FindDrawerCount()
 | 
					        public void FindDrawerCount()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            int count = _sqlSugarScope1.Queryable<ChannelStock>().Where(cs => cs.DrawerType != 3)
 | 
					            int count = SqlSugarHelper.Db.Queryable<ChannelList>().Where(cs => cs.DrawerType != 3)
 | 
				
			||||||
                .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).GroupBy(cs => cs.DrawerNo).Select(cs => SqlFunc.AggregateCount(cs.DrawerNo)).Count();
 | 
					                .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).GroupBy(cs => cs.DrawerNo).Select(cs => SqlFunc.AggregateCount(cs.DrawerNo)).Count();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            Is16Drawer = count == 16;
 | 
					            Is16Drawer = count == 16;
 | 
				
			||||||
| 
						 | 
					@ -289,11 +368,12 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
					                _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
                return;
 | 
					                return;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            //_sqlSugarScope1.SqlQueryable<PremissionDm>(sql)
 | 
					            //SqlSugarHelper.Db.SqlQueryable<PremissionDm>(sql)
 | 
				
			||||||
            //.ToTree(pd => pd.Children, pd => pd.ParentId, 0);
 | 
					            //.ToTree(pd => pd.Children, pd => pd.ParentId, 0);
 | 
				
			||||||
            PremissionDmList = premissions;
 | 
					            PremissionDmList = premissions;
 | 
				
			||||||
            SelectedMenu = premissions[0];
 | 
					            SelectedMenu = premissions[0];
 | 
				
			||||||
            SelectedChildMenu = premissions[0].Children[0];
 | 
					            SelectedChildMenu = premissions[0].Children[0];
 | 
				
			||||||
 | 
					            _regionManager.RequestNavigate("ContentRegion", premissions[0].Children[0].PremissionPath);
 | 
				
			||||||
            FindDrawerCount();
 | 
					            FindDrawerCount();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            int autoExit = Convert.ToInt32(ConfigurationManager.AppSettings["autoExit"] ?? "0");
 | 
					            int autoExit = Convert.ToInt32(ConfigurationManager.AppSettings["autoExit"] ?? "0");
 | 
				
			||||||
| 
						 | 
					@ -334,5 +414,111 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        public void OnNavigatedFrom(NavigationContext navigationContext)
 | 
					        public void OnNavigatedFrom(NavigationContext navigationContext)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        //取药
 | 
				
			||||||
 | 
					        private DelegateCommand _takeCommand;
 | 
				
			||||||
 | 
					        public DelegateCommand TakeCommand
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                TakeMethod();
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        //=>_takeCommand??= new DelegateCommand(TakeMethod);
 | 
				
			||||||
 | 
					        private void TakeMethod()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            SelectedMenu = PremissionDmList[0];
 | 
				
			||||||
 | 
					            if (SelectedMenu.PremissionName == "退出")
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                logger.Info($"用户【{Operator?.Nickname}】退出登录");
 | 
				
			||||||
 | 
					                Operator = null;
 | 
				
			||||||
 | 
					                Reviewer = null;
 | 
				
			||||||
 | 
					                _regionManager.RequestNavigate("MainRegion", "LoginWindow");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                //SelectedMenu.Children = SelectedMenu.Children;
 | 
				
			||||||
 | 
					                SelectedChildMenu = SelectedMenu.Children[0];
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //加药
 | 
				
			||||||
 | 
					        private DelegateCommand _addCommand;
 | 
				
			||||||
 | 
					        public DelegateCommand AddCommand => _addCommand ??= new DelegateCommand(AddMethod);
 | 
				
			||||||
 | 
					        private void AddMethod()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            SelectedMenu = PremissionDmList[1];
 | 
				
			||||||
 | 
					            if (SelectedMenu.PremissionName == "退出")
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                logger.Info($"用户【{Operator?.Nickname}】退出登录");
 | 
				
			||||||
 | 
					                Operator = null;
 | 
				
			||||||
 | 
					                Reviewer = null;
 | 
				
			||||||
 | 
					                _regionManager.RequestNavigate("MainRegion", "LoginWindow");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                //SelectedMenu.Children = SelectedMenu.Children;
 | 
				
			||||||
 | 
					                SelectedChildMenu = SelectedMenu.Children[0];
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //还药
 | 
				
			||||||
 | 
					        private DelegateCommand _returnCommand;
 | 
				
			||||||
 | 
					        public DelegateCommand ReturnCommand => _returnCommand ??= new DelegateCommand(ReturnMethod);
 | 
				
			||||||
 | 
					        private void ReturnMethod()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            SelectedMenu = PremissionDmList[2];
 | 
				
			||||||
 | 
					            if (SelectedMenu.PremissionName == "退出")
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                logger.Info($"用户【{Operator?.Nickname}】退出登录");
 | 
				
			||||||
 | 
					                Operator = null;
 | 
				
			||||||
 | 
					                Reviewer = null;
 | 
				
			||||||
 | 
					                _regionManager.RequestNavigate("MainRegion", "LoginWindow");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                //SelectedMenu.Children = SelectedMenu.Children;
 | 
				
			||||||
 | 
					                SelectedChildMenu = SelectedMenu.Children[0];
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private DelegateCommand _stockCommand;
 | 
				
			||||||
 | 
					        public DelegateCommand StockCommand => _stockCommand ??= new DelegateCommand(StockMethod);
 | 
				
			||||||
 | 
					        private void StockMethod()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            SelectedMenu = PremissionDmList[3];
 | 
				
			||||||
 | 
					            if (SelectedMenu.PremissionName == "退出")
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                logger.Info($"用户【{Operator?.Nickname}】退出登录");
 | 
				
			||||||
 | 
					                Operator = null;
 | 
				
			||||||
 | 
					                Reviewer = null;
 | 
				
			||||||
 | 
					                _regionManager.RequestNavigate("MainRegion", "LoginWindow");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                //SelectedMenu.Children = SelectedMenu.Children;
 | 
				
			||||||
 | 
					                SelectedChildMenu = SelectedMenu.Children[0];
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private DelegateCommand _settingCommand;
 | 
				
			||||||
 | 
					        public DelegateCommand SettingCommand => _settingCommand ??= new DelegateCommand(SettingMethod);
 | 
				
			||||||
 | 
					        private void SettingMethod()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            SelectedMenu = PremissionDmList[4];
 | 
				
			||||||
 | 
					            if (SelectedMenu.PremissionName == "退出")
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                logger.Info($"用户【{Operator?.Nickname}】退出登录");
 | 
				
			||||||
 | 
					                Operator = null;
 | 
				
			||||||
 | 
					                Reviewer = null;
 | 
				
			||||||
 | 
					                _regionManager.RequestNavigate("MainRegion", "LoginWindow");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                //SelectedMenu.Children = SelectedMenu.Children;
 | 
				
			||||||
 | 
					                SelectedChildMenu = SelectedMenu.Children[0];
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -12,6 +12,7 @@ using Prism.Services.Dialogs;
 | 
				
			||||||
using SqlSugar;
 | 
					using SqlSugar;
 | 
				
			||||||
using System;
 | 
					using System;
 | 
				
			||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Configuration;
 | 
				
			||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
using System.Text;
 | 
					using System.Text;
 | 
				
			||||||
using System.Threading;
 | 
					using System.Threading;
 | 
				
			||||||
| 
						 | 
					@ -34,12 +35,12 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private PortUtil _portUtil;
 | 
					        private PortUtil _portUtil;
 | 
				
			||||||
        IEventAggregator _eventAggregator;
 | 
					        IEventAggregator _eventAggregator;
 | 
				
			||||||
        private SqlSugarScope _sqlSugarScope1;
 | 
					        ////private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
        public InvoiceAddDialogViewModel(PortUtil portUtil, IEventAggregator eventAggregator, SqlSugarScope sqlSugarScope)
 | 
					        public InvoiceAddDialogViewModel(PortUtil portUtil, IEventAggregator eventAggregator)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            _portUtil = portUtil;
 | 
					            _portUtil = portUtil;
 | 
				
			||||||
            _eventAggregator = eventAggregator;
 | 
					            _eventAggregator = eventAggregator;
 | 
				
			||||||
            this._sqlSugarScope1 = sqlSugarScope;
 | 
					            ////this.SqlSugarHelper.Db = sqlSugarScope;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        void DoMyPrismEvent(DeviceMsg msg)
 | 
					        void DoMyPrismEvent(DeviceMsg msg)
 | 
				
			||||||
| 
						 | 
					@ -201,6 +202,16 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if ((singleChannels.Count > 0 ? singleChannels[0].BoardType : 1) == 5)
 | 
					            if ((singleChannels.Count > 0 ? singleChannels[0].BoardType : 1) == 5)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
 | 
					                List<ChannelStock> ChannelLst = channelStocks.Where(it => it.BoardType != 1)
 | 
				
			||||||
 | 
					                                                                        .GroupBy(it => it.ColNo)
 | 
				
			||||||
 | 
					                                                                        .Select(it =>
 | 
				
			||||||
 | 
					                                                                        {
 | 
				
			||||||
 | 
					                                                                            var ret = it.First();
 | 
				
			||||||
 | 
					                                                                            ret.Quantity = it.Sum(itx => itx.Quantity);
 | 
				
			||||||
 | 
					                                                                            ret.AddQuantity = it.Sum(itx => itx.AddQuantity);
 | 
				
			||||||
 | 
					                                                                            return ret;
 | 
				
			||||||
 | 
					                                                                        }).ToList();
 | 
				
			||||||
 | 
					              
 | 
				
			||||||
                // 发送加药数量
 | 
					                // 发送加药数量
 | 
				
			||||||
                singleChannels.ForEach(it =>
 | 
					                singleChannels.ForEach(it =>
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
| 
						 | 
					@ -232,9 +243,9 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                    _isFinishClick = true;
 | 
					                    _isFinishClick = true;
 | 
				
			||||||
                    List<ChannelStock> record = ChannelStocks.ToList();
 | 
					                    List<ChannelStock> record = ChannelStocks.ToList();
 | 
				
			||||||
                    string InvoiceId = Invoice.InvoiceNo;
 | 
					                    string InvoiceId = Invoice.InvoiceNo;
 | 
				
			||||||
                    var f = _sqlSugarScope1.UseTran(() =>
 | 
					                    var f = SqlSugarHelper.Db.UseTran(() =>
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        _sqlSugarScope1.Updateable(new InOutInvoice()
 | 
					                        SqlSugarHelper.Db.Updateable(new InOutInvoice()
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            Status = 1,
 | 
					                            Status = 1,
 | 
				
			||||||
                            InvoiceNo = Invoice.InvoiceNo
 | 
					                            InvoiceNo = Invoice.InvoiceNo
 | 
				
			||||||
| 
						 | 
					@ -242,29 +253,82 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        for (int i = 0; i < record.Count; i++)
 | 
					                        for (int i = 0; i < record.Count; i++)
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            ChannelStock it = record[i];
 | 
					                            ChannelStock it = record[i];
 | 
				
			||||||
                            if (it.BoardType == 6 && it.PosNo == 0)
 | 
					                            if (it.BoardType == 6 && it.PosNo == 0)
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                _portUtil.SetNumCount(it.DrawerNo, it.ColNo, it.AddQuantity);
 | 
					                                _portUtil.SetNumCount(it.DrawerNo, it.ColNo, it.AddQuantity);
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                            // 更新数据 库存信息
 | 
					                            if (it.Id != null)
 | 
				
			||||||
                            _sqlSugarScope1.Updateable(new ChannelStock()
 | 
					 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                Quantity = it.Quantity + it.AddQuantity,
 | 
					                                // 更新数据 库存信息
 | 
				
			||||||
                                PosNo = 1,
 | 
					                                SqlSugarHelper.Db.Updateable(new ChannelStock()
 | 
				
			||||||
                                ManuNo = it.ManuNo,
 | 
					                                {
 | 
				
			||||||
                                EffDate = it.EffDate,
 | 
					                                    Quantity = it.Quantity + it.AddQuantity,
 | 
				
			||||||
                                Id = it.Id,
 | 
					                                    ManuNo = it.ManuNo,
 | 
				
			||||||
                            }).UpdateColumns(it => new { it.Quantity, it.ManuNo, it.EffDate, it.PosNo }).ExecuteCommand();
 | 
					                                    EffDate = it.EffDate,
 | 
				
			||||||
 | 
					                                    Id = it.Id,
 | 
				
			||||||
 | 
					                                }).UpdateColumns(it => new { it.Quantity, it.ManuNo, it.EffDate }).ExecuteCommand();
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                            else
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                //如果批号重复则不让添加
 | 
				
			||||||
 | 
					                                List<ChannelStock> csCount = SqlSugarHelper.Db.Queryable<ChannelStock>().Where(cs => cs.DrawerNo == it.DrawerNo && cs.ColNo==it.ColNo&&cs.ManuNo == it.ManuNo && cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")&&cs.Quantity>0).ToList();
 | 
				
			||||||
 | 
					                                if (csCount.Count > 0)
 | 
				
			||||||
 | 
					                                {
 | 
				
			||||||
 | 
					                                    //repeatList.Add(it.ManuNo);
 | 
				
			||||||
 | 
					                                    //stockRepeats.Add(it);
 | 
				
			||||||
 | 
					                                    continue;
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                                //查询现有库位中是否有库存为0的记录,如果有直接update
 | 
				
			||||||
 | 
					                                List<ChannelStock> recordList = SqlSugarHelper.Db.Queryable<ChannelStock>().Where(cs => cs.DrawerNo == it.DrawerNo && cs.ColNo == it.ColNo && cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1") && cs.Quantity <= 0).ToList();
 | 
				
			||||||
 | 
					                                if (recordList.Count > 0)
 | 
				
			||||||
 | 
					                                {
 | 
				
			||||||
 | 
					                                    // 更新数据 库存信息
 | 
				
			||||||
 | 
					                                    //SqlSugarHelper.Db.Updateable(new ChannelStock()
 | 
				
			||||||
 | 
					                                    //{
 | 
				
			||||||
 | 
					                                    //    Quantity = recordList[0].Quantity + it.AddQuantity,
 | 
				
			||||||
 | 
					                                    //    ManuNo = recordList[0].ManuNo,
 | 
				
			||||||
 | 
					                                    //    EffDate = recordList[0].EffDate,
 | 
				
			||||||
 | 
					                                    //    Id = recordList[0].Id,
 | 
				
			||||||
 | 
					                                    //}).UpdateColumns(it => new { recordList[0].Quantity, recordList[0].ManuNo, recordList[0].EffDate }).ExecuteCommand();
 | 
				
			||||||
 | 
					                                    SqlSugarHelper.Db.Updateable<ChannelStock>()  .SetColumns(item=>new ChannelStock()
 | 
				
			||||||
 | 
					                                    {
 | 
				
			||||||
 | 
					                                        Quantity = recordList[0].Quantity + it.AddQuantity,
 | 
				
			||||||
 | 
					                                        ManuNo = recordList[0].ManuNo,
 | 
				
			||||||
 | 
					                                        EffDate = recordList[0].EffDate,
 | 
				
			||||||
 | 
					                                        Id = recordList[0].Id,
 | 
				
			||||||
 | 
					                                    }).Where(item => item.Id == item.Id).ExecuteCommand();
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                                else
 | 
				
			||||||
 | 
					                                {
 | 
				
			||||||
 | 
					                                    // 更新数据 库存信息
 | 
				
			||||||
 | 
					                                    SqlSugarHelper.Db.Insertable(new ChannelStock()
 | 
				
			||||||
 | 
					                                    {
 | 
				
			||||||
 | 
					                                        Quantity = it.AddQuantity,
 | 
				
			||||||
 | 
					                                        Chnguid = it.Chnguid,
 | 
				
			||||||
 | 
					                                        ManuNo = it.ManuNo,
 | 
				
			||||||
 | 
					                                        EffDate = it.EffDate,
 | 
				
			||||||
 | 
					                                        DrawerNo = it.DrawerNo,
 | 
				
			||||||
 | 
					                                        ColNo = it.ColNo,
 | 
				
			||||||
 | 
					                                        DrugId = it.DrugId,
 | 
				
			||||||
 | 
					                                        DrawerType = it.DrawerType,
 | 
				
			||||||
 | 
					                                        BoardType = it.BoardType,
 | 
				
			||||||
 | 
					                                        Id = Guid.NewGuid().ToString(),
 | 
				
			||||||
 | 
					                                        MachineId = ConfigurationManager.AppSettings["machineId"] ?? "DM1"
 | 
				
			||||||
 | 
					                                    }).ExecuteCommand();
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
                            // 获取更新完库存后的药品库存
 | 
					                            // 获取更新完库存后的药品库存
 | 
				
			||||||
                            List<ChannelStock> nowChannels = _sqlSugarScope1.Queryable<ChannelStock>()
 | 
					                            List<ChannelStock> nowChannels = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
                                .Where(cs => cs.MachineId.Equals(it.MachineId))
 | 
					                                .Where(cs => cs.MachineId.Equals(it.MachineId))
 | 
				
			||||||
                                .Where(cs => cs.DrugId.Equals(it.DrugId))
 | 
					                                .Where(cs => cs.DrugId.Equals(it.DrugId))
 | 
				
			||||||
                                .Where(cs => cs.DrawerType == 1)
 | 
					                                .Where(cs => cs.DrawerType == 1)
 | 
				
			||||||
                                .ToList();
 | 
					                                .ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            // 保存数据 出/入库记录
 | 
					                            // 保存数据 出/入库记录
 | 
				
			||||||
                            _sqlSugarScope1.Insertable(new MachineRecord()
 | 
					                            SqlSugarHelper.Db.Insertable(new MachineRecord()
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                MachineId = it.MachineId,
 | 
					                                MachineId = it.MachineId,
 | 
				
			||||||
                                DrawerNo = it.DrawerNo,
 | 
					                                DrawerNo = it.DrawerNo,
 | 
				
			||||||
| 
						 | 
					@ -279,7 +343,9 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                                Type = 1,
 | 
					                                Type = 1,
 | 
				
			||||||
                                InvoiceId = InvoiceId,
 | 
					                                InvoiceId = InvoiceId,
 | 
				
			||||||
                                StockQuantity = nowChannels.Sum(it => it.Quantity),
 | 
					                                StockQuantity = nowChannels.Sum(it => it.Quantity),
 | 
				
			||||||
                                ManunoQuantity = nowChannels.FindAll(it2 => it2.ManuNo == it.ManuNo).Sum(it => it.Quantity)
 | 
					                                ManunoQuantity = nowChannels.FindAll(it2 => it2.ManuNo == it.ManuNo).Sum(it => it.Quantity),
 | 
				
			||||||
 | 
					                                SupplierDept = Invoice.PharmacyName1?? ConfigurationManager.AppSettings["supplierDept"].ToString(),
 | 
				
			||||||
 | 
					                                ReceiveDept = Invoice.PharmacyName2 ?? ConfigurationManager.AppSettings["receiveDept"].ToString()
 | 
				
			||||||
                            }).ExecuteCommand();
 | 
					                            }).ExecuteCommand();
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                        return true;
 | 
					                        return true;
 | 
				
			||||||
| 
						 | 
					@ -287,13 +353,25 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                    if (f.Data)
 | 
					                    if (f.Data)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        // 更新屏显库存
 | 
					                        // 更新屏显库存
 | 
				
			||||||
                        List<ChannelStock> singleChannels = record.FindAll(it => it.BoardType != 1);
 | 
					                        //List<ChannelStock> singleChannels = record.FindAll(it => it.BoardType != 1);
 | 
				
			||||||
 | 
					                        List<ChannelStock> singleChannels = record.Where(it => it.BoardType != 1)
 | 
				
			||||||
 | 
					                                                                        .GroupBy(it => it.ColNo)
 | 
				
			||||||
 | 
					                                                                        .Select(it =>
 | 
				
			||||||
 | 
					                                                                        {
 | 
				
			||||||
 | 
					                                                                            var ret = it.First();
 | 
				
			||||||
 | 
					                                                                            ret.Quantity = it.Sum(itx => itx.Quantity);
 | 
				
			||||||
 | 
					                                                                            ret.AddQuantity = it.Sum(itx => itx.AddQuantity);
 | 
				
			||||||
 | 
					                                                                            return ret;
 | 
				
			||||||
 | 
					                                                                        }).ToList();
 | 
				
			||||||
                        if ((singleChannels.Count > 0 ? singleChannels[0].BoardType : 1) == 5)
 | 
					                        if ((singleChannels.Count > 0 ? singleChannels[0].BoardType : 1) == 5)
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            singleChannels.ForEach(it =>
 | 
					                            //将库位多批次的总库存数更新标签
 | 
				
			||||||
                            {
 | 
					                            _portUtil.WriteQuantity(singleChannels[0].DrawerNo, singleChannels[0].ColNo, singleChannels.Sum(it => it.Quantity) + singleChannels.Sum(it => it.AddQuantity));
 | 
				
			||||||
                                _portUtil.WriteQuantity(it.DrawerNo, it.ColNo, it.Quantity + it.AddQuantity);
 | 
					
 | 
				
			||||||
                            });
 | 
					                            //singleChannels.ForEach(it =>
 | 
				
			||||||
 | 
					                            //{
 | 
				
			||||||
 | 
					                            //    _portUtil.WriteQuantity(it.DrawerNo, it.ColNo, it.Quantity + it.AddQuantity);
 | 
				
			||||||
 | 
					                            //});
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -354,6 +432,6 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public bool KeepAlive => false;
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,626 @@
 | 
				
			||||||
 | 
					using DM_Weight.Models;
 | 
				
			||||||
 | 
					using DM_Weight.msg;
 | 
				
			||||||
 | 
					using DM_Weight.Port;
 | 
				
			||||||
 | 
					using DM_Weight.select;
 | 
				
			||||||
 | 
					using DM_Weight.util;
 | 
				
			||||||
 | 
					using log4net;
 | 
				
			||||||
 | 
					using Prism.Commands;
 | 
				
			||||||
 | 
					using Prism.Events;
 | 
				
			||||||
 | 
					using Prism.Mvvm;
 | 
				
			||||||
 | 
					using Prism.Regions;
 | 
				
			||||||
 | 
					using Prism.Services.Dialogs;
 | 
				
			||||||
 | 
					using SqlSugar;
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Collections.ObjectModel;
 | 
				
			||||||
 | 
					using System.ComponentModel;
 | 
				
			||||||
 | 
					using System.Configuration;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Channels;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using System.Windows.Data;
 | 
				
			||||||
 | 
					using Unity;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class InvoiceInNewWindow2ViewModel : BindableBase, IConfirmNavigationRequest, IRegionMemberLifetime
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        private readonly ILog logger = LogManager.GetLogger(typeof(InvoiceInWindowViewModel));
 | 
				
			||||||
 | 
					        private int _pageNum = 1;
 | 
				
			||||||
 | 
					        public int PageNum
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _pageNum;
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _pageNum, value);
 | 
				
			||||||
 | 
					                RequestData();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private int _pageCount = 1;
 | 
				
			||||||
 | 
					        public int PageCount
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _pageCount;
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _pageCount, value);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private int _pageSize = 8;
 | 
				
			||||||
 | 
					        public int PageSize
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _pageSize;
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _pageSize, value);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private int _totalCount = 0;
 | 
				
			||||||
 | 
					        public int TotalCount
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _totalCount;
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _totalCount, value);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        private int _status = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public int Status { get => _status; set => SetProperty(ref _status, value); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        IDialogService _dialogService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        IEventAggregator _eventAggregator;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private DelegateCommand _rowSelected;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public DelegateCommand RowSelected => _rowSelected ??= new DelegateCommand(GetChannelByInvoice);
 | 
				
			||||||
 | 
					        //private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
 | 
					        private PortUtil _portUtil;
 | 
				
			||||||
 | 
					        public InvoiceInNewWindow2ViewModel(PortUtil portUtil, IDialogService DialogService, IEventAggregator eventAggregator, SqlSugarScope sqlSugarScope)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            _portUtil = portUtil;
 | 
				
			||||||
 | 
					            _dialogService = DialogService;
 | 
				
			||||||
 | 
					            _eventAggregator = eventAggregator;
 | 
				
			||||||
 | 
					            //this.SqlSugarHelper.Db = sqlSugarScope;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public static List<OrderTakeSelect> StaticOrderTakeSelects = new()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            new OrderTakeSelect
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Code = "invoiceNo",
 | 
				
			||||||
 | 
					                Name = "凭证单号"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private List<OrderTakeSelect> _orderTakeSelects = StaticOrderTakeSelects;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public List<OrderTakeSelect> OrderTakeSelects
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get { return _orderTakeSelects; }
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _orderTakeSelects, value);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private OrderTakeSelect _selectedItem = StaticOrderTakeSelects[0];
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 查询条件 查询字段
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public OrderTakeSelect SelectedItem
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get { return _selectedItem; }
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _selectedItem, value);
 | 
				
			||||||
 | 
					                RequestData();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private Invoice? _selectedInvoice;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public Invoice? SelectedInvoice
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get { return _selectedInvoice; }
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _selectedInvoice, value);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                //OpenOrderDialog();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private string _orderDate = DateTime.Now.ToString("yyyy-MM-dd");
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 查询条件  处方日期
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public string OrderDate
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get { return _orderDate; }
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (!String.IsNullOrEmpty(value))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    SetProperty(ref _orderDate, DateTime.Parse(value).ToString("yyyy-MM-dd"));
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    SetProperty(ref _orderDate, value);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                RequestData();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private string? _searchValue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 查询条件 查询字段值
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public string? SearchValue
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get { return _searchValue; }
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _searchValue, value);
 | 
				
			||||||
 | 
					                RequestData();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private List<Invoice> _invoices = new();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public List<Invoice> Invoices { get { return _invoices; } set { SetProperty(ref _invoices, value); } }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private List<InOutInvoice> _inOutInvoices = new();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public List<InOutInvoice> InOutInvoices { get { return _inOutInvoices; } set { SetProperty(ref _inOutInvoices, value); } }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private ObservableCollection<ChannelList>? _channelLsts = new();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public ObservableCollection<ChannelList>? ChannelLsts
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _channelLsts;
 | 
				
			||||||
 | 
					            set => SetProperty(ref _channelLsts, value);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        private List<ChannelStock> _channelStocks = new List<ChannelStock>();
 | 
				
			||||||
 | 
					        public List<ChannelStock> ChannelStocks
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _channelStocks;
 | 
				
			||||||
 | 
					            set => SetProperty(ref _channelStocks, value);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        private IEnumerable<IGrouping<int, ChannelStock>> enumerable;
 | 
				
			||||||
 | 
					        private IEnumerator<IGrouping<int, ChannelStock>> enumerator;
 | 
				
			||||||
 | 
					        private string WindowName = "InvoiceAddWindow";
 | 
				
			||||||
 | 
					        //private List<ChannelStock> _channelStocks = new();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //public List<ChannelStock> ChannelStocks { get { return _channelStocks; } set { SetProperty(ref _channelStocks, value); } }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private List<ChannelStock> _addChannels = new();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public List<ChannelStock> AddChannels { get { return _addChannels; } set { SetProperty(ref _addChannels, value); } }
 | 
				
			||||||
 | 
					        //左侧点击事件
 | 
				
			||||||
 | 
					        public void GetChannelByInvoice()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            //ChannelStocks.Clear();
 | 
				
			||||||
 | 
					            ChannelLsts.Clear();
 | 
				
			||||||
 | 
					            InOutInvoices.Clear();
 | 
				
			||||||
 | 
					            List<ChannelStock> iChannelStock = new List<ChannelStock>();
 | 
				
			||||||
 | 
					            if (SelectedInvoice != null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                string strSql = @"SELECT sum(Quantity) AS SumQuantity, COUNT(ID) AS CountNum,INVOICE_NO AS InvoiceNo,drug_id AS DrugId,QUANTITY AS quantity,drug_manu_no AS drugManuNo FROM IN_OUT_INVOICE WHERE INVOICE_NO=@INVOICE_NO  GROUP BY INVOICE_NO,DRUG_ID";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                var invoices = SqlSugarHelper.Db.SqlQueryable<InOutInvoice>(strSql)
 | 
				
			||||||
 | 
					                                                    .AddParameters(new
 | 
				
			||||||
 | 
					                                                    {
 | 
				
			||||||
 | 
					                                                        INVOICE_NO = SelectedInvoice.InvoiceNo
 | 
				
			||||||
 | 
					                                                    })
 | 
				
			||||||
 | 
					                                                    .Select(it => new InOutInvoice())
 | 
				
			||||||
 | 
					                                                    .Select("*").ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                //if(iList!=null&&iList.Count>0)
 | 
				
			||||||
 | 
					                //{
 | 
				
			||||||
 | 
					                //    for (int i = 0; i < iList.Count; i++)
 | 
				
			||||||
 | 
					                //    {
 | 
				
			||||||
 | 
					                //        if (iList[i].Count>1)
 | 
				
			||||||
 | 
					                //        {
 | 
				
			||||||
 | 
					                //            for (int j = 0; j < iList[i].Count; j++)
 | 
				
			||||||
 | 
					                //            {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                //            }
 | 
				
			||||||
 | 
					                //        }
 | 
				
			||||||
 | 
					                //    }
 | 
				
			||||||
 | 
					                //}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                //var invoices = SqlSugarHelper.Db.Queryable<InOutInvoice>()
 | 
				
			||||||
 | 
					                //                .Includes<DrugInfo>(i => i.DrugInfo)
 | 
				
			||||||
 | 
					                //                .InnerJoin(SqlSugarHelper.Db.Queryable<ChannelList>().Where(cs => cs.DrawerType == 1).Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).GroupBy(cs => cs.DrugId), (i, t) => i.DrugId == t.DrugId)
 | 
				
			||||||
 | 
					                //                .Where(i => i.InvoiceNo == SelectedInvoice.InvoiceNo)
 | 
				
			||||||
 | 
					                //                .ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                for (int i = 0; i < invoices.Count; i++)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    List<ChannelList> queryData = SqlSugarHelper.Db.Queryable<ChannelList>()
 | 
				
			||||||
 | 
					                                                .Includes(cl => cl.Drug, di => di.DrugManuNos)
 | 
				
			||||||
 | 
					                                                .Includes(cl => cl.channelStocks, dr => dr.DrugInfo, d => d.DrugManuNos)
 | 
				
			||||||
 | 
					                                                .Where(cl => cl.DrugId == invoices[i].DrugId)
 | 
				
			||||||
 | 
					                                                .Where(cl => cl.DrawerType == 1)
 | 
				
			||||||
 | 
					                                                .Where(cl => cl.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1"))
 | 
				
			||||||
 | 
					                                                //.Where(cl => cl.DrugId != null)
 | 
				
			||||||
 | 
					                                                //.WhereIF(!string.IsNullOrEmpty(invoices[i].DrugManuNo), cl => cl.drugManuNo.Equals(invoices[i].DrugManuNo))
 | 
				
			||||||
 | 
					                                                .OrderBy(cl => cl.ColNo)
 | 
				
			||||||
 | 
					                                                .ToList();
 | 
				
			||||||
 | 
					                    List<ChannelList> channelLst = queryData.Select(cl =>
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        cl.channelStocks = cl.channelStocks.Select(cs =>
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            cs.drugManuNo = cl.Drug.DrugManuNos.Find(it => it.ManuNo.Equals(cs.ManuNo));
 | 
				
			||||||
 | 
					                            return cs;
 | 
				
			||||||
 | 
					                        }).ToList();
 | 
				
			||||||
 | 
					                        return cl;
 | 
				
			||||||
 | 
					                    }).OrderBy(cl => cl.ColNo).ToList();
 | 
				
			||||||
 | 
					                    channelLst.ForEach(cl => cl.channelStocks.ForEach(cs => cs.DrugInfo = cl.Drug));
 | 
				
			||||||
 | 
					                    if (channelLst.Count > 0)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        if (channelLst[0].channelStocks.Count > 0)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            //for (int j = 0; j < channelLst[0].channelStocks.Count; j++)
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                var invoicesManuNo = SqlSugarHelper.Db.Queryable<InOutInvoice>()
 | 
				
			||||||
 | 
					                                    .Where(iManuNo => iManuNo.InvoiceNo == invoices[i].InvoiceNo && iManuNo.DrugId == invoices[i].DrugId).ToList();
 | 
				
			||||||
 | 
					                                for (int k = 0; k < invoicesManuNo.Count; k++)
 | 
				
			||||||
 | 
					                                {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    List<ChannelStock> stockLst = channelLst[0].channelStocks.Where(cs => cs.ManuNo == invoicesManuNo[k].DrugManuNo).ToList();
 | 
				
			||||||
 | 
					                                    if (stockLst != null && stockLst.Count > 0)
 | 
				
			||||||
 | 
					                                    {
 | 
				
			||||||
 | 
					                                        channelLst[0].channelStocks.Where(cs => cs.ManuNo == invoicesManuNo[k].DrugManuNo).ToList()[0].AddQuantity = invoicesManuNo[k].quantity; //.AddQuantity = invoicesManuNo[k].quantity;
 | 
				
			||||||
 | 
					                                        
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					                                    else
 | 
				
			||||||
 | 
					                                    {
 | 
				
			||||||
 | 
					                                        ChannelStock cls = new ChannelStock();
 | 
				
			||||||
 | 
					                                        DrugManuNo drugManu = new DrugManuNo();
 | 
				
			||||||
 | 
					                                        cls.DrugInfo = channelLst[0].Drug;
 | 
				
			||||||
 | 
					                                        List<DrugManuNo> drugManuNoList = channelLst[0].Drug.DrugManuNos;// SqlSugarHelper.Db.Queryable<DrugManuNo>().Where(dmn=>dmn.DrugId== invoicesManuNo[k].DrugId).ToList();
 | 
				
			||||||
 | 
					                                        //if (channelLst[0].channelStocks.Count > 0)
 | 
				
			||||||
 | 
					                                        //{
 | 
				
			||||||
 | 
					                                        //    //channelLst[0].channelStocks[0].AddQuantity = invoices[i].quantity;
 | 
				
			||||||
 | 
					                                        //    cls.drugManuNo = channelLst[0].channelStocks[0].drugManuNo;
 | 
				
			||||||
 | 
					                                        //}
 | 
				
			||||||
 | 
					                                        //else
 | 
				
			||||||
 | 
					                                        {
 | 
				
			||||||
 | 
					                                            //drugManu = cls.DrugInfo.DrugManuNos[0];
 | 
				
			||||||
 | 
					                                            if (drugManuNoList != null&& drugManuNoList.Count>0)
 | 
				
			||||||
 | 
					                                            {
 | 
				
			||||||
 | 
					                                                cls.DrugInfo.DrugManuNos = drugManuNoList;
 | 
				
			||||||
 | 
					                                                cls.drugManuNo = drugManuNoList.Where(dmn => dmn.ManuNo == invoicesManuNo[k].DrugManuNo).First();
 | 
				
			||||||
 | 
					                                            }
 | 
				
			||||||
 | 
					                                            else
 | 
				
			||||||
 | 
					                                            {
 | 
				
			||||||
 | 
					                                                AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
 | 
					                                                {
 | 
				
			||||||
 | 
					                                                    Message = "该药品下没有批次,请先添加批次",
 | 
				
			||||||
 | 
					                                                    Type = MsgType.ERROR
 | 
				
			||||||
 | 
					                                                };
 | 
				
			||||||
 | 
					                                                _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
 | 
					                                                return;
 | 
				
			||||||
 | 
					                                            }
 | 
				
			||||||
 | 
					                                        }
 | 
				
			||||||
 | 
					                                        cls.Chnguid = null;
 | 
				
			||||||
 | 
					                                        cls.MachineId = ConfigurationManager.AppSettings["machineId"] ?? "DM1";
 | 
				
			||||||
 | 
					                                        cls.DrawerNo = channelLst[0].DrawerNo;
 | 
				
			||||||
 | 
					                                        cls.BoardType = channelLst[0].BoardType;
 | 
				
			||||||
 | 
					                                        cls.DrawerType = channelLst[0].DrawerType;
 | 
				
			||||||
 | 
					                                        cls.ColNo = channelLst[0].ColNo;
 | 
				
			||||||
 | 
					                                        cls.DrugId = channelLst[0].DrugId;
 | 
				
			||||||
 | 
					                                        cls.AddQuantity = invoicesManuNo[k].quantity;
 | 
				
			||||||
 | 
					                                        cls.ManuNo = invoicesManuNo[k].DrugManuNo;
 | 
				
			||||||
 | 
					                                        channelLst[0].channelStocks.Add(cls);
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                        else
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            List<ChannelStock> CSList = new List<ChannelStock>();
 | 
				
			||||||
 | 
					                            if (!string.IsNullOrEmpty(invoices[i].DrugManuNo))
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                //List<ChannelStock> stockLst = channelLst[i].channelStocks.Where(cs => cs.ManuNo == invoices[i].DrugManuNo).ToList();
 | 
				
			||||||
 | 
					                                //if (stockLst != null && stockLst.Count > 0)
 | 
				
			||||||
 | 
					                                //{
 | 
				
			||||||
 | 
					                                //    channelLst[i].channelStocks[i].AddQuantity = invoices[i].quantity;
 | 
				
			||||||
 | 
					                                //}
 | 
				
			||||||
 | 
					                                //else
 | 
				
			||||||
 | 
					                                {
 | 
				
			||||||
 | 
					                                    ChannelStock cls = new ChannelStock();
 | 
				
			||||||
 | 
					                                    DrugManuNo drugManu = new DrugManuNo();
 | 
				
			||||||
 | 
					                                    cls.DrugInfo = channelLst[0].Drug;
 | 
				
			||||||
 | 
					                                    if (channelLst[0].channelStocks.Count > 0)
 | 
				
			||||||
 | 
					                                    {
 | 
				
			||||||
 | 
					                                        channelLst[0].channelStocks[0].AddQuantity = invoices[i].quantity;
 | 
				
			||||||
 | 
					                                        cls.drugManuNo = channelLst[0].channelStocks[0].drugManuNo;
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					                                    else
 | 
				
			||||||
 | 
					                                    {
 | 
				
			||||||
 | 
					                                        //drugManu= cls.DrugInfo.DrugManuNos[0];
 | 
				
			||||||
 | 
					                                        if (cls.DrugInfo.DrugManuNos.Count > 0)
 | 
				
			||||||
 | 
					                                        {
 | 
				
			||||||
 | 
					                                            //cls.drugManuNo = cls.DrugInfo.DrugManuNos[0];
 | 
				
			||||||
 | 
					                                            cls.drugManuNo = cls.DrugInfo.DrugManuNos.Where(dm => dm.ManuNo == invoices[i].DrugManuNo).First();
 | 
				
			||||||
 | 
					                                        }
 | 
				
			||||||
 | 
					                                        else
 | 
				
			||||||
 | 
					                                        {
 | 
				
			||||||
 | 
					                                            AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
 | 
					                                            {
 | 
				
			||||||
 | 
					                                                Message = "该药品下没有批次,请先添加批次",
 | 
				
			||||||
 | 
					                                                Type = MsgType.ERROR
 | 
				
			||||||
 | 
					                                            };
 | 
				
			||||||
 | 
					                                            _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
 | 
					                                            return;
 | 
				
			||||||
 | 
					                                        }
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					                                    cls.Chnguid = channelLst[0].Id;
 | 
				
			||||||
 | 
					                                    cls.MachineId = ConfigurationManager.AppSettings["machineId"] ?? "DM1";
 | 
				
			||||||
 | 
					                                    cls.DrawerNo = channelLst[0].DrawerNo;
 | 
				
			||||||
 | 
					                                    cls.BoardType = channelLst[0].BoardType;
 | 
				
			||||||
 | 
					                                    cls.DrawerType = channelLst[0].DrawerType;
 | 
				
			||||||
 | 
					                                    cls.ColNo = channelLst[0].ColNo;
 | 
				
			||||||
 | 
					                                    cls.DrugId = channelLst[0].DrugId;
 | 
				
			||||||
 | 
					                                    cls.AddQuantity = invoices[i].quantity;
 | 
				
			||||||
 | 
					                                    List<ChannelStock> stockList = new List<ChannelStock>();
 | 
				
			||||||
 | 
					                                    stockList.AddRange(channelLst[0].channelStocks);
 | 
				
			||||||
 | 
					                                    stockList.Add(cls);
 | 
				
			||||||
 | 
					                                    channelLst[0].channelStocks = stockList;
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    else
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        //药品未绑定库位,需要先绑药
 | 
				
			||||||
 | 
					                        AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            Message = "药品未绑定库位,请先绑定库位",
 | 
				
			||||||
 | 
					                            Type = MsgType.ERROR,
 | 
				
			||||||
 | 
					                        };
 | 
				
			||||||
 | 
					                        _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    InOutInvoice copy = TransExpV2<InOutInvoice, InOutInvoice>.Trans(invoices[i]);
 | 
				
			||||||
 | 
					                    InOutInvoices.Add(copy);
 | 
				
			||||||
 | 
					                    ChannelLsts.AddRange(channelLst);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public DelegateCommand OpenInvoiceAdd
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Status = 1;
 | 
				
			||||||
 | 
					                bool flag = true;
 | 
				
			||||||
 | 
					                var list = ChannelLsts.GroupBy(cl => cl.DrugId).ToList();
 | 
				
			||||||
 | 
					                if (list != null && list.Count == InOutInvoices.Count)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    for (int i = 0; i < InOutInvoices.Count; i++)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        InOutInvoice invoices = InOutInvoices[i];
 | 
				
			||||||
 | 
					                        //if (invoices.quantity != ChannelStocks.FindAll(it => it.DrugId == invoices.DrugId).Sum(it => it.AddQuantity))
 | 
				
			||||||
 | 
					                        if (invoices.SumQuantity != ChannelLsts[i].channelStocks.FindAll(it => it.DrugId == invoices.DrugId).Sum(it => it.AddQuantity))
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            flag = false;
 | 
				
			||||||
 | 
					                            break;
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                if (flag)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    ChannelStocks.Clear();
 | 
				
			||||||
 | 
					                    foreach (ChannelList lst in ChannelLsts)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        ChannelStocks.AddRange(lst.channelStocks);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    AddChannels = ChannelStocks.FindAll(it => it.AddQuantity != 0);
 | 
				
			||||||
 | 
					                    //AddChannels = ChannelLsts[i].channelStocks.FindAll(it => it.AddQuantity != 0);
 | 
				
			||||||
 | 
					                    if (AddChannels.Count > 0)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        for (int i = 0; i < AddChannels.Count; i++)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            AddChannels[i].ManuNo = AddChannels[i].drugManuNo.ManuNo;
 | 
				
			||||||
 | 
					                            AddChannels[i].EffDate = AddChannels[i].drugManuNo.EffDate;
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                        AddChannels.Sort((a, b) =>
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            if ((a.DrawerNo - b.DrawerNo) == 0)
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                return a.ColNo - b.ColNo;
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                            return a.DrawerNo - b.DrawerNo;
 | 
				
			||||||
 | 
					                        });
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    //enumerable = ChannelStocks.GroupBy(cs => cs.DrawerNo, cs => cs);
 | 
				
			||||||
 | 
					                    //enumerator = enumerable.GetEnumerator();
 | 
				
			||||||
 | 
					                    //enumerator.MoveNext();
 | 
				
			||||||
 | 
					                    //OpenOneByOne();
 | 
				
			||||||
 | 
					                    OpenOrderDialog();
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        Message = "库位添加数量小于应添加数量",
 | 
				
			||||||
 | 
					                        Type = MsgType.ERROR,
 | 
				
			||||||
 | 
					                    };
 | 
				
			||||||
 | 
					                    _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }, () => SelectedInvoice != null).ObservesProperty(() => SelectedInvoice);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public async void OpenOrderDialog()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (SelectedInvoice != null && SelectedInvoice.Status == 0)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                // 此处延时1毫秒,等待页面渲染
 | 
				
			||||||
 | 
					                await Task.Delay(TimeSpan.FromMilliseconds(1));
 | 
				
			||||||
 | 
					                DialogParameters dialogParameters = new DialogParameters();
 | 
				
			||||||
 | 
					                dialogParameters.Add("invoice", SelectedInvoice);
 | 
				
			||||||
 | 
					                dialogParameters.Add("ChannelStocks", AddChannels);
 | 
				
			||||||
 | 
					                DialogServiceExtensions.ShowDialogHost(_dialogService, "InvoiceAddDialog", dialogParameters, DoDialogResult, "RootDialog");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public DelegateCommand QueryCommand
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                RequestData();
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private void DoDialogResult(IDialogResult dialogResult)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            // 委托   被动执行     被子窗口执行
 | 
				
			||||||
 | 
					            // dialogResult  第一方面可以拿到任意参数   第二方面   可判断关闭状态
 | 
				
			||||||
 | 
					            //if (dialogResult.Result == ButtonResult.OK)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SelectedInvoice = null;
 | 
				
			||||||
 | 
					                RequestData();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            //MessageBox.Show("返回值:" + dialogResult.Result.ToString());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //这个方法用于拦截请求,continuationCallback(true)就是不拦截,continuationCallback(false)拦截本次操作
 | 
				
			||||||
 | 
					        public void ConfirmNavigationRequest(NavigationContext navigationContext, Action<bool> continuationCallback)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            continuationCallback(true);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void RequestData()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Invoices.Clear();
 | 
				
			||||||
 | 
					            int totalCount = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var sb = new StringBuilder();
 | 
				
			||||||
 | 
					            //sb.Append("select i.invoice_no as InvoiceNo, i.invoice_date as InvoiceDate, COUNT(i.id) as `Count`, SUM(i.quantity) as quantity, p1.pharmacy_name as PharmacyName1, p2.pharmacy_name as PharmacyName2 from in_out_invoice i");
 | 
				
			||||||
 | 
					            sb.Append(" SELECT count(1) as Count, i.InvoiceNo, i.InvoiceDate, sum(i.quantity) as quantity, p1.pharmacy_name as PharmacyName1, p2.pharmacy_name PharmacyName2 from ");
 | 
				
			||||||
 | 
					            sb.Append(" (SELECT drug_id,in_pharmacy_id,out_pharmacy_id, invoice_no as InvoiceNo, DATE_FORMAT(Invoice_Date,'%Y-%m-%d')  as InvoiceDate, SUM(quantity) as quantity ");
 | 
				
			||||||
 | 
					            sb.Append(" FROM in_out_invoice where status=@Status  and type!=@type  and cancel_flag=@CancelFlag GROUP BY invoice_no,drug_id) i ");
 | 
				
			||||||
 | 
					            sb.Append(" inner join ( select c.drug_id as drug_id from channel_list c where c.machine_id = '" + (ConfigurationManager.AppSettings["machineId"] ?? "DM1") + "' group by c.drug_id ) di on di.drug_id = i.drug_id");
 | 
				
			||||||
 | 
					            sb.Append(" left join pharmacy_info p1 on p1.pharmacy_id = i.in_pharmacy_id");
 | 
				
			||||||
 | 
					            sb.Append(" left join pharmacy_info p2 on p2.pharmacy_id = i.out_pharmacy_id where 1=1");
 | 
				
			||||||
 | 
					            //sb.Append(" where i.status=@Status ");
 | 
				
			||||||
 | 
					            //sb.Append(" and i.type!=@type ");
 | 
				
			||||||
 | 
					            //sb.Append(" and i.cancel_flag=@CancelFlag ");
 | 
				
			||||||
 | 
					            if (OrderDate != null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                sb.Append(" and i.InvoiceDate = @CreateTime ");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (!String.IsNullOrEmpty(SearchValue))
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                sb.Append(" and i.InvoiceNo = @InvoiceNo ");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (!String.IsNullOrEmpty(ConfigurationManager.AppSettings["storage"]))
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                sb.Append(" and i.in_pharmacy_id = @OutPharmacyId ");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            //sb.Append(" group by i.invoice_no");
 | 
				
			||||||
 | 
					            sb.Append(" GROUP BY  i.InvoiceNo  order by i.InvoiceDate ");
 | 
				
			||||||
 | 
					            Invoices = SqlSugarHelper.Db.SqlQueryable<dynamic>(sb.ToString())
 | 
				
			||||||
 | 
					                .AddParameters(new
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    Status = 0,
 | 
				
			||||||
 | 
					                    type = 2,
 | 
				
			||||||
 | 
					                    CancelFlag = 0,
 | 
				
			||||||
 | 
					                    CreateTime = OrderDate,
 | 
				
			||||||
 | 
					                    InvoiceNo = SearchValue,
 | 
				
			||||||
 | 
					                    OutPharmacyId = ConfigurationManager.AppSettings["storage"]
 | 
				
			||||||
 | 
					                })
 | 
				
			||||||
 | 
					                .Select(it => new Invoice())
 | 
				
			||||||
 | 
					                .Select("*")
 | 
				
			||||||
 | 
					                .ToPageList(PageNum, PageSize, ref totalCount);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            TotalCount = totalCount;
 | 
				
			||||||
 | 
					            PageCount = (int)Math.Ceiling((double)TotalCount / PageSize);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        //添加批次
 | 
				
			||||||
 | 
					        public void AddAction(ChannelList channelLS)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (channelLS != null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                ChannelStock cls = new ChannelStock();
 | 
				
			||||||
 | 
					                DrugManuNo drugManu = new DrugManuNo();
 | 
				
			||||||
 | 
					                cls.DrugInfo = channelLS.Drug;
 | 
				
			||||||
 | 
					                if (channelLS.channelStocks.Count > 0)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    cls.drugManuNo = channelLS.channelStocks[0].drugManuNo;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    //drugManu= cls.DrugInfo.DrugManuNos[0];
 | 
				
			||||||
 | 
					                    if (cls.DrugInfo.DrugManuNos.Count > 0)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        cls.drugManuNo = cls.DrugInfo.DrugManuNos[0];
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    else
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            Message = "该药品下没有批次,请先添加批次",
 | 
				
			||||||
 | 
					                            Type = MsgType.ERROR
 | 
				
			||||||
 | 
					                        };
 | 
				
			||||||
 | 
					                        _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
 | 
					                        return;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                //cls.Id = "";
 | 
				
			||||||
 | 
					                cls.Chnguid = channelLS.Id;
 | 
				
			||||||
 | 
					                cls.MachineId = ConfigurationManager.AppSettings["machineId"] ?? "DM1";
 | 
				
			||||||
 | 
					                cls.DrawerNo = channelLS.DrawerNo;
 | 
				
			||||||
 | 
					                cls.BoardType = channelLS.BoardType;
 | 
				
			||||||
 | 
					                cls.DrawerType = channelLS.DrawerType;
 | 
				
			||||||
 | 
					                cls.ColNo = channelLS.ColNo;
 | 
				
			||||||
 | 
					                cls.DrugId = channelLS.DrugId;
 | 
				
			||||||
 | 
					                cls.AddQuantity = 0;
 | 
				
			||||||
 | 
					                List<ChannelStock> stockList = new List<ChannelStock>();
 | 
				
			||||||
 | 
					                stockList.AddRange(channelLS.channelStocks);
 | 
				
			||||||
 | 
					                stockList.Add(cls);
 | 
				
			||||||
 | 
					                channelLS.channelStocks = stockList;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //接收导航传过来的参数  现在是在此处初始化了表格数据
 | 
				
			||||||
 | 
					        public void OnNavigatedTo(NavigationContext navigationContext)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            _eventAggregator.GetEvent<AddDrugEvent>().Subscribe(AddAction);
 | 
				
			||||||
 | 
					            RequestData();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //每次导航的时候,该实列用不用重新创建,true是不重新创建,false是重新创建
 | 
				
			||||||
 | 
					        public bool IsNavigationTarget(NavigationContext navigationContext)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //这个方法用于拦截请求
 | 
				
			||||||
 | 
					        public void OnNavigatedFrom(NavigationContext navigationContext)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            _eventAggregator.GetEvent<AddDrugEvent>().Unsubscribe(AddAction);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,754 @@
 | 
				
			||||||
 | 
					using DM_Weight.Models;
 | 
				
			||||||
 | 
					using DM_Weight.msg;
 | 
				
			||||||
 | 
					using DM_Weight.Port;
 | 
				
			||||||
 | 
					using DM_Weight.select;
 | 
				
			||||||
 | 
					using DM_Weight.util;
 | 
				
			||||||
 | 
					using log4net;
 | 
				
			||||||
 | 
					using Prism.Commands;
 | 
				
			||||||
 | 
					using Prism.Events;
 | 
				
			||||||
 | 
					using Prism.Mvvm;
 | 
				
			||||||
 | 
					using Prism.Regions;
 | 
				
			||||||
 | 
					using Prism.Services.Dialogs;
 | 
				
			||||||
 | 
					using SqlSugar;
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Collections.ObjectModel;
 | 
				
			||||||
 | 
					using System.Configuration;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class InvoiceInNewWindowViewModel : BindableBase, IConfirmNavigationRequest, IRegionMemberLifetime
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        private readonly ILog logger = LogManager.GetLogger(typeof(InvoiceInWindowViewModel));
 | 
				
			||||||
 | 
					        private int _pageNum = 1;
 | 
				
			||||||
 | 
					        public int PageNum
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _pageNum;
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _pageNum, value);
 | 
				
			||||||
 | 
					                RequestData();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private int _pageCount = 1;
 | 
				
			||||||
 | 
					        public int PageCount
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _pageCount;
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _pageCount, value);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private int _pageSize = 8;
 | 
				
			||||||
 | 
					        public int PageSize
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _pageSize;
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _pageSize, value);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private int _totalCount = 0;
 | 
				
			||||||
 | 
					        public int TotalCount
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _totalCount;
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _totalCount, value);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        private int _status = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public int Status { get => _status; set => SetProperty(ref _status, value); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        IDialogService _dialogService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        IEventAggregator _eventAggregator;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private DelegateCommand _rowSelected;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public DelegateCommand RowSelected => _rowSelected ??= new DelegateCommand(GetChannelByInvoice);
 | 
				
			||||||
 | 
					        ////private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
 | 
					        private PortUtil _portUtil;
 | 
				
			||||||
 | 
					        public InvoiceInNewWindowViewModel(PortUtil portUtil, IDialogService DialogService, IEventAggregator eventAggregator)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            _portUtil = portUtil;
 | 
				
			||||||
 | 
					            _dialogService = DialogService;
 | 
				
			||||||
 | 
					            _eventAggregator = eventAggregator;
 | 
				
			||||||
 | 
					            ////this.SqlSugarHelper.Db = sqlSugarScope;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        void DoMyPrismEvent(DeviceMsg msg)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (msg.WindowName.Equals(WindowName))
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                IGrouping<int, ChannelStock> grouping = enumerator.Current;
 | 
				
			||||||
 | 
					                int DrawerNo = grouping.Key;
 | 
				
			||||||
 | 
					                List<ChannelStock> channelStocks = grouping.ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                switch (msg.EventType)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    // 抽屉打开
 | 
				
			||||||
 | 
					                    case EventType.DRAWEROPEN:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        if (Status == 1)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            if (channelStocks[0].process == 1)
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                channelStocks.ForEach(it => it.process = 2);
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                    // 抽屉关闭
 | 
				
			||||||
 | 
					                    case EventType.DRAWERCLOSE:
 | 
				
			||||||
 | 
					                        if (Status == 1)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            if (channelStocks[0].process == 2)
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                channelStocks.ForEach(it => it.process = 3);
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                            IGrouping<int, ChannelStock> groupingBefore = enumerator.Current;
 | 
				
			||||||
 | 
					                            int DrawerNoBefore = groupingBefore.Key;
 | 
				
			||||||
 | 
					                            if (enumerator.MoveNext())
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                IGrouping<int, ChannelStock> groupingAfter = enumerator.Current;
 | 
				
			||||||
 | 
					                                int DrawerNoAfter = groupingAfter.Key;
 | 
				
			||||||
 | 
					                                if (DrawerNoBefore < 9 && DrawerNoAfter > 8)
 | 
				
			||||||
 | 
					                                {
 | 
				
			||||||
 | 
					                                    Thread.Sleep(50);
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                                OpenOneByOne();
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                            // 已经全部取出
 | 
				
			||||||
 | 
					                            else
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                Status = 3;
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                    // 数量变化
 | 
				
			||||||
 | 
					                    case EventType.UPDATEQUANTITY:
 | 
				
			||||||
 | 
					                        if (Status == 1)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            logger.Info($"抽屉【{DrawerNo}】库位药品数量【{msg.Quantitys}】");
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                    // 打开失败
 | 
				
			||||||
 | 
					                    case EventType.OPENERROR:
 | 
				
			||||||
 | 
					                        AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            Message = msg.Message,
 | 
				
			||||||
 | 
					                            Type = MsgType.ERROR,
 | 
				
			||||||
 | 
					                        };
 | 
				
			||||||
 | 
					                        _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
 | 
					                        Status = 0;
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public static List<OrderTakeSelect> StaticOrderTakeSelects = new()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            new OrderTakeSelect
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Code = "invoiceNo",
 | 
				
			||||||
 | 
					                Name = "凭证单号"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private List<OrderTakeSelect> _orderTakeSelects = StaticOrderTakeSelects;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public List<OrderTakeSelect> OrderTakeSelects
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get { return _orderTakeSelects; }
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _orderTakeSelects, value);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private OrderTakeSelect _selectedItem = StaticOrderTakeSelects[0];
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 查询条件 查询字段
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public OrderTakeSelect SelectedItem
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get { return _selectedItem; }
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _selectedItem, value);
 | 
				
			||||||
 | 
					                RequestData();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private Invoice? _selectedInvoice;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public Invoice? SelectedInvoice
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get { return _selectedInvoice; }
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _selectedInvoice, value);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                //OpenOrderDialog();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private string _orderDate = DateTime.Now.ToString("yyyy-MM-dd");
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 查询条件  处方日期
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public string OrderDate
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get { return _orderDate; }
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (!String.IsNullOrEmpty(value))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    SetProperty(ref _orderDate, DateTime.Parse(value).ToString("yyyy-MM-dd"));
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    SetProperty(ref _orderDate, value);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                RequestData();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private string? _searchValue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 查询条件 查询字段值
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public string? SearchValue
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get { return _searchValue; }
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _searchValue, value);
 | 
				
			||||||
 | 
					                RequestData();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private List<Invoice> _invoices = new();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public List<Invoice> Invoices { get { return _invoices; } set { SetProperty(ref _invoices, value); } }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private List<InOutInvoice> _inOutInvoices = new();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public List<InOutInvoice> InOutInvoices { get { return _inOutInvoices; } set { SetProperty(ref _inOutInvoices, value); } }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private ObservableCollection<ChannelList>? _channelLsts = new();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public ObservableCollection<ChannelList>? ChannelLsts
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _channelLsts;
 | 
				
			||||||
 | 
					            set => SetProperty(ref _channelLsts, value);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        private List<ChannelStock> _channelStocks = new List<ChannelStock>();
 | 
				
			||||||
 | 
					        public List<ChannelStock> ChannelStocks
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _channelStocks;
 | 
				
			||||||
 | 
					            set => SetProperty(ref _channelStocks, value);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        private IEnumerable<IGrouping<int, ChannelStock>> enumerable;
 | 
				
			||||||
 | 
					        private IEnumerator<IGrouping<int, ChannelStock>> enumerator;
 | 
				
			||||||
 | 
					        private string WindowName = "InvoiceAddWindow";
 | 
				
			||||||
 | 
					        //private List<ChannelStock> _channelStocks = new();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //public List<ChannelStock> ChannelStocks { get { return _channelStocks; } set { SetProperty(ref _channelStocks, value); } }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private List<ChannelStock> _addChannels = new();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public List<ChannelStock> AddChannels { get { return _addChannels; } set { SetProperty(ref _addChannels, value); } }
 | 
				
			||||||
 | 
					        //左侧点击事件
 | 
				
			||||||
 | 
					        public void GetChannelByInvoice()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            //ChannelStocks.Clear();
 | 
				
			||||||
 | 
					            ChannelLsts.Clear();
 | 
				
			||||||
 | 
					            InOutInvoices.Clear();
 | 
				
			||||||
 | 
					            List<ChannelStock> iChannelStock = new List<ChannelStock>();
 | 
				
			||||||
 | 
					            if (SelectedInvoice != null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                //先查询有几种药
 | 
				
			||||||
 | 
					                string strSql = @"SELECT sum(Quantity) AS SumQuantity, COUNT(ID) AS CountNum,INVOICE_NO AS InvoiceNo,drug_id AS DrugId,QUANTITY AS quantity,drug_manu_no AS drugManuNo FROM IN_OUT_INVOICE WHERE INVOICE_NO=@INVOICE_NO  GROUP BY INVOICE_NO,DRUG_ID";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                var invoices = SqlSugarHelper.Db.SqlQueryable<InOutInvoice>(strSql)
 | 
				
			||||||
 | 
					                                                    .AddParameters(new
 | 
				
			||||||
 | 
					                                                    {
 | 
				
			||||||
 | 
					                                                        INVOICE_NO = SelectedInvoice.InvoiceNo
 | 
				
			||||||
 | 
					                                                    })
 | 
				
			||||||
 | 
					                                                    .Select(it => new InOutInvoice())
 | 
				
			||||||
 | 
					                                                    .Select("*").ToList();
 | 
				
			||||||
 | 
					                for (int i = 0; i < invoices.Count; i++)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    //查询药品是否绑定
 | 
				
			||||||
 | 
					                    List<ChannelList> channelL = SqlSugarHelper.Db.Queryable<ChannelList>()
 | 
				
			||||||
 | 
					                                                 .Includes(cl => cl.Drug, di => di.DrugManuNos)
 | 
				
			||||||
 | 
					                                                 //.Includes(cl => cl.channelStocks, dr => dr.DrugInfo, d => d.DrugManuNos)
 | 
				
			||||||
 | 
					                                                 .Where(cl => cl.DrugId == invoices[i].DrugId && cl.MachineId == (ConfigurationManager.AppSettings["machineId"] ?? "DM1")).ToList();
 | 
				
			||||||
 | 
					                    ChannelList channelLst = channelL.Count > 0 ? channelL[0] : null;
 | 
				
			||||||
 | 
					                    if (channelLst == null || channelLst.Id is null)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        //药品未绑定库位,需要先绑药
 | 
				
			||||||
 | 
					                        //AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
 | 
					                        //{
 | 
				
			||||||
 | 
					                        //    Message = "药品未绑定库位,请先绑定库位",
 | 
				
			||||||
 | 
					                        //    Type = MsgType.ERROR,
 | 
				
			||||||
 | 
					                        //};
 | 
				
			||||||
 | 
					                        //_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
 | 
					                        continue;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    ChannelStock stock = new ChannelStock();
 | 
				
			||||||
 | 
					                    //查询每种药有多少个批次
 | 
				
			||||||
 | 
					                    var invoicesManuNo = SqlSugarHelper.Db.Queryable<InOutInvoice>()
 | 
				
			||||||
 | 
					                               .Where(iManuNo => iManuNo.InvoiceNo == invoices[i].InvoiceNo && iManuNo.DrugId == invoices[i].DrugId).ToList();
 | 
				
			||||||
 | 
					                    for (int j = 0; j < invoicesManuNo.Count; j++)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        //查询是否有库存
 | 
				
			||||||
 | 
					                        List<ChannelStock> stockList = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
 | 
					                             .Where(cs => cs.ManuNo == invoicesManuNo[j].DrugManuNo && cs.DrugId == invoicesManuNo[j].DrugId && cs.MachineId == (ConfigurationManager.AppSettings["machineId"] ?? "DM1")).ToList();
 | 
				
			||||||
 | 
					                        stock = stockList.Count > 0 ? stockList[0] : new ChannelStock();
 | 
				
			||||||
 | 
					                        List<DrugManuNo> manuNoList = SqlSugarHelper.Db.Queryable<DrugManuNo>().Where(dm => dm.ManuNo == invoicesManuNo[j].DrugManuNo && dm.DrugId == invoicesManuNo[j].DrugId).ToList();
 | 
				
			||||||
 | 
					                        if (stock == null || stock.Id is null)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            if (manuNoList == null || manuNoList.Count <= 0)
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                //药品批次不存在
 | 
				
			||||||
 | 
					                                AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
 | 
					                                {
 | 
				
			||||||
 | 
					                                    Message = $"药品批次{invoicesManuNo[j].DrugManuNo}不存在,请核对药品批次信息!",
 | 
				
			||||||
 | 
					                                    Type = MsgType.ERROR,
 | 
				
			||||||
 | 
					                                };
 | 
				
			||||||
 | 
					                                _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
 | 
					                                continue;
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                            //没有库存写入一条数据
 | 
				
			||||||
 | 
					                            stock.MachineId = ConfigurationManager.AppSettings["machineId"] ?? "DM1";
 | 
				
			||||||
 | 
					                            stock.DrawerNo = channelLst.DrawerNo;
 | 
				
			||||||
 | 
					                            stock.BoardType = channelLst.BoardType;
 | 
				
			||||||
 | 
					                            stock.DrawerType = channelLst.DrawerType;
 | 
				
			||||||
 | 
					                            stock.ColNo = channelLst.ColNo;
 | 
				
			||||||
 | 
					                            stock.DrugId = channelLst.DrugId;
 | 
				
			||||||
 | 
					                            stock.ManuNo = invoicesManuNo[j].DrugManuNo;
 | 
				
			||||||
 | 
					                            stock.EffDate = manuNoList[0].EffDate;
 | 
				
			||||||
 | 
					                            stock.Chnguid = channelLst.Id;
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                        stock.AddQuantity = invoicesManuNo[j].quantity;
 | 
				
			||||||
 | 
					                        if (channelLst.channelStocks == null)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            channelLst.channelStocks = new List<ChannelStock>();
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                        channelLst.channelStocks.Add(stock);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    InOutInvoice copy = TransExpV2<InOutInvoice, InOutInvoice>.Trans(invoices[i]);
 | 
				
			||||||
 | 
					                    InOutInvoices.Add(copy);
 | 
				
			||||||
 | 
					                    ChannelLsts.Add(channelLst);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public DelegateCommand OpenInvoiceAdd
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                bool flag = true;
 | 
				
			||||||
 | 
					                ChannelStocks.Clear();
 | 
				
			||||||
 | 
					                foreach (ChannelList lst in ChannelLsts)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    ChannelStocks.AddRange(lst.channelStocks);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                AddChannels = ChannelStocks.FindAll(it => it.AddQuantity != 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                enumerable = AddChannels.GroupBy(cs => cs.DrawerNo, cs => cs);
 | 
				
			||||||
 | 
					                enumerator = enumerable.GetEnumerator();
 | 
				
			||||||
 | 
					                OpenDrawer(AddChannels);
 | 
				
			||||||
 | 
					            }, () => SelectedInvoice != null).ObservesProperty(() => SelectedInvoice);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private void OpenDrawer(List<ChannelStock> AddChannels)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (Status == 0)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                enumerator.MoveNext();
 | 
				
			||||||
 | 
					                Status = 1;
 | 
				
			||||||
 | 
					                OpenOneByOne();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        private async void OpenOneByOne()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            IGrouping<int, ChannelStock> grouping = enumerator.Current;
 | 
				
			||||||
 | 
					            int DrawerNo = grouping.Key;
 | 
				
			||||||
 | 
					            List<ChannelStock> channelStocks = grouping.ToList();
 | 
				
			||||||
 | 
					            channelStocks.ForEach(it => it.process = 1);
 | 
				
			||||||
 | 
					            _portUtil.SpeakAsync("正在打开" + DrawerNo + "号抽屉");
 | 
				
			||||||
 | 
					            List<ChannelStock> singleChannels = channelStocks.GroupBy(it => new
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                it.DrawerNo,
 | 
				
			||||||
 | 
					                it.ColNo
 | 
				
			||||||
 | 
					            }).Select(it =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var ret = it.First();
 | 
				
			||||||
 | 
					                ret.Quantity = it.Sum(itx => itx.Quantity);
 | 
				
			||||||
 | 
					                ret.AddQuantity = it.Sum(itx => itx.AddQuantity);
 | 
				
			||||||
 | 
					                return ret;
 | 
				
			||||||
 | 
					            }).ToList().FindAll(it => it.BoardType != 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            _portUtil.WindowName = WindowName;
 | 
				
			||||||
 | 
					            _portUtil.BoardType = singleChannels.Count > 0 ? singleChannels[0].BoardType : 1;
 | 
				
			||||||
 | 
					            _portUtil.ColNos = singleChannels.Select(it => it.ColNo).ToArray();
 | 
				
			||||||
 | 
					            _portUtil.Stocks = singleChannels.Select(it => it.Quantity).ToArray();
 | 
				
			||||||
 | 
					            _portUtil.DrawerNo = DrawerNo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if ((singleChannels.Count > 0 ? singleChannels[0].BoardType : 1) == 5)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                List<ChannelStock> ChannelLst = channelStocks.Where(it => it.BoardType != 1)
 | 
				
			||||||
 | 
					                                                                        .GroupBy(it => it.ColNo)
 | 
				
			||||||
 | 
					                                                                        .Select(it =>
 | 
				
			||||||
 | 
					                                                                        {
 | 
				
			||||||
 | 
					                                                                            var ret = it.First();
 | 
				
			||||||
 | 
					                                                                            ret.Quantity = it.Sum(itx => itx.Quantity);
 | 
				
			||||||
 | 
					                                                                            ret.AddQuantity = it.Sum(itx => itx.AddQuantity);
 | 
				
			||||||
 | 
					                                                                            return ret;
 | 
				
			||||||
 | 
					                                                                        }).ToList();
 | 
				
			||||||
 | 
					                // 发送加药数量
 | 
				
			||||||
 | 
					                singleChannels.ForEach(it =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    _portUtil.TakeQuantity(DrawerNo, it.ColNo, it.AddQuantity, it.Quantity + it.AddQuantity);
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if ((singleChannels.Count > 0 ? singleChannels[0].BoardType : 1) == 6)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                for (int i = 0; i < singleChannels.Count; i++)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    ChannelStock it = singleChannels[i];
 | 
				
			||||||
 | 
					                    _portUtil.ClearCount(it.DrawerNo, it.ColNo);
 | 
				
			||||||
 | 
					                    await Task.Delay(50);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            _portUtil.Start();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        private bool _isFinishClick = false;
 | 
				
			||||||
 | 
					        // 完成按钮
 | 
				
			||||||
 | 
					        public DelegateCommand TakeFinish
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand(async () =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (!_isFinishClick)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    _isFinishClick = true;
 | 
				
			||||||
 | 
					                    List<ChannelStock> record = ChannelStocks.ToList();
 | 
				
			||||||
 | 
					                    string InvoiceId = SelectedInvoice.InvoiceNo;
 | 
				
			||||||
 | 
					                    var f = SqlSugarHelper.Db.UseTran(() =>
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        SqlSugarHelper.Db.Updateable(new InOutInvoice()
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            Status = 1,
 | 
				
			||||||
 | 
					                            InvoiceNo = SelectedInvoice.InvoiceNo
 | 
				
			||||||
 | 
					                        }).UpdateColumns(it => new { it.Status }).WhereColumns(it => new { it.InvoiceNo }).ExecuteCommand();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        for (int i = 0; i < record.Count; i++)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            ChannelStock it = record[i];
 | 
				
			||||||
 | 
					                            if (it.BoardType == 6 && it.PosNo == 0)
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                _portUtil.SetNumCount(it.DrawerNo, it.ColNo, it.AddQuantity);
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                            if (it.Id != null)
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                // 更新数据 库存信息
 | 
				
			||||||
 | 
					                                SqlSugarHelper.Db.Updateable(new ChannelStock()
 | 
				
			||||||
 | 
					                                {
 | 
				
			||||||
 | 
					                                    Quantity = it.Quantity + it.AddQuantity,
 | 
				
			||||||
 | 
					                                    ManuNo = it.ManuNo,
 | 
				
			||||||
 | 
					                                    EffDate = it.EffDate,
 | 
				
			||||||
 | 
					                                    Id = it.Id,
 | 
				
			||||||
 | 
					                                }).UpdateColumns(it => new { it.Quantity, it.ManuNo, it.EffDate }).ExecuteCommand();
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                            else
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                //如果批号重复则不让添加
 | 
				
			||||||
 | 
					                                List<ChannelStock> csCount = SqlSugarHelper.Db.Queryable<ChannelStock>().Where(cs => cs.DrawerNo == it.DrawerNo && cs.ColNo == it.ColNo && cs.ManuNo == it.ManuNo && cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1") && cs.Quantity > 0).ToList();
 | 
				
			||||||
 | 
					                                if (csCount.Count > 0)
 | 
				
			||||||
 | 
					                                {
 | 
				
			||||||
 | 
					                                    //repeatList.Add(it.ManuNo);
 | 
				
			||||||
 | 
					                                    //stockRepeats.Add(it);
 | 
				
			||||||
 | 
					                                    continue;
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                                //查询现有库位中是否有库存为0的记录,如果有直接update
 | 
				
			||||||
 | 
					                                ChannelStock recordHistory = SqlSugarHelper.Db.Queryable<ChannelStock>().Where(cs => cs.DrawerNo == it.DrawerNo && cs.ColNo == it.ColNo && cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1") && cs.Quantity <= 0).First();
 | 
				
			||||||
 | 
					                                if (recordHistory!=null&& recordHistory.Id!=null)
 | 
				
			||||||
 | 
					                                {
 | 
				
			||||||
 | 
					                                    SqlSugarHelper.Db.Updateable<ChannelStock>().SetColumns(item => new ChannelStock()
 | 
				
			||||||
 | 
					                                    {
 | 
				
			||||||
 | 
					                                        Quantity = it.AddQuantity,
 | 
				
			||||||
 | 
					                                        ManuNo = it.ManuNo,
 | 
				
			||||||
 | 
					                                        EffDate = it.EffDate
 | 
				
			||||||
 | 
					                                    }).Where(item => item.Id == recordHistory.Id).ExecuteCommand();
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                                else
 | 
				
			||||||
 | 
					                                {
 | 
				
			||||||
 | 
					                                    // 更新数据 库存信息
 | 
				
			||||||
 | 
					                                    SqlSugarHelper.Db.Insertable(new ChannelStock()
 | 
				
			||||||
 | 
					                                    {
 | 
				
			||||||
 | 
					                                        Quantity = it.AddQuantity,
 | 
				
			||||||
 | 
					                                        Chnguid = it.Chnguid,
 | 
				
			||||||
 | 
					                                        ManuNo = it.ManuNo,
 | 
				
			||||||
 | 
					                                        EffDate = it.EffDate,
 | 
				
			||||||
 | 
					                                        DrawerNo = it.DrawerNo,
 | 
				
			||||||
 | 
					                                        ColNo = it.ColNo,
 | 
				
			||||||
 | 
					                                        DrugId = it.DrugId,
 | 
				
			||||||
 | 
					                                        DrawerType = it.DrawerType,
 | 
				
			||||||
 | 
					                                        BoardType = it.BoardType,
 | 
				
			||||||
 | 
					                                        Id = Guid.NewGuid().ToString(),
 | 
				
			||||||
 | 
					                                        MachineId = ConfigurationManager.AppSettings["machineId"] ?? "DM1"
 | 
				
			||||||
 | 
					                                    }).ExecuteCommand();
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                            // 获取更新完库存后的药品库存
 | 
				
			||||||
 | 
					                            List<ChannelStock> nowChannels = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
 | 
					                                .Where(cs => cs.MachineId.Equals(it.MachineId))
 | 
				
			||||||
 | 
					                                .Where(cs => cs.DrugId.Equals(it.DrugId))
 | 
				
			||||||
 | 
					                                .Where(cs => cs.DrawerType == 1)
 | 
				
			||||||
 | 
					                                .ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            // 保存数据 出/入库记录
 | 
				
			||||||
 | 
					                            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.AddQuantity,
 | 
				
			||||||
 | 
					                                Type = 1,
 | 
				
			||||||
 | 
					                                InvoiceId = InvoiceId,
 | 
				
			||||||
 | 
					                                StockQuantity = nowChannels.Sum(it => it.Quantity),
 | 
				
			||||||
 | 
					                                ManunoQuantity = nowChannels.FindAll(it2 => it2.ManuNo == it.ManuNo).Sum(it => it.Quantity),
 | 
				
			||||||
 | 
					                                SupplierDept = SelectedInvoice.PharmacyName1 ?? ConfigurationManager.AppSettings["supplierDept"].ToString(),
 | 
				
			||||||
 | 
					                                ReceiveDept = SelectedInvoice.PharmacyName2 ?? ConfigurationManager.AppSettings["receiveDept"].ToString()
 | 
				
			||||||
 | 
					                            }).ExecuteCommand();
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                        if (ChannelLsts != null && ChannelLsts.Count > 0)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            for (int i = 0; i < ChannelLsts.Count; i++)
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                //根据ChannelLsts中的库位,删除该库位库存为0的记录
 | 
				
			||||||
 | 
					                                SqlSugarHelper.Db.Deleteable<ChannelStock>()
 | 
				
			||||||
 | 
					                                .Where(cs => cs.Quantity <= 0 && cs.DrawerNo == ChannelLsts[i].channelStocks[0].DrawerNo && cs.ColNo == ChannelLsts[i].channelStocks[0].ColNo).ExecuteCommand();
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                        return true;
 | 
				
			||||||
 | 
					                    });
 | 
				
			||||||
 | 
					                    if (f.Data)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        // 更新屏显库存
 | 
				
			||||||
 | 
					                        //List<ChannelStock> singleChannels = record.FindAll(it => it.BoardType != 1);
 | 
				
			||||||
 | 
					                        List<ChannelStock> singleChannels = record.Where(it => it.BoardType != 1)
 | 
				
			||||||
 | 
					                                                                        .GroupBy(it => new { it.DrawerNo, it.ColNo })
 | 
				
			||||||
 | 
					                                                                        .Select(it =>
 | 
				
			||||||
 | 
					                                                                        {
 | 
				
			||||||
 | 
					                                                                            var ret = it.First();
 | 
				
			||||||
 | 
					                                                                            //ret.Quantity = it.Sum(itx => itx.Quantity);
 | 
				
			||||||
 | 
					                                                                            //ret.AddQuantity = it.Sum(itx => itx.AddQuantity);
 | 
				
			||||||
 | 
					                                                                            return ret;
 | 
				
			||||||
 | 
					                                                                        })
 | 
				
			||||||
 | 
					                                                                        .ToList();
 | 
				
			||||||
 | 
					                        if (singleChannels != null && singleChannels.Count > 0)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            for (int i = 0; i < singleChannels.Count; i++)
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                if (singleChannels[i].BoardType == 5)
 | 
				
			||||||
 | 
					                                {
 | 
				
			||||||
 | 
					                                    List<ChannelStock> channelStockEffDate = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
 | 
					                                                                        .Where(cs => cs.MachineId==singleChannels[i].MachineId)
 | 
				
			||||||
 | 
					                                                                        .Where(cs => cs.DrawerNo == singleChannels[i].DrawerNo)
 | 
				
			||||||
 | 
					                                                                        .Where(cs => cs.ColNo == singleChannels[i].ColNo)
 | 
				
			||||||
 | 
					                                                                        .OrderBy(cs => cs.EffDate).ToList();
 | 
				
			||||||
 | 
					                                    int totalQuantity = channelStockEffDate.Sum(it => it.Quantity);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    //将库位多批次的总库存数更新标签
 | 
				
			||||||
 | 
					                                    _portUtil.WriteQuantity(channelStockEffDate[0].DrawerNo, channelStockEffDate[0].ColNo, totalQuantity);
 | 
				
			||||||
 | 
					                                    Thread.Sleep(200);
 | 
				
			||||||
 | 
					                                    _portUtil.WriteChannelInfo(6, channelStockEffDate[0].EffDate == null ? "" : channelStockEffDate[0].EffDate, channelStockEffDate[0].DrawerNo, channelStockEffDate[0].ColNo);
 | 
				
			||||||
 | 
					                                    Thread.Sleep(200);
 | 
				
			||||||
 | 
					                                    _portUtil.WriteChannelInfo(5, channelStockEffDate[0].ManuNo, channelStockEffDate[0].DrawerNo, channelStockEffDate[0].ColNo);
 | 
				
			||||||
 | 
					                                    Thread.Sleep(200);
 | 
				
			||||||
 | 
					                                    _portUtil.ShowContent(channelStockEffDate[0].DrawerNo, channelStockEffDate[0].ColNo);
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        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;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                RequestData();
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        // 取消按钮
 | 
				
			||||||
 | 
					        public DelegateCommand CancleTake
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                RequestData();
 | 
				
			||||||
 | 
					                _portUtil.ResetData();
 | 
				
			||||||
 | 
					                Status = 0;
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        public async void OpenOrderDialog()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            //if (SelectedInvoice != null && SelectedInvoice.Status == 0)
 | 
				
			||||||
 | 
					            //{
 | 
				
			||||||
 | 
					            //    // 此处延时1毫秒,等待页面渲染
 | 
				
			||||||
 | 
					            //    await Task.Delay(TimeSpan.FromMilliseconds(1));
 | 
				
			||||||
 | 
					            //    DialogParameters dialogParameters = new DialogParameters();
 | 
				
			||||||
 | 
					            //    dialogParameters.Add("invoice", SelectedInvoice);
 | 
				
			||||||
 | 
					            //    dialogParameters.Add("ChannelStocks", AddChannels);
 | 
				
			||||||
 | 
					            //    DialogServiceExtensions.ShowDialogHost(_dialogService, "InvoiceAddDialog", dialogParameters, DoDialogResult, "RootDialog");
 | 
				
			||||||
 | 
					            //}
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public DelegateCommand QueryCommand
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                RequestData();
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private void DoDialogResult(IDialogResult dialogResult)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            // 委托   被动执行     被子窗口执行
 | 
				
			||||||
 | 
					            // dialogResult  第一方面可以拿到任意参数   第二方面   可判断关闭状态
 | 
				
			||||||
 | 
					            //if (dialogResult.Result == ButtonResult.OK)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SelectedInvoice = null;
 | 
				
			||||||
 | 
					                RequestData();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            //MessageBox.Show("返回值:" + dialogResult.Result.ToString());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //这个方法用于拦截请求,continuationCallback(true)就是不拦截,continuationCallback(false)拦截本次操作
 | 
				
			||||||
 | 
					        public void ConfirmNavigationRequest(NavigationContext navigationContext, Action<bool> continuationCallback)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            continuationCallback(true);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void RequestData()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Invoices.Clear();
 | 
				
			||||||
 | 
					            int totalCount = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var sb = new StringBuilder();
 | 
				
			||||||
 | 
					            //sb.Append("select i.invoice_no as InvoiceNo, i.invoice_date as InvoiceDate, COUNT(i.id) as `Count`, SUM(i.quantity) as quantity, p1.pharmacy_name as PharmacyName1, p2.pharmacy_name as PharmacyName2 from in_out_invoice i");
 | 
				
			||||||
 | 
					            sb.Append(" SELECT count(1) as Count, i.InvoiceNo, i.InvoiceDate, sum(i.quantity) as quantity, p1.pharmacy_name as PharmacyName1, p2.pharmacy_name PharmacyName2 from ");
 | 
				
			||||||
 | 
					            sb.Append(" (SELECT drug_id,in_pharmacy_id,out_pharmacy_id, invoice_no as InvoiceNo, DATE_FORMAT(Invoice_Date,'%Y-%m-%d')  as InvoiceDate, SUM(quantity) as quantity ");
 | 
				
			||||||
 | 
					            sb.Append(" FROM in_out_invoice where status=@Status  and type!=@type  and cancel_flag=@CancelFlag GROUP BY invoice_no,drug_id) i ");
 | 
				
			||||||
 | 
					            sb.Append(" inner join ( select c.drug_id as drug_id from channel_list c where c.machine_id = '" + (ConfigurationManager.AppSettings["machineId"] ?? "DM1") + "' group by c.drug_id ) di on di.drug_id = i.drug_id");
 | 
				
			||||||
 | 
					            sb.Append(" left join pharmacy_info p1 on p1.pharmacy_id = i.in_pharmacy_id");
 | 
				
			||||||
 | 
					            sb.Append(" left join pharmacy_info p2 on p2.pharmacy_id = i.out_pharmacy_id where 1=1");
 | 
				
			||||||
 | 
					            //sb.Append(" where i.status=@Status ");
 | 
				
			||||||
 | 
					            //sb.Append(" and i.type!=@type ");
 | 
				
			||||||
 | 
					            //sb.Append(" and i.cancel_flag=@CancelFlag ");
 | 
				
			||||||
 | 
					            if (OrderDate != null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                sb.Append(" and i.InvoiceDate = @CreateTime ");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (!String.IsNullOrEmpty(SearchValue))
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                sb.Append(" and i.InvoiceNo = @InvoiceNo ");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (!String.IsNullOrEmpty(ConfigurationManager.AppSettings["storage"]))
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                sb.Append(" and i.in_pharmacy_id = @OutPharmacyId ");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            //sb.Append(" group by i.invoice_no");
 | 
				
			||||||
 | 
					            sb.Append(" GROUP BY  i.InvoiceNo  order by i.InvoiceDate ");
 | 
				
			||||||
 | 
					            Invoices = SqlSugarHelper.Db.SqlQueryable<dynamic>(sb.ToString())
 | 
				
			||||||
 | 
					                .AddParameters(new
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    Status = 0,
 | 
				
			||||||
 | 
					                    type = 2,
 | 
				
			||||||
 | 
					                    CancelFlag = 0,
 | 
				
			||||||
 | 
					                    CreateTime = OrderDate,
 | 
				
			||||||
 | 
					                    InvoiceNo = SearchValue,
 | 
				
			||||||
 | 
					                    OutPharmacyId = ConfigurationManager.AppSettings["storage"]
 | 
				
			||||||
 | 
					                })
 | 
				
			||||||
 | 
					                .Select(it => new Invoice())
 | 
				
			||||||
 | 
					                .Select("*")
 | 
				
			||||||
 | 
					                .ToPageList(PageNum, PageSize, ref totalCount);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            TotalCount = totalCount;
 | 
				
			||||||
 | 
					            PageCount = (int)Math.Ceiling((double)TotalCount / PageSize);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        //接收导航传过来的参数  现在是在此处初始化了表格数据
 | 
				
			||||||
 | 
					        public void OnNavigatedTo(NavigationContext navigationContext)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            _eventAggregator.GetEvent<PortUtilEvent>().Subscribe(DoMyPrismEvent);
 | 
				
			||||||
 | 
					            RequestData();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //每次导航的时候,该实列用不用重新创建,true是不重新创建,false是重新创建
 | 
				
			||||||
 | 
					        public bool IsNavigationTarget(NavigationContext navigationContext)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //这个方法用于拦截请求
 | 
				
			||||||
 | 
					        public void OnNavigatedFrom(NavigationContext navigationContext)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            _eventAggregator.GetEvent<PortUtilEvent>().Unsubscribe(DoMyPrismEvent);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -77,12 +77,12 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        private DelegateCommand _rowSelected;
 | 
					        private DelegateCommand _rowSelected;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public DelegateCommand RowSelected => _rowSelected ??= new DelegateCommand(GetChannelByInvoice);
 | 
					        public DelegateCommand RowSelected => _rowSelected ??= new DelegateCommand(GetChannelByInvoice);
 | 
				
			||||||
        private SqlSugarScope _sqlSugarScope1;
 | 
					        //private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
        public InvoiceInWindowViewModel(IDialogService DialogService, IEventAggregator eventAggregator,SqlSugarScope sqlSugarScope)
 | 
					        public InvoiceInWindowViewModel(IDialogService DialogService, IEventAggregator eventAggregator)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            _dialogService = DialogService;
 | 
					            _dialogService = DialogService;
 | 
				
			||||||
            _eventAggregator = eventAggregator;
 | 
					            _eventAggregator = eventAggregator;
 | 
				
			||||||
            this._sqlSugarScope1= sqlSugarScope;
 | 
					            //this.SqlSugarHelper.Db= sqlSugarScope;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public static List<OrderTakeSelect> StaticOrderTakeSelects = new()
 | 
					        public static List<OrderTakeSelect> StaticOrderTakeSelects = new()
 | 
				
			||||||
| 
						 | 
					@ -179,7 +179,6 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public List<InOutInvoice> InOutInvoices { get { return _inOutInvoices; } set { SetProperty(ref _inOutInvoices, value); } }
 | 
					        public List<InOutInvoice> InOutInvoices { get { return _inOutInvoices; } set { SetProperty(ref _inOutInvoices, value); } }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public bool KeepAlive => false;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private List<ChannelStock> _channelStocks = new();
 | 
					        private List<ChannelStock> _channelStocks = new();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -198,14 +197,14 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            List<ChannelStock> i = new List<ChannelStock>();
 | 
					            List<ChannelStock> i = new List<ChannelStock>();
 | 
				
			||||||
            if (SelectedInvoice != null)
 | 
					            if (SelectedInvoice != null)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var invoices = _sqlSugarScope1.Queryable<InOutInvoice>()
 | 
					                var invoices = SqlSugarHelper.Db.Queryable<InOutInvoice>()
 | 
				
			||||||
                                .Includes<DrugInfo>(i => i.DrugInfo)
 | 
					                                .Includes<DrugInfo>(i => i.DrugInfo)
 | 
				
			||||||
                                .InnerJoin(_sqlSugarScope1.Queryable<ChannelStock>().Where(cs => cs.DrawerType == 1).Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).GroupBy(cs => cs.DrugId), (i, t) => i.DrugId == t.DrugId)
 | 
					                                .InnerJoin(SqlSugarHelper.Db.Queryable<ChannelStock>().Where(cs => cs.DrawerType == 1).Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).GroupBy(cs => cs.DrugId), (i, t) => i.DrugId == t.DrugId)
 | 
				
			||||||
                                .Where(i => i.InvoiceNo == SelectedInvoice.InvoiceNo)
 | 
					                                .Where(i => i.InvoiceNo == SelectedInvoice.InvoiceNo)
 | 
				
			||||||
                                .ToList();
 | 
					                                .ToList();
 | 
				
			||||||
                foreach (var invoice in invoices)
 | 
					                foreach (var invoice in invoices)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    List<ChannelStock> q = _sqlSugarScope1.Queryable<ChannelStock>()
 | 
					                    List<ChannelStock> q = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
                    .Includes<DrugInfo>(cs => cs.DrugInfo)
 | 
					                    .Includes<DrugInfo>(cs => cs.DrugInfo)
 | 
				
			||||||
                    .WhereIF(!string.IsNullOrEmpty(invoice.DrugEffDate), cs => cs.EffDate.Equals(invoice.DrugEffDate))
 | 
					                    .WhereIF(!string.IsNullOrEmpty(invoice.DrugEffDate), cs => cs.EffDate.Equals(invoice.DrugEffDate))
 | 
				
			||||||
                    .WhereIF(!string.IsNullOrEmpty(invoice.DrugManuNo), cs => cs.ManuNo.Equals(invoice.DrugManuNo))
 | 
					                    .WhereIF(!string.IsNullOrEmpty(invoice.DrugManuNo), cs => cs.ManuNo.Equals(invoice.DrugManuNo))
 | 
				
			||||||
| 
						 | 
					@ -300,6 +299,8 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private void DoDialogResult(IDialogResult dialogResult)
 | 
					        private void DoDialogResult(IDialogResult dialogResult)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            // 委托   被动执行     被子窗口执行
 | 
					            // 委托   被动执行     被子窗口执行
 | 
				
			||||||
| 
						 | 
					@ -325,28 +326,31 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            int totalCount = 0;
 | 
					            int totalCount = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            var sb = new StringBuilder();
 | 
					            var sb = new StringBuilder();
 | 
				
			||||||
            sb.Append("select i.invoice_no as InvoiceNo, i.invoice_date as InvoiceDate, COUNT(i.id) as `Count`, SUM(i.quantity) as quantity, p1.pharmacy_name as PharmacyName1, p2.pharmacy_name as PharmacyName2 from in_out_invoice i");
 | 
					            //sb.Append("select i.invoice_no as InvoiceNo, i.invoice_date as InvoiceDate, COUNT(i.id) as `Count`, SUM(i.quantity) as quantity, p1.pharmacy_name as PharmacyName1, p2.pharmacy_name as PharmacyName2 from in_out_invoice i");
 | 
				
			||||||
 | 
					            sb.Append(" SELECT  i.InvoiceNo, i.InvoiceDate, i.Count, i.quantity, p1.pharmacy_name as PharmacyName1, p2.pharmacy_name PharmacyName2 from ");
 | 
				
			||||||
 | 
					            sb.Append(" (SELECT drug_id,in_pharmacy_id,out_pharmacy_id, invoice_no as InvoiceNo, invoice_date as InvoiceDate, COUNT(id) as `Count`, SUM(quantity) as quantity ");
 | 
				
			||||||
 | 
					            sb.Append(" FROM in_out_invoice where status=@Status  and type!=@type  and cancel_flag=@CancelFlag GROUP BY invoice_no) i ");
 | 
				
			||||||
            sb.Append(" inner join ( select c.drug_id as drug_id from channel_stock c where c.machine_id = '" + (ConfigurationManager.AppSettings["machineId"] ?? "DM1") + "' group by c.drug_id ) di on di.drug_id = i.drug_id");
 | 
					            sb.Append(" inner join ( select c.drug_id as drug_id from channel_stock c where c.machine_id = '" + (ConfigurationManager.AppSettings["machineId"] ?? "DM1") + "' group by c.drug_id ) di on di.drug_id = i.drug_id");
 | 
				
			||||||
            sb.Append(" left join pharmacy_info p1 on p1.pharmacy_id = i.in_pharmacy_id");
 | 
					            sb.Append(" left join pharmacy_info p1 on p1.pharmacy_id = i.in_pharmacy_id");
 | 
				
			||||||
            sb.Append(" left join pharmacy_info p2 on p2.pharmacy_id = i.out_pharmacy_id");
 | 
					            sb.Append(" left join pharmacy_info p2 on p2.pharmacy_id = i.out_pharmacy_id");
 | 
				
			||||||
            sb.Append(" where i.status=@Status ");
 | 
					            //sb.Append(" where i.status=@Status ");
 | 
				
			||||||
            sb.Append(" and i.type!=@type ");
 | 
					            //sb.Append(" and i.type!=@type ");
 | 
				
			||||||
            sb.Append(" and i.cancel_flag=@CancelFlag ");
 | 
					            //sb.Append(" and i.cancel_flag=@CancelFlag ");
 | 
				
			||||||
            if (OrderDate != null)
 | 
					            if (OrderDate != null)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                sb.Append(" and i.invoice_date = @CreateTime ");
 | 
					                sb.Append(" and i.InvoiceDate = @CreateTime ");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if (!String.IsNullOrEmpty(SearchValue))
 | 
					            if (!String.IsNullOrEmpty(SearchValue))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                sb.Append(" and i.invoice_no = @InvoiceNo ");
 | 
					                sb.Append(" and i.InvoiceNo = @InvoiceNo ");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if (!String.IsNullOrEmpty(ConfigurationManager.AppSettings["storage"]))
 | 
					            if (!String.IsNullOrEmpty(ConfigurationManager.AppSettings["storage"]))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                sb.Append(" and i.in_pharmacy_id = @OutPharmacyId ");
 | 
					                sb.Append(" and i.in_pharmacy_id = @OutPharmacyId ");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            sb.Append(" group by i.invoice_no");
 | 
					            //sb.Append(" group by i.invoice_no");
 | 
				
			||||||
            sb.Append(" order by i.invoice_date ");
 | 
					            sb.Append(" order by i.InvoiceDate ");
 | 
				
			||||||
            Invoices = _sqlSugarScope1.SqlQueryable<dynamic>(sb.ToString())
 | 
					            Invoices = SqlSugarHelper.Db.SqlQueryable<dynamic>(sb.ToString())
 | 
				
			||||||
                .AddParameters(new
 | 
					                .AddParameters(new
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    Status = 0,
 | 
					                    Status = 0,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -67,11 +67,11 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        private DelegateCommand _rowSelected;
 | 
					        private DelegateCommand _rowSelected;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public DelegateCommand RowSelected => _rowSelected ??= new DelegateCommand(OpenOrderDialog);
 | 
					        public DelegateCommand RowSelected => _rowSelected ??= new DelegateCommand(OpenOrderDialog);
 | 
				
			||||||
        private SqlSugarScope _sqlSugarScope1;
 | 
					        //private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
        public InvoiceOutWindowViewModel(IDialogService DialogService,SqlSugarScope sqlSugarScope)
 | 
					        public InvoiceOutWindowViewModel(IDialogService DialogService)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            _dialogService = DialogService;
 | 
					            _dialogService = DialogService;
 | 
				
			||||||
            this._sqlSugarScope1= sqlSugarScope;
 | 
					            //this.SqlSugarHelper.Db= sqlSugarScope;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public static List<OrderTakeSelect> StaticOrderTakeSelects = new()
 | 
					        public static List<OrderTakeSelect> StaticOrderTakeSelects = new()
 | 
				
			||||||
| 
						 | 
					@ -163,7 +163,6 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public List<Invoice> Invoices { get { return _invoices; } set { SetProperty(ref _invoices, value); } }
 | 
					        public List<Invoice> Invoices { get { return _invoices; } set { SetProperty(ref _invoices, value); } }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public bool KeepAlive => false;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public async void OpenOrderDialog()
 | 
					        public async void OpenOrderDialog()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
| 
						 | 
					@ -186,6 +185,8 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private void DoDialogResult(IDialogResult dialogResult)
 | 
					        private void DoDialogResult(IDialogResult dialogResult)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            // 委托   被动执行     被子窗口执行
 | 
					            // 委托   被动执行     被子窗口执行
 | 
				
			||||||
| 
						 | 
					@ -232,7 +233,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            sb.Append(" group by i.invoice_no");
 | 
					            sb.Append(" group by i.invoice_no");
 | 
				
			||||||
            sb.Append(" order by i.invoice_date ");
 | 
					            sb.Append(" order by i.invoice_date ");
 | 
				
			||||||
            Invoices = _sqlSugarScope1.SqlQueryable<dynamic>(sb.ToString())
 | 
					            Invoices = SqlSugarHelper.Db.SqlQueryable<dynamic>(sb.ToString())
 | 
				
			||||||
                .AddParameters(new
 | 
					                .AddParameters(new
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    Status = 0,
 | 
					                    Status = 0,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -38,13 +38,13 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        private PortUtil _portUtil;
 | 
					        private PortUtil _portUtil;
 | 
				
			||||||
        IEventAggregator _eventAggregator;
 | 
					        IEventAggregator _eventAggregator;
 | 
				
			||||||
        IDialogService _dialogService;
 | 
					        IDialogService _dialogService;
 | 
				
			||||||
        private SqlSugarScope _sqlSugarScope1;
 | 
					        //private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
        public InvoiceTakeDialogViewModel(PortUtil portUtil, IEventAggregator eventAggregator, IDialogService DialogService, SqlSugarScope sqlSugarScope)
 | 
					        public InvoiceTakeDialogViewModel(PortUtil portUtil, IEventAggregator eventAggregator, IDialogService DialogService, SqlSugarScope sqlSugarScope)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            _dialogService = DialogService;
 | 
					            _dialogService = DialogService;
 | 
				
			||||||
            _portUtil = portUtil;
 | 
					            _portUtil = portUtil;
 | 
				
			||||||
            _eventAggregator = eventAggregator;
 | 
					            _eventAggregator = eventAggregator;
 | 
				
			||||||
            this._sqlSugarScope1 = sqlSugarScope;
 | 
					            //this.SqlSugarHelper.Db = sqlSugarScope;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        void DoMyPrismEvent(DeviceMsg msg)
 | 
					        void DoMyPrismEvent(DeviceMsg msg)
 | 
				
			||||||
| 
						 | 
					@ -171,9 +171,9 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void RequestData()
 | 
					        public void RequestData()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            invoices = _sqlSugarScope1.Queryable<InOutInvoice>()
 | 
					            invoices = SqlSugarHelper.Db.Queryable<InOutInvoice>()
 | 
				
			||||||
                .Includes<DrugInfo>(i => i.DrugInfo)
 | 
					                .Includes<DrugInfo>(i => i.DrugInfo)
 | 
				
			||||||
                .InnerJoin(_sqlSugarScope1.Queryable<ChannelStock>().Where(cs => cs.DrawerType == 1).Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).GroupBy(cs =>cs.DrugId),(i,t) => i.DrugId == t.DrugId)
 | 
					                .InnerJoin(SqlSugarHelper.Db.Queryable<ChannelStock>().Where(cs => cs.DrawerType == 1).Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).GroupBy(cs =>cs.DrugId),(i,t) => i.DrugId == t.DrugId)
 | 
				
			||||||
                .Where(i => i.InvoiceNo == Invoice.InvoiceNo)
 | 
					                .Where(i => i.InvoiceNo == Invoice.InvoiceNo)
 | 
				
			||||||
                .ToList();
 | 
					                .ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -183,8 +183,9 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                InOutInvoice invoice = invoices[i];
 | 
					                InOutInvoice invoice = invoices[i];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                List<ChannelStock> HasQChannels = _sqlSugarScope1.Queryable<ChannelStock>()
 | 
					                List<ChannelStock> HasQChannels = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
                    .Includes<DrugInfo>(cs => cs.DrugInfo)
 | 
					                    .Includes<DrugInfo>(cs => cs.DrugInfo)
 | 
				
			||||||
 | 
					                    .InnerJoin<ChannelList>((cs, cl) => cs.Chnguid == cl.Id && cs.DrugId == cl.DrugId)
 | 
				
			||||||
                    .Where(cs => cs.Quantity > 0)
 | 
					                    .Where(cs => cs.Quantity > 0)
 | 
				
			||||||
                    .Where(cs => cs.DrawerType == 1)
 | 
					                    .Where(cs => cs.DrawerType == 1)
 | 
				
			||||||
                    .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1"))
 | 
					                    .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1"))
 | 
				
			||||||
| 
						 | 
					@ -298,9 +299,9 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                    if (record.Count > 0)
 | 
					                    if (record.Count > 0)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        string InvoiceId = Invoice.InvoiceNo;
 | 
					                        string InvoiceId = Invoice.InvoiceNo;
 | 
				
			||||||
                        var f = _sqlSugarScope1.UseTran(() =>
 | 
					                        var f = SqlSugarHelper.Db.UseTran(() =>
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            _sqlSugarScope1.Updateable(new InOutInvoice()
 | 
					                            SqlSugarHelper.Db.Updateable(new InOutInvoice()
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                Status = 1,
 | 
					                                Status = 1,
 | 
				
			||||||
                                InvoiceNo = Invoice.InvoiceNo
 | 
					                                InvoiceNo = Invoice.InvoiceNo
 | 
				
			||||||
| 
						 | 
					@ -310,7 +311,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                ChannelStock it = record[i];
 | 
					                                ChannelStock it = record[i];
 | 
				
			||||||
                                // 更新数据 库存信息
 | 
					                                // 更新数据 库存信息
 | 
				
			||||||
                                _sqlSugarScope1.Updateable(new ChannelStock()
 | 
					                                SqlSugarHelper.Db.Updateable(new ChannelStock()
 | 
				
			||||||
                                {
 | 
					                                {
 | 
				
			||||||
                                    Quantity = it.Quantity - it.TakeQuantity,
 | 
					                                    Quantity = it.Quantity - it.TakeQuantity,
 | 
				
			||||||
                                    ManuNo = it.ManuNo,
 | 
					                                    ManuNo = it.ManuNo,
 | 
				
			||||||
| 
						 | 
					@ -318,14 +319,14 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                                    Id = it.Id,
 | 
					                                    Id = it.Id,
 | 
				
			||||||
                                }).UpdateColumns(it => new { it.Quantity, it.ManuNo, it.EffDate }).ExecuteCommand();
 | 
					                                }).UpdateColumns(it => new { it.Quantity, it.ManuNo, it.EffDate }).ExecuteCommand();
 | 
				
			||||||
                                // 获取更新完库存后的药品库存
 | 
					                                // 获取更新完库存后的药品库存
 | 
				
			||||||
                                List<ChannelStock> nowChannels = _sqlSugarScope1.Queryable<ChannelStock>()
 | 
					                                List<ChannelStock> nowChannels = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
                                    .Where(cs => cs.MachineId.Equals(it.MachineId))
 | 
					                                    .Where(cs => cs.MachineId.Equals(it.MachineId))
 | 
				
			||||||
                                    .Where(cs => cs.DrugId.Equals(it.DrugId))
 | 
					                                    .Where(cs => cs.DrugId.Equals(it.DrugId))
 | 
				
			||||||
                                    .Where(cs => cs.DrawerType == 1)
 | 
					                                    .Where(cs => cs.DrawerType == 1)
 | 
				
			||||||
                                    .ToList();
 | 
					                                    .ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                // 保存数据 出库记录
 | 
					                                // 保存数据 出库记录
 | 
				
			||||||
                                _sqlSugarScope1.Insertable(new MachineRecord()
 | 
					                                SqlSugarHelper.Db.Insertable(new MachineRecord()
 | 
				
			||||||
                                {
 | 
					                                {
 | 
				
			||||||
                                    MachineId = it.MachineId,
 | 
					                                    MachineId = it.MachineId,
 | 
				
			||||||
                                    DrawerNo = it.DrawerNo,
 | 
					                                    DrawerNo = it.DrawerNo,
 | 
				
			||||||
| 
						 | 
					@ -340,7 +341,9 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                                    Type = 2,
 | 
					                                    Type = 2,
 | 
				
			||||||
                                    InvoiceId = InvoiceId,
 | 
					                                    InvoiceId = InvoiceId,
 | 
				
			||||||
                                    StockQuantity = nowChannels.Sum(it => it.Quantity),
 | 
					                                    StockQuantity = nowChannels.Sum(it => it.Quantity),
 | 
				
			||||||
                                    ManunoQuantity = nowChannels.FindAll(it2 => it2.ManuNo == it.ManuNo).Sum(it => it.Quantity)
 | 
					                                    ManunoQuantity = nowChannels.FindAll(it2 => it2.ManuNo == it.ManuNo).Sum(it => it.Quantity),
 | 
				
			||||||
 | 
					                                    SupplierDept = Invoice.PharmacyName1 ?? ConfigurationManager.AppSettings["supplierDept"].ToString(),
 | 
				
			||||||
 | 
					                                    ReceiveDept = Invoice.PharmacyName2 ?? ConfigurationManager.AppSettings["receiveDept"].ToString()
 | 
				
			||||||
                                }).ExecuteCommand();
 | 
					                                }).ExecuteCommand();
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                            return true;
 | 
					                            return true;
 | 
				
			||||||
| 
						 | 
					@ -348,13 +351,25 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                        if (f.Data)
 | 
					                        if (f.Data)
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            // 更新屏显库存
 | 
					                            // 更新屏显库存
 | 
				
			||||||
                            List<ChannelStock> singleChannels = record.FindAll(it => it.BoardType != 1);
 | 
					                            //List<ChannelStock> singleChannels = record.FindAll(it => it.BoardType != 1);
 | 
				
			||||||
 | 
					                            List<ChannelStock> singleChannels = record.Where(it => it.BoardType != 1)
 | 
				
			||||||
 | 
					                                                                         .GroupBy(it => it.ColNo)
 | 
				
			||||||
 | 
					                                                                         .Select(it =>
 | 
				
			||||||
 | 
					                                                                         {
 | 
				
			||||||
 | 
					                                                                             var ret = it.First();
 | 
				
			||||||
 | 
					                                                                             ret.Quantity = it.Sum(itx => itx.Quantity);
 | 
				
			||||||
 | 
					                                                                             ret.AddQuantity = it.Sum(itx => itx.AddQuantity);
 | 
				
			||||||
 | 
					                                                                             return ret;
 | 
				
			||||||
 | 
					                                                                         }).ToList();
 | 
				
			||||||
                            if ((singleChannels.Count > 0 ? singleChannels[0].BoardType : 1) == 5)
 | 
					                            if ((singleChannels.Count > 0 ? singleChannels[0].BoardType : 1) == 5)
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                singleChannels.ForEach(it =>
 | 
					                                //将库位多批次的总库存数更新标签
 | 
				
			||||||
                                {
 | 
					                                _portUtil.WriteQuantity(singleChannels[0].DrawerNo, singleChannels[0].ColNo, singleChannels.Sum(it => it.Quantity) - singleChannels.Sum(it => it.AddQuantity));
 | 
				
			||||||
                                    _portUtil.WriteQuantity(it.DrawerNo, it.ColNo, it.Quantity - it.TakeQuantity);
 | 
					
 | 
				
			||||||
                                });
 | 
					                                //singleChannels.ForEach(it =>
 | 
				
			||||||
 | 
					                                //{
 | 
				
			||||||
 | 
					                                //    _portUtil.WriteQuantity(it.DrawerNo, it.ColNo, it.Quantity - it.TakeQuantity);
 | 
				
			||||||
 | 
					                                //});
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                            AlertMsg alertMsg = new AlertMsg
 | 
					                            AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
| 
						 | 
					@ -423,6 +438,6 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public bool KeepAlive => false;
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -25,6 +25,7 @@ using Microsoft.Win32;
 | 
				
			||||||
using System.Xml;
 | 
					using System.Xml;
 | 
				
			||||||
using System.Diagnostics;
 | 
					using System.Diagnostics;
 | 
				
			||||||
using SqlSugar;
 | 
					using SqlSugar;
 | 
				
			||||||
 | 
					using DM_Weight.Services;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace DM_Weight.ViewModels
 | 
					namespace DM_Weight.ViewModels
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -62,8 +63,11 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public string Username { get { return username; } set { SetProperty(ref username, value); } }
 | 
					        public string Username { get { return username; } set { SetProperty(ref username, value); } }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public UserList Operator { get; set; }
 | 
					        private UserList _operator;
 | 
				
			||||||
        public UserList Reviewer { get; set; }
 | 
					        public UserList Operator { get=> _operator; set=> SetProperty(ref _operator,value); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private UserList _reviewer;
 | 
				
			||||||
 | 
					        public UserList Reviewer { get=> _reviewer; set=>SetProperty(ref _reviewer,value); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public bool DrawerPortMsg
 | 
					        public bool DrawerPortMsg
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
| 
						 | 
					@ -81,7 +85,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            get => _fingerMsg;
 | 
					            get => _fingerMsg;
 | 
				
			||||||
            set => SetProperty(ref _fingerMsg, value);
 | 
					            set => SetProperty(ref _fingerMsg, value);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        private SqlSugarScope _sqlSugarScope1;
 | 
					        ////private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
        //public LoginWindowViewModel(IRegionManager regionManager, IEventAggregator eventAggregator, PortUtil portUtil, FingerprintUtil fingerprintUtil)
 | 
					        //public LoginWindowViewModel(IRegionManager regionManager, IEventAggregator eventAggregator, PortUtil portUtil, FingerprintUtil fingerprintUtil)
 | 
				
			||||||
        //{
 | 
					        //{
 | 
				
			||||||
        //    _fingerprintUtil = fingerprintUtil;
 | 
					        //    _fingerprintUtil = fingerprintUtil;
 | 
				
			||||||
| 
						 | 
					@ -89,13 +93,13 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        //    _regionManager = regionManager;
 | 
					        //    _regionManager = regionManager;
 | 
				
			||||||
        //    _eventAggregator = eventAggregator;
 | 
					        //    _eventAggregator = eventAggregator;
 | 
				
			||||||
        //}
 | 
					        //}
 | 
				
			||||||
        public LoginWindowViewModel(IRegionManager regionManager, IEventAggregator eventAggregator, PortUtil portUtil,SqlSugarScope sqlSugarScope)
 | 
					        public LoginWindowViewModel(IRegionManager regionManager, IEventAggregator eventAggregator, PortUtil portUtil,  FingerprintUtil fingerprintUtil)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            //_fingerprintUtil = fingerprintUtil;
 | 
					            _fingerprintUtil = fingerprintUtil;
 | 
				
			||||||
            _portUtil = portUtil;
 | 
					            _portUtil = portUtil;
 | 
				
			||||||
            _regionManager = regionManager;
 | 
					            _regionManager = regionManager;
 | 
				
			||||||
            _eventAggregator = eventAggregator;
 | 
					            _eventAggregator = eventAggregator;
 | 
				
			||||||
            _sqlSugarScope1= sqlSugarScope;
 | 
					            //SqlSugarHelper.Db = sqlSugarScope;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        private DelegateCommand? _loginCommand;
 | 
					        private DelegateCommand? _loginCommand;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -109,7 +113,7 @@ _exitCommand ??= new DelegateCommand(Exit);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public bool KeepAlive => false;
 | 
					        public bool KeepAlive => false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        void Login()        
 | 
					        void Login()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            LoginBtnEnable = false;
 | 
					            LoginBtnEnable = false;
 | 
				
			||||||
            if (!string.IsNullOrEmpty(Username) && !string.IsNullOrEmpty(Password))
 | 
					            if (!string.IsNullOrEmpty(Username) && !string.IsNullOrEmpty(Password))
 | 
				
			||||||
| 
						 | 
					@ -142,15 +146,15 @@ _exitCommand ??= new DelegateCommand(Exit);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                else
 | 
					                else
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    //UserList userList = _sqlSugarScope1.Queryable<UserList>()
 | 
					                    UserList userList = SqlSugarHelper.Db.Queryable<UserList>()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    //                    .Includes<RoleDm>(u => u.Role)
 | 
					 | 
				
			||||||
                    //                    .First(u => u.UserName == username && ConfigurationManager.AppSettings["machineId"].ToString().Equals(u.MachineId));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    UserList userList = _sqlSugarScope1.Queryable<UserList>()
 | 
					 | 
				
			||||||
                                        .Includes<RoleDm>(u => u.Role)
 | 
					                                        .Includes<RoleDm>(u => u.Role)
 | 
				
			||||||
                                       .InnerJoin<RoleDm>((u,r) => u.RoleId==r.Id)
 | 
					                                        .First(u => u.UserName == username && ConfigurationManager.AppSettings["machineId"].ToString().Equals(u.MachineId));
 | 
				
			||||||
                                       .First(u => u.UserName == username && ConfigurationManager.AppSettings["machineId"].ToString().Equals(u.MachineId));
 | 
					
 | 
				
			||||||
 | 
					                    //UserList userList = SqlSugarHelper.Db.Queryable<UserList>()
 | 
				
			||||||
 | 
					                    //                    .Includes<RoleDm>(u => u.Role)
 | 
				
			||||||
 | 
					                    //                   .InnerJoin<RoleDm>((u, r) => u.RoleId == r.Id)
 | 
				
			||||||
 | 
					                    //                   .First(u => u.UserName == username && ConfigurationManager.AppSettings["machineId"].ToString().Equals(u.MachineId));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    if (userList == null)
 | 
					                    if (userList == null)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
| 
						 | 
					@ -213,17 +217,21 @@ _exitCommand ??= new DelegateCommand(Exit);
 | 
				
			||||||
            // 单人登录模式
 | 
					            // 单人登录模式
 | 
				
			||||||
            if (SingleLogin)
 | 
					            if (SingleLogin)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
 | 
					                logger.Info($"SetUser:单人登录模式");
 | 
				
			||||||
                App.CurrentFaUserList = user;
 | 
					                App.CurrentFaUserList = user;
 | 
				
			||||||
                //添加参数,键值对格式
 | 
					                //添加参数,键值对格式
 | 
				
			||||||
                keys.Add("operator", user);
 | 
					                keys.Add("operator", user);
 | 
				
			||||||
                System.Windows.Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() =>
 | 
					                System.Windows.Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() =>
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
 | 
					                    logger.Info($"SetUser:单人登录模式,页面跳转");
 | 
				
			||||||
                    _regionManager.RequestNavigate("MainRegion", "HomeWindow", keys);
 | 
					                    _regionManager.RequestNavigate("MainRegion", "HomeWindow", keys);
 | 
				
			||||||
                }));
 | 
					                }));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            // 双人登录模式
 | 
					            // 双人登录模式
 | 
				
			||||||
            else
 | 
					            else
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                logger.Info($"SetUser:双人登录模式");
 | 
				
			||||||
                // 如果已经录入了发药人,已经有一个用户登录
 | 
					                // 如果已经录入了发药人,已经有一个用户登录
 | 
				
			||||||
                if (keys.ContainsKey("operator"))
 | 
					                if (keys.ContainsKey("operator"))
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
| 
						 | 
					@ -231,11 +239,13 @@ _exitCommand ??= new DelegateCommand(Exit);
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        keys.Add("reviewer", user);
 | 
					                        keys.Add("reviewer", user);
 | 
				
			||||||
                        Reviewer = user;
 | 
					                        Reviewer = user;
 | 
				
			||||||
 | 
					                        logger.Info($"Reviewer:{Reviewer.Nickname}");
 | 
				
			||||||
                        RaisePropertyChanged("Reviewer");
 | 
					                        RaisePropertyChanged("Reviewer");
 | 
				
			||||||
                        App.CurrentShenUserList= user;
 | 
					                        App.CurrentShenUserList = user;
 | 
				
			||||||
                        //_regionManager.RequestNavigate("MainRegion", "HomeWindow", keys);
 | 
					                        //_regionManager.RequestNavigate("MainRegion", "HomeWindow", keys);
 | 
				
			||||||
                        System.Windows.Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() =>
 | 
					                        System.Windows.Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() =>
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
 | 
					                            logger.Info($"SetUser:双人登录模式,页面跳转");
 | 
				
			||||||
                            _regionManager.RequestNavigate("MainRegion", "HomeWindow", keys);
 | 
					                            _regionManager.RequestNavigate("MainRegion", "HomeWindow", keys);
 | 
				
			||||||
                        }));
 | 
					                        }));
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
| 
						 | 
					@ -256,13 +266,16 @@ _exitCommand ??= new DelegateCommand(Exit);
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        keys.Add("operator", user);
 | 
					                        keys.Add("operator", user);
 | 
				
			||||||
                        Operator = user;
 | 
					                        Operator = user;
 | 
				
			||||||
 | 
					                        logger.Info($"Operator:{Operator.Nickname}");
 | 
				
			||||||
                        RaisePropertyChanged("Operator");
 | 
					                        RaisePropertyChanged("Operator");
 | 
				
			||||||
                        App.CurrentFaUserList= user;
 | 
					                        App.CurrentFaUserList = user;
 | 
				
			||||||
                        //_regionManager.RequestNavigate("MainRegion", "HomeWindow", keys);
 | 
					                        //_regionManager.RequestNavigate("MainRegion", "HomeWindow", keys);
 | 
				
			||||||
						 System.Windows.Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() =>
 | 
					                        System.Windows.Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() =>
 | 
				
			||||||
						{
 | 
					                       {
 | 
				
			||||||
							_regionManager.RequestNavigate("MainRegion", "HomeWindow", keys);
 | 
					
 | 
				
			||||||
						}));
 | 
					                           logger.Info($"SetUser:双人登录模式,页面跳转");
 | 
				
			||||||
 | 
					                           _regionManager.RequestNavigate("MainRegion", "HomeWindow", keys);
 | 
				
			||||||
 | 
					                       }));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    else
 | 
					                    else
 | 
				
			||||||
| 
						 | 
					@ -284,17 +297,21 @@ _exitCommand ??= new DelegateCommand(Exit);
 | 
				
			||||||
                        Operator = user;
 | 
					                        Operator = user;
 | 
				
			||||||
                        RaisePropertyChanged("Operator");
 | 
					                        RaisePropertyChanged("Operator");
 | 
				
			||||||
                        App.CurrentFaUserList = user;
 | 
					                        App.CurrentFaUserList = user;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        logger.Info($"SetUser:双人登录模式,user:{user.Nickname};Operator{Operator.Nickname}");
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    else
 | 
					                    else
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        keys.Add("reviewer", user);
 | 
					                        keys.Add("reviewer", user);
 | 
				
			||||||
                        Reviewer = user;
 | 
					                        Reviewer = user;
 | 
				
			||||||
 | 
					                        logger.Info($"SetUser:双人登录模式,user:{user.Nickname};Reviewer{Reviewer.Nickname}");
 | 
				
			||||||
                        RaisePropertyChanged("Reviewer");
 | 
					                        RaisePropertyChanged("Reviewer");
 | 
				
			||||||
                        App.CurrentShenUserList = user;
 | 
					                        App.CurrentShenUserList = user;
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    Username = string.Empty;
 | 
					                    Username = string.Empty;
 | 
				
			||||||
                    Password =string.Empty;
 | 
					                    Password = string.Empty;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					                logger.Info($"SetUser:双人登录模式,user:{user.Nickname};Operator{Operator?.Nickname};Reviewer{Reviewer?.Nickname}");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -308,49 +325,61 @@ _exitCommand ??= new DelegateCommand(Exit);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        void LoginEvent(FingerprintMsg msg)
 | 
					        void LoginEvent(FingerprintMsg msg)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            logger.Info(msg.ToString());
 | 
					            try
 | 
				
			||||||
            if (msg.Message.Equals("CONNECT"))
 | 
					 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                FingerMsg = !msg.Result;
 | 
					
 | 
				
			||||||
            }
 | 
					                logger.Info(msg.ToString());
 | 
				
			||||||
            if (LoginBtnEnable)
 | 
					                if (msg.Message.Equals("CONNECT"))
 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                if (msg.Message.Equals("LOGIN"))
 | 
					 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    UserList userList = _sqlSugarScope1.Queryable<UserList>()
 | 
					                    FingerMsg = !msg.Result;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                logger.Info($"LoginBtnEnable:{LoginBtnEnable}");
 | 
				
			||||||
 | 
					                if (LoginBtnEnable)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    logger.Info($"msg.Message.Equals:{msg.Message}");
 | 
				
			||||||
 | 
					                    if (msg.Message.Equals("LOGIN"))
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        UserList userList = SqlSugarHelper.Db.Queryable<UserList>()
 | 
				
			||||||
 | 
					                        .Includes<RoleDm>(u => u.Role)
 | 
				
			||||||
 | 
					                        .First(u => u.Id == msg.Id);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    .Includes<RoleDm>(u => u.Role)
 | 
					                        //UserList userList = new UserService().CheckUserByFingerPrinter(msg.Id);
 | 
				
			||||||
                    .First(u => u.Id == msg.Id);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    if (userList == null)
 | 
					                        logger.Info($"userList是空?{userList == null}");
 | 
				
			||||||
                    {
 | 
					                        if (userList == null)
 | 
				
			||||||
                        AlertMsg alertMsg = new AlertMsg
 | 
					 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            Message = "无此用户",
 | 
					                            AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
                            Type = MsgType.ERROR
 | 
					                            {
 | 
				
			||||||
                        };
 | 
					                                Message = "无此用户",
 | 
				
			||||||
                        _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
					                                Type = MsgType.ERROR
 | 
				
			||||||
                        Username = "";
 | 
					                            };
 | 
				
			||||||
                        Password = "";
 | 
					                            _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
                    }
 | 
					                            Username = "";
 | 
				
			||||||
                    else if (userList.Role == null)
 | 
					                            Password = "";
 | 
				
			||||||
                    {
 | 
					                        }
 | 
				
			||||||
                        AlertMsg alertMsg = new AlertMsg
 | 
					                        else if (userList.Role == null)
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            Message = "用户还未设置权限,请联系管理员",
 | 
					                            AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
                            Type = MsgType.ERROR
 | 
					                            {
 | 
				
			||||||
                        };
 | 
					                                Message = "用户还未设置权限,请联系管理员",
 | 
				
			||||||
                        _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
					                                Type = MsgType.ERROR
 | 
				
			||||||
                        Username = "";
 | 
					                            };
 | 
				
			||||||
                        Password = "";
 | 
					                            _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
                    }
 | 
					                            Username = "";
 | 
				
			||||||
                    else
 | 
					                            Password = "";
 | 
				
			||||||
                    {
 | 
					                        }
 | 
				
			||||||
                        SetUser(userList);
 | 
					                        else
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            SetUser(userList);
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            catch (Exception e)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                logger.Info($"LoginEvent存在异常:{e.Message}");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //这个方法用于拦截请求,continuationCallback(true)就是不拦截,continuationCallback(false)拦截本次操作
 | 
					        //这个方法用于拦截请求,continuationCallback(true)就是不拦截,continuationCallback(false)拦截本次操作
 | 
				
			||||||
| 
						 | 
					@ -364,7 +393,7 @@ _exitCommand ??= new DelegateCommand(Exit);
 | 
				
			||||||
        //接收导航传过来的参数  现在是在此处初始化了表格数据
 | 
					        //接收导航传过来的参数  现在是在此处初始化了表格数据
 | 
				
			||||||
        public void OnNavigatedTo(NavigationContext navigationContext)
 | 
					        public void OnNavigatedTo(NavigationContext navigationContext)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            FingerMsg = false;// !_fingerprintUtil.bIsConnected;
 | 
					            FingerMsg = !_fingerprintUtil.bIsConnected;//false;
 | 
				
			||||||
            _eventAggregator.GetEvent<FingerprintEvent>().Subscribe(LoginEvent);
 | 
					            _eventAggregator.GetEvent<FingerprintEvent>().Subscribe(LoginEvent);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -20,6 +20,8 @@ using System.Configuration;
 | 
				
			||||||
using System.Reflection.PortableExecutable;
 | 
					using System.Reflection.PortableExecutable;
 | 
				
			||||||
using DM_Weight.msg;
 | 
					using DM_Weight.msg;
 | 
				
			||||||
using Prism.Events;
 | 
					using Prism.Events;
 | 
				
			||||||
 | 
					using Prism.Services.Dialogs;
 | 
				
			||||||
 | 
					using System.Threading.Channels;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace DM_Weight.ViewModels
 | 
					namespace DM_Weight.ViewModels
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -143,17 +145,24 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            get { return machineRecords; }
 | 
					            get { return machineRecords; }
 | 
				
			||||||
            set { SetProperty(ref machineRecords, value); }
 | 
					            set { SetProperty(ref machineRecords, value); }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //盘点记录 导出账册 选中的数据
 | 
				
			||||||
 | 
					        private List<MachineRecord>? selectMachineRecords;
 | 
				
			||||||
 | 
					        public List<MachineRecord>? SelectMachineRecords
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => selectMachineRecords;
 | 
				
			||||||
 | 
					            set { SetProperty(ref selectMachineRecords, value);}
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public List<string>? OldInvoiceIdLst = new List<string>();
 | 
					        public List<string>? OldInvoiceIdLst = new List<string>();
 | 
				
			||||||
        private SqlSugarScope _sqlSugarScope1;
 | 
					        //private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
        public MachineRecordWindowViewModel(IEventAggregator eventAggregator, SqlSugarScope sqlSugarScope)
 | 
					        public MachineRecordWindowViewModel(IEventAggregator eventAggregator, SqlSugarScope sqlSugarScope)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            vm = this;
 | 
					            vm = this;
 | 
				
			||||||
            _eventAggregator = eventAggregator;
 | 
					            _eventAggregator = eventAggregator;
 | 
				
			||||||
            this._sqlSugarScope1 = sqlSugarScope;
 | 
					            //this.SqlSugarHelper.Db = sqlSugarScope;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public bool KeepAlive => false;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public DelegateCommand Query
 | 
					        public DelegateCommand Query
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
| 
						 | 
					@ -167,18 +176,27 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            get => new DelegateCommand(() =>
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                GridReportUtil.PrintReportMechineRecord(Type, StartDate, EndDate);
 | 
					                //if (Type == 4)
 | 
				
			||||||
 | 
					                //{
 | 
				
			||||||
 | 
					                //    if (SelectMachineRecords != null && SelectMachineRecords.Count > 0)
 | 
				
			||||||
 | 
					                //    {
 | 
				
			||||||
 | 
					                //        GridReportUtil.PrintReportMechineRecordForSelect(SelectMachineRecords);
 | 
				
			||||||
 | 
					                //    }
 | 
				
			||||||
 | 
					                //}
 | 
				
			||||||
 | 
					                //else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    GridReportUtil.PrintReportMechineRecord(Type, StartDate, EndDate);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        public DelegateCommand DownloadAccountBook
 | 
					        //public DelegateCommand DownloadAccountBook
 | 
				
			||||||
        {
 | 
					        //{
 | 
				
			||||||
            get => new DelegateCommand(() =>
 | 
					        //    get => new DelegateCommand(() =>
 | 
				
			||||||
            {
 | 
					        //    {
 | 
				
			||||||
                GridReportUtil.PrintReportAccountBook(StartDate, EndDate, DrugInfo == null ? "" : DrugInfo.DrugId);
 | 
					        //        GridReportUtil.PrintReportAccountBook(StartDate, EndDate, DrugInfo == null ? "" : DrugInfo.DrugId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            });
 | 
					        //    });
 | 
				
			||||||
        }
 | 
					        //}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public DelegateCommand SaveCommand
 | 
					        public DelegateCommand SaveCommand
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
| 
						 | 
					@ -190,14 +208,14 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        private void UpdatPZHSave()
 | 
					        private void UpdatPZHSave()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            var f = _sqlSugarScope1.UseTran(() =>
 | 
					            var f = SqlSugarHelper.Db.UseTran(() =>
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                for (int i = 0; i < MachineRecords.Count; i++)
 | 
					                for (int i = 0; i < MachineRecords.Count; i++)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    string oldInvoiceId =   OldInvoiceIdLst[i];
 | 
					                    string oldInvoiceId = OldInvoiceIdLst[i];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    // 更新数据 库存信息
 | 
					                    // 更新数据 库存信息
 | 
				
			||||||
                    _sqlSugarScope1.Updateable(new MachineRecord()
 | 
					                    SqlSugarHelper.Db.Updateable(new MachineRecord()
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        Id = MachineRecords[i].Id,
 | 
					                        Id = MachineRecords[i].Id,
 | 
				
			||||||
                        InvoiceId = MachineRecords[i].InvoiceId
 | 
					                        InvoiceId = MachineRecords[i].InvoiceId
 | 
				
			||||||
| 
						 | 
					@ -254,7 +272,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            int totalCount = 0;
 | 
					            int totalCount = 0;
 | 
				
			||||||
            string machineId = ConfigurationManager.AppSettings["machineId"] ?? "DM1";
 | 
					            string machineId = ConfigurationManager.AppSettings["machineId"] ?? "DM1";
 | 
				
			||||||
            MachineRecords = _sqlSugarScope1.Queryable<MachineRecord>()
 | 
					            MachineRecords = SqlSugarHelper.Db.Queryable<MachineRecord>()
 | 
				
			||||||
                .Includes<DrugInfo>(mr => mr.DrugInfo)
 | 
					                .Includes<DrugInfo>(mr => mr.DrugInfo)
 | 
				
			||||||
                .Includes<UserList>(mr => mr.User)
 | 
					                .Includes<UserList>(mr => mr.User)
 | 
				
			||||||
                .Where(mr => mr.MachineId == machineId)
 | 
					                .Where(mr => mr.MachineId == machineId)
 | 
				
			||||||
| 
						 | 
					@ -285,7 +303,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        private void GetAllDrugInfos()
 | 
					        private void GetAllDrugInfos()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            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 drug_name_spec FROM `drug_info` d";
 | 
					            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 drug_name_spec FROM `drug_info` d";
 | 
				
			||||||
            DrugInfos = _sqlSugarScope1.SqlQueryable<DrugInfo>(str).OrderBy(di => di.DrugName).OrderBy(di => di.DrugId).ToList();
 | 
					            DrugInfos = SqlSugarHelper.Db.SqlQueryable<DrugInfo>(str).OrderBy(di => di.DrugName).OrderBy(di => di.DrugId).ToList();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void UpdateComboBoxItems(string text)
 | 
					        public void UpdateComboBoxItems(string text)
 | 
				
			||||||
| 
						 | 
					@ -294,7 +312,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                        d.manufactory,d.max_stock,CONCAT(drug_name,'  ',drug_spec)as drug_name_spec FROM `drug_info` d";
 | 
					                        d.manufactory,d.max_stock,CONCAT(drug_name,'  ',drug_spec)as drug_name_spec FROM `drug_info` d";
 | 
				
			||||||
            if (string.IsNullOrEmpty(text))
 | 
					            if (string.IsNullOrEmpty(text))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                DrugInfos = _sqlSugarScope1.SqlQueryable<DrugInfo>(str).OrderBy(di => di.DrugName).OrderBy(di => di.DrugId).ToList();
 | 
					                DrugInfos = SqlSugarHelper.Db.SqlQueryable<DrugInfo>(str).OrderBy(di => di.DrugName).OrderBy(di => di.DrugId).ToList();
 | 
				
			||||||
                return;
 | 
					                return;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if (DrugInfos != null)
 | 
					            if (DrugInfos != null)
 | 
				
			||||||
| 
						 | 
					@ -302,8 +320,27 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                DrugInfos.Clear();
 | 
					                DrugInfos.Clear();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            DrugInfos = _sqlSugarScope1.SqlQueryable<DrugInfo>(str).Where(di => di.DrugName.Contains(text) || di.PyCode.Contains(text) || di.DrugId.Contains(text)).OrderBy(di => di.DrugName).OrderBy(di => di.DrugId).ToList();
 | 
					            DrugInfos = SqlSugarHelper.Db.SqlQueryable<DrugInfo>(str).Where(di => di.DrugName.Contains(text) || di.PyCode.Contains(text) || di.DrugId.Contains(text)).OrderBy(di => di.DrugName).OrderBy(di => di.DrugId).ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        public DelegateCommand RowSelected
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (MachineRecords != null)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    SelectMachineRecords = MachineRecords.Select(x =>
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        x.IsSelected = !x.IsSelected;
 | 
				
			||||||
 | 
					                        return x;
 | 
				
			||||||
 | 
					                    }).ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -62,33 +62,30 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        //    this.eventAggregator.GetEvent<SnackbarEvent>().Subscribe(doMyPrismEvent2);
 | 
					        //    this.eventAggregator.GetEvent<SnackbarEvent>().Subscribe(doMyPrismEvent2);
 | 
				
			||||||
        //    _screenUtil = screenUtil;
 | 
					        //    _screenUtil = screenUtil;
 | 
				
			||||||
        //}
 | 
					        //}
 | 
				
			||||||
        private FingerprintUtil _fingerprintUtil;
 | 
					 | 
				
			||||||
        IRegionManager _regionManager;
 | 
					        IRegionManager _regionManager;
 | 
				
			||||||
        IUnityContainer _container;
 | 
					        IUnityContainer _container;
 | 
				
			||||||
        PortUtil _portUtil;
 | 
					        PortUtil _portUtil;
 | 
				
			||||||
        private List<ChannelStock> _channelStocks = new List<ChannelStock>();
 | 
					        private List<ChannelStock> _channelStocks = new List<ChannelStock>();
 | 
				
			||||||
        private SqlSugarScope _sqlSugarScope1;
 | 
					        //private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
        public MainWindowViewModel(IRegionManager regionManager, IUnityContainer container, IEventAggregator eventAggregator, FingerprintUtil fingerprintUtil, ScreenUtil screenUtil, PortUtil portUtil,SqlSugarScope sqlSugarScope)
 | 
					        public MainWindowViewModel(IRegionManager regionManager, IUnityContainer container, IEventAggregator eventAggregator, ScreenUtil screenUtil, PortUtil portUtil)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            //_portUtil = portUtil;
 | 
					            //_portUtil = portUtil;
 | 
				
			||||||
            this.eventAggregator = eventAggregator;
 | 
					            this.eventAggregator = eventAggregator;
 | 
				
			||||||
            this.eventAggregator.GetEvent<SnackbarEvent>().Subscribe(doMyPrismEvent2);
 | 
					            this.eventAggregator.GetEvent<SnackbarEvent>().Subscribe(doMyPrismEvent2);
 | 
				
			||||||
            _screenUtil = screenUtil;
 | 
					            _screenUtil = screenUtil;
 | 
				
			||||||
            _fingerprintUtil = fingerprintUtil;
 | 
					 | 
				
			||||||
            _regionManager = regionManager;
 | 
					            _regionManager = regionManager;
 | 
				
			||||||
            _container = container;
 | 
					            _container = container;
 | 
				
			||||||
            _portUtil = portUtil;   
 | 
					            _portUtil = portUtil;   
 | 
				
			||||||
            this._sqlSugarScope1=sqlSugarScope;
 | 
					            //this.SqlSugarHelper.Db=sqlSugarScope;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            System.Windows.Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() =>
 | 
					            System.Windows.Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() =>
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
 | 
					 | 
				
			||||||
                _container.RegisterType<object, LoginWindow>("LoginWindow");
 | 
					                _container.RegisterType<object, LoginWindow>("LoginWindow");
 | 
				
			||||||
                _regionManager.RequestNavigate("MainRegion", "LoginWindow");
 | 
					                _regionManager.RequestNavigate("MainRegion", "LoginWindow");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            }));
 | 
					            }));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            Task.Factory.StartNew(()=>BindStock());        
 | 
					            Task.Factory.StartNew(() => BindStock());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        void doMyPrismEvent2(AlertMsg msg)
 | 
					        void doMyPrismEvent2(AlertMsg msg)
 | 
				
			||||||
| 
						 | 
					@ -96,13 +93,13 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            switch (msg.Type)
 | 
					            switch (msg.Type)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                case MsgType.INFO:
 | 
					                case MsgType.INFO:
 | 
				
			||||||
                    this.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#00e676"));
 | 
					                    Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#00e676"));
 | 
				
			||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
                case MsgType.ERROR:
 | 
					                case MsgType.ERROR:
 | 
				
			||||||
                    this.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#b71c1c"));
 | 
					                    Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#b71c1c"));
 | 
				
			||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
                default:
 | 
					                default:
 | 
				
			||||||
                    this.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#00e676"));
 | 
					                    Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#00e676"));
 | 
				
			||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            SnackbarMessageQueue.Enqueue(msg.Message);
 | 
					            SnackbarMessageQueue.Enqueue(msg.Message);
 | 
				
			||||||
| 
						 | 
					@ -110,8 +107,13 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        //写标签数量
 | 
					        //写标签数量
 | 
				
			||||||
        async Task BindStock()
 | 
					        async Task BindStock()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            List<ChannelStock> singleChannels = _sqlSugarScope1.Queryable<ChannelStock>().Where(cs => cs.BoardType == 5).Where(cs => cs.DrugId !=null).ToList();
 | 
					            List<ChannelStock> singleChannels = SqlSugarHelper.Db.Queryable<ChannelStock>().Where(cs => cs.BoardType == 5&&cs.Quantity>0).Where(cs => cs.DrugId !=null).ToList();
 | 
				
			||||||
            
 | 
					            singleChannels = singleChannels.GroupBy(cs => new { cs.DrawerNo, cs.ColNo })
 | 
				
			||||||
 | 
					                                         .Select(cs => {
 | 
				
			||||||
 | 
					                                             var ret = cs.First();
 | 
				
			||||||
 | 
					                                             ret.Quantity = cs.Sum(xt => xt.Quantity);
 | 
				
			||||||
 | 
					                                             return ret;
 | 
				
			||||||
 | 
					                                         }).ToList();
 | 
				
			||||||
            for (int i = 0; i < singleChannels.Count; i++)
 | 
					            for (int i = 0; i < singleChannels.Count; i++)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                _portUtil.WriteQuantity(singleChannels[i].DrawerNo, singleChannels[i].ColNo, singleChannels[i].Quantity);
 | 
					                _portUtil.WriteQuantity(singleChannels[i].DrawerNo, singleChannels[i].ColNo, singleChannels[i].Quantity);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,33 @@
 | 
				
			||||||
 | 
					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
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class MaskDialogViewModel : BindableBase, IDialogAware
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public string Title => throw new NotImplementedException();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public event Action<IDialogResult> RequestClose;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool CanCloseDialog()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void OnDialogClosed()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					             
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void OnDialogOpened(IDialogParameters parameters)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					             
 | 
				
			||||||
 | 
					             
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -38,13 +38,13 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        private PortUtil _portUtil;
 | 
					        private PortUtil _portUtil;
 | 
				
			||||||
        IEventAggregator _eventAggregator;
 | 
					        IEventAggregator _eventAggregator;
 | 
				
			||||||
        IDialogService _dialogService;
 | 
					        IDialogService _dialogService;
 | 
				
			||||||
        private SqlSugarScope _sqlSugarScope1;
 | 
					        //private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
        public OrderReturnDialogViewModel(PortUtil portUtil, IEventAggregator eventAggregator, IDialogService DialogService, SqlSugarScope sqlSugarScope)
 | 
					        public OrderReturnDialogViewModel(PortUtil portUtil, IEventAggregator eventAggregator, IDialogService DialogService, SqlSugarScope sqlSugarScope)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            _dialogService = DialogService;
 | 
					            _dialogService = DialogService;
 | 
				
			||||||
            _portUtil = portUtil;
 | 
					            _portUtil = portUtil;
 | 
				
			||||||
            _eventAggregator = eventAggregator;
 | 
					            _eventAggregator = eventAggregator;
 | 
				
			||||||
            this._sqlSugarScope1 = sqlSugarScope;
 | 
					            //this.SqlSugarHelper.Db = sqlSugarScope;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        void DoMyPrismEvent(DeviceMsg msg)
 | 
					        void DoMyPrismEvent(DeviceMsg msg)
 | 
				
			||||||
| 
						 | 
					@ -172,9 +172,9 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void RequestData()
 | 
					        public void RequestData()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            orderDetails = _sqlSugarScope1.Queryable<OrderDetail>()
 | 
					            orderDetails = SqlSugarHelper.Db.Queryable<OrderDetail>()
 | 
				
			||||||
                .Includes<DrugInfo>(od => od.DrugInfo)
 | 
					                .Includes<DrugInfo>(od => od.DrugInfo)
 | 
				
			||||||
                .InnerJoin(_sqlSugarScope1.Queryable<ChannelStock>().Where(cs => cs.DrawerType == 1).Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).GroupBy(cs => cs.DrugId), (od, t) => od.DrugId == t.DrugId)
 | 
					                .InnerJoin(SqlSugarHelper.Db.Queryable<ChannelStock>().Where(cs => cs.DrawerType == 1).Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).GroupBy(cs => cs.DrugId), (od, t) => od.DrugId == t.DrugId)
 | 
				
			||||||
                .Where(od => od.OrderNo == OrderInfo.OrderNo)
 | 
					                .Where(od => od.OrderNo == OrderInfo.OrderNo)
 | 
				
			||||||
                .ToList();
 | 
					                .ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -184,7 +184,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                OrderDetail orderDetail = orderDetails[i];
 | 
					                OrderDetail orderDetail = orderDetails[i];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                List<ChannelStock> HasQChannels = _sqlSugarScope1.Queryable<ChannelStock>()
 | 
					                List<ChannelStock> HasQChannels = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
                    .Includes<DrugInfo>(cs => cs.DrugInfo)
 | 
					                    .Includes<DrugInfo>(cs => cs.DrugInfo)
 | 
				
			||||||
                    .Where(cs => cs.DrawerType == 1)
 | 
					                    .Where(cs => cs.DrawerType == 1)
 | 
				
			||||||
                    .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1"))
 | 
					                    .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1"))
 | 
				
			||||||
| 
						 | 
					@ -266,7 +266,17 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            _portUtil.SpeakAsync("正在打开" + DrawerNo + "号抽屉");
 | 
					            _portUtil.SpeakAsync("正在打开" + DrawerNo + "号抽屉");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            List<ChannelStock> singleChannels = channelStocks.FindAll(it => it.BoardType != 1);
 | 
					            List<ChannelStock> singleChannels = channelStocks
 | 
				
			||||||
 | 
					                .GroupBy(it => new { it.DrawerNo, it.ColNo })
 | 
				
			||||||
 | 
					                .Select(it =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    var ret = it.First();
 | 
				
			||||||
 | 
					                    ret.Quantity = it.Sum(it => it.Quantity);
 | 
				
			||||||
 | 
					                    ret.TakeQuantity = it.Sum(it => it.TakeQuantity);
 | 
				
			||||||
 | 
					                    return ret;
 | 
				
			||||||
 | 
					                })
 | 
				
			||||||
 | 
					                .ToList()
 | 
				
			||||||
 | 
					                .FindAll(it => it.BoardType != 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // 发送还药数量
 | 
					            // 发送还药数量
 | 
				
			||||||
            singleChannels.ForEach(it =>
 | 
					            singleChannels.ForEach(it =>
 | 
				
			||||||
| 
						 | 
					@ -295,9 +305,9 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                    //if (record.Count > 0)
 | 
					                    //if (record.Count > 0)
 | 
				
			||||||
                    //{
 | 
					                    //{
 | 
				
			||||||
                    string InvoiceId = OrderInfo.OrderNo;
 | 
					                    string InvoiceId = OrderInfo.OrderNo;
 | 
				
			||||||
                    var f = _sqlSugarScope1.UseTran(() =>
 | 
					                    var f = SqlSugarHelper.Db.UseTran(() =>
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        _sqlSugarScope1.Updateable(new OrderInfo()
 | 
					                        SqlSugarHelper.Db.Updateable(new OrderInfo()
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            DmStatus = 2,
 | 
					                            DmStatus = 2,
 | 
				
			||||||
                            OrderNo = OrderInfo.OrderNo
 | 
					                            OrderNo = OrderInfo.OrderNo
 | 
				
			||||||
| 
						 | 
					@ -306,7 +316,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            ChannelStock it = record[i];
 | 
					                            ChannelStock it = record[i];
 | 
				
			||||||
                            // 更新数据 库存信息
 | 
					                            // 更新数据 库存信息
 | 
				
			||||||
                            _sqlSugarScope1.Updateable(new ChannelStock()
 | 
					                            SqlSugarHelper.Db.Updateable(new ChannelStock()
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                //Quantity = it.Quantity + it.TakeQuantity,
 | 
					                                //Quantity = it.Quantity + it.TakeQuantity,
 | 
				
			||||||
                                Quantity = it.Quantity + it.ReturnQuantity,
 | 
					                                Quantity = it.Quantity + it.ReturnQuantity,
 | 
				
			||||||
| 
						 | 
					@ -315,14 +325,14 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                                Id = it.Id,
 | 
					                                Id = it.Id,
 | 
				
			||||||
                            }).UpdateColumns(it => new { it.Quantity, it.ManuNo, it.EffDate }).ExecuteCommand();
 | 
					                            }).UpdateColumns(it => new { it.Quantity, it.ManuNo, it.EffDate }).ExecuteCommand();
 | 
				
			||||||
                            // 获取更新完库存后的药品库存
 | 
					                            // 获取更新完库存后的药品库存
 | 
				
			||||||
                            List<ChannelStock> nowChannels = _sqlSugarScope1.Queryable<ChannelStock>()
 | 
					                            List<ChannelStock> nowChannels = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
                                .Where(cs => cs.MachineId.Equals(it.MachineId))
 | 
					                                .Where(cs => cs.MachineId.Equals(it.MachineId))
 | 
				
			||||||
                                .Where(cs => cs.DrugId.Equals(it.DrugId))
 | 
					                                .Where(cs => cs.DrugId.Equals(it.DrugId))
 | 
				
			||||||
                                .Where(cs => cs.DrawerType == 1)
 | 
					                                .Where(cs => cs.DrawerType == 1)
 | 
				
			||||||
                                .ToList();
 | 
					                                .ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            // 保存数据 还药记录
 | 
					                            // 保存数据 还药记录
 | 
				
			||||||
                            _sqlSugarScope1.Insertable(new MachineRecord()
 | 
					                            SqlSugarHelper.Db.Insertable(new MachineRecord()
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                MachineId = it.MachineId,
 | 
					                                MachineId = it.MachineId,
 | 
				
			||||||
                                DrawerNo = it.DrawerNo,
 | 
					                                DrawerNo = it.DrawerNo,
 | 
				
			||||||
| 
						 | 
					@ -346,14 +356,41 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                    if (f.Data)
 | 
					                    if (f.Data)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        // 更新屏显库存
 | 
					                        // 更新屏显库存
 | 
				
			||||||
                        List<ChannelStock> singleChannels = record.FindAll(it => it.BoardType != 1);
 | 
					                        //List<ChannelStock> singleChannels = record.FindAll(it => it.BoardType != 1);
 | 
				
			||||||
                        if ((singleChannels.Count > 0 ? singleChannels[0].BoardType : 1) == 5)
 | 
					                        List<ChannelStock> singleChannels = record.Where(it => it.BoardType != 1)
 | 
				
			||||||
 | 
					                                                                         .GroupBy(it => new { it.DrawerNo, it.ColNo })
 | 
				
			||||||
 | 
					                                                                         .Select(it =>
 | 
				
			||||||
 | 
					                                                                         {
 | 
				
			||||||
 | 
					                                                                             var ret = it.First();
 | 
				
			||||||
 | 
					                                                                             //ret.Quantity = it.Sum(itx => itx.Quantity);
 | 
				
			||||||
 | 
					                                                                             //ret.TakeQuantity = it.Sum(itx => itx.TakeQuantity);
 | 
				
			||||||
 | 
					                                                                             return ret;
 | 
				
			||||||
 | 
					                                                                         }).ToList();
 | 
				
			||||||
 | 
					                        //if ((singleChannels.Count > 0 ? singleChannels[0].BoardType : 1) == 5)
 | 
				
			||||||
 | 
					                        //{
 | 
				
			||||||
 | 
					                            //将库位多批次的总库存数更新标签
 | 
				
			||||||
 | 
					                            //singleChannels.ForEach(it =>
 | 
				
			||||||
 | 
					                            //{
 | 
				
			||||||
 | 
					                            //    _portUtil.WriteQuantity(it.DrawerNo, it.ColNo, it.Quantity + it.TakeQuantity);
 | 
				
			||||||
 | 
					                            //});
 | 
				
			||||||
 | 
					                        //}
 | 
				
			||||||
 | 
					                        if (singleChannels.Count > 0)
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            singleChannels.ForEach(it =>
 | 
					                            for (int i = 0; i < singleChannels.Count; i++)
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                _portUtil.WriteQuantity(it.DrawerNo, it.ColNo, it.Quantity + it.TakeQuantity);
 | 
					                                if (singleChannels[i].BoardType == 5)
 | 
				
			||||||
                            });
 | 
					                                {
 | 
				
			||||||
 | 
					                                    int totalQuantity = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
 | 
					                                                                        .Where(cs => cs.MachineId == singleChannels[i].MachineId)
 | 
				
			||||||
 | 
					                                                                        .Where(cs => cs.DrawerNo == singleChannels[i].DrawerNo)
 | 
				
			||||||
 | 
					                                                                        .Where(cs => cs.ColNo == singleChannels[i].ColNo)
 | 
				
			||||||
 | 
					                                                                        .Sum(it => it.Quantity);
 | 
				
			||||||
 | 
					                                    //将库位多批次的总库存数更新标签
 | 
				
			||||||
 | 
					                                    _portUtil.WriteQuantity(singleChannels[i].DrawerNo, singleChannels[i].ColNo, totalQuantity);
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        AlertMsg alertMsg = new AlertMsg
 | 
					                        AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            Message = "处方退药完成,库存已更新",
 | 
					                            Message = "处方退药完成,库存已更新",
 | 
				
			||||||
| 
						 | 
					@ -412,6 +449,6 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public bool KeepAlive => false;
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -38,13 +38,13 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        private PortUtil _portUtil;
 | 
					        private PortUtil _portUtil;
 | 
				
			||||||
        IEventAggregator _eventAggregator;
 | 
					        IEventAggregator _eventAggregator;
 | 
				
			||||||
        IDialogService _dialogService; 
 | 
					        IDialogService _dialogService; 
 | 
				
			||||||
        private SqlSugarScope _sqlSugarScope1;
 | 
					        //private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
        public OrderTakeDialogViewModel(PortUtil portUtil, IEventAggregator eventAggregator, IDialogService DialogService, SqlSugarScope sqlSugarScope)
 | 
					        public OrderTakeDialogViewModel(PortUtil portUtil, IEventAggregator eventAggregator, IDialogService DialogService, SqlSugarScope sqlSugarScope)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            _dialogService = DialogService;
 | 
					            _dialogService = DialogService;
 | 
				
			||||||
            _portUtil = portUtil;
 | 
					            _portUtil = portUtil;
 | 
				
			||||||
            _eventAggregator = eventAggregator;
 | 
					            _eventAggregator = eventAggregator;
 | 
				
			||||||
            this._sqlSugarScope1 = sqlSugarScope;
 | 
					            //this.SqlSugarHelper.Db = sqlSugarScope;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        void DoMyPrismEvent(DeviceMsg msg)
 | 
					        void DoMyPrismEvent(DeviceMsg msg)
 | 
				
			||||||
| 
						 | 
					@ -79,15 +79,15 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                channelStocks.ForEach(it => it.process = 3);
 | 
					                                channelStocks.ForEach(it => it.process = 3);
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                            IGrouping<int, ChannelStock> groupingBefore = enumerator.Current;
 | 
					                            //IGrouping<int, ChannelStock> groupingBefore = enumerator.Current;
 | 
				
			||||||
                            int DrawerNoBefore = groupingBefore.Key;
 | 
					                            //int DrawerNoBefore = groupingBefore.Key;
 | 
				
			||||||
                            if (enumerator.MoveNext())
 | 
					                            if (enumerator.MoveNext())
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                IGrouping<int, ChannelStock> groupingAfter = enumerator.Current;
 | 
					                                //IGrouping<int, ChannelStock> groupingAfter = enumerator.Current;
 | 
				
			||||||
                                int DrawerNoAfter = groupingAfter.Key;
 | 
					                                //int DrawerNoAfter = groupingAfter.Key;
 | 
				
			||||||
                                if (DrawerNoBefore < 9 && DrawerNoAfter > 8)
 | 
					                                //if (DrawerNoBefore < 9 && DrawerNoAfter > 8)
 | 
				
			||||||
                                {
 | 
					                                {
 | 
				
			||||||
                                    Thread.Sleep(50);
 | 
					                                    Thread.Sleep(80);
 | 
				
			||||||
                                }
 | 
					                                }
 | 
				
			||||||
                                OpenOneByOne();
 | 
					                                OpenOneByOne();
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
| 
						 | 
					@ -171,9 +171,9 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void RequestData()
 | 
					        public void RequestData()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
          orderDetails = _sqlSugarScope1.Queryable<OrderDetail>()
 | 
					          orderDetails = SqlSugarHelper.Db.Queryable<OrderDetail>()
 | 
				
			||||||
                .Includes<DrugInfo>(od => od.DrugInfo)
 | 
					                .Includes<DrugInfo>(od => od.DrugInfo)
 | 
				
			||||||
                .InnerJoin(_sqlSugarScope1.Queryable<ChannelStock>().Where(cs => cs.DrawerType == 1).Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).GroupBy(cs => cs.DrugId), (od, t) => od.DrugId == t.DrugId)
 | 
					                .InnerJoin(SqlSugarHelper.Db.Queryable<ChannelStock>().Where(cs => cs.DrawerType == 1).Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).GroupBy(cs => cs.DrugId), (od, t) => od.DrugId == t.DrugId)
 | 
				
			||||||
                .Where(od => od.OrderNo == OrderInfo.OrderNo)
 | 
					                .Where(od => od.OrderNo == OrderInfo.OrderNo)
 | 
				
			||||||
                .ToList();
 | 
					                .ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -183,8 +183,9 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                OrderDetail orderDetail = orderDetails[i];
 | 
					                OrderDetail orderDetail = orderDetails[i];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                List<ChannelStock> HasQChannels = _sqlSugarScope1.Queryable<ChannelStock>()
 | 
					                List<ChannelStock> HasQChannels = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
                    .Includes<DrugInfo>(cs => cs.DrugInfo)
 | 
					                    .Includes<DrugInfo>(cs => cs.DrugInfo)
 | 
				
			||||||
 | 
					                    .InnerJoin<ChannelList>((cs, cl) => cs.Chnguid == cl.Id && cs.DrugId == cl.DrugId)
 | 
				
			||||||
                    .Where(cs => cs.Quantity > 0)
 | 
					                    .Where(cs => cs.Quantity > 0)
 | 
				
			||||||
                    .Where(cs => cs.DrawerType == 1)
 | 
					                    .Where(cs => cs.DrawerType == 1)
 | 
				
			||||||
                    .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1"))
 | 
					                    .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1"))
 | 
				
			||||||
| 
						 | 
					@ -193,6 +194,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                    .Where(cs => cs.DrugId == orderDetail.DrugId)
 | 
					                    .Where(cs => cs.DrugId == orderDetail.DrugId)
 | 
				
			||||||
                    .OrderBy(cs => cs.EffDate)
 | 
					                    .OrderBy(cs => cs.EffDate)
 | 
				
			||||||
                    .OrderBy(cs => cs.DrawerNo)
 | 
					                    .OrderBy(cs => cs.DrawerNo)
 | 
				
			||||||
 | 
					                    .OrderBy(cs=> cs.ManuNo)
 | 
				
			||||||
                    .ToList();
 | 
					                    .ToList();
 | 
				
			||||||
                int total = HasQChannels.Sum(it => it.Quantity);
 | 
					                int total = HasQChannels.Sum(it => it.Quantity);
 | 
				
			||||||
                int TakeQ = orderDetail.Quantity;
 | 
					                int TakeQ = orderDetail.Quantity;
 | 
				
			||||||
| 
						 | 
					@ -269,7 +271,18 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            channelStocks.ForEach(it => it.process = 1);
 | 
					            channelStocks.ForEach(it => it.process = 1);
 | 
				
			||||||
            _portUtil.SpeakAsync("正在打开" + DrawerNo + "号抽屉");
 | 
					            _portUtil.SpeakAsync("正在打开" + DrawerNo + "号抽屉");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            List<ChannelStock> singleChannels = channelStocks.FindAll(it => it.BoardType != 1);
 | 
					            //List<ChannelStock> singleChannels = channelStocks.FindAll(it => it.BoardType != 1);
 | 
				
			||||||
 | 
					            List<ChannelStock> singleChannels = channelStocks
 | 
				
			||||||
 | 
					               .GroupBy(it => new { it.DrawerNo, it.ColNo })
 | 
				
			||||||
 | 
					               .Select(it =>
 | 
				
			||||||
 | 
					               {
 | 
				
			||||||
 | 
					                   var ret = it.First();
 | 
				
			||||||
 | 
					                   ret.Quantity = it.Sum(it => it.Quantity);
 | 
				
			||||||
 | 
					                   ret.TakeQuantity = it.Sum(it => it.TakeQuantity);
 | 
				
			||||||
 | 
					                   return ret;
 | 
				
			||||||
 | 
					               })
 | 
				
			||||||
 | 
					               .ToList()
 | 
				
			||||||
 | 
					               .FindAll(it => it.BoardType != 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // 发送取药数量
 | 
					            // 发送取药数量
 | 
				
			||||||
            singleChannels.ForEach(it =>
 | 
					            singleChannels.ForEach(it =>
 | 
				
			||||||
| 
						 | 
					@ -291,8 +304,8 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
            _portUtil.WindowName = "OrderTakeDrugWindow";
 | 
					            _portUtil.WindowName = "OrderTakeDrugWindow";
 | 
				
			||||||
            _portUtil.BoardType = singleChannels.Count > 0 ? singleChannels[0].BoardType : 1;
 | 
					            _portUtil.BoardType = singleChannels.Count > 0 ? singleChannels[0].BoardType : 1;
 | 
				
			||||||
            _portUtil.ColNos = singleChannels.Select(it => it.ColNo).ToArray();
 | 
					            _portUtil.ColNos = new int[] { };// singleChannels.Select(it => it.ColNo).ToArray();
 | 
				
			||||||
            _portUtil.Stocks = singleChannels.Select(it => it.Quantity).ToArray();
 | 
					            //_portUtil.Stocks = singleChannels.Select(it => it.Quantity).ToArray();
 | 
				
			||||||
            _portUtil.DrawerNo = DrawerNo;
 | 
					            _portUtil.DrawerNo = DrawerNo;
 | 
				
			||||||
            _portUtil.Start();
 | 
					            _portUtil.Start();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					@ -310,15 +323,15 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                    if (record.Count > 0)
 | 
					                    if (record.Count > 0)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        string InvoiceId = OrderInfo.OrderNo;
 | 
					                        string InvoiceId = OrderInfo.OrderNo;
 | 
				
			||||||
                        var f = _sqlSugarScope1.UseTran(() =>
 | 
					                        var f = SqlSugarHelper.Db.UseTran(() =>
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            _sqlSugarScope1.Updateable(new OrderInfo()
 | 
					                            SqlSugarHelper.Db.Updateable(new OrderInfo()
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                DmStatus = 1,
 | 
					                                DmStatus = 1,
 | 
				
			||||||
                                OrderNo = OrderInfo.OrderNo
 | 
					                                OrderNo = OrderInfo.OrderNo
 | 
				
			||||||
                            }).UpdateColumns(it => new { it.DmStatus }).WhereColumns(it => new { it.OrderNo }).ExecuteCommand();
 | 
					                            }).UpdateColumns(it => new { it.DmStatus }).WhereColumns(it => new { it.OrderNo }).ExecuteCommand();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            _sqlSugarScope1.Insertable(new OrderFinish()
 | 
					                            SqlSugarHelper.Db.Insertable(new OrderFinish()
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                OrderNo = OrderInfo.OrderNo,
 | 
					                                OrderNo = OrderInfo.OrderNo,
 | 
				
			||||||
                                PatientId = OrderInfo.PatientId,
 | 
					                                PatientId = OrderInfo.PatientId,
 | 
				
			||||||
| 
						 | 
					@ -331,7 +344,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                ChannelStock it = record[i];
 | 
					                                ChannelStock it = record[i];
 | 
				
			||||||
                                // 更新数据 库存信息
 | 
					                                // 更新数据 库存信息
 | 
				
			||||||
                                _sqlSugarScope1.Updateable(new ChannelStock()
 | 
					                                SqlSugarHelper.Db.Updateable(new ChannelStock()
 | 
				
			||||||
                                {
 | 
					                                {
 | 
				
			||||||
                                    Quantity = it.Quantity - it.TakeQuantity,
 | 
					                                    Quantity = it.Quantity - it.TakeQuantity,
 | 
				
			||||||
                                    ManuNo = it.ManuNo,
 | 
					                                    ManuNo = it.ManuNo,
 | 
				
			||||||
| 
						 | 
					@ -339,14 +352,14 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                                    Id = it.Id,
 | 
					                                    Id = it.Id,
 | 
				
			||||||
                                }).UpdateColumns(it => new { it.Quantity, it.ManuNo, it.EffDate }).ExecuteCommand();
 | 
					                                }).UpdateColumns(it => new { it.Quantity, it.ManuNo, it.EffDate }).ExecuteCommand();
 | 
				
			||||||
                                // 获取更新完库存后的药品库存
 | 
					                                // 获取更新完库存后的药品库存
 | 
				
			||||||
                                List<ChannelStock> nowChannels = _sqlSugarScope1.Queryable<ChannelStock>()
 | 
					                                List<ChannelStock> nowChannels = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
                                    .Where(cs => cs.MachineId.Equals(it.MachineId))
 | 
					                                    .Where(cs => cs.MachineId.Equals(it.MachineId))
 | 
				
			||||||
                                    .Where(cs => cs.DrugId.Equals(it.DrugId))
 | 
					                                    .Where(cs => cs.DrugId.Equals(it.DrugId))
 | 
				
			||||||
                                    .Where(cs => cs.DrawerType == 1)
 | 
					                                    .Where(cs => cs.DrawerType == 1)
 | 
				
			||||||
                                    .ToList();
 | 
					                                    .ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                // 保存数据 出库记录
 | 
					                                // 保存数据 出库记录
 | 
				
			||||||
                                _sqlSugarScope1.Insertable(new MachineRecord()
 | 
					                                SqlSugarHelper.Db.Insertable(new MachineRecord()
 | 
				
			||||||
                                {
 | 
					                                {
 | 
				
			||||||
                                    MachineId = it.MachineId,
 | 
					                                    MachineId = it.MachineId,
 | 
				
			||||||
                                    DrawerNo = it.DrawerNo,
 | 
					                                    DrawerNo = it.DrawerNo,
 | 
				
			||||||
| 
						 | 
					@ -361,7 +374,9 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                                    Type = 2,
 | 
					                                    Type = 2,
 | 
				
			||||||
                                    InvoiceId = InvoiceId,
 | 
					                                    InvoiceId = InvoiceId,
 | 
				
			||||||
                                    StockQuantity = nowChannels.Sum(it => it.Quantity),
 | 
					                                    StockQuantity = nowChannels.Sum(it => it.Quantity),
 | 
				
			||||||
                                    ManunoQuantity = nowChannels.FindAll(it2 => it2.ManuNo == it.ManuNo).Sum(it => it.Quantity)
 | 
					                                    ManunoQuantity = nowChannels.FindAll(it2 => it2.ManuNo == it.ManuNo).Sum(it => it.Quantity),
 | 
				
			||||||
 | 
					                                    SupplierDept = ConfigurationManager.AppSettings["receiveDept"].ToString(),
 | 
				
			||||||
 | 
					                                    ReceiveDept = OrderInfo.DeptName
 | 
				
			||||||
                                }).ExecuteCommand();
 | 
					                                }).ExecuteCommand();
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                            return true;
 | 
					                            return true;
 | 
				
			||||||
| 
						 | 
					@ -369,13 +384,38 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                        if (f.Data)
 | 
					                        if (f.Data)
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            // 更新屏显库存
 | 
					                            // 更新屏显库存
 | 
				
			||||||
                            List<ChannelStock> singleChannels = record.FindAll(it => it.BoardType != 1);
 | 
					                            //List<ChannelStock> singleChannels = record.FindAll(it => it.BoardType != 1);
 | 
				
			||||||
                            if ((singleChannels.Count > 0 ? singleChannels[0].BoardType : 1) == 5)
 | 
					                            List<ChannelStock> singleChannels = record.Where(it => it.BoardType != 1)
 | 
				
			||||||
 | 
					                                                                         .GroupBy(it => it.ColNo)
 | 
				
			||||||
 | 
					                                                                         .Select(it =>
 | 
				
			||||||
 | 
					                                                                         {
 | 
				
			||||||
 | 
					                                                                             var ret = it.First();
 | 
				
			||||||
 | 
					                                                                             //ret.Quantity = it.Sum(itx => itx.Quantity);
 | 
				
			||||||
 | 
					                                                                             //ret.AddQuantity = it.Sum(itx => itx.AddQuantity);
 | 
				
			||||||
 | 
					                                                                             return ret;
 | 
				
			||||||
 | 
					                                                                         }).ToList();
 | 
				
			||||||
 | 
					                            //if ((singleChannels.Count > 0 ? singleChannels[0].BoardType : 1) == 5)
 | 
				
			||||||
 | 
					                            //{
 | 
				
			||||||
 | 
					                                //singleChannels.ForEach(it =>
 | 
				
			||||||
 | 
					                                //{
 | 
				
			||||||
 | 
					                                //    _portUtil.WriteQuantity(it.DrawerNo, it.ColNo, it.Quantity - it.TakeQuantity);
 | 
				
			||||||
 | 
					                                //});
 | 
				
			||||||
 | 
					                            //}
 | 
				
			||||||
 | 
					                            if(singleChannels.Count > 0)
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                singleChannels.ForEach(it =>
 | 
					                                for (int i = 0; i < singleChannels.Count; i++)
 | 
				
			||||||
                                {
 | 
					                                {
 | 
				
			||||||
                                    _portUtil.WriteQuantity(it.DrawerNo, it.ColNo, it.Quantity - it.TakeQuantity);
 | 
					                                    if (singleChannels[i].BoardType == 5)
 | 
				
			||||||
                                });
 | 
					                                    {
 | 
				
			||||||
 | 
					                                        int totalQuantity = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
 | 
					                                                                            .Where(cs => cs.MachineId == singleChannels[i].MachineId)
 | 
				
			||||||
 | 
					                                                                            .Where(cs => cs.DrawerNo == singleChannels[i].DrawerNo)
 | 
				
			||||||
 | 
					                                                                            .Where(cs => cs.ColNo == singleChannels[i].ColNo)
 | 
				
			||||||
 | 
					                                                                            .Sum(it => it.Quantity);
 | 
				
			||||||
 | 
					                                        //将库位多批次的总库存数更新标签
 | 
				
			||||||
 | 
					                                        _portUtil.WriteQuantity(singleChannels[i].DrawerNo, singleChannels[i].ColNo, totalQuantity);
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                            AlertMsg alertMsg = new AlertMsg
 | 
					                            AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
| 
						 | 
					@ -445,6 +485,6 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public bool KeepAlive => false;
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,6 +16,10 @@ using DM_Weight.util;
 | 
				
			||||||
using DM_Weight.msg;
 | 
					using DM_Weight.msg;
 | 
				
			||||||
using Prism.Events;
 | 
					using Prism.Events;
 | 
				
			||||||
using SqlSugar;
 | 
					using SqlSugar;
 | 
				
			||||||
 | 
					using System.Threading;
 | 
				
			||||||
 | 
					using System.Timers;
 | 
				
			||||||
 | 
					using log4net.Repository.Hierarchy;
 | 
				
			||||||
 | 
					using log4net;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace DM_Weight.ViewModels
 | 
					namespace DM_Weight.ViewModels
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -70,12 +74,15 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        private DelegateCommand _rowSelected;
 | 
					        private DelegateCommand _rowSelected;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public DelegateCommand RowSelected => _rowSelected ??= new DelegateCommand(OpenOrderDialog);
 | 
					        public DelegateCommand RowSelected => _rowSelected ??= new DelegateCommand(OpenOrderDialog);
 | 
				
			||||||
        private SqlSugarScope _sqlSugarScope1;
 | 
					        //private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
        public OrderTakeDrugWindowViewModel(IDialogService DialogService, IEventAggregator eventAggregator,SqlSugarScope sqlSugarScope)
 | 
					        private readonly ILog logger = LogManager.GetLogger(typeof(OrderTakeDrugWindowViewModel));
 | 
				
			||||||
 | 
					        public OrderTakeDrugWindowViewModel(IDialogService DialogService, IEventAggregator eventAggregator)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            logger.Info("进入OrderTakeDrugWindowViewModel构造函数");
 | 
				
			||||||
            _dialogService = DialogService;
 | 
					            _dialogService = DialogService;
 | 
				
			||||||
            _eventAggregator = eventAggregator;
 | 
					            _eventAggregator = eventAggregator;
 | 
				
			||||||
            this._sqlSugarScope1= sqlSugarScope;
 | 
					            //this.SqlSugarHelper.Db= sqlSugarScope;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public static List<OrderTakeSelect> StaticOrderTakeSelects = new()
 | 
					        public static List<OrderTakeSelect> StaticOrderTakeSelects = new()
 | 
				
			||||||
| 
						 | 
					@ -168,31 +175,30 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public List<OrderInfo> OrderInfos { get { return _orderInfos; } set { SetProperty(ref _orderInfos, value); } }
 | 
					        public List<OrderInfo> OrderInfos { get { return _orderInfos; } set { SetProperty(ref _orderInfos, value); } }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public bool KeepAlive => false;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public async void OpenOrderDialog()
 | 
					        public async void OpenOrderDialog()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            if (SelectedOrder != null && SelectedOrder.DmStatus == 0 && SelectedOrder.CancelFlag == 0 && SelectedOrder.HisDispFlag == 0)
 | 
					            if (SelectedOrder != null && SelectedOrder.DmStatus == 0 && SelectedOrder.CancelFlag == 0 && SelectedOrder.HisDispFlag == 0)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                // 此处延时1毫秒,等待页面渲染
 | 
					                // 此处延时1毫秒,等待页面渲染(规避工控机上手指点击弹出的页面上的按钮无效问题)
 | 
				
			||||||
                await Task.Delay(TimeSpan.FromMilliseconds(1));
 | 
					                await Task.Delay(TimeSpan.FromMilliseconds(1));
 | 
				
			||||||
                DialogParameters dialogParameters = new DialogParameters();
 | 
					                DialogParameters dialogParameters = new DialogParameters();
 | 
				
			||||||
                dialogParameters.Add("orderInfo", SelectedOrder);
 | 
					                dialogParameters.Add("orderInfo", SelectedOrder);
 | 
				
			||||||
                DialogServiceExtensions.ShowDialogHost(_dialogService, "OrderTakeDialog", dialogParameters, DoDialogResult, "RootDialog");
 | 
					                DialogServiceExtensions.ShowDialogHost(_dialogService, "OrderTakeDialog", dialogParameters, DoDialogResult, "RootDialog");
 | 
				
			||||||
               
 | 
					
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private void DoDialogResult(IDialogResult dialogResult)
 | 
					        private void DoDialogResult(IDialogResult dialogResult)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            // 委托   被动执行     被子窗口执行
 | 
					            // 委托   被动执行     被子窗口执行
 | 
				
			||||||
            // dialogResult  第一方面可以拿到任意参数   第二方面   可判断关闭状态
 | 
					            //dialogResult 第一方面可以拿到任意参数   第二方面 可判断关闭状态
 | 
				
			||||||
            //if(dialogResult.Result == ButtonResult.OK)
 | 
					            if (dialogResult.Result == ButtonResult.OK)
 | 
				
			||||||
            //{
 | 
					            {
 | 
				
			||||||
                SelectedOrder = null;
 | 
					                SelectedOrder = null;
 | 
				
			||||||
                RequestData();
 | 
					                RequestData();
 | 
				
			||||||
            //}
 | 
					            }
 | 
				
			||||||
            //MessageBox.Show("返回值:" + dialogResult.Result.ToString());
 | 
					            //MessageBox.Show("返回值:" + dialogResult.Result.ToString());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -211,13 +217,17 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void RequestData()
 | 
					        public void RequestData()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            logger.Info("开始OrderTakeDrugWindowViewModel_查询数据");
 | 
				
			||||||
            OrderInfos.Clear();
 | 
					            OrderInfos.Clear();
 | 
				
			||||||
            int totalCount = 0;
 | 
					            int totalCount = 0;
 | 
				
			||||||
            List<OrderInfo> queryData = _sqlSugarScope1.Queryable<OrderInfo>()
 | 
					            List<OrderInfo> queryData = SqlSugarHelper.Db.Queryable<OrderInfo>()
 | 
				
			||||||
                .InnerJoin<OrderDetail>((oi, od) => oi.OrderNo == od.OrderNo)
 | 
					                .InnerJoin<OrderDetail>((oi, od) => oi.OrderNo == od.OrderNo)
 | 
				
			||||||
                .InnerJoin(_sqlSugarScope1.Queryable<ChannelStock>().Where(cs => cs.DrawerType == 1).Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).GroupBy(cs => cs.DrugId), (oi, od, t) => od.DrugId == t.DrugId)
 | 
					                .InnerJoin(SqlSugarHelper.Db.Queryable<ChannelList>().Where(cs => cs.DrawerType == 1).Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).GroupBy(cs => cs.DrugId), (oi, od, t) => od.DrugId == t.DrugId)
 | 
				
			||||||
                .WhereIF(OrderDate != null, oi => oi.RecvDate.ToString("yyyy-MM-dd") == OrderDate)
 | 
					                .WhereIF(OrderDate != null, oi => oi.RecvDate.ToString("yyyy-MM-dd") == OrderDate)
 | 
				
			||||||
                .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("OrderNo"), oi => oi.OrderNo == SearchValue)
 | 
					                .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("OrderNo"), oi => oi.OrderNo == SearchValue)
 | 
				
			||||||
                .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("PatientId"), oi => oi.PatientId == SearchValue)
 | 
					                .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("PatientId"), oi => oi.PatientId == SearchValue)
 | 
				
			||||||
| 
						 | 
					@ -232,13 +242,22 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            OrderInfos = queryData;
 | 
					            OrderInfos = queryData;
 | 
				
			||||||
            TotalCount = totalCount;
 | 
					            TotalCount = totalCount;
 | 
				
			||||||
            PageCount = (int)Math.Ceiling((double)TotalCount / PageSize);
 | 
					            PageCount = (int)Math.Ceiling((double)TotalCount / PageSize);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            logger.Info("结束OrderTakeDrugWindowViewModel_查询数据");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //接收导航传过来的参数  现在是在此处初始化了表格数据
 | 
					        //接收导航传过来的参数  现在是在此处初始化了表格数据
 | 
				
			||||||
        public void OnNavigatedTo(NavigationContext navigationContext)
 | 
					        public void OnNavigatedTo(NavigationContext navigationContext)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            logger.Info("进入OrderTakeDrugWindowViewModel_OnNavigatedTo");
 | 
				
			||||||
            _eventAggregator.GetEvent<PortUtilEvent>().Subscribe(DoMyPrismEvent);
 | 
					            _eventAggregator.GetEvent<PortUtilEvent>().Subscribe(DoMyPrismEvent);
 | 
				
			||||||
            RequestData();
 | 
					            //RequestData();
 | 
				
			||||||
 | 
					            Task.Factory.StartNew(() => RequestData());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            logger.Info("结束OrderTakeDrugWindowViewModel_OnNavigatedTo");
 | 
				
			||||||
 | 
					            //Task t = new Task(() => { RequestData(); });
 | 
				
			||||||
 | 
					            //t.Start();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //每次导航的时候,该实列用不用重新创建,true是不重新创建,false是重新创建
 | 
					        //每次导航的时候,该实列用不用重新创建,true是不重新创建,false是重新创建
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -42,12 +42,12 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            get { return _machineRecord; }
 | 
					            get { return _machineRecord; }
 | 
				
			||||||
            set { SetProperty(ref _machineRecord, value); }
 | 
					            set { SetProperty(ref _machineRecord, value); }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        private SqlSugarScope _sqlSugarScope1;
 | 
					        //private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
        public ReturnDrugDialogViewModel(PortUtil portUtil, IEventAggregator eventAggregator, SqlSugarScope sqlSugarScope)
 | 
					        public ReturnDrugDialogViewModel(PortUtil portUtil, IEventAggregator eventAggregator, SqlSugarScope sqlSugarScope)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            _portUtil = portUtil;
 | 
					            _portUtil = portUtil;
 | 
				
			||||||
            _eventAggregator = eventAggregator;
 | 
					            _eventAggregator = eventAggregator;
 | 
				
			||||||
            this._sqlSugarScope1 = sqlSugarScope;
 | 
					            //this.SqlSugarHelper.Db = sqlSugarScope;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        void DoMyPrismEvent(DeviceMsg msg)
 | 
					        void DoMyPrismEvent(DeviceMsg msg)
 | 
				
			||||||
| 
						 | 
					@ -175,7 +175,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void RequestData()
 | 
					        public void RequestData()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            List<ChannelStock> queryData = _sqlSugarScope1.Queryable<ChannelStock>()
 | 
					            List<ChannelStock> queryData = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
                .Where(cs => cs.DrugId == MachineRecord.DrugId)
 | 
					                .Where(cs => cs.DrugId == MachineRecord.DrugId)
 | 
				
			||||||
                .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1"))
 | 
					                .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1"))
 | 
				
			||||||
                .WhereIF(MachineRecord.ManuNo != null,cs => cs.ManuNo == MachineRecord.ManuNo)
 | 
					                .WhereIF(MachineRecord.ManuNo != null,cs => cs.ManuNo == MachineRecord.ManuNo)
 | 
				
			||||||
| 
						 | 
					@ -229,24 +229,24 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                IsFinishClick = true;
 | 
					                IsFinishClick = true;
 | 
				
			||||||
                string InvoiceId = "RETURN_" + CurrentTimeMillis();
 | 
					                string InvoiceId = "RETURN_" + CurrentTimeMillis();
 | 
				
			||||||
                var f = _sqlSugarScope1.UseTran(() =>
 | 
					                var f = SqlSugarHelper.Db.UseTran(() =>
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                        
 | 
					                        
 | 
				
			||||||
                    // 更新数据 库存信息
 | 
					                    // 更新数据 库存信息
 | 
				
			||||||
                    _sqlSugarScope1.Updateable(new ChannelStock()
 | 
					                    SqlSugarHelper.Db.Updateable(new ChannelStock()
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        Quantity = ChannelStock.Quantity + ReturnQuantity,
 | 
					                        Quantity = ChannelStock.Quantity + ReturnQuantity,
 | 
				
			||||||
                        Id = ChannelStock.Id,
 | 
					                        Id = ChannelStock.Id,
 | 
				
			||||||
                    }).UpdateColumns(it => new { it.Quantity }).ExecuteCommand();
 | 
					                    }).UpdateColumns(it => new { it.Quantity }).ExecuteCommand();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    // 获取更新完库存后的药品库存
 | 
					                    // 获取更新完库存后的药品库存
 | 
				
			||||||
                    List<ChannelStock> nowChannels = _sqlSugarScope1.Queryable<ChannelStock>()
 | 
					                    List<ChannelStock> nowChannels = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
                        .Where(cs => cs.MachineId.Equals(ChannelStock.MachineId))
 | 
					                        .Where(cs => cs.MachineId.Equals(ChannelStock.MachineId))
 | 
				
			||||||
                        .Where(cs => cs.DrugId.Equals(ChannelStock.DrugId))
 | 
					                        .Where(cs => cs.DrugId.Equals(ChannelStock.DrugId))
 | 
				
			||||||
                        .Where(cs => cs.DrawerType == 1)
 | 
					                        .Where(cs => cs.DrawerType == 1)
 | 
				
			||||||
                        .ToList();
 | 
					                        .ToList();
 | 
				
			||||||
                    // 更新数据 取药记录 设置还药数量、状态
 | 
					                    // 更新数据 取药记录 设置还药数量、状态
 | 
				
			||||||
                    _sqlSugarScope1.Updateable(new MachineRecord()
 | 
					                    SqlSugarHelper.Db.Updateable(new MachineRecord()
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        ReturnQuantity1 = MachineRecord.ReturnQuantity1 + ReturnQuantity,
 | 
					                        ReturnQuantity1 = MachineRecord.ReturnQuantity1 + ReturnQuantity,
 | 
				
			||||||
                        Id = MachineRecord.Id,
 | 
					                        Id = MachineRecord.Id,
 | 
				
			||||||
| 
						 | 
					@ -254,7 +254,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                    }).UpdateColumns(it => new { it.ReturnQuantity1, it.Status }).ExecuteCommand();
 | 
					                    }).UpdateColumns(it => new { it.ReturnQuantity1, it.Status }).ExecuteCommand();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    // 保存数据 还药记录
 | 
					                    // 保存数据 还药记录
 | 
				
			||||||
                    _sqlSugarScope1.Insertable(new MachineRecord()
 | 
					                    SqlSugarHelper.Db.Insertable(new MachineRecord()
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            MachineId = ChannelStock.MachineId,
 | 
					                            MachineId = ChannelStock.MachineId,
 | 
				
			||||||
                            DrawerNo = ChannelStock.DrawerNo,
 | 
					                            DrawerNo = ChannelStock.DrawerNo,
 | 
				
			||||||
| 
						 | 
					@ -279,7 +279,14 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                    // 更新屏显库存
 | 
					                    // 更新屏显库存
 | 
				
			||||||
                    if (ChannelStock.BoardType == 5)
 | 
					                    if (ChannelStock.BoardType == 5)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        _portUtil.WriteQuantity(ChannelStock.DrawerNo, ChannelStock.ColNo, ChannelStock.Quantity + ReturnQuantity);
 | 
					                        //_portUtil.WriteQuantity(ChannelStock.DrawerNo, ChannelStock.ColNo, ChannelStock.Quantity + ReturnQuantity);
 | 
				
			||||||
 | 
					                        int totalQuantity = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
 | 
					                        .Where(cs => cs.MachineId.Equals(ChannelStock.MachineId))
 | 
				
			||||||
 | 
					                        .Where(cs => cs.DrawerNo == ChannelStock.DrawerNo)
 | 
				
			||||||
 | 
					                        .Where(cs => cs.ColNo == ChannelStock.ColNo)
 | 
				
			||||||
 | 
					                        .Sum(it => it.Quantity);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        _portUtil.WriteQuantity(ChannelStock.DrawerNo, ChannelStock.ColNo, totalQuantity);
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    AlertMsg alertMsg = new AlertMsg
 | 
					                    AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
| 
						 | 
					@ -330,7 +337,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            }, () => Status == 0).ObservesProperty(() => Status);
 | 
					            }, () => Status == 0).ObservesProperty(() => Status);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public bool KeepAlive => false;
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -76,11 +76,11 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        private DelegateCommand _rowSelected;
 | 
					        private DelegateCommand _rowSelected;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public DelegateCommand RowSelected => _rowSelected ??= new DelegateCommand(OpenOrderDialog);
 | 
					        public DelegateCommand RowSelected => _rowSelected ??= new DelegateCommand(OpenOrderDialog);
 | 
				
			||||||
        private SqlSugarScope _sqlSugarScope1;
 | 
					        //private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
        public ReturnDrugWindow2ViewModel(IDialogService DialogService,SqlSugarScope sqlSugarScope)
 | 
					        public ReturnDrugWindow2ViewModel(IDialogService DialogService,SqlSugarScope sqlSugarScope)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            _dialogService = DialogService;
 | 
					            _dialogService = DialogService;
 | 
				
			||||||
            this._sqlSugarScope1 = sqlSugarScope;
 | 
					            //this.SqlSugarHelper.Db = sqlSugarScope;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public static List<OrderTakeSelect> StaticOrderTakeSelects = new()
 | 
					        public static List<OrderTakeSelect> StaticOrderTakeSelects = new()
 | 
				
			||||||
| 
						 | 
					@ -177,7 +177,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public List<OrderInfo> OrderInfos { get { return _orderInfos; } set { SetProperty(ref _orderInfos, value); } }
 | 
					        public List<OrderInfo> OrderInfos { get { return _orderInfos; } set { SetProperty(ref _orderInfos, value); } }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public bool KeepAlive => false;
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public async void OpenOrderDialog()
 | 
					        public async void OpenOrderDialog()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
| 
						 | 
					@ -216,9 +216,9 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            OrderInfos.Clear();
 | 
					            OrderInfos.Clear();
 | 
				
			||||||
            int totalCount = 0;
 | 
					            int totalCount = 0;
 | 
				
			||||||
            List<OrderInfo> queryData = _sqlSugarScope1.Queryable<OrderInfo>()
 | 
					            List<OrderInfo> queryData = SqlSugarHelper.Db.Queryable<OrderInfo>()
 | 
				
			||||||
                .InnerJoin<OrderDetail>((oi, od) => oi.OrderNo == od.OrderNo)
 | 
					                .InnerJoin<OrderDetail>((oi, od) => oi.OrderNo == od.OrderNo)
 | 
				
			||||||
                .InnerJoin(_sqlSugarScope1.Queryable<ChannelStock>().Where(cs => cs.DrawerType == 1).Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).GroupBy(cs => cs.DrugId), (oi, od, t) => od.DrugId == t.DrugId)
 | 
					                .InnerJoin(SqlSugarHelper.Db.Queryable<ChannelStock>().Where(cs => cs.DrawerType == 1).Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).GroupBy(cs => cs.DrugId), (oi, od, t) => od.DrugId == t.DrugId)
 | 
				
			||||||
                .WhereIF(OrderDate != null, oi => oi.OrderDate.ToString("yyyy-MM-dd") == OrderDate)
 | 
					                .WhereIF(OrderDate != null, oi => oi.OrderDate.ToString("yyyy-MM-dd") == OrderDate)
 | 
				
			||||||
                .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("OrderNo"), oi => oi.OrderNo == SearchValue)
 | 
					                .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("OrderNo"), oi => oi.OrderNo == SearchValue)
 | 
				
			||||||
                .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("PatientId"), oi => oi.PatientId == SearchValue)
 | 
					                .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("PatientId"), oi => oi.PatientId == SearchValue)
 | 
				
			||||||
| 
						 | 
					@ -238,7 +238,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        //接收导航传过来的参数  现在是在此处初始化了表格数据
 | 
					        //接收导航传过来的参数  现在是在此处初始化了表格数据
 | 
				
			||||||
        public void OnNavigatedTo(NavigationContext navigationContext)
 | 
					        public void OnNavigatedTo(NavigationContext navigationContext)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            RequestData();
 | 
					            Task.Factory.StartNew(() => RequestData());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //每次导航的时候,该实列用不用重新创建,true是不重新创建,false是重新创建
 | 
					        //每次导航的时候,该实列用不用重新创建,true是不重新创建,false是重新创建
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,11 +23,11 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        private DelegateCommand _rowSelected;
 | 
					        private DelegateCommand _rowSelected;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public DelegateCommand RowSelected => _rowSelected ??= new DelegateCommand(OpenOrderDialog);
 | 
					        public DelegateCommand RowSelected => _rowSelected ??= new DelegateCommand(OpenOrderDialog);
 | 
				
			||||||
        private SqlSugarScope _sqlSugarScope1;
 | 
					        //private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
        public ReturnDrugWindowViewModel(IDialogService DialogService, SqlSugarScope sqlSugarScope)
 | 
					        public ReturnDrugWindowViewModel(IDialogService DialogService, SqlSugarScope sqlSugarScope)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            _dialogService = DialogService;
 | 
					            _dialogService = DialogService;
 | 
				
			||||||
            this._sqlSugarScope1 = sqlSugarScope;
 | 
					            //this.SqlSugarHelper.Db = sqlSugarScope;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public static List<OrderTakeSelect> StaticSelects = new()
 | 
					        public static List<OrderTakeSelect> StaticSelects = new()
 | 
				
			||||||
| 
						 | 
					@ -134,6 +134,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public List<MachineRecord> MachineRecords { get { return _machineRecords; } set { SetProperty(ref _machineRecords, value); } }
 | 
					        public List<MachineRecord> MachineRecords { get { return _machineRecords; } set { SetProperty(ref _machineRecords, value); } }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public async void OpenOrderDialog()
 | 
					        public async void OpenOrderDialog()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
| 
						 | 
					@ -162,7 +163,6 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            //MessageBox.Show("返回值:" + dialogResult.Result.ToString());
 | 
					            //MessageBox.Show("返回值:" + dialogResult.Result.ToString());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public bool KeepAlive => false;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //这个方法用于拦截请求,continuationCallback(true)就是不拦截,continuationCallback(false)拦截本次操作
 | 
					        //这个方法用于拦截请求,continuationCallback(true)就是不拦截,continuationCallback(false)拦截本次操作
 | 
				
			||||||
        public void ConfirmNavigationRequest(NavigationContext navigationContext, Action<bool> continuationCallback)
 | 
					        public void ConfirmNavigationRequest(NavigationContext navigationContext, Action<bool> continuationCallback)
 | 
				
			||||||
| 
						 | 
					@ -173,7 +173,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void RequestData()
 | 
					        public void RequestData()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            List<MachineRecord> queryData = _sqlSugarScope1.Queryable<MachineRecord>()
 | 
					            List<MachineRecord> queryData = SqlSugarHelper.Db.Queryable<MachineRecord>()
 | 
				
			||||||
                .Includes<DrugInfo>(mr => mr.DrugInfo)
 | 
					                .Includes<DrugInfo>(mr => mr.DrugInfo)
 | 
				
			||||||
                .Includes<UserList>(mr => mr.User)
 | 
					                .Includes<UserList>(mr => mr.User)
 | 
				
			||||||
                .Where(mr => mr.Type == 2)
 | 
					                .Where(mr => mr.Type == 2)
 | 
				
			||||||
| 
						 | 
					@ -192,7 +192,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        //接收导航传过来的参数  现在是在此处初始化了表格数据
 | 
					        //接收导航传过来的参数  现在是在此处初始化了表格数据
 | 
				
			||||||
        public void OnNavigatedTo(NavigationContext navigationContext)
 | 
					        public void OnNavigatedTo(NavigationContext navigationContext)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            RequestData();
 | 
					            Task.Factory.StartNew(() => RequestData());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //每次导航的时候,该实列用不用重新创建,true是不重新创建,false是重新创建
 | 
					        //每次导航的时候,该实列用不用重新创建,true是不重新创建,false是重新创建
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -39,12 +39,12 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        private PortUtil _portUtil;
 | 
					        private PortUtil _portUtil;
 | 
				
			||||||
        IEventAggregator _eventAggregator;
 | 
					        IEventAggregator _eventAggregator;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private SqlSugarScope _sqlSugarScope1;
 | 
					        //private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
        public ReturnEmptyDialogViewModel(PortUtil portUtil, IEventAggregator eventAggregator, SqlSugarScope sqlSugarScope)
 | 
					        public ReturnEmptyDialogViewModel(PortUtil portUtil, IEventAggregator eventAggregator, SqlSugarScope sqlSugarScope)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            _portUtil = portUtil;
 | 
					            _portUtil = portUtil;
 | 
				
			||||||
            _eventAggregator = eventAggregator;
 | 
					            _eventAggregator = eventAggregator;
 | 
				
			||||||
            this._sqlSugarScope1 = sqlSugarScope;
 | 
					            //this.SqlSugarHelper.Db = sqlSugarScope;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        void DoMyPrismEvent(DeviceMsg msg)
 | 
					        void DoMyPrismEvent(DeviceMsg msg)
 | 
				
			||||||
| 
						 | 
					@ -170,7 +170,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void RequestData()
 | 
					        public void RequestData()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            List<MachineRecord> queryData = _sqlSugarScope1.Queryable<MachineRecord>()
 | 
					            List<MachineRecord> queryData = SqlSugarHelper.Db.Queryable<MachineRecord>()
 | 
				
			||||||
                .Includes<UserList>(mr => mr.User)
 | 
					                .Includes<UserList>(mr => mr.User)
 | 
				
			||||||
                .Where(mr => mr.DrugId == ChannelStock.DrugId)
 | 
					                .Where(mr => mr.DrugId == ChannelStock.DrugId)
 | 
				
			||||||
                .Where(mr => mr.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1"))
 | 
					                .Where(mr => mr.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1"))
 | 
				
			||||||
| 
						 | 
					@ -247,18 +247,18 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                if (records.Count > 0 && records.Sum(it => it.Quantity - it.ReturnQuantity1) == ReturnQuantity)
 | 
					                if (records.Count > 0 && records.Sum(it => it.Quantity - it.ReturnQuantity1) == ReturnQuantity)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    string InvoiceId = "RETURN_" + CurrentTimeMillis();
 | 
					                    string InvoiceId = "RETURN_" + CurrentTimeMillis();
 | 
				
			||||||
                    var f = _sqlSugarScope1.UseTran(() =>
 | 
					                    var f = SqlSugarHelper.Db.UseTran(() =>
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        // 更新数据 库存信息
 | 
					                        // 更新数据 库存信息
 | 
				
			||||||
                        _sqlSugarScope1.Updateable(new ChannelStock()
 | 
					                        SqlSugarHelper.Db.Updateable(new ChannelStock()
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            Quantity = ChannelStock.Quantity + ReturnQuantity,
 | 
					                            Quantity = ChannelStock.Quantity + ReturnQuantity,
 | 
				
			||||||
                            Id = ChannelStock.Id,
 | 
					                            Id = ChannelStock.Id,
 | 
				
			||||||
                        }).UpdateColumns(it => new { it.Quantity }).ExecuteCommand();
 | 
					                        }).UpdateColumns(it => new { it.Quantity }).ExecuteCommand();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        // 获取更新完库存后的药品库存
 | 
					                        // 获取更新完库存后的药品库存
 | 
				
			||||||
                        List<ChannelStock> nowChannels = _sqlSugarScope1.Queryable<ChannelStock>()
 | 
					                        List<ChannelStock> nowChannels = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
                            .Where(cs => cs.MachineId.Equals(ChannelStock.MachineId))
 | 
					                            .Where(cs => cs.MachineId.Equals(ChannelStock.MachineId))
 | 
				
			||||||
                            .Where(cs => cs.DrugId.Equals(ChannelStock.DrugId))
 | 
					                            .Where(cs => cs.DrugId.Equals(ChannelStock.DrugId))
 | 
				
			||||||
                            .Where(cs => cs.DrawerType == 1)
 | 
					                            .Where(cs => cs.DrawerType == 1)
 | 
				
			||||||
| 
						 | 
					@ -268,7 +268,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            MachineRecord _MachineRecord = records[i];
 | 
					                            MachineRecord _MachineRecord = records[i];
 | 
				
			||||||
                            // 更新数据 取药记录 设置还药数量、状态
 | 
					                            // 更新数据 取药记录 设置还药数量、状态
 | 
				
			||||||
                            _sqlSugarScope1.Updateable(new MachineRecord()
 | 
					                            SqlSugarHelper.Db.Updateable(new MachineRecord()
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                ReturnQuantity2 = _MachineRecord.Quantity - _MachineRecord.ReturnQuantity1,
 | 
					                                ReturnQuantity2 = _MachineRecord.Quantity - _MachineRecord.ReturnQuantity1,
 | 
				
			||||||
                                Id = _MachineRecord.Id,
 | 
					                                Id = _MachineRecord.Id,
 | 
				
			||||||
| 
						 | 
					@ -276,7 +276,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                            }).UpdateColumns(it => new { it.ReturnQuantity1, it.Status }).ExecuteCommand();
 | 
					                            }).UpdateColumns(it => new { it.ReturnQuantity1, it.Status }).ExecuteCommand();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            // 保存数据 还药空瓶记录
 | 
					                            // 保存数据 还药空瓶记录
 | 
				
			||||||
                            _sqlSugarScope1.Insertable(new MachineRecord()
 | 
					                            SqlSugarHelper.Db.Insertable(new MachineRecord()
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                MachineId = ChannelStock.MachineId,
 | 
					                                MachineId = ChannelStock.MachineId,
 | 
				
			||||||
                                DrawerNo = ChannelStock.DrawerNo,
 | 
					                                DrawerNo = ChannelStock.DrawerNo,
 | 
				
			||||||
| 
						 | 
					@ -371,6 +371,6 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public bool KeepAlive => false;
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -35,11 +35,11 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        IDialogService _dialogService;
 | 
					        IDialogService _dialogService;
 | 
				
			||||||
        private SqlSugarScope _sqlSugarScope1;
 | 
					        //private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
        public ReturnEmptyWindowViewModel(IDialogService dialogService, SqlSugarScope sqlSugarScope)
 | 
					        public ReturnEmptyWindowViewModel(IDialogService dialogService, SqlSugarScope sqlSugarScope)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            _dialogService = dialogService;
 | 
					            _dialogService = dialogService;
 | 
				
			||||||
            this._sqlSugarScope1 = sqlSugarScope;
 | 
					            //this.SqlSugarHelper.Db = sqlSugarScope;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public DelegateCommand RowSelected
 | 
					        public DelegateCommand RowSelected
 | 
				
			||||||
| 
						 | 
					@ -71,7 +71,6 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            //MessageBox.Show("返回值:" + dialogResult.Result.ToString());
 | 
					            //MessageBox.Show("返回值:" + dialogResult.Result.ToString());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public bool KeepAlive => false;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public DelegateCommand Query
 | 
					        public DelegateCommand Query
 | 
				
			||||||
| 
						 | 
					@ -82,6 +81,8 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //这个方法用于拦截请求,continuationCallback(true)就是不拦截,continuationCallback(false)拦截本次操作
 | 
					        //这个方法用于拦截请求,continuationCallback(true)就是不拦截,continuationCallback(false)拦截本次操作
 | 
				
			||||||
        public void ConfirmNavigationRequest(NavigationContext navigationContext, Action<bool> continuationCallback)
 | 
					        public void ConfirmNavigationRequest(NavigationContext navigationContext, Action<bool> continuationCallback)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
| 
						 | 
					@ -99,7 +100,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        void RequestData()
 | 
					        void RequestData()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            Channels = _sqlSugarScope1.Queryable<ChannelStock>()
 | 
					            Channels = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
                .LeftJoin<DrugInfo>((cs,di) => cs.DrugId == di.DrugId.ToString())
 | 
					                .LeftJoin<DrugInfo>((cs,di) => cs.DrugId == di.DrugId.ToString())
 | 
				
			||||||
                .Where((cs) => cs.DrawerType != 1)
 | 
					                .Where((cs) => cs.DrawerType != 1)
 | 
				
			||||||
                .Select((cs, di) => new ChannelStock{
 | 
					                .Select((cs, di) => new ChannelStock{
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -30,11 +30,11 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            get { return _roleList; }
 | 
					            get { return _roleList; }
 | 
				
			||||||
            set { SetProperty(ref _roleList, value); }
 | 
					            set { SetProperty(ref _roleList, value); }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        private SqlSugarScope _sqlSugarScope1;
 | 
					        //private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
        public RoleManagerWindowViewModel(SqlSugarScope sqlSugarScope)
 | 
					        public RoleManagerWindowViewModel(SqlSugarScope sqlSugarScope)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            //_allPremissions = Clone<PremissionDm>(defaultAll);
 | 
					            //_allPremissions = Clone<PremissionDm>(defaultAll);
 | 
				
			||||||
            this._sqlSugarScope1 = sqlSugarScope;
 | 
					            //this.SqlSugarHelper.Db = sqlSugarScope;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public static ObservableCollection<T> Clone<T>(object List)
 | 
					        public static ObservableCollection<T> Clone<T>(object List)
 | 
				
			||||||
| 
						 | 
					@ -214,17 +214,23 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                PremissionImage = "/Images/TbJiay.png",
 | 
					                PremissionImage = "/Images/TbJiay.png",
 | 
				
			||||||
            };
 | 
					            };
 | 
				
			||||||
            ObservableCollection<PremissionDm> jiayaoChild = new ObservableCollection<PremissionDm>();
 | 
					            ObservableCollection<PremissionDm> jiayaoChild = new ObservableCollection<PremissionDm>();
 | 
				
			||||||
            PremissionDm jiayao1 = new PremissionDm
 | 
					            PremissionDm jiayao2 = new PremissionDm
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                Id = 21,
 | 
					                Id = 21,
 | 
				
			||||||
                PremissionName = "自选加药",
 | 
					                PremissionName = "自选加药",
 | 
				
			||||||
                PremissionPath = "SelfAddWindow",
 | 
					                PremissionPath = "SelfAddWindow",
 | 
				
			||||||
            };
 | 
					            };
 | 
				
			||||||
            PremissionDm jiayao2 = new PremissionDm
 | 
					            //PremissionDm jiayao2 = new PremissionDm
 | 
				
			||||||
 | 
					            //{
 | 
				
			||||||
 | 
					            //    Id = 22,
 | 
				
			||||||
 | 
					            //    PremissionName = "调拨入库",
 | 
				
			||||||
 | 
					            //    PremissionPath = "InvoiceInWindow",
 | 
				
			||||||
 | 
					            //};
 | 
				
			||||||
 | 
					            PremissionDm jiayao1 = new PremissionDm
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                Id = 22,
 | 
					                Id = 22,
 | 
				
			||||||
                PremissionName = "调拨入库",
 | 
					                PremissionName = "调拨入库",
 | 
				
			||||||
                PremissionPath = "InvoiceInWindow",
 | 
					                PremissionPath = "InvoiceInNewWindow",
 | 
				
			||||||
            };
 | 
					            };
 | 
				
			||||||
            PremissionDm jiayao3 = new PremissionDm
 | 
					            PremissionDm jiayao3 = new PremissionDm
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
| 
						 | 
					@ -234,13 +240,20 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            };
 | 
					            };
 | 
				
			||||||
            PremissionDm jiayao4 = new PremissionDm
 | 
					            PremissionDm jiayao4 = new PremissionDm
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                Id = 24,
 | 
					                Id = 25,
 | 
				
			||||||
                PremissionName = "加药记录",
 | 
					                PremissionName = "加药记录",
 | 
				
			||||||
                PremissionPath = "AddRecordWindow",
 | 
					                PremissionPath = "AddRecordWindow",
 | 
				
			||||||
            };
 | 
					            };
 | 
				
			||||||
 | 
					            PremissionDm jiayao5 = new PremissionDm
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Id = 24,
 | 
				
			||||||
 | 
					                PremissionName = "多批次抽屉加药",
 | 
				
			||||||
 | 
					                PremissionPath = "AddDrugControl",
 | 
				
			||||||
 | 
					            };
 | 
				
			||||||
            jiayaoChild.Add(jiayao1);
 | 
					            jiayaoChild.Add(jiayao1);
 | 
				
			||||||
            jiayaoChild.Add(jiayao2);
 | 
					            jiayaoChild.Add(jiayao2);
 | 
				
			||||||
            jiayaoChild.Add(jiayao3);
 | 
					            jiayaoChild.Add(jiayao3);
 | 
				
			||||||
 | 
					            jiayaoChild.Add(jiayao5);
 | 
				
			||||||
            jiayaoChild.Add(jiayao4);
 | 
					            jiayaoChild.Add(jiayao4);
 | 
				
			||||||
            jiayao.Children = jiayaoChild;
 | 
					            jiayao.Children = jiayaoChild;
 | 
				
			||||||
            defaultAll.Add(jiayao);
 | 
					            defaultAll.Add(jiayao);
 | 
				
			||||||
| 
						 | 
					@ -301,13 +314,20 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                Id = 42,
 | 
					                Id = 42,
 | 
				
			||||||
                PremissionName = "库存盘点",
 | 
					                PremissionName = "库存盘点",
 | 
				
			||||||
                PremissionPath = "CheckStockWindow",
 | 
					                PremissionPath = "CheckStockNewWindow",// "CheckStockWindow",
 | 
				
			||||||
            };
 | 
					            };
 | 
				
			||||||
 | 
					            //PremissionDm kuguan3 = new PremissionDm
 | 
				
			||||||
 | 
					            //{
 | 
				
			||||||
 | 
					            //    Id = 43,
 | 
				
			||||||
 | 
					            //    PremissionName = "盘点记录",
 | 
				
			||||||
 | 
					            //    PremissionPath = "CheckRecordWindow",
 | 
				
			||||||
 | 
					            //};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            PremissionDm kuguan3 = new PremissionDm
 | 
					            PremissionDm kuguan3 = new PremissionDm
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                Id = 43,
 | 
					                Id = 43,
 | 
				
			||||||
                PremissionName = "盘点记录",
 | 
					                PremissionName = "盘点记录",
 | 
				
			||||||
                PremissionPath = "CheckRecordWindow",
 | 
					                PremissionPath = "CheckRecordNewWindow",
 | 
				
			||||||
            };
 | 
					            };
 | 
				
			||||||
            PremissionDm kuguan4 = new PremissionDm
 | 
					            PremissionDm kuguan4 = new PremissionDm
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
| 
						 | 
					@ -321,11 +341,25 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                PremissionName = "交接班记录",
 | 
					                PremissionName = "交接班记录",
 | 
				
			||||||
                PremissionPath = "ChangeShiftsListWindow",
 | 
					                PremissionPath = "ChangeShiftsListWindow",
 | 
				
			||||||
            };
 | 
					            };
 | 
				
			||||||
 | 
					            PremissionDm kuguan6 = new PremissionDm
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Id = 46,
 | 
				
			||||||
 | 
					                PremissionName = "账册",
 | 
				
			||||||
 | 
					                PremissionPath = "AccountWindow",
 | 
				
			||||||
 | 
					            };
 | 
				
			||||||
 | 
					            //PremissionDm kuguan7 = new PremissionDm
 | 
				
			||||||
 | 
					            //{
 | 
				
			||||||
 | 
					            //    Id = 47,
 | 
				
			||||||
 | 
					            //    PremissionName = "库存盘点",
 | 
				
			||||||
 | 
					            //    PremissionPath = "CheckStockNew2Window",
 | 
				
			||||||
 | 
					            //};
 | 
				
			||||||
            kuguanChild.Add(kuguan1);
 | 
					            kuguanChild.Add(kuguan1);
 | 
				
			||||||
            kuguanChild.Add(kuguan2);
 | 
					            kuguanChild.Add(kuguan2);
 | 
				
			||||||
            kuguanChild.Add(kuguan3);
 | 
					            kuguanChild.Add(kuguan3);
 | 
				
			||||||
            kuguanChild.Add(kuguan4);
 | 
					            kuguanChild.Add(kuguan4);
 | 
				
			||||||
            kuguanChild.Add(kuguan5);
 | 
					            kuguanChild.Add(kuguan5);
 | 
				
			||||||
 | 
					            kuguanChild.Add(kuguan6);
 | 
				
			||||||
 | 
					            //kuguanChild.Add(kuguan7);
 | 
				
			||||||
            kuguan.Children = kuguanChild;
 | 
					            kuguan.Children = kuguanChild;
 | 
				
			||||||
            defaultAll.Add(kuguan);
 | 
					            defaultAll.Add(kuguan);
 | 
				
			||||||
            #endregion
 | 
					            #endregion
 | 
				
			||||||
| 
						 | 
					@ -400,7 +434,6 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            set => SetProperty(ref _rightPremission, value);
 | 
					            set => SetProperty(ref _rightPremission, value);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public bool KeepAlive => false;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public T DeepCopyByReflect<T>(T obj)
 | 
					        public T DeepCopyByReflect<T>(T obj)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
| 
						 | 
					@ -664,14 +697,14 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                Role.Id = 0;
 | 
					                Role.Id = 0;
 | 
				
			||||||
                Role.MachineId = ConfigurationManager.AppSettings["machineId"] ?? "DM1";
 | 
					                Role.MachineId = ConfigurationManager.AppSettings["machineId"] ?? "DM1";
 | 
				
			||||||
                Role.Permissions = RightPremissions.ToList();
 | 
					                Role.Permissions = RightPremissions.ToList();
 | 
				
			||||||
                List<RoleDm> roleList = _sqlSugarScope1.Queryable<RoleDm>().Where(r => r.RoleName == Role.RoleName).ToList();
 | 
					                List<RoleDm> roleList = SqlSugarHelper.Db.Queryable<RoleDm>().Where(r => r.RoleName == Role.RoleName).ToList();
 | 
				
			||||||
                if(roleList.Count>0)
 | 
					                if(roleList.Count>0)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    SnackbarBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#b71c1c"));
 | 
					                    SnackbarBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#b71c1c"));
 | 
				
			||||||
                    SnackbarMessageQueue.Enqueue("该角色已存在!");
 | 
					                    SnackbarMessageQueue.Enqueue("该角色已存在!");
 | 
				
			||||||
                    return;
 | 
					                    return;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                _sqlSugarScope1.Insertable<RoleDm>(Role).ExecuteCommand();
 | 
					                SqlSugarHelper.Db.Insertable<RoleDm>(Role).ExecuteCommand();
 | 
				
			||||||
                RequestData();
 | 
					                RequestData();
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					@ -681,11 +714,13 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            get => new DelegateCommand(() =>
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                Role.Permissions = RightPremissions.ToList();
 | 
					                Role.Permissions = RightPremissions.ToList();
 | 
				
			||||||
                _sqlSugarScope1.Updateable<RoleDm>(Role).ExecuteCommand();
 | 
					                SqlSugarHelper.Db.Updateable<RoleDm>(Role).ExecuteCommand();
 | 
				
			||||||
                RequestData();
 | 
					                RequestData();
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //这个方法用于拦截请求,continuationCallback(true)就是不拦截,continuationCallback(false)拦截本次操作
 | 
					        //这个方法用于拦截请求,continuationCallback(true)就是不拦截,continuationCallback(false)拦截本次操作
 | 
				
			||||||
        public void ConfirmNavigationRequest(NavigationContext navigationContext, Action<bool> continuationCallback)
 | 
					        public void ConfirmNavigationRequest(NavigationContext navigationContext, Action<bool> continuationCallback)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
| 
						 | 
					@ -704,7 +739,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        void RequestData()
 | 
					        void RequestData()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            RoleList = _sqlSugarScope1.Queryable<RoleDm>()
 | 
					            RoleList = SqlSugarHelper.Db.Queryable<RoleDm>()
 | 
				
			||||||
                .Where(di => di.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1"))
 | 
					                .Where(di => di.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1"))
 | 
				
			||||||
                .WhereIF(!String.IsNullOrEmpty(SearchValue), (di) => di.RoleName.Contains(SearchValue??""))
 | 
					                .WhereIF(!String.IsNullOrEmpty(SearchValue), (di) => di.RoleName.Contains(SearchValue??""))
 | 
				
			||||||
                .Select(r => r)
 | 
					                .Select(r => r)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,6 +19,7 @@ using DM_Weight.util;
 | 
				
			||||||
using DM_Weight.Views;
 | 
					using DM_Weight.Views;
 | 
				
			||||||
using System.Threading;
 | 
					using System.Threading;
 | 
				
			||||||
using SqlSugar;
 | 
					using SqlSugar;
 | 
				
			||||||
 | 
					using System.Configuration;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace DM_Weight.ViewModels
 | 
					namespace DM_Weight.ViewModels
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -41,12 +42,12 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private PortUtil _portUtil;
 | 
					        private PortUtil _portUtil;
 | 
				
			||||||
        IEventAggregator _eventAggregator;
 | 
					        IEventAggregator _eventAggregator;
 | 
				
			||||||
        private SqlSugarScope _sqlSugarScope1;
 | 
					        ////private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
        public SelfAddDialogViewModel(PortUtil portUtil, IEventAggregator eventAggregator, SqlSugarScope sqlSugarScope)
 | 
					        public SelfAddDialogViewModel(PortUtil portUtil, IEventAggregator eventAggregator)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            _portUtil = portUtil;
 | 
					            _portUtil = portUtil;
 | 
				
			||||||
            _eventAggregator = eventAggregator;
 | 
					            _eventAggregator = eventAggregator;
 | 
				
			||||||
            this._sqlSugarScope1 = sqlSugarScope;
 | 
					            ////this.SqlSugarHelper.Db = sqlSugarScope;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        void DoMyPrismEvent(DeviceMsg msg)
 | 
					        void DoMyPrismEvent(DeviceMsg msg)
 | 
				
			||||||
| 
						 | 
					@ -192,7 +193,18 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            _portUtil.SpeakAsync("正在打开" + DrawerNo + "号抽屉");
 | 
					            _portUtil.SpeakAsync("正在打开" + DrawerNo + "号抽屉");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            List<ChannelStock> singleChannels = channelStocks.FindAll(it => it.BoardType != 1);
 | 
					            List<ChannelStock> singleChannels = channelStocks
 | 
				
			||||||
 | 
					                .GroupBy(it => new {
 | 
				
			||||||
 | 
					                    it.DrawerNo, it.ColNo
 | 
				
			||||||
 | 
					                })
 | 
				
			||||||
 | 
					                .Select(it => {
 | 
				
			||||||
 | 
					                    var ret = it.First();
 | 
				
			||||||
 | 
					                    ret.Quantity = it.Sum(it => it.Quantity);
 | 
				
			||||||
 | 
					                    ret.AddQuantity = it.Sum(it => it.AddQuantity);
 | 
				
			||||||
 | 
					                    return ret;
 | 
				
			||||||
 | 
					                })
 | 
				
			||||||
 | 
					                .ToList()
 | 
				
			||||||
 | 
					                .FindAll(it => it.BoardType != 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            _portUtil.WindowName = WindowName;
 | 
					            _portUtil.WindowName = WindowName;
 | 
				
			||||||
            _portUtil.BoardType = singleChannels.Count > 0 ? singleChannels[0].BoardType : 1;
 | 
					            _portUtil.BoardType = singleChannels.Count > 0 ? singleChannels[0].BoardType : 1;
 | 
				
			||||||
| 
						 | 
					@ -202,6 +214,18 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if((singleChannels.Count > 0 ? singleChannels[0].BoardType : 1) == 5)
 | 
					            if((singleChannels.Count > 0 ? singleChannels[0].BoardType : 1) == 5)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
 | 
					                //List<ChannelStock> ChannelLst = channelStocks.Where(it => it.BoardType != 1)
 | 
				
			||||||
 | 
					                //                                                       .GroupBy(it => it.ColNo)
 | 
				
			||||||
 | 
					                //                                                       .Select(it =>
 | 
				
			||||||
 | 
					                //                                                       {
 | 
				
			||||||
 | 
					                //                                                           var ret = it.First();
 | 
				
			||||||
 | 
					                //                                                           ret.Quantity = it.Sum(itx => itx.Quantity);
 | 
				
			||||||
 | 
					                //                                                           ret.AddQuantity = it.Sum(itx => itx.AddQuantity);
 | 
				
			||||||
 | 
					                //                                                           return ret;
 | 
				
			||||||
 | 
					                //                                                       }).ToList();
 | 
				
			||||||
 | 
					                ////将库位多批次的总库存数更新标签
 | 
				
			||||||
 | 
					                //_portUtil.WriteQuantity(singleChannels[0].DrawerNo, singleChannels[0].ColNo, singleChannels.Sum(it => it.Quantity) + singleChannels.Sum(it => it.AddQuantity));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                // 发送加药数量
 | 
					                // 发送加药数量
 | 
				
			||||||
                singleChannels.ForEach(it =>
 | 
					                singleChannels.ForEach(it =>
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
| 
						 | 
					@ -234,7 +258,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                    List<ChannelStock> record = ChannelStocks.ToList();
 | 
					                    List<ChannelStock> record = ChannelStocks.ToList();
 | 
				
			||||||
                    //string InvoiceId = "SELF_" + CurrentTimeMillis();
 | 
					                    //string InvoiceId = "SELF_" + CurrentTimeMillis();
 | 
				
			||||||
                    string InvoiceId = PZH;
 | 
					                    string InvoiceId = PZH;
 | 
				
			||||||
                    var f = _sqlSugarScope1.UseTran(() =>
 | 
					                    var f = SqlSugarHelper.Db.UseTran(() =>
 | 
				
			||||||
                    {   
 | 
					                    {   
 | 
				
			||||||
                        for (int i = 0; i < record.Count; i++)
 | 
					                        for (int i = 0; i < record.Count; i++)
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
| 
						 | 
					@ -244,7 +268,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                                _portUtil.SetNumCount(it.DrawerNo, it.ColNo, it.AddQuantity);
 | 
					                                _portUtil.SetNumCount(it.DrawerNo, it.ColNo, it.AddQuantity);
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                            // 更新数据 库存信息
 | 
					                            // 更新数据 库存信息
 | 
				
			||||||
                            _sqlSugarScope1.Updateable(new ChannelStock()
 | 
					                            SqlSugarHelper.Db.Updateable(new ChannelStock()
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                Quantity = it.Quantity + it.AddQuantity,
 | 
					                                Quantity = it.Quantity + it.AddQuantity,
 | 
				
			||||||
                                PosNo = 1,
 | 
					                                PosNo = 1,
 | 
				
			||||||
| 
						 | 
					@ -253,14 +277,14 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                                Id = it.Id,
 | 
					                                Id = it.Id,
 | 
				
			||||||
                            }).UpdateColumns(it => new { it.Quantity, it.ManuNo, it.EffDate, it.PosNo }).ExecuteCommand();
 | 
					                            }).UpdateColumns(it => new { it.Quantity, it.ManuNo, it.EffDate, it.PosNo }).ExecuteCommand();
 | 
				
			||||||
                            // 获取更新完库存后的药品库存
 | 
					                            // 获取更新完库存后的药品库存
 | 
				
			||||||
                            List<ChannelStock> nowChannels = _sqlSugarScope1.Queryable<ChannelStock>()
 | 
					                            List<ChannelStock> nowChannels = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
                                .Where(cs => cs.MachineId.Equals(it.MachineId))
 | 
					                                .Where(cs => cs.MachineId.Equals(it.MachineId))
 | 
				
			||||||
                                .Where(cs => cs.DrugId.Equals(it.DrugId))
 | 
					                                .Where(cs => cs.DrugId.Equals(it.DrugId))
 | 
				
			||||||
                                .Where(cs => cs.DrawerType == 1)
 | 
					                                .Where(cs => cs.DrawerType == 1)
 | 
				
			||||||
                                .ToList();
 | 
					                                .ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            // 保存数据 出/入库记录
 | 
					                            // 保存数据 出/入库记录
 | 
				
			||||||
                            _sqlSugarScope1.Insertable(new MachineRecord()
 | 
					                            SqlSugarHelper.Db.Insertable(new MachineRecord()
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                MachineId = it.MachineId,
 | 
					                                MachineId = it.MachineId,
 | 
				
			||||||
                                DrawerNo = it.DrawerNo,
 | 
					                                DrawerNo = it.DrawerNo,
 | 
				
			||||||
| 
						 | 
					@ -275,7 +299,9 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                                Type = 1,
 | 
					                                Type = 1,
 | 
				
			||||||
                                InvoiceId = InvoiceId,
 | 
					                                InvoiceId = InvoiceId,
 | 
				
			||||||
                                StockQuantity = nowChannels.Sum(it => it.Quantity),
 | 
					                                StockQuantity = nowChannels.Sum(it => it.Quantity),
 | 
				
			||||||
                                ManunoQuantity = nowChannels.FindAll(it2 => it2.ManuNo == it.ManuNo).Sum(it => it.Quantity)
 | 
					                                ManunoQuantity = nowChannels.FindAll(it2 => it2.ManuNo == it.ManuNo).Sum(it => it.Quantity),
 | 
				
			||||||
 | 
					                                SupplierDept = ConfigurationManager.AppSettings["supplierDept"].ToString(),
 | 
				
			||||||
 | 
					                                ReceiveDept = ConfigurationManager.AppSettings["receiveDept"].ToString()
 | 
				
			||||||
                            }).ExecuteCommand();
 | 
					                            }).ExecuteCommand();
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                        return true;
 | 
					                        return true;
 | 
				
			||||||
| 
						 | 
					@ -283,15 +309,43 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                    if (f.Data)
 | 
					                    if (f.Data)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        // 更新屏显库存
 | 
					                        // 更新屏显库存
 | 
				
			||||||
                        List<ChannelStock> singleChannels = record.FindAll(it => it.BoardType != 1);
 | 
					                        //List<ChannelStock> singleChannels = record.FindAll(it => it.BoardType != 1);
 | 
				
			||||||
                        if ((singleChannels.Count > 0 ? singleChannels[0].BoardType : 1) == 5)
 | 
					                        List<ChannelStock> singleChannels = record.Where(it => it.BoardType != 1)
 | 
				
			||||||
 | 
					                                                                         .GroupBy(it => new { it.DrawerNo,it.ColNo })
 | 
				
			||||||
 | 
					                                                                         .Select(it =>
 | 
				
			||||||
 | 
					                                                                         {
 | 
				
			||||||
 | 
					                                                                             var ret = it.First();
 | 
				
			||||||
 | 
					                                                                             //ret.Quantity = it.Sum(itx => itx.Quantity);
 | 
				
			||||||
 | 
					                                                                             //ret.AddQuantity = it.Sum(itx => itx.AddQuantity);
 | 
				
			||||||
 | 
					                                                                             return ret;
 | 
				
			||||||
 | 
					                                                                         }).ToList();
 | 
				
			||||||
 | 
					                        //if ((singleChannels.Count > 0 ? singleChannels[0].BoardType : 1) == 5)
 | 
				
			||||||
 | 
					                        //{
 | 
				
			||||||
 | 
					                        //    //将库位多批次的总库存数更新标签
 | 
				
			||||||
 | 
					                        //    //_portUtil.WriteQuantity(singleChannels[0].DrawerNo, singleChannels[0].ColNo, singleChannels.Sum(it => it.Quantity) + singleChannels.Sum(it => it.AddQuantity));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        //    singleChannels.ForEach(it =>
 | 
				
			||||||
 | 
					                        //    {
 | 
				
			||||||
 | 
					                        //        _portUtil.WriteQuantity(it.DrawerNo, it.ColNo, it.Quantity + it.AddQuantity);
 | 
				
			||||||
 | 
					                        //    });
 | 
				
			||||||
 | 
					                        //}
 | 
				
			||||||
 | 
					                        if(singleChannels!=null&& singleChannels.Count>0)
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            singleChannels.ForEach(it =>
 | 
					                            for (int i = 0; i < singleChannels.Count; i++)
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                _portUtil.WriteQuantity(it.DrawerNo, it.ColNo, it.Quantity + it.AddQuantity);
 | 
					                                if (singleChannels[i].BoardType == 5)
 | 
				
			||||||
                            });
 | 
					                                {
 | 
				
			||||||
 | 
					                                    int totalQuantity = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
 | 
					                                                                        .Where(cs => cs.MachineId == singleChannels[i].MachineId)
 | 
				
			||||||
 | 
					                                                                        .Where(cs => cs.DrawerNo == singleChannels[i].DrawerNo)
 | 
				
			||||||
 | 
					                                                                        .Where(cs => cs.ColNo == singleChannels[i].ColNo)
 | 
				
			||||||
 | 
					                                                                        .Sum(it => it.Quantity);
 | 
				
			||||||
 | 
					                                    //将库位多批次的总库存数更新标签
 | 
				
			||||||
 | 
					                                    _portUtil.WriteQuantity(singleChannels[i].DrawerNo, singleChannels[i].ColNo, totalQuantity);
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                        
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        AlertMsg alertMsg = new AlertMsg
 | 
					                        AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
| 
						 | 
					@ -350,6 +404,6 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public bool KeepAlive => false;
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,211 @@
 | 
				
			||||||
 | 
					using Prism.Commands;
 | 
				
			||||||
 | 
					using Prism.Mvvm;
 | 
				
			||||||
 | 
					using Prism.Regions;
 | 
				
			||||||
 | 
					using Prism.Services.Dialogs;
 | 
				
			||||||
 | 
					using SqlSugar;
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Configuration;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using DM_Weight.Models;
 | 
				
			||||||
 | 
					using DM_Weight.select;
 | 
				
			||||||
 | 
					using DM_Weight.util;
 | 
				
			||||||
 | 
					using Prism.Events;
 | 
				
			||||||
 | 
					using DM_Weight.msg;
 | 
				
			||||||
 | 
					using log4net;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class SelfAddWindowViewModel_Copy : BindableBase, IConfirmNavigationRequest, IRegionMemberLifetime
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        IDialogService _dialogService;
 | 
				
			||||||
 | 
					        IEventAggregator _eventAggregator;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public static List<OrderTakeSelect> StaticSelects = new()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            new OrderTakeSelect
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Code = "DrugName",
 | 
				
			||||||
 | 
					                Name = "药品名称"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            new OrderTakeSelect
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Code = "PyCode",
 | 
				
			||||||
 | 
					                Name = "拼音码"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            new OrderTakeSelect
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Code = "DrugBarcode",
 | 
				
			||||||
 | 
					                Name = "药品条码"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            new OrderTakeSelect
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Code = "DrugId",
 | 
				
			||||||
 | 
					                Name = "药品编码"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					        ////private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
 | 
					        private readonly ILog logger = LogManager.GetLogger(typeof(SelfAddWindowViewModel));
 | 
				
			||||||
 | 
					        public SelfAddWindowViewModel_Copy(IDialogService DialogService,IEventAggregator eventAggregator)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            logger.Info("进入SelfAddWindowViewModel构造函数");
 | 
				
			||||||
 | 
					            _dialogService = DialogService;
 | 
				
			||||||
 | 
					            _eventAggregator = eventAggregator;
 | 
				
			||||||
 | 
					            ////this.SqlSugarHelper.Db = sqlSugarScope;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private List<OrderTakeSelect> _selects = StaticSelects;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public List<OrderTakeSelect> Selects
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get { return _selects; }
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _selects, value);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private OrderTakeSelect _selectedItem = StaticSelects[0];
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 查询条件 查询字段
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public OrderTakeSelect SelectedItem
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get { return _selectedItem; }
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _selectedItem, value);
 | 
				
			||||||
 | 
					                RequestChannelData();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        } 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private string? _searchValue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 查询条件 查询字段值
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public string? SearchValue
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get { return _searchValue; }
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SetProperty(ref _searchValue, value);
 | 
				
			||||||
 | 
					                RequestChannelData();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private List<ChannelStock> _channelStocks = new();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public List<ChannelStock> ChannelStocks { get { return _channelStocks; } set { SetProperty(ref _channelStocks, value); } }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public DelegateCommand QueryCommand
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                RequestChannelData();
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public DelegateCommand OpenSelfDialog
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                List<ChannelStock> addChannels = ChannelStocks.FindAll(it => it.AddQuantity > 0).ToList();
 | 
				
			||||||
 | 
					                if (addChannels.Count > 0)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    addChannels.Sort((a, b) =>
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        if ((a.DrawerNo - b.DrawerNo) == 0)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            return a.ColNo - b.ColNo;
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                        return a.DrawerNo - b.DrawerNo;
 | 
				
			||||||
 | 
					                    });
 | 
				
			||||||
 | 
					                    DialogParameters dialogParameters = new DialogParameters();
 | 
				
			||||||
 | 
					                    dialogParameters.Add("ChannelStocks", addChannels);
 | 
				
			||||||
 | 
					                    DialogServiceExtensions.ShowDialogHost(_dialogService, "SelfAddDialog", dialogParameters, DoDialogResult, "RootDialog");
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        Message = "请填写加药数量",
 | 
				
			||||||
 | 
					                        Type = MsgType.ERROR
 | 
				
			||||||
 | 
					                    };
 | 
				
			||||||
 | 
					                    _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private void DoDialogResult(IDialogResult dialogResult)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            // 委托   被动执行     被子窗口执行
 | 
				
			||||||
 | 
					            // dialogResult  第一方面可以拿到任意参数   第二方面   可判断关闭状态
 | 
				
			||||||
 | 
					            if (dialogResult.Result == ButtonResult.OK)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                RequestChannelData();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            //MessageBox.Show("返回值:" + dialogResult.Result.ToString());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //这个方法用于拦截请求,continuationCallback(true)就是不拦截,continuationCallback(false)拦截本次操作
 | 
				
			||||||
 | 
					        public void ConfirmNavigationRequest(NavigationContext navigationContext, Action<bool> continuationCallback)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            continuationCallback(true);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void RequestChannelData()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            logger.Info("开始SelfAddWindowViewModel_查询数据");
 | 
				
			||||||
 | 
					            List<ChannelStock> queryData = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
 | 
					                .Includes<DrugInfo>(cs => cs.DrugInfo)
 | 
				
			||||||
 | 
					                .InnerJoin<ChannelList>((cs, cl) => cs.Chnguid == cl.Id && cs.DrugId == cl.DrugId)
 | 
				
			||||||
 | 
					                .Where(cs => cs.DrugId != null)
 | 
				
			||||||
 | 
					                .Where(cs => cs.DrawerType == 1)
 | 
				
			||||||
 | 
					                .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1"))
 | 
				
			||||||
 | 
					                .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("DrugId"), (cs) => cs.DrugId.Contains(SearchValue))
 | 
				
			||||||
 | 
					                .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("DrugName"), (cs) => cs.DrugInfo.DrugName.Contains(SearchValue))
 | 
				
			||||||
 | 
					                .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("PyCode"), (cs) => cs.DrugInfo.PyCode.Contains(SearchValue))
 | 
				
			||||||
 | 
					                .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("DrugBarcode"), (cs) => cs.DrugInfo.DrugBarcode.Contains(SearchValue))
 | 
				
			||||||
 | 
					                .OrderBy(cs => cs.DrugId)
 | 
				
			||||||
 | 
					                .OrderBy(cs => cs.DrawerNo)
 | 
				
			||||||
 | 
					                .OrderBy(cs => cs.ColNo)
 | 
				
			||||||
 | 
					                .ToList();
 | 
				
			||||||
 | 
					            ChannelStocks = queryData;
 | 
				
			||||||
 | 
					            logger.Info("结束SelfAddWindowViewModel_查询数据");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //接收导航传过来的参数  现在是在此处初始化了表格数据
 | 
				
			||||||
 | 
					        public void OnNavigatedTo(NavigationContext navigationContext)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            logger.Info("进入SelfAddWindowViewModel_OnNavigatedTo");
 | 
				
			||||||
 | 
					            Task.Factory.StartNew(() => RequestChannelData());
 | 
				
			||||||
 | 
					            logger.Info("结束SelfAddWindowViewModel_OnNavigatedTo");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //每次导航的时候,该实列用不用重新创建,true是不重新创建,false是重新创建
 | 
				
			||||||
 | 
					        public bool IsNavigationTarget(NavigationContext navigationContext)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //这个方法用于拦截请求
 | 
				
			||||||
 | 
					        public void OnNavigatedFrom(NavigationContext navigationContext)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -14,6 +14,8 @@ using DM_Weight.select;
 | 
				
			||||||
using DM_Weight.util;
 | 
					using DM_Weight.util;
 | 
				
			||||||
using Prism.Events;
 | 
					using Prism.Events;
 | 
				
			||||||
using DM_Weight.msg;
 | 
					using DM_Weight.msg;
 | 
				
			||||||
 | 
					using log4net;
 | 
				
			||||||
 | 
					using System.Windows.Documents;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace DM_Weight.ViewModels
 | 
					namespace DM_Weight.ViewModels
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -45,15 +47,17 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                Name = "药品编码"
 | 
					                Name = "药品编码"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
        private SqlSugarScope _sqlSugarScope1;
 | 
					        ////private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
        public SelfAddWindowViewModel(IDialogService DialogService,IEventAggregator eventAggregator, SqlSugarScope sqlSugarScope)
 | 
					        private readonly ILog logger = LogManager.GetLogger(typeof(SelfAddWindowViewModel));
 | 
				
			||||||
 | 
					        public SelfAddWindowViewModel(IDialogService DialogService, IEventAggregator eventAggregator)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					            logger.Info("进入SelfAddWindowViewModel构造函数");
 | 
				
			||||||
            _dialogService = DialogService;
 | 
					            _dialogService = DialogService;
 | 
				
			||||||
            _eventAggregator = eventAggregator;
 | 
					            _eventAggregator = eventAggregator;
 | 
				
			||||||
            this._sqlSugarScope1 = sqlSugarScope;
 | 
					            ////this.SqlSugarHelper.Db = sqlSugarScope;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private List<OrderTakeSelect> _selects = StaticSelects;
 | 
					        private List<OrderTakeSelect> _selects = StaticSelects;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -78,7 +82,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                SetProperty(ref _selectedItem, value);
 | 
					                SetProperty(ref _selectedItem, value);
 | 
				
			||||||
                RequestChannelData();
 | 
					                RequestChannelData();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        } 
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private string? _searchValue;
 | 
					        private string? _searchValue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -115,7 +119,18 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            get => new DelegateCommand(() =>
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                List<ChannelStock> addChannels = ChannelStocks.FindAll(it => it.AddQuantity > 0).ToList();
 | 
					
 | 
				
			||||||
 | 
					                List<ChannelStock> addChannels = Drugs.Aggregate(new List<ChannelStock>(), (a, b) =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    a.AddRange(b.channelStocks.FindAll(it => it.AddQuantity > 0).Select(cs =>
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        cs.DrugInfo = b;
 | 
				
			||||||
 | 
					                        return cs;
 | 
				
			||||||
 | 
					                    }).ToList());
 | 
				
			||||||
 | 
					                    return a;
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                //List<ChannelStock> addChannels = ChannelStocks.FindAll(it => it.AddQuantity > 0).ToList();
 | 
				
			||||||
                if (addChannels.Count > 0)
 | 
					                if (addChannels.Count > 0)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    addChannels.Sort((a, b) =>
 | 
					                    addChannels.Sort((a, b) =>
 | 
				
			||||||
| 
						 | 
					@ -142,6 +157,8 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private void DoDialogResult(IDialogResult dialogResult)
 | 
					        private void DoDialogResult(IDialogResult dialogResult)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            // 委托   被动执行     被子窗口执行
 | 
					            // 委托   被动执行     被子窗口执行
 | 
				
			||||||
| 
						 | 
					@ -153,7 +170,6 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            //MessageBox.Show("返回值:" + dialogResult.Result.ToString());
 | 
					            //MessageBox.Show("返回值:" + dialogResult.Result.ToString());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public bool KeepAlive => false;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //这个方法用于拦截请求,continuationCallback(true)就是不拦截,continuationCallback(false)拦截本次操作
 | 
					        //这个方法用于拦截请求,continuationCallback(true)就是不拦截,continuationCallback(false)拦截本次操作
 | 
				
			||||||
        public void ConfirmNavigationRequest(NavigationContext navigationContext, Action<bool> continuationCallback)
 | 
					        public void ConfirmNavigationRequest(NavigationContext navigationContext, Action<bool> continuationCallback)
 | 
				
			||||||
| 
						 | 
					@ -162,29 +178,57 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private List<DrugInfo> _drugs = new();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public List<DrugInfo> Drugs
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _drugs;
 | 
				
			||||||
 | 
					            set => SetProperty(ref _drugs, value);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        private DrugInfo? _drug;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public DrugInfo? Drug
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _drug;
 | 
				
			||||||
 | 
					            set => SetProperty(ref _drug, value);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        public void RequestChannelData()
 | 
					        public void RequestChannelData()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            List<ChannelStock> queryData = _sqlSugarScope1.Queryable<ChannelStock>()
 | 
					            logger.Info("开始SelfAddWindowViewModel_查询数据");
 | 
				
			||||||
                .Includes<DrugInfo>(cs => cs.DrugInfo)
 | 
					            //List<ChannelStock> queryData = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
                .Where(cs => cs.DrugId != null)
 | 
					            //    .Includes<DrugInfo>(cs => cs.DrugInfo)
 | 
				
			||||||
                .Where(cs => cs.DrawerType == 1)
 | 
					            //    .InnerJoin<ChannelList>((cs, cl) => cs.Chnguid == cl.Id && cs.DrugId == cl.DrugId)
 | 
				
			||||||
                .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1"))
 | 
					            //    .Where(cs => cs.DrugId != null)
 | 
				
			||||||
 | 
					            //    .Where(cs => cs.DrawerType == 1)
 | 
				
			||||||
 | 
					            //    .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1"))
 | 
				
			||||||
 | 
					            //    .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("DrugId"), (cs) => cs.DrugId.Contains(SearchValue))
 | 
				
			||||||
 | 
					            //    .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("DrugName"), (cs) => cs.DrugInfo.DrugName.Contains(SearchValue))
 | 
				
			||||||
 | 
					            //    .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("PyCode"), (cs) => cs.DrugInfo.PyCode.Contains(SearchValue))
 | 
				
			||||||
 | 
					            //    .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("DrugBarcode"), (cs) => cs.DrugInfo.DrugBarcode.Contains(SearchValue))
 | 
				
			||||||
 | 
					            //    .OrderBy(cs => cs.DrugId)
 | 
				
			||||||
 | 
					            //    .OrderBy(cs => cs.DrawerNo)
 | 
				
			||||||
 | 
					            //    .OrderBy(cs => cs.ColNo)
 | 
				
			||||||
 | 
					            //    .ToList();
 | 
				
			||||||
 | 
					            //ChannelStocks = queryData;
 | 
				
			||||||
 | 
					            List<DrugInfo> q = SqlSugarHelper.Db.Queryable<DrugInfo>()
 | 
				
			||||||
 | 
					                .Includes<ChannelStock>(di => di.channelStocks.Where(cs => cs.DrawerType == 1).Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1") && cs.DrugId != null).OrderBy(cs => cs.DrawerNo).OrderBy(cs => cs.ColNo).ToList())
 | 
				
			||||||
                .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("DrugId"), (cs) => cs.DrugId.Contains(SearchValue))
 | 
					                .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("DrugId"), (cs) => cs.DrugId.Contains(SearchValue))
 | 
				
			||||||
                .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("DrugName"), (cs) => cs.DrugInfo.DrugName.Contains(SearchValue))
 | 
					                .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("DrugName"), (cs) => cs.DrugName.Contains(SearchValue))
 | 
				
			||||||
                .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("PyCode"), (cs) => cs.DrugInfo.PyCode.Contains(SearchValue))
 | 
					                .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("PyCode"), (cs) => cs.PyCode.Contains(SearchValue))
 | 
				
			||||||
                .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("DrugBarcode"), (cs) => cs.DrugInfo.DrugBarcode.Contains(SearchValue))
 | 
					                .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("DrugBarcode"), (cs) => cs.DrugBarcode.Contains(SearchValue))
 | 
				
			||||||
                .OrderBy(cs => cs.DrugId)
 | 
					               .Where(di => di.channelStocks.Any(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1") && cs.DrugId != null))
 | 
				
			||||||
                .OrderBy(cs => cs.DrawerNo)
 | 
					               .OrderBy(cs => cs.DrugId)
 | 
				
			||||||
                .OrderBy(cs => cs.ColNo)
 | 
					               .ToList();
 | 
				
			||||||
                .ToList();
 | 
					            Drugs = q;
 | 
				
			||||||
            ChannelStocks = queryData;
 | 
					            logger.Info("结束SelfAddWindowViewModel_查询数据");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //接收导航传过来的参数  现在是在此处初始化了表格数据
 | 
					        //接收导航传过来的参数  现在是在此处初始化了表格数据
 | 
				
			||||||
        public void OnNavigatedTo(NavigationContext navigationContext)
 | 
					        public void OnNavigatedTo(NavigationContext navigationContext)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            RequestChannelData();
 | 
					            logger.Info("进入SelfAddWindowViewModel_OnNavigatedTo");
 | 
				
			||||||
 | 
					            Task.Factory.StartNew(() => RequestChannelData());
 | 
				
			||||||
 | 
					            logger.Info("结束SelfAddWindowViewModel_OnNavigatedTo");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //每次导航的时候,该实列用不用重新创建,true是不重新创建,false是重新创建
 | 
					        //每次导航的时候,该实列用不用重新创建,true是不重新创建,false是重新创建
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,6 +17,7 @@ using DM_Weight.Port;
 | 
				
			||||||
using DM_Weight.util;
 | 
					using DM_Weight.util;
 | 
				
			||||||
using System.Threading;
 | 
					using System.Threading;
 | 
				
			||||||
using SqlSugar;
 | 
					using SqlSugar;
 | 
				
			||||||
 | 
					using System.Configuration;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace DM_Weight.ViewModels
 | 
					namespace DM_Weight.ViewModels
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -35,12 +36,12 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private PortUtil _portUtil;
 | 
					        private PortUtil _portUtil;
 | 
				
			||||||
        IEventAggregator _eventAggregator;
 | 
					        IEventAggregator _eventAggregator;
 | 
				
			||||||
        private SqlSugarScope _sqlSugarScope1;
 | 
					        //private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
        public SelfTakeDialogViewModel(PortUtil portUtil, IEventAggregator eventAggregator, SqlSugarScope sqlSugarScope)
 | 
					        public SelfTakeDialogViewModel(PortUtil portUtil, IEventAggregator eventAggregator, SqlSugarScope sqlSugarScope)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            _portUtil = portUtil;
 | 
					            _portUtil = portUtil;
 | 
				
			||||||
            _eventAggregator = eventAggregator;
 | 
					            _eventAggregator = eventAggregator;
 | 
				
			||||||
            this._sqlSugarScope1 = sqlSugarScope;
 | 
					            //this.SqlSugarHelper.Db = sqlSugarScope;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        void DoMyPrismEvent(DeviceMsg msg)
 | 
					        void DoMyPrismEvent(DeviceMsg msg)
 | 
				
			||||||
| 
						 | 
					@ -184,7 +185,17 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            _portUtil.SpeakAsync("正在打开" + DrawerNo + "号抽屉");
 | 
					            _portUtil.SpeakAsync("正在打开" + DrawerNo + "号抽屉");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            List<ChannelStock> singleChannels = channelStocks.FindAll(it => it.BoardType != 1);
 | 
					            List<ChannelStock> singleChannels = channelStocks
 | 
				
			||||||
 | 
					                .GroupBy(it => new { it.DrawerNo, it.ColNo })
 | 
				
			||||||
 | 
					                .Select(it =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    var ret = it.First();
 | 
				
			||||||
 | 
					                    ret.Quantity = it.Sum(it => it.Quantity);
 | 
				
			||||||
 | 
					                    ret.TakeQuantity = it.Sum(it => it.TakeQuantity);
 | 
				
			||||||
 | 
					                    return ret;
 | 
				
			||||||
 | 
					                })
 | 
				
			||||||
 | 
					                .ToList()
 | 
				
			||||||
 | 
					                .FindAll(it => it.BoardType != 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
           
 | 
					           
 | 
				
			||||||
            // 发送取药数量
 | 
					            // 发送取药数量
 | 
				
			||||||
| 
						 | 
					@ -211,13 +222,13 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                    _isFinishClick = true;
 | 
					                    _isFinishClick = true;
 | 
				
			||||||
                    List<ChannelStock> record = ChannelStocks.ToList();
 | 
					                    List<ChannelStock> record = ChannelStocks.ToList();
 | 
				
			||||||
                    string InvoiceId = "SELF_" + CurrentTimeMillis();
 | 
					                    string InvoiceId = "SELF_" + CurrentTimeMillis();
 | 
				
			||||||
                    var f = _sqlSugarScope1.UseTran(() =>
 | 
					                    var f = SqlSugarHelper.Db.UseTran(() =>
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        for (int i = 0; i < record.Count; i++)
 | 
					                        for (int i = 0; i < record.Count; i++)
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            ChannelStock it = record[i];
 | 
					                            ChannelStock it = record[i];
 | 
				
			||||||
                            // 更新数据 库存信息
 | 
					                            // 更新数据 库存信息
 | 
				
			||||||
                            _sqlSugarScope1.Updateable(new ChannelStock()
 | 
					                            SqlSugarHelper.Db.Updateable(new ChannelStock()
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                Quantity = it.Quantity - it.TakeQuantity,
 | 
					                                Quantity = it.Quantity - it.TakeQuantity,
 | 
				
			||||||
                                ManuNo = it.ManuNo,
 | 
					                                ManuNo = it.ManuNo,
 | 
				
			||||||
| 
						 | 
					@ -225,14 +236,14 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                                Id = it.Id,
 | 
					                                Id = it.Id,
 | 
				
			||||||
                            }).UpdateColumns(it => new { it.Quantity, it.ManuNo, it.EffDate }).ExecuteCommand();
 | 
					                            }).UpdateColumns(it => new { it.Quantity, it.ManuNo, it.EffDate }).ExecuteCommand();
 | 
				
			||||||
                            // 获取更新完库存后的药品库存
 | 
					                            // 获取更新完库存后的药品库存
 | 
				
			||||||
                            List<ChannelStock> nowChannels = _sqlSugarScope1.Queryable<ChannelStock>()
 | 
					                            List<ChannelStock> nowChannels = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
                                .Where(cs => cs.MachineId.Equals(it.MachineId))
 | 
					                                .Where(cs => cs.MachineId.Equals(it.MachineId))
 | 
				
			||||||
                                .Where(cs => cs.DrugId.Equals(it.DrugId))
 | 
					                                .Where(cs => cs.DrugId.Equals(it.DrugId))
 | 
				
			||||||
                                .Where(cs => cs.DrawerType == 1)
 | 
					                                .Where(cs => cs.DrawerType == 1)
 | 
				
			||||||
                                .ToList();
 | 
					                                .ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            // 保存数据 出/入库记录
 | 
					                            // 保存数据 出/入库记录
 | 
				
			||||||
                            _sqlSugarScope1.Insertable(new MachineRecord()
 | 
					                            SqlSugarHelper.Db.Insertable(new MachineRecord()
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                MachineId = it.MachineId,
 | 
					                                MachineId = it.MachineId,
 | 
				
			||||||
                                DrawerNo = it.DrawerNo,
 | 
					                                DrawerNo = it.DrawerNo,
 | 
				
			||||||
| 
						 | 
					@ -247,7 +258,9 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                                Type = 2,
 | 
					                                Type = 2,
 | 
				
			||||||
                                InvoiceId = InvoiceId,
 | 
					                                InvoiceId = InvoiceId,
 | 
				
			||||||
                                StockQuantity = nowChannels.Sum(it => it.Quantity),
 | 
					                                StockQuantity = nowChannels.Sum(it => it.Quantity),
 | 
				
			||||||
                                ManunoQuantity = nowChannels.FindAll(it2 => it2.ManuNo == it.ManuNo).Sum(it => it.Quantity)
 | 
					                                ManunoQuantity = nowChannels.FindAll(it2 => it2.ManuNo == it.ManuNo).Sum(it => it.Quantity),
 | 
				
			||||||
 | 
					                                SupplierDept = ConfigurationManager.AppSettings["supplierDept"].ToString(),
 | 
				
			||||||
 | 
					                                ReceiveDept = ConfigurationManager.AppSettings["receiveDept"].ToString()
 | 
				
			||||||
                            }).ExecuteCommand();
 | 
					                            }).ExecuteCommand();
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                        return true;
 | 
					                        return true;
 | 
				
			||||||
| 
						 | 
					@ -255,13 +268,41 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                    if (f.Data)
 | 
					                    if (f.Data)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        // 更新屏显库存
 | 
					                        // 更新屏显库存
 | 
				
			||||||
                        List<ChannelStock> singleChannels = record.FindAll(it => it.BoardType != 1);
 | 
					                        //List<ChannelStock> singleChannels = record.FindAll(it => it.BoardType != 1);
 | 
				
			||||||
                        if ((singleChannels.Count > 0 ? singleChannels[0].BoardType : 1) == 5)
 | 
					                        List<ChannelStock> singleChannels = ChannelStocks.Where(it => it.BoardType != 1)
 | 
				
			||||||
 | 
					                                                                         .GroupBy(it =>new { it.DrawerNo, it.ColNo })
 | 
				
			||||||
 | 
					                                                                         .Select(it =>
 | 
				
			||||||
 | 
					                                                                         {
 | 
				
			||||||
 | 
					                                                                             var ret = it.First();
 | 
				
			||||||
 | 
					                                                                             //ret.Quantity = it.Sum(itx => itx.Quantity);
 | 
				
			||||||
 | 
					                                                                             //ret.AddQuantity = it.Sum(itx => itx.AddQuantity);
 | 
				
			||||||
 | 
					                                                                             return ret;
 | 
				
			||||||
 | 
					                                                                         }).ToList();
 | 
				
			||||||
 | 
					                        //if ((singleChannels.Count > 0 ? singleChannels[0].BoardType : 1) == 5)
 | 
				
			||||||
 | 
					                        //{
 | 
				
			||||||
 | 
					                        //    //将库位多批次的总库存数更新标签
 | 
				
			||||||
 | 
					                        //    //_portUtil.WriteQuantity(singleChannels[0].DrawerNo, singleChannels[0].ColNo, singleChannels.Sum(it => it.Quantity) + singleChannels.Sum(it => it.AddQuantity));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        //    singleChannels.ForEach(it =>
 | 
				
			||||||
 | 
					                        //    {
 | 
				
			||||||
 | 
					                        //        _portUtil.WriteQuantity(it.DrawerNo, it.ColNo, it.Quantity - it.TakeQuantity);
 | 
				
			||||||
 | 
					                        //    });
 | 
				
			||||||
 | 
					                        //}
 | 
				
			||||||
 | 
					                        if(singleChannels!=null&&singleChannels.Count>0)
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            singleChannels.ForEach(it =>
 | 
					                            for (int i = 0; i < singleChannels.Count; i++)
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                _portUtil.WriteQuantity(it.DrawerNo, it.ColNo, it.Quantity - it.TakeQuantity);
 | 
					                                if (singleChannels[i].BoardType == 5)
 | 
				
			||||||
                            });
 | 
					                                {
 | 
				
			||||||
 | 
					                                    int totalQuantity = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
 | 
					                                                                        .Where(cs => cs.MachineId == singleChannels[i].MachineId)
 | 
				
			||||||
 | 
					                                                                        .Where(cs => cs.DrawerNo == singleChannels[i].DrawerNo)
 | 
				
			||||||
 | 
					                                                                        .Where(cs => cs.ColNo == singleChannels[i].ColNo)
 | 
				
			||||||
 | 
					                                                                        .Sum(it => it.Quantity);
 | 
				
			||||||
 | 
					                                    //将库位多批次的总库存数更新标签
 | 
				
			||||||
 | 
					                                    _portUtil.WriteQuantity(singleChannels[i].DrawerNo, singleChannels[i].ColNo, totalQuantity);
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        AlertMsg alertMsg = new AlertMsg
 | 
					                        AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
| 
						 | 
					@ -320,6 +361,6 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public bool KeepAlive => false;
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -45,12 +45,12 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                Name = "药品编码"
 | 
					                Name = "药品编码"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
        private SqlSugarScope _sqlSugarScope1;
 | 
					        //private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
        public SelfTakeDrugWindowViewModel(IDialogService DialogService, IEventAggregator eventAggregator, SqlSugarScope sqlSugarScope)
 | 
					        public SelfTakeDrugWindowViewModel(IDialogService DialogService, IEventAggregator eventAggregator, SqlSugarScope sqlSugarScope)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            _dialogService = DialogService;
 | 
					            _dialogService = DialogService;
 | 
				
			||||||
            _eventAggregator= eventAggregator;
 | 
					            _eventAggregator= eventAggregator;
 | 
				
			||||||
            this._sqlSugarScope1 = sqlSugarScope;
 | 
					            //this.SqlSugarHelper.Db = sqlSugarScope;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -105,7 +105,17 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            get => new DelegateCommand(() =>
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                List<ChannelStock> takeChannels = ChannelStocks.FindAll(it => it.TakeQuantity > 0).ToList();
 | 
					                //List<ChannelStock> takeChannels = ChannelStocks.FindAll(it => it.TakeQuantity > 0).ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                List<ChannelStock> takeChannels = Drugs.Aggregate(new List<ChannelStock>(), (a, b) =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    a.AddRange(b.channelStocks.FindAll(it => it.TakeQuantity > 0).Select(cs => {
 | 
				
			||||||
 | 
					                        cs.DrugInfo = b;
 | 
				
			||||||
 | 
					                        return cs;
 | 
				
			||||||
 | 
					                    }).ToList());
 | 
				
			||||||
 | 
					                    return a;
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (takeChannels.Count > 0)
 | 
					                if (takeChannels.Count > 0)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    takeChannels.Sort((a, b) =>
 | 
					                    takeChannels.Sort((a, b) =>
 | 
				
			||||||
| 
						 | 
					@ -133,6 +143,8 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private void DoDialogResult(IDialogResult dialogResult)
 | 
					        private void DoDialogResult(IDialogResult dialogResult)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            // 委托   被动执行     被子窗口执行
 | 
					            // 委托   被动执行     被子窗口执行
 | 
				
			||||||
| 
						 | 
					@ -144,7 +156,6 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            //MessageBox.Show("返回值:" + dialogResult.Result.ToString());
 | 
					            //MessageBox.Show("返回值:" + dialogResult.Result.ToString());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public bool KeepAlive => false;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //这个方法用于拦截请求,continuationCallback(true)就是不拦截,continuationCallback(false)拦截本次操作
 | 
					        //这个方法用于拦截请求,continuationCallback(true)就是不拦截,continuationCallback(false)拦截本次操作
 | 
				
			||||||
        public void ConfirmNavigationRequest(NavigationContext navigationContext, Action<bool> continuationCallback)
 | 
					        public void ConfirmNavigationRequest(NavigationContext navigationContext, Action<bool> continuationCallback)
 | 
				
			||||||
| 
						 | 
					@ -152,25 +163,50 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            continuationCallback(true);
 | 
					            continuationCallback(true);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private List<DrugInfo> _drugs = new();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public List<DrugInfo> Drugs
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _drugs;
 | 
				
			||||||
 | 
					            set => SetProperty(ref _drugs, value);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        private DrugInfo? _drug;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public DrugInfo? Drug
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _drug;
 | 
				
			||||||
 | 
					            set => SetProperty(ref _drug, value);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void RequestChannelData()
 | 
					        public void RequestChannelData()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            List<ChannelStock> queryData = _sqlSugarScope1.Queryable<ChannelStock>()
 | 
					            //List<ChannelStock> queryData = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
                .Includes<DrugInfo>(cs => cs.DrugInfo)
 | 
					            //    .Includes<DrugInfo>(cs => cs.DrugInfo)
 | 
				
			||||||
                .Where(cs => cs.DrugId != null)
 | 
					            //    .Where(cs => cs.DrugId != null)
 | 
				
			||||||
                .Where(cs => cs.DrawerType == 1)
 | 
					            //    .Where(cs => cs.DrawerType == 1)
 | 
				
			||||||
                .Where(cs => cs.Quantity > 0)
 | 
					            //    .Where(cs => cs.Quantity > 0)
 | 
				
			||||||
                .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1"))
 | 
					            //    .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1"))
 | 
				
			||||||
                .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("DrugId"), (cs) => cs.DrugId.Contains(SearchValue))
 | 
					            //    .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("DrugId"), (cs) => cs.DrugId.Contains(SearchValue))
 | 
				
			||||||
                .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("DrugName"), (cs) => cs.DrugInfo.DrugName.Contains(SearchValue))
 | 
					            //    .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("DrugName"), (cs) => cs.DrugInfo.DrugName.Contains(SearchValue))
 | 
				
			||||||
                .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("PyCode"), (cs) => cs.DrugInfo.PyCode.Contains(SearchValue))
 | 
					            //    .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("PyCode"), (cs) => cs.DrugInfo.PyCode.Contains(SearchValue))
 | 
				
			||||||
                .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("DrugBarcode"), (cs) => cs.DrugInfo.DrugBarcode.Contains(SearchValue))
 | 
					            //    .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("DrugBarcode"), (cs) => cs.DrugInfo.DrugBarcode.Contains(SearchValue))
 | 
				
			||||||
                .OrderBy(cs => cs.DrugId)
 | 
					            //    .OrderBy(cs => cs.DrugId)
 | 
				
			||||||
                .OrderBy(cs => cs.DrawerNo)
 | 
					            //    .OrderBy(cs => cs.DrawerNo)
 | 
				
			||||||
                .OrderBy(cs => cs.ColNo)
 | 
					            //    .OrderBy(cs => cs.ColNo)
 | 
				
			||||||
                .ToList();
 | 
					            //    .ToList();
 | 
				
			||||||
            ChannelStocks = queryData;
 | 
					            //ChannelStocks = queryData;
 | 
				
			||||||
 | 
					            List<DrugInfo> q = SqlSugarHelper.Db.Queryable<DrugInfo>()
 | 
				
			||||||
 | 
					                .Includes<ChannelStock>(di => di.channelStocks.Where(cs => cs.DrawerType == 1)
 | 
				
			||||||
 | 
					                .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1") && cs.DrugId != null&&cs.Quantity>0).OrderBy(cs => cs.DrawerNo).OrderBy(cs => cs.ColNo).ToList())
 | 
				
			||||||
 | 
					             .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("DrugId"), (cs) => cs.DrugId.Contains(SearchValue))
 | 
				
			||||||
 | 
					                .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("DrugName"), (cs) => cs.DrugName.Contains(SearchValue))
 | 
				
			||||||
 | 
					                .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("PyCode"), (cs) => cs.PyCode.Contains(SearchValue))
 | 
				
			||||||
 | 
					                .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("DrugBarcode"), (cs) => cs.DrugBarcode.Contains(SearchValue))
 | 
				
			||||||
 | 
					              .Where(di => di.channelStocks.Any(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1") && cs.DrugId != null))
 | 
				
			||||||
 | 
					              
 | 
				
			||||||
 | 
					              .OrderBy(cs => cs.DrugId)
 | 
				
			||||||
 | 
					              .ToList();
 | 
				
			||||||
 | 
					            Drugs = q.Where(di => di.channelStocks.Count() > 0).ToList();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //接收导航传过来的参数  现在是在此处初始化了表格数据
 | 
					        //接收导航传过来的参数  现在是在此处初始化了表格数据
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -14,7 +14,6 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class SettingWindowViewModel : BindableBase, IRegionMemberLifetime
 | 
					    public class SettingWindowViewModel : BindableBase, IRegionMemberLifetime
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        public bool KeepAlive => false;
 | 
					 | 
				
			||||||
        public static List<OrderTakeSelect> defaultKeyValuePairs = new()
 | 
					        public static List<OrderTakeSelect> defaultKeyValuePairs = new()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            new OrderTakeSelect() { Code = "operator", Name = "操作人" },
 | 
					            new OrderTakeSelect() { Code = "operator", Name = "操作人" },
 | 
				
			||||||
| 
						 | 
					@ -69,6 +68,9 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //手动实现调用配置的逻辑 规避修改配置文件后不起作用的问题
 | 
					        //手动实现调用配置的逻辑 规避修改配置文件后不起作用的问题
 | 
				
			||||||
        public string ReadAppSetting(string key)
 | 
					        public string ReadAppSetting(string key)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,136 @@
 | 
				
			||||||
 | 
					using DM_Weight.Models;
 | 
				
			||||||
 | 
					using DM_Weight.Report;
 | 
				
			||||||
 | 
					using DM_Weight.util;
 | 
				
			||||||
 | 
					using Prism.Commands;
 | 
				
			||||||
 | 
					using Prism.Mvvm;
 | 
				
			||||||
 | 
					using Prism.Services.Dialogs;
 | 
				
			||||||
 | 
					using SqlSugar;
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Configuration;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class StockListAccountDialogViewModel : BindableBase, IDialogAware
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public string Title => "导出账册";
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 药品库位号
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        private string _stock;
 | 
				
			||||||
 | 
					        public string Stock
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _stock;
 | 
				
			||||||
 | 
					            set => SetProperty(ref _stock, value);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 药品ID
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        private string _drug_id;
 | 
				
			||||||
 | 
					        public string DrugId
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _drug_id;
 | 
				
			||||||
 | 
					            set => SetProperty(ref _drug_id, value);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 开始时间
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        private DateTime? _startDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public DateTime? StartDate
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _startDate;
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (value != null)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    SetProperty(ref _startDate, new DateTime(value?.Year ?? 0, value?.Month ?? 0, value?.Day ?? 0));
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    SetProperty(ref _startDate, value);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 结束时间
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        private DateTime? _endDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 23, 59, 59);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public DateTime? EndDate
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _endDate;
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (value != null)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    TimeSpan ershisi = new TimeSpan(23, 59, 59);
 | 
				
			||||||
 | 
					                    SetProperty(ref _endDate, new DateTime(value?.Year ?? 0, value?.Month ?? 0, value?.Day ?? 0, 23, 59, 59));
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    SetProperty(ref _endDate, value);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        //private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
 | 
					        public StockListAccountDialogViewModel(SqlSugarScope sqlSugarScope)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            //this.SqlSugarHelper.Db = sqlSugarScope;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        public DelegateCommand DownloadAccountBook
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                GridReportUtil.PrintReportAccountBook(StartDate, EndDate,0, DrugId ?? "");
 | 
				
			||||||
 | 
					                // 关闭当前窗口
 | 
				
			||||||
 | 
					                RequestClose?.Invoke(new DialogResult(ButtonResult.Cancel));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        public DelegateCommand BtnCloseCommand
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                // 关闭当前窗口
 | 
				
			||||||
 | 
					                RequestClose?.Invoke(new DialogResult(ButtonResult.Cancel));
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public event Action<IDialogResult> RequestClose;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool CanCloseDialog()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void OnDialogClosed()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void OnDialogOpened(IDialogParameters parameters)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (parameters.ContainsKey("Stock"))
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Stock = parameters.GetValue<string>("Stock");
 | 
				
			||||||
 | 
					                if (!string.IsNullOrEmpty(Stock))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    //根据库位信息查询出药品id
 | 
				
			||||||
 | 
					                    string[] strStock = Stock.Split('-');
 | 
				
			||||||
 | 
					                    if (strStock.Length >= 2)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        //DrugId = SqlSugarHelper.Db.Queryable<ChannelStock>().Where(cs => cs.DrawerNo == Convert.ToInt32(strStock[0]) && cs.ColNo == Convert.ToInt32(strStock[1])).Select(cs => cs.DrugId).ToString();
 | 
				
			||||||
 | 
					                       var list = SqlSugarHelper.Db.Queryable<ChannelStock>().Where(cs => cs.DrawerNo == Convert.ToInt32(strStock[0]) && cs.ColNo == Convert.ToInt32(strStock[1])&& cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).ToList();
 | 
				
			||||||
 | 
					                       if(list!=null&&list.Count>0)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            DrugId = list[0].DrugId;
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -16,12 +16,17 @@ using DM_Weight.select;
 | 
				
			||||||
using DM_Weight.util;
 | 
					using DM_Weight.util;
 | 
				
			||||||
using System.ComponentModel;
 | 
					using System.ComponentModel;
 | 
				
			||||||
using System.Windows.Data;
 | 
					using System.Windows.Data;
 | 
				
			||||||
 | 
					using System.Runtime.InteropServices;
 | 
				
			||||||
 | 
					using System.Threading;
 | 
				
			||||||
 | 
					using log4net.Repository.Hierarchy;
 | 
				
			||||||
 | 
					using log4net;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace DM_Weight.ViewModels
 | 
					namespace DM_Weight.ViewModels
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class StockListWindowViewModel : BindableBase, IConfirmNavigationRequest, IRegionMemberLifetime
 | 
					    public class StockListWindowViewModel : BindableBase, IConfirmNavigationRequest, IRegionMemberLifetime
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					        //public static StockListWindowViewModel vm;
 | 
				
			||||||
 | 
					        public string drugId;
 | 
				
			||||||
        public static List<OrderTakeSelect> StaticSelects = new()
 | 
					        public static List<OrderTakeSelect> StaticSelects = new()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            new OrderTakeSelect
 | 
					            new OrderTakeSelect
 | 
				
			||||||
| 
						 | 
					@ -85,13 +90,15 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                RequestData();
 | 
					                RequestData();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					 | 
				
			||||||
        IDialogService _dialogService;
 | 
					        IDialogService _dialogService;
 | 
				
			||||||
        private SqlSugarScope _sqlSugarScope1;
 | 
					        ////private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
        public StockListWindowViewModel(IDialogService dialogService, SqlSugarScope sqlSugarScope)
 | 
					        private readonly ILog logger = LogManager.GetLogger(typeof(StockListWindowViewModel));
 | 
				
			||||||
 | 
					        public StockListWindowViewModel(IDialogService dialogService)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					            logger.Info("进入StockListWindowViewModel构造函数");
 | 
				
			||||||
            _dialogService = dialogService;
 | 
					            _dialogService = dialogService;
 | 
				
			||||||
            this._sqlSugarScope1 = sqlSugarScope;
 | 
					            ////this.SqlSugarHelper.Db = sqlSugarScope;
 | 
				
			||||||
 | 
					            //vm = this;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        private ChannelStock? _selectedChannel;
 | 
					        private ChannelStock? _selectedChannel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -114,7 +121,8 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            get => new DelegateCommand(() =>
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                DialogParameters dialogParameters = new DialogParameters();
 | 
					                DialogParameters dialogParameters = new DialogParameters();
 | 
				
			||||||
                DialogServiceExtensions.ShowDialogHost(_dialogService, "BindingChannelDialog", dialogParameters, DoDialogResult, "RootDialog");
 | 
					                //DialogServiceExtensions.ShowDialogHost(_dialogService, "BindingChannelDialog", dialogParameters, DoDialogResult, "RootDialog");
 | 
				
			||||||
 | 
					                DialogServiceExtensions.ShowDialogHost(_dialogService, "BindingChannelNewDialog", dialogParameters, DoDialogResult, "RootDialog");
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -126,6 +134,22 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                RequestData();
 | 
					                RequestData();
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 导出账册
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public DelegateCommand DownloadAccountBook
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                AccountAction();
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        private void AccountAction()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            DialogParameters dialogParameters = new DialogParameters();
 | 
				
			||||||
 | 
					            dialogParameters.Add("Stock", drugId);
 | 
				
			||||||
 | 
					            DialogServiceExtensions.ShowDialogHost(_dialogService, "StockListAccountDialog", dialogParameters, "RootDialog");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private void DoDialogResult(IDialogResult dialogResult)
 | 
					        private void DoDialogResult(IDialogResult dialogResult)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
| 
						 | 
					@ -133,7 +157,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            // dialogResult  第一方面可以拿到任意参数   第二方面   可判断关闭状态
 | 
					            // dialogResult  第一方面可以拿到任意参数   第二方面   可判断关闭状态
 | 
				
			||||||
            //if (dialogResult.Result == ButtonResult.OK)
 | 
					            //if (dialogResult.Result == ButtonResult.OK)
 | 
				
			||||||
            //{
 | 
					            //{
 | 
				
			||||||
                RequestData();
 | 
					            RequestData();
 | 
				
			||||||
            //}
 | 
					            //}
 | 
				
			||||||
            //MessageBox.Show("返回值:" + dialogResult.Result.ToString());
 | 
					            //MessageBox.Show("返回值:" + dialogResult.Result.ToString());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					@ -146,43 +170,99 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public DelegateCommand<object> ClickCommand
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand<object>((SelectedChannel) =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (SelectedChannel != null)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public bool KeepAlive => false;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
       
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //这个方法用于拦截请求,continuationCallback(true)就是不拦截,continuationCallback(false)拦截本次操作
 | 
					        //这个方法用于拦截请求,continuationCallback(true)就是不拦截,continuationCallback(false)拦截本次操作
 | 
				
			||||||
        public void ConfirmNavigationRequest(NavigationContext navigationContext, Action<bool> continuationCallback)
 | 
					        public void ConfirmNavigationRequest(NavigationContext navigationContext, Action<bool> continuationCallback)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            continuationCallback(true);
 | 
					            continuationCallback(true);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        private List<DrugInfo>? _drugs = new();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public List<DrugInfo>? Drugs
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _drugs;
 | 
				
			||||||
 | 
					            set => SetProperty(ref _drugs, value);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        private DrugInfo? _drug;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public DrugInfo? Drug
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => _drug;
 | 
				
			||||||
 | 
					            set => SetProperty(ref _drug, value);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void RequestData()
 | 
					        public void RequestData()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            ChannelStocks.Clear();
 | 
					            logger.Info("开始StockListWindowViewModel_查询数据");
 | 
				
			||||||
            List<ChannelStock> q = _sqlSugarScope1.Queryable<ChannelStock>()
 | 
					            //ChannelStocks.Clear();
 | 
				
			||||||
                .Includes<DrugInfo>(cs => cs.DrugInfo)
 | 
					            //List<ChannelStock> q = new List<ChannelStock>();
 | 
				
			||||||
                .Where(cs => cs.DrawerType == 1)
 | 
					            //Task.Factory.StartNew(() =>
 | 
				
			||||||
                .Where(cs =>cs.DrugId != null)
 | 
					            //{
 | 
				
			||||||
                .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1"))
 | 
					            //    List<ChannelStock> q = SqlSugarHelper.Db.Queryable<ChannelStock>()
 | 
				
			||||||
                
 | 
					            //        .Includes<DrugInfo>(cs => cs.DrugInfo)
 | 
				
			||||||
                .WhereIF(!String.IsNullOrEmpty(SearchValue),cs => cs.DrugInfo.DrugName == SearchValue)
 | 
					            //        .InnerJoin<ChannelList>((cs, cl) => cs.Chnguid == cl.Id && cs.DrugId == cl.DrugId)
 | 
				
			||||||
                .OrderBy(cs => cs.DrugId)
 | 
					            //        .Where(cs => cs.DrawerType == 1)
 | 
				
			||||||
                .OrderBy(cs => cs.DrawerNo)
 | 
					            //        .Where(cs => cs.DrugId != null)
 | 
				
			||||||
                .OrderBy(cs => cs.ColNo)
 | 
					            //        .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1"))
 | 
				
			||||||
                .ToList();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            ICollectionView vw = CollectionViewSource.GetDefaultView(q);
 | 
					            //        .WhereIF(!String.IsNullOrEmpty(SearchValue), cs => cs.DrugInfo.DrugName == SearchValue)
 | 
				
			||||||
            vw.GroupDescriptions.Add(new PropertyGroupDescription("DrugInfo"));
 | 
					            //        .OrderBy(cs => cs.DrawerNo)
 | 
				
			||||||
            ChannelStocks = q;
 | 
					            //        .OrderBy(cs => cs.ColNo)
 | 
				
			||||||
           
 | 
					            //        .OrderBy(cs => cs.DrugId)
 | 
				
			||||||
 | 
					            //        .ToList();
 | 
				
			||||||
 | 
					            ////});
 | 
				
			||||||
 | 
					            //ChannelStocks = q.Select(it => { it.CheckQuantity = it.Quantity; return it; }).ToList();
 | 
				
			||||||
 | 
					            //ICollectionView vw = CollectionViewSource.GetDefaultView(q);
 | 
				
			||||||
 | 
					            //vw.GroupDescriptions.Add(new PropertyGroupDescription("DrugInfo"));
 | 
				
			||||||
 | 
					            //ChannelStocks = q;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            //List<DrugInfo> q = SqlSugarHelper.Db.Queryable<DrugInfo>()
 | 
				
			||||||
 | 
					            //  .Includes<ChannelStock>(di => di.channelStocks.Where(cs => cs.DrawerType == 1).Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1") && cs.DrugId != null).OrderBy(cs => cs.DrawerNo).OrderBy(cs => cs.ColNo).ToList())
 | 
				
			||||||
 | 
					            //  .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("DrugId"), (cs) => cs.DrugId.Contains(SearchValue))
 | 
				
			||||||
 | 
					            //  .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("DrugName"), (cs) => cs.DrugName.Contains(SearchValue))
 | 
				
			||||||
 | 
					            //  .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("PyCode"), (cs) => cs.PyCode.Contains(SearchValue))
 | 
				
			||||||
 | 
					            //  .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("DrugBarcode"), (cs) => cs.DrugBarcode.Contains(SearchValue))
 | 
				
			||||||
 | 
					            // .Where(di => di.channelStocks.Any(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1") && cs.DrugId != null))
 | 
				
			||||||
 | 
					            // .OrderBy(cs => cs.DrugId)
 | 
				
			||||||
 | 
					            // .ToList();
 | 
				
			||||||
 | 
					            //Drugs = q;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            List<DrugInfo> q = SqlSugarHelper.Db.Queryable<DrugInfo>()
 | 
				
			||||||
 | 
					               .Includes<ChannelStock>(di => di.channelStocks.Where(cs => cs.DrawerType == 1)
 | 
				
			||||||
 | 
					               .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1") && cs.DrugId != null).OrderBy(cs => cs.DrawerNo).OrderBy(cs => cs.ColNo).ToList())
 | 
				
			||||||
 | 
					            .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("DrugId"), (cs) => cs.DrugId.Contains(SearchValue))
 | 
				
			||||||
 | 
					               .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("DrugName"), (cs) => cs.DrugName.Contains(SearchValue))
 | 
				
			||||||
 | 
					               .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("PyCode"), (cs) => cs.PyCode.Contains(SearchValue))
 | 
				
			||||||
 | 
					               .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("DrugBarcode"), (cs) => cs.DrugBarcode.Contains(SearchValue))
 | 
				
			||||||
 | 
					             .Where(di => di.channelStocks.Any(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1") && cs.DrugId != null))
 | 
				
			||||||
 | 
					             .OrderBy(cs => cs.DrugId)
 | 
				
			||||||
 | 
					             .ToList();
 | 
				
			||||||
 | 
					            Drugs = q;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            logger.Info("结束StockListWindowViewModel_查询数据");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //接收导航传过来的参数  现在是在此处初始化了表格数据
 | 
					        //接收导航传过来的参数  现在是在此处初始化了表格数据
 | 
				
			||||||
        public void OnNavigatedTo(NavigationContext navigationContext)
 | 
					        public void OnNavigatedTo(NavigationContext navigationContext)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            RequestData();
 | 
					            logger.Info("进入StockListWindowViewModel_OnNavigatedTo");
 | 
				
			||||||
 | 
					            //RequestData();
 | 
				
			||||||
 | 
					            Task.Factory.StartNew(() => RequestData());
 | 
				
			||||||
 | 
					            logger.Info("结束StockListWindowViewModel_OnNavigatedTo");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -197,5 +277,21 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        public DelegateCommand RowSelected
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                //if (ChannelStocks != null)
 | 
				
			||||||
 | 
					                //{
 | 
				
			||||||
 | 
					                //    SelectMachineRecords = ChannelStocks.Select(x =>
 | 
				
			||||||
 | 
					                //    {
 | 
				
			||||||
 | 
					                //        x.IsSelected = !x.IsSelected;
 | 
				
			||||||
 | 
					                //        return x;
 | 
				
			||||||
 | 
					                //    }).ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                //}
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,22 +0,0 @@
 | 
				
			||||||
using Prism.Commands;
 | 
					 | 
				
			||||||
using Prism.Mvvm;
 | 
					 | 
				
			||||||
using System;
 | 
					 | 
				
			||||||
using System.Collections.Generic;
 | 
					 | 
				
			||||||
using System.Linq;
 | 
					 | 
				
			||||||
using System.Text;
 | 
					 | 
				
			||||||
using System.Threading.Tasks;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace DM_Weight.ViewModels
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    public class TestCheckBoxViewModel:BindableBase
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        public DelegateCommand cbxCommand
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            get =>new DelegateCommand(()=>{ 
 | 
					 | 
				
			||||||
            
 | 
					 | 
				
			||||||
            });
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -74,11 +74,11 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            set { SetProperty(ref _user, value); }
 | 
					            set { SetProperty(ref _user, value); }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        private readonly IDialogService _dialogService;
 | 
					        private readonly IDialogService _dialogService;
 | 
				
			||||||
        private SqlSugarScope _sqlSugarScope1;
 | 
					        //private SqlSugarScope SqlSugarHelper.Db;
 | 
				
			||||||
        public UserManagerWindowViewModel(IDialogService dialogService, SqlSugarScope sqlSugarScope)
 | 
					        public UserManagerWindowViewModel(IDialogService dialogService, SqlSugarScope sqlSugarScope)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            _dialogService = dialogService;
 | 
					            _dialogService = dialogService;
 | 
				
			||||||
            this._sqlSugarScope1 = sqlSugarScope;
 | 
					            //this.SqlSugarHelper.Db = sqlSugarScope;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -96,7 +96,6 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                RequestData();
 | 
					                RequestData();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        public bool KeepAlive => false;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public DelegateCommand Query
 | 
					        public DelegateCommand Query
 | 
				
			||||||
| 
						 | 
					@ -138,6 +137,8 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool KeepAlive => true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private void DoDialogResult(IDialogResult dialogResult)
 | 
					        private void DoDialogResult(IDialogResult dialogResult)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            // 委托   被动执行     被子窗口执行
 | 
					            // 委托   被动执行     被子窗口执行
 | 
				
			||||||
| 
						 | 
					@ -176,7 +177,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        void RequestData()
 | 
					        void RequestData()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            int totalcount = 0;
 | 
					            int totalcount = 0;
 | 
				
			||||||
            UserList = _sqlSugarScope1.Queryable<UserList>()
 | 
					            UserList = SqlSugarHelper.Db.Queryable<UserList>()
 | 
				
			||||||
                .Includes<RoleDm>(ul => ul.Role)
 | 
					                .Includes<RoleDm>(ul => ul.Role)
 | 
				
			||||||
                .Where(ul => ul.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1"))
 | 
					                .Where(ul => ul.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1"))
 | 
				
			||||||
                .WhereIF(!String.IsNullOrEmpty(SearchValue) , (di) => di.Nickname.Contains(SearchValue))
 | 
					                .WhereIF(!String.IsNullOrEmpty(SearchValue) , (di) => di.Nickname.Contains(SearchValue))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,257 @@
 | 
				
			||||||
 | 
					<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 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>
 | 
				
			||||||
 | 
					        <convert:MachineTypeConverter x:Key="MachineTypeConverter"/>
 | 
				
			||||||
 | 
					    </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="1.5*" />
 | 
				
			||||||
 | 
					                <ColumnDefinition Width="1.5*" />
 | 
				
			||||||
 | 
					                <ColumnDefinition Width="2*" />
 | 
				
			||||||
 | 
					                <ColumnDefinition Width="2*" />
 | 
				
			||||||
 | 
					                <ColumnDefinition Width="5*"/>
 | 
				
			||||||
 | 
					            </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}"
 | 
				
			||||||
 | 
					            />
 | 
				
			||||||
 | 
					            <!--<ComboBox
 | 
				
			||||||
 | 
					                    Margin="12 0 0 0"
 | 
				
			||||||
 | 
					                    Grid.Column="2"
 | 
				
			||||||
 | 
					                    materialDesign:HintAssist.Hint="药品名称"
 | 
				
			||||||
 | 
					                    IsEditable="True"
 | 
				
			||||||
 | 
					                    ItemsSource="{Binding DrugInfos}"
 | 
				
			||||||
 | 
					                    SelectedItem="{Binding DrugInfo}"
 | 
				
			||||||
 | 
					                    DisplayMemberPath="DrugName"
 | 
				
			||||||
 | 
					                />-->
 | 
				
			||||||
 | 
					            <ComboBox
 | 
				
			||||||
 | 
					                    Margin="6 0 6 0"
 | 
				
			||||||
 | 
					                    Grid.Column="2"
 | 
				
			||||||
 | 
					                    materialDesign:HintAssist.Hint="药品名称/拼音码/药品编码"
 | 
				
			||||||
 | 
					                    ItemsSource="{Binding DrugInfos}"
 | 
				
			||||||
 | 
					                    SelectedItem="{Binding DrugInfo}"
 | 
				
			||||||
 | 
					                    DisplayMemberPath="DrugName" IsEditable="True" IsTextSearchEnabled="False" KeyUp="ComboBox_KeyUp"
 | 
				
			||||||
 | 
					                />
 | 
				
			||||||
 | 
					            <ComboBox
 | 
				
			||||||
 | 
					                    Margin="12 0 0 0"
 | 
				
			||||||
 | 
					                    Grid.Column="3"
 | 
				
			||||||
 | 
					                    materialDesign:HintAssist.Hint="账册类型"
 | 
				
			||||||
 | 
					                    IsEditable="True"
 | 
				
			||||||
 | 
					                    ItemsSource="{Binding AccountTypeList}"
 | 
				
			||||||
 | 
					                    SelectedItem="{Binding AccountType}"
 | 
				
			||||||
 | 
					                    DisplayMemberPath="AccountTypeName"
 | 
				
			||||||
 | 
					                />
 | 
				
			||||||
 | 
					            <StackPanel Grid.Column="4" Orientation="Horizontal" HorizontalAlignment="Right">
 | 
				
			||||||
 | 
					                <Button
 | 
				
			||||||
 | 
					                    Margin="0 0 3 0"
 | 
				
			||||||
 | 
					                    VerticalAlignment="Center"
 | 
				
			||||||
 | 
					                    Style="{StaticResource MaterialDesignOutlinedLightButton}"
 | 
				
			||||||
 | 
					                    ToolTip="导出" Command="{Binding DayAccountBook}">
 | 
				
			||||||
 | 
					                    <StackPanel Orientation="Horizontal">
 | 
				
			||||||
 | 
					                        <TextBlock Text="生成日结存" />
 | 
				
			||||||
 | 
					                    </StackPanel>
 | 
				
			||||||
 | 
					                </Button>
 | 
				
			||||||
 | 
					                <Button
 | 
				
			||||||
 | 
					                    Margin="0 0 3 0"
 | 
				
			||||||
 | 
					                    VerticalAlignment="Center"
 | 
				
			||||||
 | 
					                    Style="{StaticResource MaterialDesignOutlinedLightButton}"
 | 
				
			||||||
 | 
					                    ToolTip="导出" Command="{Binding DownloadAccountBook}">
 | 
				
			||||||
 | 
					                    <StackPanel Orientation="Horizontal">
 | 
				
			||||||
 | 
					                        <materialDesign:PackIcon Kind="download" />
 | 
				
			||||||
 | 
					                        <TextBlock Text="导出账册" />
 | 
				
			||||||
 | 
					                    </StackPanel>
 | 
				
			||||||
 | 
					                </Button>
 | 
				
			||||||
 | 
					                <Button
 | 
				
			||||||
 | 
					                Margin="0 0 6 0"
 | 
				
			||||||
 | 
					                VerticalAlignment="Center"
 | 
				
			||||||
 | 
					                Style="{StaticResource MaterialDesignOutlinedLightButton}"
 | 
				
			||||||
 | 
					                ToolTip="刷新" Command="{Binding Query}">
 | 
				
			||||||
 | 
					                    <materialDesign:PackIcon
 | 
				
			||||||
 | 
					                    Kind="Refresh" />
 | 
				
			||||||
 | 
					                </Button>
 | 
				
			||||||
 | 
					            </StackPanel>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        </Grid>
 | 
				
			||||||
 | 
					        <DataGrid x:Name="dgv1"
 | 
				
			||||||
 | 
					                Grid.Row="1"
 | 
				
			||||||
 | 
					                materialDesign:DataGridAssist.ColumnHeaderPadding="15"
 | 
				
			||||||
 | 
					                ItemsSource="{Binding AccountList}"
 | 
				
			||||||
 | 
					                materialDesign:DataGridAssist.EnableEditBoxAssist="False"
 | 
				
			||||||
 | 
					                IsSynchronizedWithCurrentItem="True"
 | 
				
			||||||
 | 
					                materialDesign:DataGridAssist.CellPadding="13"
 | 
				
			||||||
 | 
					                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="Background" Value="Transparent"/>
 | 
				
			||||||
 | 
					                            <!--<Setter Property="HorizontalAlignment" Value="Left"/>-->
 | 
				
			||||||
 | 
					                        </Trigger>
 | 
				
			||||||
 | 
					                    </Style.Triggers>
 | 
				
			||||||
 | 
					                </Style>
 | 
				
			||||||
 | 
					            </DataGrid.Resources>
 | 
				
			||||||
 | 
					            <!--GroupStyle to group data-->
 | 
				
			||||||
 | 
					            <!--<DataGrid.GroupStyle>
 | 
				
			||||||
 | 
					                <GroupStyle>
 | 
				
			||||||
 | 
					                    --><!--Group DataItems into DataGroup-->
 | 
				
			||||||
 | 
					                    <!--<GroupStyle.ContainerStyle>
 | 
				
			||||||
 | 
					                        <Style TargetType="{x:Type GroupItem}">
 | 
				
			||||||
 | 
					                            <Setter Property="Template">
 | 
				
			||||||
 | 
					                                <Setter.Value>
 | 
				
			||||||
 | 
					                                    <ControlTemplate TargetType="{x:Type GroupItem}">
 | 
				
			||||||
 | 
					                                        <Expander IsExpanded="True"
 | 
				
			||||||
 | 
					                                                  materialDesign:ExpanderAssist.HeaderBackground="PaleTurquoise">
 | 
				
			||||||
 | 
					                                            <Expander.Header >
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                                <StackPanel Orientation="Horizontal">
 | 
				
			||||||
 | 
					                                                    <TextBlock Text="{Binding Path=Name.DrugName,StringFormat=药品:{0},}" FontWeight="Bold" />
 | 
				
			||||||
 | 
					                                                    <TextBlock FontWeight="Bold" Text="{Binding Path=Name.DrugSpec,StringFormat=规格:{0},}" />
 | 
				
			||||||
 | 
					                                                    <TextBlock FontWeight="Bold" Text="{Binding Path=Name.Manufactory,StringFormat=厂家:{0},}" />
 | 
				
			||||||
 | 
					                                                    <TextBlock FontWeight="Bold" Text="{Binding Path=Name.MaxStock,StringFormat=基数:{0},}" />
 | 
				
			||||||
 | 
					                                                    <TextBlock FontWeight="Bold" Text="{Binding Path=Items,Converter={StaticResource GroupSumConverter}}" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                                </StackPanel>
 | 
				
			||||||
 | 
					                                            </Expander.Header>
 | 
				
			||||||
 | 
					                                            <ItemsPresenter/>
 | 
				
			||||||
 | 
					                                        </Expander>
 | 
				
			||||||
 | 
					                                    </ControlTemplate>
 | 
				
			||||||
 | 
					                                </Setter.Value>
 | 
				
			||||||
 | 
					                            </Setter>
 | 
				
			||||||
 | 
					                        </Style>
 | 
				
			||||||
 | 
					                    </GroupStyle.ContainerStyle>--><!--
 | 
				
			||||||
 | 
					                </GroupStyle>
 | 
				
			||||||
 | 
					            </DataGrid.GroupStyle>-->
 | 
				
			||||||
 | 
					            <DataGrid.Columns>
 | 
				
			||||||
 | 
					                <DataGridTextColumn Width="80"
 | 
				
			||||||
 | 
					                        Binding="{Binding OperationTime}"
 | 
				
			||||||
 | 
					                        Header="日期"
 | 
				
			||||||
 | 
					                        IsReadOnly="True"
 | 
				
			||||||
 | 
					                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                <DataGridTextColumn Width="150"
 | 
				
			||||||
 | 
					                        Binding="{Binding DrugName}"
 | 
				
			||||||
 | 
					                        Header="药品名称"
 | 
				
			||||||
 | 
					                        IsReadOnly="True"
 | 
				
			||||||
 | 
					                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                <DataGridTextColumn Width="130"
 | 
				
			||||||
 | 
					                        Binding="{Binding DrugSpec}"
 | 
				
			||||||
 | 
					                        Header="规格"
 | 
				
			||||||
 | 
					                        IsReadOnly="True"
 | 
				
			||||||
 | 
					                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                <DataGridTextColumn Width="200"
 | 
				
			||||||
 | 
					                        Binding="{Binding Manufactory}"
 | 
				
			||||||
 | 
					                        Header="厂家"
 | 
				
			||||||
 | 
					                        IsReadOnly="True"
 | 
				
			||||||
 | 
					                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                <DataGridTextColumn Width="100"
 | 
				
			||||||
 | 
					                        Binding="{Binding InvoiceId}"
 | 
				
			||||||
 | 
					                        Header="凭证号"
 | 
				
			||||||
 | 
					                        IsReadOnly="True"
 | 
				
			||||||
 | 
					                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                <DataGridTextColumn Width="130"
 | 
				
			||||||
 | 
					                        Binding="{Binding ManuNo}"
 | 
				
			||||||
 | 
					                        Header="批号"
 | 
				
			||||||
 | 
					                        IsReadOnly="True"
 | 
				
			||||||
 | 
					                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                <DataGridTextColumn Width="100"
 | 
				
			||||||
 | 
					                        Binding="{Binding EffDate, StringFormat='yy/MM/dd'}"
 | 
				
			||||||
 | 
					                        Header="有效期"
 | 
				
			||||||
 | 
					                        IsReadOnly="True"
 | 
				
			||||||
 | 
					                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                <DataGridTextColumn Width="75"
 | 
				
			||||||
 | 
					                        Binding="{Binding InQuantity}"
 | 
				
			||||||
 | 
					                        Header="借入数"
 | 
				
			||||||
 | 
					                        IsReadOnly="True"
 | 
				
			||||||
 | 
					                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                <DataGridTextColumn Width="75"
 | 
				
			||||||
 | 
					                        Binding="{Binding OutQuantity}"
 | 
				
			||||||
 | 
					                        Header="发出数"
 | 
				
			||||||
 | 
					                        IsReadOnly="True"
 | 
				
			||||||
 | 
					                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                <DataGridTextColumn Width="75"
 | 
				
			||||||
 | 
					                        Binding="{Binding StockQuantity}"
 | 
				
			||||||
 | 
					                        Header="总结存"
 | 
				
			||||||
 | 
					                        IsReadOnly="True"
 | 
				
			||||||
 | 
					                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                <DataGridTextColumn Width="75"
 | 
				
			||||||
 | 
					                        Binding="{Binding OperatorName}"
 | 
				
			||||||
 | 
					                        Header="发药人"
 | 
				
			||||||
 | 
					                        IsReadOnly="True"
 | 
				
			||||||
 | 
					                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                <DataGridTextColumn Width="75"
 | 
				
			||||||
 | 
					                        Binding="{Binding ReviewerName}"
 | 
				
			||||||
 | 
					                        Header="复核人"
 | 
				
			||||||
 | 
					                        IsReadOnly="True"
 | 
				
			||||||
 | 
					                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                <DataGridTextColumn Width="100"
 | 
				
			||||||
 | 
					                        Binding="{Binding SupplierDept}"
 | 
				
			||||||
 | 
					                        Header="供应单位"
 | 
				
			||||||
 | 
					                        IsReadOnly="True"
 | 
				
			||||||
 | 
					                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                <DataGridTextColumn Width="100"
 | 
				
			||||||
 | 
					                        Binding="{Binding ReceiveDept}"
 | 
				
			||||||
 | 
					                        Header="领用部门"
 | 
				
			||||||
 | 
					                        IsReadOnly="True"
 | 
				
			||||||
 | 
					                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            </DataGrid.Columns>
 | 
				
			||||||
 | 
					        </DataGrid>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <!--<pagination:Pagination Grid.Row="2"
 | 
				
			||||||
 | 
					                                   CurrentPage="{Binding PageNum}"
 | 
				
			||||||
 | 
					                                   PageSize="{Binding PageSize}"
 | 
				
			||||||
 | 
					                                   TotalPages="{Binding TotalCount}"
 | 
				
			||||||
 | 
					                                   InfoTextIsEnabel="True"
 | 
				
			||||||
 | 
					                                />-->
 | 
				
			||||||
 | 
					    </Grid>
 | 
				
			||||||
 | 
					</UserControl>
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,53 @@
 | 
				
			||||||
 | 
					using DM_Weight.msg;
 | 
				
			||||||
 | 
					using DM_Weight.ViewModels;
 | 
				
			||||||
 | 
					using Prism.Events;
 | 
				
			||||||
 | 
					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;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,395 @@
 | 
				
			||||||
 | 
					<UserControl x:Class="DM_Weight.Views.AddDrugControl"
 | 
				
			||||||
 | 
					             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: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" 
 | 
				
			||||||
 | 
					             d:DesignHeight="450" d:DesignWidth="800">
 | 
				
			||||||
 | 
					    <UserControl.Resources>
 | 
				
			||||||
 | 
					        <convert:QuantityCountConverter x:Key="QuantityCountConverter" />
 | 
				
			||||||
 | 
					        <convert:BoardTypeConverter x:Key="BoardTypeConverter" />
 | 
				
			||||||
 | 
					        <convert:DrawerSelectConverter x:Key="DrawerSelectConverter" />
 | 
				
			||||||
 | 
					        <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>
 | 
				
			||||||
 | 
					    <Grid>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <Grid.ColumnDefinitions>
 | 
				
			||||||
 | 
					            <ColumnDefinition Width="Auto" />
 | 
				
			||||||
 | 
					            <ColumnDefinition Width="Auto" />
 | 
				
			||||||
 | 
					            <ColumnDefinition />
 | 
				
			||||||
 | 
					        </Grid.ColumnDefinitions>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <Grid Margin="0" Grid.Column="0"  Width="280" Height="570"  Visibility="{Binding Is8Drawer, Converter={StaticResource BooleanToVisibilityConverter}}">
 | 
				
			||||||
 | 
					            <Grid.Background>
 | 
				
			||||||
 | 
					                <ImageBrush ImageSource="/Images/box.png" />
 | 
				
			||||||
 | 
					            </Grid.Background>
 | 
				
			||||||
 | 
					            <Grid.RowDefinitions>
 | 
				
			||||||
 | 
					                <RowDefinition Height="200" />
 | 
				
			||||||
 | 
					                <RowDefinition />
 | 
				
			||||||
 | 
					            </Grid.RowDefinitions>
 | 
				
			||||||
 | 
					            <Grid Grid.Row="1">
 | 
				
			||||||
 | 
					                <Grid.RowDefinitions>
 | 
				
			||||||
 | 
					                    <RowDefinition />
 | 
				
			||||||
 | 
					                    <RowDefinition />
 | 
				
			||||||
 | 
					                    <RowDefinition />
 | 
				
			||||||
 | 
					                    <RowDefinition />
 | 
				
			||||||
 | 
					                    <RowDefinition />
 | 
				
			||||||
 | 
					                    <RowDefinition />
 | 
				
			||||||
 | 
					                    <RowDefinition />
 | 
				
			||||||
 | 
					                    <RowDefinition />
 | 
				
			||||||
 | 
					                </Grid.RowDefinitions>
 | 
				
			||||||
 | 
					                <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>
 | 
				
			||||||
 | 
					                <Button Grid.Row="0" Width="210" Content="1" Command="{Binding UpdateDrawerNo}" CommandParameter="1" />
 | 
				
			||||||
 | 
					                <Button Grid.Row="1" Width="210" Content="2" Command="{Binding UpdateDrawerNo}" CommandParameter="2" />
 | 
				
			||||||
 | 
					                <Button Grid.Row="2" Width="210" Content="3" Command="{Binding UpdateDrawerNo}" CommandParameter="3" />
 | 
				
			||||||
 | 
					                <Button Grid.Row="3" Width="210" Content="4" Command="{Binding UpdateDrawerNo}" CommandParameter="4" />
 | 
				
			||||||
 | 
					                <Button Grid.Row="4" Width="210" Content="5" Command="{Binding UpdateDrawerNo}" CommandParameter="5" />
 | 
				
			||||||
 | 
					                <Button Grid.Row="5" Width="210" Content="6" Command="{Binding UpdateDrawerNo}" CommandParameter="6" />
 | 
				
			||||||
 | 
					                <Button Grid.Row="6" Width="210" Content="7" Command="{Binding UpdateDrawerNo}" CommandParameter="7" />
 | 
				
			||||||
 | 
					                <Button Grid.Row="7" Width="210" Content="8" Command="{Binding UpdateDrawerNo}" CommandParameter="8" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            </Grid>
 | 
				
			||||||
 | 
					        </Grid>
 | 
				
			||||||
 | 
					        <Grid Margin="0" Grid.Column="1" Width="300" Height="570" Visibility="{Binding Is16Drawer, Converter={StaticResource BooleanToVisibilityConverter}}">
 | 
				
			||||||
 | 
					            <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.Background>
 | 
				
			||||||
 | 
					                <ImageBrush ImageSource="/Images/box-16.jpg" />
 | 
				
			||||||
 | 
					            </Grid.Background>
 | 
				
			||||||
 | 
					            <Grid.RowDefinitions>
 | 
				
			||||||
 | 
					                <RowDefinition Height="200" />
 | 
				
			||||||
 | 
					                <RowDefinition />
 | 
				
			||||||
 | 
					            </Grid.RowDefinitions>
 | 
				
			||||||
 | 
					            <Grid Margin="10 0 0 0"  Visibility="{Binding Is17Drawer, Converter={StaticResource BooleanToVisibilityConverter}}" Grid.Row="0">
 | 
				
			||||||
 | 
					                <Button  Width="110" Content="17" HorizontalAlignment="Left" Command="{Binding UpdateDrawerNo}" CommandParameter="17" />
 | 
				
			||||||
 | 
					            </Grid>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <Grid Grid.Row="1">
 | 
				
			||||||
 | 
					                <Grid.RowDefinitions>
 | 
				
			||||||
 | 
					                    <RowDefinition />
 | 
				
			||||||
 | 
					                    <RowDefinition />
 | 
				
			||||||
 | 
					                    <RowDefinition />
 | 
				
			||||||
 | 
					                    <RowDefinition />
 | 
				
			||||||
 | 
					                    <RowDefinition />
 | 
				
			||||||
 | 
					                    <RowDefinition />
 | 
				
			||||||
 | 
					                    <RowDefinition />
 | 
				
			||||||
 | 
					                    <RowDefinition />
 | 
				
			||||||
 | 
					                </Grid.RowDefinitions>
 | 
				
			||||||
 | 
					                <Grid.ColumnDefinitions>
 | 
				
			||||||
 | 
					                    <ColumnDefinition />
 | 
				
			||||||
 | 
					                    <ColumnDefinition />
 | 
				
			||||||
 | 
					                </Grid.ColumnDefinitions>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                <Button Grid.Row="0" Grid.Column="0" Width="120" Content="1" Command="{Binding UpdateDrawerNo}" CommandParameter="1" />
 | 
				
			||||||
 | 
					                <Button Grid.Row="1" Grid.Column="0" Width="120" Content="2" Command="{Binding UpdateDrawerNo}" CommandParameter="2" />
 | 
				
			||||||
 | 
					                <Button Grid.Row="2" Grid.Column="0" Width="120" Content="3" Command="{Binding UpdateDrawerNo}" CommandParameter="3" />
 | 
				
			||||||
 | 
					                <Button Grid.Row="3" Grid.Column="0" Width="120" Content="4" Command="{Binding UpdateDrawerNo}" CommandParameter="4" />
 | 
				
			||||||
 | 
					                <Button Grid.Row="4" Grid.Column="0" Width="120" Content="5" Command="{Binding UpdateDrawerNo}" CommandParameter="5" />
 | 
				
			||||||
 | 
					                <Button Grid.Row="5" Grid.Column="0" Width="120" Content="6" Command="{Binding UpdateDrawerNo}" CommandParameter="6" />
 | 
				
			||||||
 | 
					                <Button Grid.Row="6" Grid.Column="0" Width="120" Content="7" Command="{Binding UpdateDrawerNo}" CommandParameter="7" />
 | 
				
			||||||
 | 
					                <Button Grid.Row="7" Grid.Column="0" Width="120" Content="8" Command="{Binding UpdateDrawerNo}" CommandParameter="8" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                <Button Grid.Row="0" Grid.Column="1" Width="120" Content="9" Command="{Binding UpdateDrawerNo}" CommandParameter="9" />
 | 
				
			||||||
 | 
					                <Button Grid.Row="1" Grid.Column="1" Width="120" Content="10" Command="{Binding UpdateDrawerNo}" CommandParameter="10" />
 | 
				
			||||||
 | 
					                <Button Grid.Row="2" Grid.Column="1" Width="120" Content="11" Command="{Binding UpdateDrawerNo}" CommandParameter="11" />
 | 
				
			||||||
 | 
					                <Button Grid.Row="3" Grid.Column="1" Width="120" Content="12" Command="{Binding UpdateDrawerNo}" CommandParameter="12" />
 | 
				
			||||||
 | 
					                <Button Grid.Row="4" Grid.Column="1" Width="120" Content="13" Command="{Binding UpdateDrawerNo}" CommandParameter="13" />
 | 
				
			||||||
 | 
					                <Button Grid.Row="5" Grid.Column="1" Width="120" Content="14" Command="{Binding UpdateDrawerNo}" CommandParameter="14" />
 | 
				
			||||||
 | 
					                <Button Grid.Row="6" Grid.Column="1" Width="120" Content="15" Command="{Binding UpdateDrawerNo}" CommandParameter="15" />
 | 
				
			||||||
 | 
					                <Button Grid.Row="7" Grid.Column="1" Width="120" Content="16" Command="{Binding UpdateDrawerNo}" CommandParameter="16" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            </Grid>
 | 
				
			||||||
 | 
					        </Grid>
 | 
				
			||||||
 | 
					        <Grid Grid.Column="2">
 | 
				
			||||||
 | 
					            <Grid.RowDefinitions>
 | 
				
			||||||
 | 
					                <RowDefinition Height="Auto" />
 | 
				
			||||||
 | 
					                <RowDefinition />
 | 
				
			||||||
 | 
					            </Grid.RowDefinitions>
 | 
				
			||||||
 | 
					            <StackPanel Grid.Row="0" Margin="6" Orientation="Horizontal" HorizontalAlignment="Right">
 | 
				
			||||||
 | 
					                <Button
 | 
				
			||||||
 | 
					                    Margin="0 0 3 0"
 | 
				
			||||||
 | 
					                    VerticalAlignment="Center"
 | 
				
			||||||
 | 
					                    Command="{Binding OpenDrawer}"
 | 
				
			||||||
 | 
					                    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}"
 | 
				
			||||||
 | 
					                    Style="{StaticResource MaterialDesignOutlinedLightButton}"
 | 
				
			||||||
 | 
					                    Content="加药" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                <TextBox Text="{Binding PZH, UpdateSourceTrigger=PropertyChanged}" materialDesign:HintAssist.Hint="凭证号"
 | 
				
			||||||
 | 
					                materialDesign:HintAssist.IsFloating="True" Width="100"
 | 
				
			||||||
 | 
					                Margin="0 0 3 0"
 | 
				
			||||||
 | 
					                Visibility="{Binding Status, Converter={StaticResource StatusConverter}, ConverterParameter=CompleteBtn}"
 | 
				
			||||||
 | 
					                />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                <Button
 | 
				
			||||||
 | 
					                    Margin="0 0 3 0"
 | 
				
			||||||
 | 
					                    VerticalAlignment="Center"
 | 
				
			||||||
 | 
					                    Command="{Binding TakeFinish}"
 | 
				
			||||||
 | 
					                    Visibility="{Binding Status, Converter={StaticResource StatusConverter}, ConverterParameter=CompleteBtn}"
 | 
				
			||||||
 | 
					                    Style="{StaticResource MaterialDesignOutlinedLightButton}"
 | 
				
			||||||
 | 
					                    Content="完成" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                <Button
 | 
				
			||||||
 | 
					                    Margin="0 0 6 0"
 | 
				
			||||||
 | 
					                    VerticalAlignment="Center"
 | 
				
			||||||
 | 
					                    Command="{Binding CancleTake}"
 | 
				
			||||||
 | 
					                    Visibility="{Binding Status, Converter={StaticResource StatusConverter}, ConverterParameter=CancelBtn}"
 | 
				
			||||||
 | 
					                    Style="{StaticResource MaterialDesignOutlinedLightButton}"
 | 
				
			||||||
 | 
					                    Content="取消" />
 | 
				
			||||||
 | 
					            </StackPanel>
 | 
				
			||||||
 | 
					            <ScrollViewer  Grid.Row="1"  Margin="6">
 | 
				
			||||||
 | 
					                <ItemsControl 
 | 
				
			||||||
 | 
					                ItemsSource="{Binding ChannelLsts}"
 | 
				
			||||||
 | 
					                Grid.IsSharedSizeScope="True"
 | 
				
			||||||
 | 
					               >
 | 
				
			||||||
 | 
					                    <!--<ItemsControl.ItemsPanel>
 | 
				
			||||||
 | 
					                    <ItemsPanelTemplate>
 | 
				
			||||||
 | 
					                        -->
 | 
				
			||||||
 | 
					                    <!--<UniformGrid Columns="4" />-->
 | 
				
			||||||
 | 
					                    <!--
 | 
				
			||||||
 | 
					                    </ItemsPanelTemplate>
 | 
				
			||||||
 | 
					                </ItemsControl.ItemsPanel>-->
 | 
				
			||||||
 | 
					                    <ItemsControl.ItemTemplate>
 | 
				
			||||||
 | 
					                        <DataTemplate>
 | 
				
			||||||
 | 
					                            <!--<materialDesign:Card
 | 
				
			||||||
 | 
					                                Background="{StaticResource MaterialDesignLightBackground}"
 | 
				
			||||||
 | 
					                                Margin="4"
 | 
				
			||||||
 | 
					                                Padding="0">-->
 | 
				
			||||||
 | 
					                            <Grid>
 | 
				
			||||||
 | 
					                                <Grid.ColumnDefinitions>
 | 
				
			||||||
 | 
					                                    <ColumnDefinition Width="200"/>
 | 
				
			||||||
 | 
					                                    <ColumnDefinition/>
 | 
				
			||||||
 | 
					                                </Grid.ColumnDefinitions>
 | 
				
			||||||
 | 
					                                <Border BorderBrush="White" BorderThickness="1">
 | 
				
			||||||
 | 
					                                    <StackPanel Orientation="Horizontal" Background="#31ccec" Grid.Column="0">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                        <Grid>
 | 
				
			||||||
 | 
					                                            <Grid.RowDefinitions>
 | 
				
			||||||
 | 
					                                                <RowDefinition/>
 | 
				
			||||||
 | 
					                                                <RowDefinition/>
 | 
				
			||||||
 | 
					                                                <RowDefinition/>
 | 
				
			||||||
 | 
					                                            </Grid.RowDefinitions>
 | 
				
			||||||
 | 
					                                            <Grid.ColumnDefinitions>
 | 
				
			||||||
 | 
					                                                <ColumnDefinition Width="200"/>
 | 
				
			||||||
 | 
					                                            </Grid.ColumnDefinitions>
 | 
				
			||||||
 | 
					                                            <TextBlock TextWrapping="Wrap" Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Center"  Padding="0 10 0 0 " Text="{Binding Drug.DrugName}"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                            <TextBlock TextWrapping="Wrap" Grid.Row="1"  HorizontalAlignment="Center" VerticalAlignment="Center"  Padding="0 0 0 1 " Text="{Binding Drug.DrugSpec}"/>
 | 
				
			||||||
 | 
					                                            <Button  Grid.Row="2"   Padding="0 0 0 1 "  Style="{x:Null}" BorderBrush="{x:Null}" Background="{x:Null}" Click="Button_Click" CommandParameter="{Binding}">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                                <Button.Content>
 | 
				
			||||||
 | 
					                                                    <Border Width="32" Height="32" CornerRadius="16" Background="CornflowerBlue" VerticalAlignment="Center" HorizontalAlignment="Center">
 | 
				
			||||||
 | 
					                                                        <Path Data="M0 11L22 11M11 0L11 22" Stroke="WhiteSmoke" StrokeThickness="4" VerticalAlignment="Center" HorizontalAlignment="Center"></Path>
 | 
				
			||||||
 | 
					                                                    </Border>
 | 
				
			||||||
 | 
					                                                </Button.Content>
 | 
				
			||||||
 | 
					                                            </Button>
 | 
				
			||||||
 | 
					                                        </Grid>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    </StackPanel>
 | 
				
			||||||
 | 
					                                </Border>
 | 
				
			||||||
 | 
					                                <DataGrid
 | 
				
			||||||
 | 
					                Margin="0"
 | 
				
			||||||
 | 
					                 Grid.Column="1" 
 | 
				
			||||||
 | 
					                materialDesign:DataGridAssist.ColumnHeaderPadding="15"
 | 
				
			||||||
 | 
					                 ItemsSource="{Binding channelStocks}"  
 | 
				
			||||||
 | 
					                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="Center"/>
 | 
				
			||||||
 | 
					                                                </Trigger>
 | 
				
			||||||
 | 
					                                            </Style.Triggers>
 | 
				
			||||||
 | 
					                                        </Style>
 | 
				
			||||||
 | 
					                                    </DataGrid.Resources>
 | 
				
			||||||
 | 
					                                    <DataGrid.Columns>
 | 
				
			||||||
 | 
					                                        <DataGridTextColumn Width="80"
 | 
				
			||||||
 | 
					                        Binding="{Binding ColNo}"
 | 
				
			||||||
 | 
					                        Header="库位"
 | 
				
			||||||
 | 
					                        IsReadOnly="True"
 | 
				
			||||||
 | 
					                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                                        <!--<DataGridTextColumn Width="180"
 | 
				
			||||||
 | 
					                        Binding="{Binding DrugInfo.DrugName}"
 | 
				
			||||||
 | 
					                        Header="药品名称"
 | 
				
			||||||
 | 
					                        IsReadOnly="True"
 | 
				
			||||||
 | 
					                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>-->
 | 
				
			||||||
 | 
					                                        <DataGridTextColumn Width="150"
 | 
				
			||||||
 | 
					                        Binding="{Binding DrugInfo.DrugSpec}"
 | 
				
			||||||
 | 
					                        Header="规格"
 | 
				
			||||||
 | 
					                        IsReadOnly="True"
 | 
				
			||||||
 | 
					                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                                        <DataGridTemplateColumn Width="200" IsReadOnly="True"
 | 
				
			||||||
 | 
					                        Header="批次">
 | 
				
			||||||
 | 
					                                            <DataGridTemplateColumn.CellTemplate>
 | 
				
			||||||
 | 
					                                                <DataTemplate>
 | 
				
			||||||
 | 
					                                                    <ComboBox
 | 
				
			||||||
 | 
					                                    Style="{StaticResource MaterialDesignDataGridComboBox}"                  
 | 
				
			||||||
 | 
					                                    ItemsSource="{Binding DrugInfo.DrugManuNos}"
 | 
				
			||||||
 | 
					                                    SelectedItem="{Binding drugManuNo,UpdateSourceTrigger=PropertyChanged}"
 | 
				
			||||||
 | 
					                                    DisplayMemberPath="ManuNo" 
 | 
				
			||||||
 | 
					                                    IsEnabled="{Binding Quantity,Converter={StaticResource QuantityCountConverter}}">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                                    </ComboBox>
 | 
				
			||||||
 | 
					                                                </DataTemplate>
 | 
				
			||||||
 | 
					                                            </DataGridTemplateColumn.CellTemplate>
 | 
				
			||||||
 | 
					                                        </DataGridTemplateColumn>
 | 
				
			||||||
 | 
					                                        <DataGridTextColumn Width="100"
 | 
				
			||||||
 | 
					                        Binding="{Binding drugManuNo.EffDate}"
 | 
				
			||||||
 | 
					                        Header="效期"
 | 
				
			||||||
 | 
					                        IsReadOnly="True"
 | 
				
			||||||
 | 
					                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                                        <DataGridTextColumn Width="100"
 | 
				
			||||||
 | 
					                        Binding="{Binding Quantity}"
 | 
				
			||||||
 | 
					                        Header="库存"
 | 
				
			||||||
 | 
					                        IsReadOnly="True"
 | 
				
			||||||
 | 
					                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                                        <DataGridTemplateColumn Width="100"
 | 
				
			||||||
 | 
					                        Header="添加数量">
 | 
				
			||||||
 | 
					                                            <DataGridTemplateColumn.CellTemplate>
 | 
				
			||||||
 | 
					                                                <DataTemplate>
 | 
				
			||||||
 | 
					                                                    <TextBox Style="{StaticResource MaterialDesignDataGridTextColumnEditingStyle}" IsReadOnly="{Binding BoardType, Converter={StaticResource InputQuantityConverter}}">
 | 
				
			||||||
 | 
					                                                        <TextBox.Text>
 | 
				
			||||||
 | 
					                                                            <Binding Path="AddQuantity" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged">
 | 
				
			||||||
 | 
					                                                                <Binding.ValidationRules>
 | 
				
			||||||
 | 
					                                                                    <ExceptionValidationRule />
 | 
				
			||||||
 | 
					                                                                </Binding.ValidationRules>
 | 
				
			||||||
 | 
					                                                            </Binding>
 | 
				
			||||||
 | 
					                                                        </TextBox.Text>
 | 
				
			||||||
 | 
					                                                    </TextBox>
 | 
				
			||||||
 | 
					                                                </DataTemplate>
 | 
				
			||||||
 | 
					                                            </DataGridTemplateColumn.CellTemplate>
 | 
				
			||||||
 | 
					                                        </DataGridTemplateColumn>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    </DataGrid.Columns>
 | 
				
			||||||
 | 
					                                </DataGrid>
 | 
				
			||||||
 | 
					                                <!--<ListView Padding="0 6 0 0"  Grid.Column="1" 
 | 
				
			||||||
 | 
					                                     materialDesign:ListViewAssist.ListViewItemPadding="15"
 | 
				
			||||||
 | 
					                                        ItemsSource="{Binding channelStocks}"  SelectedItem="{Binding channelStock}"
 | 
				
			||||||
 | 
					                                        materialDesign:ListViewAssist.HeaderRowBackground="#31ccec">
 | 
				
			||||||
 | 
					                                    <ListView.Resources>
 | 
				
			||||||
 | 
					                                        <Style TargetType="{x:Type GridViewColumnHeader}" BasedOn="{StaticResource {x:Type GridViewColumnHeader}}">
 | 
				
			||||||
 | 
					                                            <Setter Property="Background" Value="#31ccec" />
 | 
				
			||||||
 | 
					                                            <Setter Property="Foreground" Value="white" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                            <Setter Property="BorderBrush" Value="white"/>
 | 
				
			||||||
 | 
					                                            <Setter Property="BorderThickness" Value="0.6"/>
 | 
				
			||||||
 | 
					                                            <Setter Property="HorizontalContentAlignment" Value="Center"/>
 | 
				
			||||||
 | 
					                                        </Style>
 | 
				
			||||||
 | 
					                                    </ListView.Resources>
 | 
				
			||||||
 | 
					                                    <ListView.View>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                        <GridView ColumnHeaderContainerStyle="{StaticResource st}">
 | 
				
			||||||
 | 
					                                            <GridView.Columns>
 | 
				
			||||||
 | 
					                                                <GridViewColumn Width="80" Header="库位" DisplayMemberBinding="{Binding ColNo}" />
 | 
				
			||||||
 | 
					                                                <GridViewColumn Width="130"  Header="批次">
 | 
				
			||||||
 | 
					                                                    <GridViewColumn.CellTemplate>
 | 
				
			||||||
 | 
					                                                        <DataTemplate>
 | 
				
			||||||
 | 
					                                                            <ComboBox Style="{StaticResource MaterialDesignComboBox}"                  
 | 
				
			||||||
 | 
					                                                                    ItemsSource="{Binding DrugInfo.DrugManuNos}" SelectedItem="{Binding drugManuNo,UpdateSourceTrigger=PropertyChanged}"
 | 
				
			||||||
 | 
					                                                                    DisplayMemberPath="ManuNo" IsEnabled="{Binding Quantity,Converter={StaticResource QuantityCountConverter}}">
 | 
				
			||||||
 | 
					                                                            </ComboBox>
 | 
				
			||||||
 | 
					                                                        </DataTemplate>
 | 
				
			||||||
 | 
					                                                    </GridViewColumn.CellTemplate>
 | 
				
			||||||
 | 
					                                                </GridViewColumn>
 | 
				
			||||||
 | 
					                                                <GridViewColumn Width="130" Header="效期" DisplayMemberBinding="{Binding drugManuNo.EffDate}" />
 | 
				
			||||||
 | 
					                                                <GridViewColumn Width="80" Header="库存" DisplayMemberBinding="{Binding Quantity}" />
 | 
				
			||||||
 | 
					                                                <GridViewColumn Width="80" Header="添加数量">
 | 
				
			||||||
 | 
					                                                    <GridViewColumn.CellTemplate>
 | 
				
			||||||
 | 
					                                                        <DataTemplate>
 | 
				
			||||||
 | 
					                                                            <TextBox  Width="80" Padding="10" Grid.Column="1"
 | 
				
			||||||
 | 
					                                                                    Text="{Binding AddQuantity}"
 | 
				
			||||||
 | 
					                                                                    materialDesign:HintAssist.Hint="添加数量"
 | 
				
			||||||
 | 
					                                                                    Style="{StaticResource MaterialDesignDataGridTextColumnEditingStyle}"/>
 | 
				
			||||||
 | 
					                                                        </DataTemplate>
 | 
				
			||||||
 | 
					                                                    </GridViewColumn.CellTemplate>
 | 
				
			||||||
 | 
					                                                </GridViewColumn>
 | 
				
			||||||
 | 
					                                            </GridView.Columns>
 | 
				
			||||||
 | 
					                                        </GridView>
 | 
				
			||||||
 | 
					                                    </ListView.View>
 | 
				
			||||||
 | 
					                                </ListView>-->
 | 
				
			||||||
 | 
					                            </Grid>
 | 
				
			||||||
 | 
					                        </DataTemplate>
 | 
				
			||||||
 | 
					                    </ItemsControl.ItemTemplate>
 | 
				
			||||||
 | 
					                </ItemsControl>
 | 
				
			||||||
 | 
					            </ScrollViewer>
 | 
				
			||||||
 | 
					        </Grid>
 | 
				
			||||||
 | 
					    </Grid>
 | 
				
			||||||
 | 
					</UserControl>
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,41 @@
 | 
				
			||||||
 | 
					using DM_Weight.Models;
 | 
				
			||||||
 | 
					using DM_Weight.msg;
 | 
				
			||||||
 | 
					using DM_Weight.ViewModels;
 | 
				
			||||||
 | 
					using Prism.Events;
 | 
				
			||||||
 | 
					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>
 | 
				
			||||||
 | 
					    /// AddDrugControl.xaml 的交互逻辑
 | 
				
			||||||
 | 
					    /// </summary>
 | 
				
			||||||
 | 
					    public partial class AddDrugControl : UserControl
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        IEventAggregator _eventAggregator;
 | 
				
			||||||
 | 
					        public AddDrugControl(IEventAggregator eventAggregator)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            InitializeComponent();
 | 
				
			||||||
 | 
					            _eventAggregator= eventAggregator;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        private void Button_Click(object sender, RoutedEventArgs e)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Button btn = (Button)sender;
 | 
				
			||||||
 | 
					            ChannelList cls = (ChannelList)btn.CommandParameter;
 | 
				
			||||||
 | 
					            //vms.AddAction(cls);
 | 
				
			||||||
 | 
					            _eventAggregator.GetEvent<AddDrugEvent>().Publish(cls);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,203 @@
 | 
				
			||||||
 | 
					<UserControl x:Class="DM_Weight.Views.CheckRecordNewWindow"
 | 
				
			||||||
 | 
					             xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes" 
 | 
				
			||||||
 | 
					             xmlns:pagination="clr-namespace:DM_Weight.Components.pagination"
 | 
				
			||||||
 | 
					             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:prism="http://prismlibrary.com/"
 | 
				
			||||||
 | 
					             xmlns:convert="clr-namespace:DM_Weight.Converter"
 | 
				
			||||||
 | 
					             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>
 | 
				
			||||||
 | 
					        <convert:MachineTypeConverter x:Key="MachineTypeConverter"/>
 | 
				
			||||||
 | 
					    </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="1.5*" />
 | 
				
			||||||
 | 
					                <ColumnDefinition Width="1.5*" />
 | 
				
			||||||
 | 
					                <ColumnDefinition Width="2*" />
 | 
				
			||||||
 | 
					                <ColumnDefinition Width="2*" />
 | 
				
			||||||
 | 
					                <ColumnDefinition Width="5*"/>
 | 
				
			||||||
 | 
					            </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.Column="4" Orientation="Horizontal" HorizontalAlignment="Right">
 | 
				
			||||||
 | 
					                <Button
 | 
				
			||||||
 | 
					                    Style="{StaticResource MaterialDesignOutlinedLightButton}"
 | 
				
			||||||
 | 
					                    Command="{Binding DownLoadCommond}">
 | 
				
			||||||
 | 
					                    <StackPanel Orientation="Horizontal">
 | 
				
			||||||
 | 
					                        <materialDesign:PackIcon Kind="download"/>
 | 
				
			||||||
 | 
					                        <TextBlock Text="盘点记录"/>
 | 
				
			||||||
 | 
					                    </StackPanel>
 | 
				
			||||||
 | 
					                </Button>
 | 
				
			||||||
 | 
					                <Button
 | 
				
			||||||
 | 
					                Margin="0 0 6 0"
 | 
				
			||||||
 | 
					                VerticalAlignment="Center"
 | 
				
			||||||
 | 
					                Style="{StaticResource MaterialDesignOutlinedLightButton}"
 | 
				
			||||||
 | 
					                ToolTip="刷新" Command="{Binding Query}">
 | 
				
			||||||
 | 
					                    <materialDesign:PackIcon
 | 
				
			||||||
 | 
					                    Kind="Refresh" />
 | 
				
			||||||
 | 
					                </Button>
 | 
				
			||||||
 | 
					            </StackPanel>
 | 
				
			||||||
 | 
					        </Grid>
 | 
				
			||||||
 | 
					        <!--<ScrollViewer  Grid.Row="1"  Margin="0">
 | 
				
			||||||
 | 
					            <ItemsControl 
 | 
				
			||||||
 | 
					                ItemsSource="{Binding obsCheckRecordStock}"
 | 
				
			||||||
 | 
					                Grid.IsSharedSizeScope="True">
 | 
				
			||||||
 | 
					                <ItemsControl.ItemTemplate>
 | 
				
			||||||
 | 
					                    <DataTemplate>
 | 
				
			||||||
 | 
					                        <Grid>
 | 
				
			||||||
 | 
					                            <Grid.ColumnDefinitions>
 | 
				
			||||||
 | 
					                                <ColumnDefinition Width="200"/>
 | 
				
			||||||
 | 
					                                <ColumnDefinition/>
 | 
				
			||||||
 | 
					                            </Grid.ColumnDefinitions>
 | 
				
			||||||
 | 
					                            <Border BorderBrush="White" BorderThickness="1">
 | 
				
			||||||
 | 
					                                <StackPanel Orientation="Horizontal" Background="#31ccec" Grid.Column="0">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    <Grid>
 | 
				
			||||||
 | 
					                                        <Grid.RowDefinitions>
 | 
				
			||||||
 | 
					                                            <RowDefinition/>
 | 
				
			||||||
 | 
					                                            <RowDefinition/>
 | 
				
			||||||
 | 
					                                            <RowDefinition/>
 | 
				
			||||||
 | 
					                                        </Grid.RowDefinitions>
 | 
				
			||||||
 | 
					                                        <Grid.ColumnDefinitions>
 | 
				
			||||||
 | 
					                                            <ColumnDefinition Width="200"/>
 | 
				
			||||||
 | 
					                                        </Grid.ColumnDefinitions>
 | 
				
			||||||
 | 
					                                        <TextBlock TextWrapping="Wrap" Grid.Row="0" HorizontalAlignment="Left" VerticalAlignment="Center"  Padding="50 10 0 0 " 
 | 
				
			||||||
 | 
					                                                   Text="{Binding optdate,StringFormat='yyyy-MM-dd HH:mm:ss'}"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                        <TextBlock TextWrapping="Wrap" Grid.Row="1"  HorizontalAlignment="Left" VerticalAlignment="Center"  Padding="50 0 0 0 " 
 | 
				
			||||||
 | 
					                                                   Text="{Binding operatorUser,StringFormat=操作人:{0}}"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                        <TextBlock TextWrapping="Wrap" Grid.Row="2"  HorizontalAlignment="Left" VerticalAlignment="Center"  Padding="50 0 0 0 "
 | 
				
			||||||
 | 
					                                                   Text="{Binding reviewerUser,StringFormat=审核人:{0}}"/>
 | 
				
			||||||
 | 
					                                    </Grid>
 | 
				
			||||||
 | 
					                                </StackPanel>
 | 
				
			||||||
 | 
					                            </Border>
 | 
				
			||||||
 | 
					                            <DataGrid
 | 
				
			||||||
 | 
					                                x:Name="GridName"
 | 
				
			||||||
 | 
					                                Margin="0"
 | 
				
			||||||
 | 
					                                 Grid.Column="1" 
 | 
				
			||||||
 | 
					                                materialDesign:DataGridAssist.ColumnHeaderPadding="15"
 | 
				
			||||||
 | 
					                                 ItemsSource="{Binding manuNoDetails}"  
 | 
				
			||||||
 | 
					                                materialDesign:DataGridAssist.EnableEditBoxAssist="False"
 | 
				
			||||||
 | 
					                                materialDesign:DataGridAssist.CellPadding="15"
 | 
				
			||||||
 | 
					                                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="60" />
 | 
				
			||||||
 | 
					                                        <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="Center"/>
 | 
				
			||||||
 | 
					                                            </Trigger>
 | 
				
			||||||
 | 
					                                        </Style.Triggers>
 | 
				
			||||||
 | 
					                                    </Style>
 | 
				
			||||||
 | 
					                                </DataGrid.Resources>
 | 
				
			||||||
 | 
					                                <DataGrid.Columns>
 | 
				
			||||||
 | 
					                                    <DataGridTextColumn Width="100" Binding="{Binding drugName}" Header="药品名称" IsReadOnly="True" 
 | 
				
			||||||
 | 
					                                                            ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                                    <DataGridTextColumn Width="100" Binding="{Binding drugSpec}" Header="规格" IsReadOnly="True" 
 | 
				
			||||||
 | 
					                                                            ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                                    <DataGridTextColumn  Width="150" Binding="{Binding manufactory}" Header="厂家"
 | 
				
			||||||
 | 
					                                                            ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                                    <DataGridTextColumn Width="60" Binding="{Binding quantity}" Header="总库存" IsReadOnly="True"
 | 
				
			||||||
 | 
					                                                            ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                                    <DataGridTextColumn Width="100" Binding="{Binding manuNo}" Header="批次" IsReadOnly="True" 
 | 
				
			||||||
 | 
					                                                            ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                                    <DataGridTextColumn  Width="150" Binding="{Binding effDate}" Header="效期"
 | 
				
			||||||
 | 
					                                                            ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                                    <DataGridTextColumn Width="60" Binding="{Binding ManuQuantity}" Header="数量" IsReadOnly="True"
 | 
				
			||||||
 | 
					                                                            ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                                </DataGrid.Columns>
 | 
				
			||||||
 | 
					                            </DataGrid>
 | 
				
			||||||
 | 
					                        </Grid>
 | 
				
			||||||
 | 
					                    </DataTemplate>
 | 
				
			||||||
 | 
					                </ItemsControl.ItemTemplate>
 | 
				
			||||||
 | 
					            </ItemsControl>
 | 
				
			||||||
 | 
					        </ScrollViewer>-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <ListView Grid.Row="1" ItemsSource="{Binding obsCheckRecordStock,UpdateSourceTrigger=PropertyChanged}" 
 | 
				
			||||||
 | 
					                   SelectedItem="{Binding checkRecordStock}"
 | 
				
			||||||
 | 
					                   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="100"
 | 
				
			||||||
 | 
					                        Header="时间"
 | 
				
			||||||
 | 
					                        DisplayMemberBinding="{Binding optdate, StringFormat='yyyy-MM-dd HH:mm:ss'}" />
 | 
				
			||||||
 | 
					                    <GridViewColumn Width="100"
 | 
				
			||||||
 | 
					                        Header="操作人"
 | 
				
			||||||
 | 
					                        DisplayMemberBinding="{Binding operatorUser}"/>
 | 
				
			||||||
 | 
					                    <GridViewColumn Width="100"
 | 
				
			||||||
 | 
					                        Header="审核人"
 | 
				
			||||||
 | 
					                        DisplayMemberBinding="{Binding reviewerUser}"/>
 | 
				
			||||||
 | 
					                </GridView>
 | 
				
			||||||
 | 
					            </ListView.View>
 | 
				
			||||||
 | 
					        </ListView>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <pagination:Pagination Grid.Row="2"
 | 
				
			||||||
 | 
					                                   CurrentPage="{Binding PageNum}"
 | 
				
			||||||
 | 
					                                   PageSize="{Binding PageSize}"
 | 
				
			||||||
 | 
					                                   TotalPages="{Binding TotalCount}"
 | 
				
			||||||
 | 
					                                   InfoTextIsEnabel="True"
 | 
				
			||||||
 | 
					                                />
 | 
				
			||||||
 | 
					    </Grid>
 | 
				
			||||||
 | 
					</UserControl>
 | 
				
			||||||
| 
						 | 
					@ -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>
 | 
				
			||||||
 | 
					    /// CheckRecordWindow.xaml 的交互逻辑
 | 
				
			||||||
 | 
					    /// </summary>
 | 
				
			||||||
 | 
					    public partial class CheckRecordNewWindow : UserControl
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public CheckRecordNewWindow()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            InitializeComponent();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,195 @@
 | 
				
			||||||
 | 
					<UserControl x:Class="DM_Weight.Views.CheckStockNew2Window"
 | 
				
			||||||
 | 
					             xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes" 
 | 
				
			||||||
 | 
					             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:util="clr-namespace:DM_Weight.util"
 | 
				
			||||||
 | 
					             xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
 | 
				
			||||||
 | 
					             xmlns:convert="clr-namespace:DM_Weight.Converter"
 | 
				
			||||||
 | 
					             xmlns:prism="http://prismlibrary.com/"
 | 
				
			||||||
 | 
					             mc:Ignorable="d" 
 | 
				
			||||||
 | 
					             d:DesignHeight="450" d:DesignWidth="800">
 | 
				
			||||||
 | 
					    <Grid>
 | 
				
			||||||
 | 
					        <Grid.Resources>
 | 
				
			||||||
 | 
					            <!--<convert:GroupSumConverter x:Key="GroupSumConverter" />
 | 
				
			||||||
 | 
					            <convert:TotalCountConverter x:Key="TotalCountConverter" />
 | 
				
			||||||
 | 
					            <convert:DrawerSelectConverter x:Key="DrawerSelectConverter" />-->
 | 
				
			||||||
 | 
					            <convert:StatusConverter x:Key="StatusConverter" />
 | 
				
			||||||
 | 
					        </Grid.Resources>
 | 
				
			||||||
 | 
					        <Grid.RowDefinitions>
 | 
				
			||||||
 | 
					            <RowDefinition Height="Auto" />
 | 
				
			||||||
 | 
					            <RowDefinition />
 | 
				
			||||||
 | 
					        </Grid.RowDefinitions>
 | 
				
			||||||
 | 
					        <Grid Margin="0 6 0 6" Grid.Row="0">
 | 
				
			||||||
 | 
					            <Grid.ColumnDefinitions>
 | 
				
			||||||
 | 
					                <ColumnDefinition Width="2*" />
 | 
				
			||||||
 | 
					                <ColumnDefinition Width="2*" />
 | 
				
			||||||
 | 
					                <ColumnDefinition Width="6*"/>
 | 
				
			||||||
 | 
					            </Grid.ColumnDefinitions>
 | 
				
			||||||
 | 
					            <StackPanel Grid.Column="2" Orientation="Horizontal" HorizontalAlignment="Right">
 | 
				
			||||||
 | 
					                <Button
 | 
				
			||||||
 | 
					                    Margin="0 0 3 0"
 | 
				
			||||||
 | 
					                    VerticalAlignment="Center"
 | 
				
			||||||
 | 
					                    Command="{Binding OpenDrawer}"
 | 
				
			||||||
 | 
					                    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}"
 | 
				
			||||||
 | 
					                    Style="{StaticResource MaterialDesignOutlinedLightButton}"
 | 
				
			||||||
 | 
					                    Content="盘点" />
 | 
				
			||||||
 | 
					                <Button
 | 
				
			||||||
 | 
					                    Margin="0 0 3 0"
 | 
				
			||||||
 | 
					                    VerticalAlignment="Center"
 | 
				
			||||||
 | 
					                    Command="{Binding TakeFinish}"
 | 
				
			||||||
 | 
					                    Visibility="{Binding Status, Converter={StaticResource StatusConverter}, ConverterParameter=CompleteBtn}"
 | 
				
			||||||
 | 
					                    Style="{StaticResource MaterialDesignOutlinedLightButton}"
 | 
				
			||||||
 | 
					                    Content="完成" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                <Button
 | 
				
			||||||
 | 
					                    Margin="0 0 6 0"
 | 
				
			||||||
 | 
					                    VerticalAlignment="Center"
 | 
				
			||||||
 | 
					                    Command="{Binding CancleTake}"
 | 
				
			||||||
 | 
					                    Visibility="{Binding Status, Converter={StaticResource StatusConverter}, ConverterParameter=CancelBtn}"
 | 
				
			||||||
 | 
					                    Style="{StaticResource MaterialDesignOutlinedLightButton}"
 | 
				
			||||||
 | 
					                    Content="取消" />
 | 
				
			||||||
 | 
					                <Button
 | 
				
			||||||
 | 
					                    Margin="6 0 6 0"
 | 
				
			||||||
 | 
					                    VerticalAlignment="Center"
 | 
				
			||||||
 | 
					                    Style="{StaticResource MaterialDesignOutlinedLightButton}"
 | 
				
			||||||
 | 
					                    ToolTip="刷新" Command="{Binding QueryCommand}">
 | 
				
			||||||
 | 
					                    <materialDesign:PackIcon
 | 
				
			||||||
 | 
					                    Kind="Refresh" />
 | 
				
			||||||
 | 
					                </Button>
 | 
				
			||||||
 | 
					            </StackPanel>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        </Grid>
 | 
				
			||||||
 | 
					        <!--<DataGrid x:Name="dgv1"
 | 
				
			||||||
 | 
					                Grid.Row="1"
 | 
				
			||||||
 | 
					                materialDesign:DataGridAssist.ColumnHeaderPadding="15"
 | 
				
			||||||
 | 
					                ItemsSource="{Binding  ChannelStocks}"
 | 
				
			||||||
 | 
					                SelectedItem="SelectedChannel"
 | 
				
			||||||
 | 
					                materialDesign:DataGridAssist.EnableEditBoxAssist="False"
 | 
				
			||||||
 | 
					                IsSynchronizedWithCurrentItem="True"
 | 
				
			||||||
 | 
					                materialDesign:DataGridAssist.CellPadding="13"
 | 
				
			||||||
 | 
					                CanUserAddRows="False"
 | 
				
			||||||
 | 
					                AutoGenerateColumns="False">
 | 
				
			||||||
 | 
					            --><!--<DataGrid.RowStyle>
 | 
				
			||||||
 | 
					                <Style  TargetType="DataGridRow" BasedOn="{StaticResource MaterialDesignDataGridRow}">
 | 
				
			||||||
 | 
					                    <EventSetter Event="GotFocus" Handler="Item_GotFocus"/>
 | 
				
			||||||
 | 
					                </Style>
 | 
				
			||||||
 | 
					            </DataGrid.RowStyle>--><!--
 | 
				
			||||||
 | 
					            <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="Background" Value="Transparent"/>
 | 
				
			||||||
 | 
					                            <Setter Property="HorizontalAlignment" Value="Center"/>
 | 
				
			||||||
 | 
					                        </Trigger>
 | 
				
			||||||
 | 
					                    </Style.Triggers>
 | 
				
			||||||
 | 
					                </Style>
 | 
				
			||||||
 | 
					            </DataGrid.Resources>
 | 
				
			||||||
 | 
					            <DataGrid.Columns>
 | 
				
			||||||
 | 
					                <DataGridTextColumn IsReadOnly="True" Header="药品" Binding="{Binding DrugInfo.DrugName}"/>
 | 
				
			||||||
 | 
					                <DataGridTextColumn IsReadOnly="True" Header="规格" Binding="{Binding DrugInfo.DrugSpec}"/>
 | 
				
			||||||
 | 
					                <DataGridTextColumn
 | 
				
			||||||
 | 
					                        Binding="{Binding Location}"
 | 
				
			||||||
 | 
					                        Header="库位"
 | 
				
			||||||
 | 
					                        IsReadOnly="True"
 | 
				
			||||||
 | 
					                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                <DataGridTextColumn
 | 
				
			||||||
 | 
					                        Binding="{Binding ManuNo}"
 | 
				
			||||||
 | 
					                        Header="批次"
 | 
				
			||||||
 | 
					                        IsReadOnly="True"
 | 
				
			||||||
 | 
					                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                <DataGridTextColumn 
 | 
				
			||||||
 | 
					                        Binding="{Binding EffDate}"
 | 
				
			||||||
 | 
					                        Header="效期"
 | 
				
			||||||
 | 
					                        IsReadOnly="True"
 | 
				
			||||||
 | 
					                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                <DataGridTextColumn  Width="100"
 | 
				
			||||||
 | 
					                        Binding="{Binding Quantity}"
 | 
				
			||||||
 | 
					                        Header="库存"
 | 
				
			||||||
 | 
					                        IsReadOnly="True"
 | 
				
			||||||
 | 
					                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                <DataGridTemplateColumn Width="141"
 | 
				
			||||||
 | 
					                        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>-->
 | 
				
			||||||
 | 
					        <ListView Grid.Row="1"
 | 
				
			||||||
 | 
					                  ItemsSource="{Binding ChannelStocks}"
 | 
				
			||||||
 | 
					                  materialDesign:ListViewAssist.HeaderRowBackground="#31ccec"
 | 
				
			||||||
 | 
					                  materialDesign:DataGridAssist.ColumnHeaderPadding="8"
 | 
				
			||||||
 | 
					                  >
 | 
				
			||||||
 | 
					            <ListView.Resources>
 | 
				
			||||||
 | 
					                <Style TargetType="{x:Type GridViewColumnHeader}" BasedOn="{StaticResource {x:Type GridViewColumnHeader}}">
 | 
				
			||||||
 | 
					                    <Setter Property="Foreground" Value="White" />
 | 
				
			||||||
 | 
					                </Style>
 | 
				
			||||||
 | 
					                <Style TargetType="{x:Type ListViewItem}">
 | 
				
			||||||
 | 
					                    <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
 | 
				
			||||||
 | 
					                </Style>
 | 
				
			||||||
 | 
					            </ListView.Resources>
 | 
				
			||||||
 | 
					            <ListView.View>
 | 
				
			||||||
 | 
					                <GridView>
 | 
				
			||||||
 | 
					                    <GridViewColumn Header="药品" DisplayMemberBinding="{Binding DrugInfo.DrugName}"/>
 | 
				
			||||||
 | 
					                    <GridViewColumn Header="规格" DisplayMemberBinding="{Binding DrugInfo.DrugSpec}"/>
 | 
				
			||||||
 | 
					                    <GridViewColumn
 | 
				
			||||||
 | 
					                        DisplayMemberBinding="{Binding Location}"
 | 
				
			||||||
 | 
					                        Header="库位"/>
 | 
				
			||||||
 | 
					                    <GridViewColumn
 | 
				
			||||||
 | 
					                        DisplayMemberBinding="{Binding ManuNo}"
 | 
				
			||||||
 | 
					                        Header="批次"/>
 | 
				
			||||||
 | 
					                    <GridViewColumn 
 | 
				
			||||||
 | 
					                        DisplayMemberBinding="{Binding EffDate}"
 | 
				
			||||||
 | 
					                        Header="效期"/>
 | 
				
			||||||
 | 
					                    <GridViewColumn  Width="100"
 | 
				
			||||||
 | 
					                        DisplayMemberBinding="{Binding Quantity}"
 | 
				
			||||||
 | 
					                        Header="库存"/>
 | 
				
			||||||
 | 
					                    <GridViewColumn Width="141"
 | 
				
			||||||
 | 
					                        Header="盘点数量">
 | 
				
			||||||
 | 
					                        <GridViewColumn.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>
 | 
				
			||||||
 | 
					                        </GridViewColumn.CellTemplate>
 | 
				
			||||||
 | 
					                    </GridViewColumn>
 | 
				
			||||||
 | 
					                </GridView>
 | 
				
			||||||
 | 
					            </ListView.View>
 | 
				
			||||||
 | 
					        </ListView>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    </Grid>
 | 
				
			||||||
 | 
					</UserControl>
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,60 @@
 | 
				
			||||||
 | 
					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>
 | 
				
			||||||
 | 
					    /// CheckStockNewWindow.xaml 的交互逻辑
 | 
				
			||||||
 | 
					    /// </summary>
 | 
				
			||||||
 | 
					    public partial class CheckStockNew2Window : UserControl
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        //CheckStockNewWindowViewModel vms;
 | 
				
			||||||
 | 
					        public CheckStockNew2Window()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            InitializeComponent();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        //private void UserControl_Loaded(object sender, RoutedEventArgs e)
 | 
				
			||||||
 | 
					        //{
 | 
				
			||||||
 | 
					        //    vms = CheckStockNewWindowViewModel.vm;
 | 
				
			||||||
 | 
					        //}
 | 
				
			||||||
 | 
					        ///// <summary>
 | 
				
			||||||
 | 
					        ///// 选中行事件
 | 
				
			||||||
 | 
					        ///// </summary>
 | 
				
			||||||
 | 
					        ///// <param name="sender"></param>
 | 
				
			||||||
 | 
					        ///// <param name="e"></param>
 | 
				
			||||||
 | 
					        //private void DataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
 | 
				
			||||||
 | 
					        //{
 | 
				
			||||||
 | 
					        //    if (dgv1.SelectedIndex >= 0)
 | 
				
			||||||
 | 
					        //    {
 | 
				
			||||||
 | 
					        //        TextBlock txt = dgv1.Columns[0].GetCellContent(dgv1.Items[dgv1.SelectedIndex]) as TextBlock;
 | 
				
			||||||
 | 
					        //        if (txt != null)
 | 
				
			||||||
 | 
					        //        {
 | 
				
			||||||
 | 
					        //            vms.Stock = txt.Text;
 | 
				
			||||||
 | 
					        //        }
 | 
				
			||||||
 | 
					        //    }
 | 
				
			||||||
 | 
					        //}
 | 
				
			||||||
 | 
					        //private void Item_GotFocus(object sender, RoutedEventArgs e)
 | 
				
			||||||
 | 
					        //{
 | 
				
			||||||
 | 
					        //    var item = (DataGridRow)sender;
 | 
				
			||||||
 | 
					        //    FrameworkElement objElement = dgv1.Columns[0].GetCellContent(item);
 | 
				
			||||||
 | 
					        //    if (objElement != null)
 | 
				
			||||||
 | 
					        //    {
 | 
				
			||||||
 | 
					        //        TextBlock objChk = (TextBlock)objElement;
 | 
				
			||||||
 | 
					        //        vms.Stock = objChk.Text;
 | 
				
			||||||
 | 
					        //    }
 | 
				
			||||||
 | 
					        //}
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,220 @@
 | 
				
			||||||
 | 
					<UserControl x:Class="DM_Weight.Views.CheckStockNewWindow"
 | 
				
			||||||
 | 
					             xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes" 
 | 
				
			||||||
 | 
					             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:util="clr-namespace:DM_Weight.util"
 | 
				
			||||||
 | 
					             xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
 | 
				
			||||||
 | 
					             xmlns:convert="clr-namespace:DM_Weight.Converter"
 | 
				
			||||||
 | 
					             xmlns:prism="http://prismlibrary.com/"
 | 
				
			||||||
 | 
					             mc:Ignorable="d" 
 | 
				
			||||||
 | 
					             d:DesignHeight="450" d:DesignWidth="800">
 | 
				
			||||||
 | 
					    <Grid>
 | 
				
			||||||
 | 
					        <Grid.Resources>
 | 
				
			||||||
 | 
					            <!--<CollectionViewSource x:Key="GroupedDataList" Source="{Binding ChannelStocks}">
 | 
				
			||||||
 | 
					                <CollectionViewSource.GroupDescriptions>
 | 
				
			||||||
 | 
					                    <PropertyGroupDescription PropertyName="DrugInfo" />
 | 
				
			||||||
 | 
					                </CollectionViewSource.GroupDescriptions>
 | 
				
			||||||
 | 
					            </CollectionViewSource>
 | 
				
			||||||
 | 
					            <convert:GroupSumConverter x:Key="GroupSumConverter" />
 | 
				
			||||||
 | 
					            <convert:DrawerSelectConverter x:Key="DrawerSelectConverter" />-->
 | 
				
			||||||
 | 
					            <convert:StatusConverter x:Key="StatusConverter" />
 | 
				
			||||||
 | 
					        </Grid.Resources>
 | 
				
			||||||
 | 
					        <Grid.RowDefinitions>
 | 
				
			||||||
 | 
					            <RowDefinition Height="Auto" />
 | 
				
			||||||
 | 
					            <RowDefinition />
 | 
				
			||||||
 | 
					        </Grid.RowDefinitions>
 | 
				
			||||||
 | 
					        <Grid Margin="0 6 0 6" Grid.Row="0">
 | 
				
			||||||
 | 
					            <Grid.ColumnDefinitions>
 | 
				
			||||||
 | 
					                <ColumnDefinition Width="2*" />
 | 
				
			||||||
 | 
					                <ColumnDefinition Width="2*" />
 | 
				
			||||||
 | 
					                <ColumnDefinition Width="6*"/>
 | 
				
			||||||
 | 
					            </Grid.ColumnDefinitions>
 | 
				
			||||||
 | 
					            <StackPanel Grid.Column="2" Orientation="Horizontal" HorizontalAlignment="Right">
 | 
				
			||||||
 | 
					                <Button
 | 
				
			||||||
 | 
					                    Margin="0 0 3 0"
 | 
				
			||||||
 | 
					                    VerticalAlignment="Center"
 | 
				
			||||||
 | 
					                    Command="{Binding OpenDrawer}"
 | 
				
			||||||
 | 
					                    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}"
 | 
				
			||||||
 | 
					                    Style="{StaticResource MaterialDesignOutlinedLightButton}"
 | 
				
			||||||
 | 
					                    Content="盘点" />
 | 
				
			||||||
 | 
					                <Button
 | 
				
			||||||
 | 
					                    Margin="0 0 3 0"
 | 
				
			||||||
 | 
					                    VerticalAlignment="Center"
 | 
				
			||||||
 | 
					                    Command="{Binding TakeFinish}"
 | 
				
			||||||
 | 
					                    Visibility="{Binding Status, Converter={StaticResource StatusConverter}, ConverterParameter=CompleteBtn}"
 | 
				
			||||||
 | 
					                    Style="{StaticResource MaterialDesignOutlinedLightButton}"
 | 
				
			||||||
 | 
					                    Content="完成" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                <Button
 | 
				
			||||||
 | 
					                    Margin="0 0 6 0"
 | 
				
			||||||
 | 
					                    VerticalAlignment="Center"
 | 
				
			||||||
 | 
					                    Command="{Binding CancleTake}"
 | 
				
			||||||
 | 
					                    Visibility="{Binding Status, Converter={StaticResource StatusConverter}, ConverterParameter=CancelBtn}"
 | 
				
			||||||
 | 
					                    Style="{StaticResource MaterialDesignOutlinedLightButton}"
 | 
				
			||||||
 | 
					                    Content="取消" />
 | 
				
			||||||
 | 
					                <Button
 | 
				
			||||||
 | 
					                    Margin="6 0 6 0"
 | 
				
			||||||
 | 
					                    VerticalAlignment="Center"
 | 
				
			||||||
 | 
					                    Style="{StaticResource MaterialDesignOutlinedLightButton}"
 | 
				
			||||||
 | 
					                    ToolTip="刷新" Command="{Binding QueryCommand}">
 | 
				
			||||||
 | 
					                    <materialDesign:PackIcon
 | 
				
			||||||
 | 
					                    Kind="Refresh" />
 | 
				
			||||||
 | 
					                </Button>
 | 
				
			||||||
 | 
					            </StackPanel>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        </Grid>
 | 
				
			||||||
 | 
					        <DataGrid x:Name="dgv1"
 | 
				
			||||||
 | 
					                Grid.Row="1"
 | 
				
			||||||
 | 
					                materialDesign:DataGridAssist.ColumnHeaderPadding="15"
 | 
				
			||||||
 | 
					                ItemsSource="{Binding  ChannelStocks}"
 | 
				
			||||||
 | 
					                SelectedItem="SelectedChannel"
 | 
				
			||||||
 | 
					                materialDesign:DataGridAssist.EnableEditBoxAssist="False"
 | 
				
			||||||
 | 
					                IsSynchronizedWithCurrentItem="True"
 | 
				
			||||||
 | 
					                materialDesign:DataGridAssist.CellPadding="13"
 | 
				
			||||||
 | 
					                CanUserAddRows="False"
 | 
				
			||||||
 | 
					                AutoGenerateColumns="False">
 | 
				
			||||||
 | 
					            <!--<DataGrid.RowStyle>
 | 
				
			||||||
 | 
					                <Style  TargetType="DataGridRow" BasedOn="{StaticResource MaterialDesignDataGridRow}">
 | 
				
			||||||
 | 
					                    <EventSetter Event="GotFocus" Handler="Item_GotFocus"/>
 | 
				
			||||||
 | 
					                </Style>
 | 
				
			||||||
 | 
					            </DataGrid.RowStyle>-->
 | 
				
			||||||
 | 
					            <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="Background" Value="Transparent"/>
 | 
				
			||||||
 | 
					                            <Setter Property="HorizontalAlignment" Value="Center"/>
 | 
				
			||||||
 | 
					                        </Trigger>
 | 
				
			||||||
 | 
					                    </Style.Triggers>
 | 
				
			||||||
 | 
					                </Style>
 | 
				
			||||||
 | 
					            </DataGrid.Resources>
 | 
				
			||||||
 | 
					            <DataGrid.Columns>
 | 
				
			||||||
 | 
					                <DataGridTextColumn IsReadOnly="True" Header="药品" Binding="{Binding DrugInfo.DrugName}"/>
 | 
				
			||||||
 | 
					                <DataGridTextColumn IsReadOnly="True" Header="规格" Binding="{Binding DrugInfo.DrugSpec}"/>
 | 
				
			||||||
 | 
					                <DataGridTextColumn
 | 
				
			||||||
 | 
					                        Binding="{Binding Location}"
 | 
				
			||||||
 | 
					                        Header="库位"
 | 
				
			||||||
 | 
					                        IsReadOnly="True"
 | 
				
			||||||
 | 
					                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                <DataGridTextColumn
 | 
				
			||||||
 | 
					                        Binding="{Binding ManuNo}"
 | 
				
			||||||
 | 
					                        Header="批次"
 | 
				
			||||||
 | 
					                        IsReadOnly="True"
 | 
				
			||||||
 | 
					                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                <DataGridTextColumn 
 | 
				
			||||||
 | 
					                        Binding="{Binding EffDate}"
 | 
				
			||||||
 | 
					                        Header="效期"
 | 
				
			||||||
 | 
					                        IsReadOnly="True"
 | 
				
			||||||
 | 
					                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                <DataGridTextColumn  Width="100"
 | 
				
			||||||
 | 
					                        Binding="{Binding Quantity}"
 | 
				
			||||||
 | 
					                        Header="库存"
 | 
				
			||||||
 | 
					                        IsReadOnly="True"
 | 
				
			||||||
 | 
					                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                <DataGridTemplateColumn Width="141"
 | 
				
			||||||
 | 
					                        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>
 | 
				
			||||||
 | 
					        <!--<ListView Grid.Row="1"
 | 
				
			||||||
 | 
					                  ItemsSource="{Binding DrugList}"
 | 
				
			||||||
 | 
					                  materialDesign:ListViewAssist.HeaderRowBackground="#31ccec"
 | 
				
			||||||
 | 
					                  materialDesign:DataGridAssist.ColumnHeaderPadding="8"
 | 
				
			||||||
 | 
					                  >
 | 
				
			||||||
 | 
					            <ListView.Resources>
 | 
				
			||||||
 | 
					                <Style TargetType="{x:Type GridViewColumnHeader}" BasedOn="{StaticResource {x:Type GridViewColumnHeader}}">
 | 
				
			||||||
 | 
					                    <Setter Property="Foreground" Value="White" />
 | 
				
			||||||
 | 
					                </Style>
 | 
				
			||||||
 | 
					                <Style TargetType="{x:Type ListViewItem}">
 | 
				
			||||||
 | 
					                    <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
 | 
				
			||||||
 | 
					                </Style>
 | 
				
			||||||
 | 
					            </ListView.Resources>
 | 
				
			||||||
 | 
					            <ListView.View>
 | 
				
			||||||
 | 
					                <GridView>
 | 
				
			||||||
 | 
					                    <GridViewColumn
 | 
				
			||||||
 | 
					                        Header="药品编码"
 | 
				
			||||||
 | 
					                        DisplayMemberBinding="{Binding DrugId}"/>
 | 
				
			||||||
 | 
					                    <GridViewColumn
 | 
				
			||||||
 | 
					                        Header="药品名称"
 | 
				
			||||||
 | 
					                        DisplayMemberBinding="{Binding DrugName}"/>
 | 
				
			||||||
 | 
					                    <GridViewColumn
 | 
				
			||||||
 | 
					                        DisplayMemberBinding="{Binding DrugSpec}"
 | 
				
			||||||
 | 
					                        Header="规格"/>
 | 
				
			||||||
 | 
					                    <GridViewColumn
 | 
				
			||||||
 | 
					                        DisplayMemberBinding="{Binding ManuFactory}"
 | 
				
			||||||
 | 
					                        Header="厂家"/>
 | 
				
			||||||
 | 
					                    <GridViewColumn
 | 
				
			||||||
 | 
					                        DisplayMemberBinding="{Binding StockQuantity}"
 | 
				
			||||||
 | 
					                        Header="库存"/>
 | 
				
			||||||
 | 
					                    <GridViewColumn
 | 
				
			||||||
 | 
					                        Header="批次" >
 | 
				
			||||||
 | 
					                        <GridViewColumn.CellTemplate>
 | 
				
			||||||
 | 
					                            <DataTemplate>
 | 
				
			||||||
 | 
					                                <ListBox ItemsSource="{Binding channelStocks}" DisplayMemberPath="ManuNo" materialDesign:ListBoxItemAssist.ShowSelection="False">
 | 
				
			||||||
 | 
					                            </ListBox>
 | 
				
			||||||
 | 
					                            </DataTemplate>
 | 
				
			||||||
 | 
					                        </GridViewColumn.CellTemplate>
 | 
				
			||||||
 | 
					                    </GridViewColumn>
 | 
				
			||||||
 | 
					                    <GridViewColumn
 | 
				
			||||||
 | 
					                        Header="效期" >
 | 
				
			||||||
 | 
					                        <GridViewColumn.CellTemplate>
 | 
				
			||||||
 | 
					                            <DataTemplate>
 | 
				
			||||||
 | 
					                                <ListBox ItemsSource="{Binding channelStocks}" DisplayMemberPath="EffDate" materialDesign:ListBoxItemAssist.ShowSelection="False">
 | 
				
			||||||
 | 
					                                </ListBox>
 | 
				
			||||||
 | 
					                            </DataTemplate>
 | 
				
			||||||
 | 
					                        </GridViewColumn.CellTemplate>
 | 
				
			||||||
 | 
					                    </GridViewColumn>
 | 
				
			||||||
 | 
					                    <GridViewColumn
 | 
				
			||||||
 | 
					                        Header="数量" >
 | 
				
			||||||
 | 
					                        <GridViewColumn.CellTemplate>
 | 
				
			||||||
 | 
					                            <DataTemplate>
 | 
				
			||||||
 | 
					                                <ListBox ItemsSource="{Binding channelStocks}" DisplayMemberPath="Quantity" materialDesign:ListBoxItemAssist.ShowSelection="False">
 | 
				
			||||||
 | 
					                                </ListBox>
 | 
				
			||||||
 | 
					                            </DataTemplate>
 | 
				
			||||||
 | 
					                        </GridViewColumn.CellTemplate>
 | 
				
			||||||
 | 
					                    </GridViewColumn>
 | 
				
			||||||
 | 
					                    <GridViewColumn
 | 
				
			||||||
 | 
					                        Header="库位" >
 | 
				
			||||||
 | 
					                        <GridViewColumn.CellTemplate>
 | 
				
			||||||
 | 
					                            <DataTemplate>
 | 
				
			||||||
 | 
					                                <ListBox ItemsSource="{Binding channelStocks}" DisplayMemberPath="Location" materialDesign:ListBoxItemAssist.ShowSelection="False">
 | 
				
			||||||
 | 
					                                </ListBox>
 | 
				
			||||||
 | 
					                            </DataTemplate>
 | 
				
			||||||
 | 
					                        </GridViewColumn.CellTemplate>
 | 
				
			||||||
 | 
					                    </GridViewColumn>
 | 
				
			||||||
 | 
					                </GridView>
 | 
				
			||||||
 | 
					            </ListView.View>
 | 
				
			||||||
 | 
					        </ListView>-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    </Grid>
 | 
				
			||||||
 | 
					</UserControl>
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,60 @@
 | 
				
			||||||
 | 
					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>
 | 
				
			||||||
 | 
					    /// CheckStockNewWindow.xaml 的交互逻辑
 | 
				
			||||||
 | 
					    /// </summary>
 | 
				
			||||||
 | 
					    public partial class CheckStockNewWindow : UserControl
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        //CheckStockNewWindowViewModel vms;
 | 
				
			||||||
 | 
					        public CheckStockNewWindow()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            InitializeComponent();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        //private void UserControl_Loaded(object sender, RoutedEventArgs e)
 | 
				
			||||||
 | 
					        //{
 | 
				
			||||||
 | 
					        //    vms = CheckStockNewWindowViewModel.vm;
 | 
				
			||||||
 | 
					        //}
 | 
				
			||||||
 | 
					        ///// <summary>
 | 
				
			||||||
 | 
					        ///// 选中行事件
 | 
				
			||||||
 | 
					        ///// </summary>
 | 
				
			||||||
 | 
					        ///// <param name="sender"></param>
 | 
				
			||||||
 | 
					        ///// <param name="e"></param>
 | 
				
			||||||
 | 
					        //private void DataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
 | 
				
			||||||
 | 
					        //{
 | 
				
			||||||
 | 
					        //    if (dgv1.SelectedIndex >= 0)
 | 
				
			||||||
 | 
					        //    {
 | 
				
			||||||
 | 
					        //        TextBlock txt = dgv1.Columns[0].GetCellContent(dgv1.Items[dgv1.SelectedIndex]) as TextBlock;
 | 
				
			||||||
 | 
					        //        if (txt != null)
 | 
				
			||||||
 | 
					        //        {
 | 
				
			||||||
 | 
					        //            vms.Stock = txt.Text;
 | 
				
			||||||
 | 
					        //        }
 | 
				
			||||||
 | 
					        //    }
 | 
				
			||||||
 | 
					        //}
 | 
				
			||||||
 | 
					        //private void Item_GotFocus(object sender, RoutedEventArgs e)
 | 
				
			||||||
 | 
					        //{
 | 
				
			||||||
 | 
					        //    var item = (DataGridRow)sender;
 | 
				
			||||||
 | 
					        //    FrameworkElement objElement = dgv1.Columns[0].GetCellContent(item);
 | 
				
			||||||
 | 
					        //    if (objElement != null)
 | 
				
			||||||
 | 
					        //    {
 | 
				
			||||||
 | 
					        //        TextBlock objChk = (TextBlock)objElement;
 | 
				
			||||||
 | 
					        //        vms.Stock = objChk.Text;
 | 
				
			||||||
 | 
					        //    }
 | 
				
			||||||
 | 
					        //}
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,237 @@
 | 
				
			||||||
 | 
					<UserControl xmlns:pagination="clr-namespace:DM_Weight.Components.pagination"  x:Class="DM_Weight.Views.Dialog.BindingChannelNewDialog"
 | 
				
			||||||
 | 
					             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"
 | 
				
			||||||
 | 
					             xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
 | 
				
			||||||
 | 
					             MinWidth="880"
 | 
				
			||||||
 | 
					             MinHeight="479"
 | 
				
			||||||
 | 
					             Width="Auto"
 | 
				
			||||||
 | 
					             Height="Auto"
 | 
				
			||||||
 | 
					             mc:Ignorable="d" >
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <UserControl.Resources>
 | 
				
			||||||
 | 
					        <convert:BoardTypeConverter x:Key="BoardTypeConverter" />
 | 
				
			||||||
 | 
					    </UserControl.Resources>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <Grid>
 | 
				
			||||||
 | 
					            <Grid.RowDefinitions>
 | 
				
			||||||
 | 
					                <RowDefinition Height="Auto" />
 | 
				
			||||||
 | 
					                <RowDefinition Height="Auto" />
 | 
				
			||||||
 | 
					                <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 BtnCloseCommand}"
 | 
				
			||||||
 | 
					                        ToolTip="关闭" Cursor="Hand"
 | 
				
			||||||
 | 
					                    >
 | 
				
			||||||
 | 
					                    <materialDesign:PackIcon Kind="Close" Width="34" Height="34" />
 | 
				
			||||||
 | 
					                </Button>
 | 
				
			||||||
 | 
					            </Grid>
 | 
				
			||||||
 | 
					            <Grid Grid.Row="1" Margin="0 4 0 4">
 | 
				
			||||||
 | 
					                <Grid.ColumnDefinitions>
 | 
				
			||||||
 | 
					                    <ColumnDefinition />
 | 
				
			||||||
 | 
					                    <ColumnDefinition />
 | 
				
			||||||
 | 
					                    <ColumnDefinition />
 | 
				
			||||||
 | 
					                    <ColumnDefinition />
 | 
				
			||||||
 | 
					                </Grid.ColumnDefinitions>
 | 
				
			||||||
 | 
					            <!--<ComboBox
 | 
				
			||||||
 | 
					                    Margin="6 0 6 0"
 | 
				
			||||||
 | 
					                    Grid.Column="0"
 | 
				
			||||||
 | 
					                    materialDesign:HintAssist.Hint="拼音码"
 | 
				
			||||||
 | 
					                    IsEditable="True"
 | 
				
			||||||
 | 
					                    ItemsSource="{Binding DrugInfos_PY}"
 | 
				
			||||||
 | 
					                    SelectedItem="{Binding DrugInfo_Py}"
 | 
				
			||||||
 | 
					                    DisplayMemberPath="PyCode"
 | 
				
			||||||
 | 
					                />-->
 | 
				
			||||||
 | 
					            <!--<ComboBox
 | 
				
			||||||
 | 
					                    Margin="6 0 6 0"
 | 
				
			||||||
 | 
					                    Grid.Column="1"
 | 
				
			||||||
 | 
					                    materialDesign:HintAssist.Hint="药品名称"
 | 
				
			||||||
 | 
					                    IsEditable="True"
 | 
				
			||||||
 | 
					                    ItemsSource="{Binding DrugInfos}"
 | 
				
			||||||
 | 
					                    SelectedItem="{Binding DrugInfo}"
 | 
				
			||||||
 | 
					                    DisplayMemberPath="DrugName"
 | 
				
			||||||
 | 
					                />-->
 | 
				
			||||||
 | 
					            <ComboBox
 | 
				
			||||||
 | 
					                    Margin="6 0 6 0"
 | 
				
			||||||
 | 
					                    Grid.Column="0"
 | 
				
			||||||
 | 
					                    materialDesign:HintAssist.Hint="药品名称/拼音码/药品编码"
 | 
				
			||||||
 | 
					                    ItemsSource="{Binding DrugInfos}"
 | 
				
			||||||
 | 
					                    SelectedItem="{Binding DrugInfo}"
 | 
				
			||||||
 | 
					                    DisplayMemberPath="drug_name_spec" IsEditable="True" IsTextSearchEnabled="False" KeyUp="ComboBox_KeyUp"
 | 
				
			||||||
 | 
					                />
 | 
				
			||||||
 | 
					            <StackPanel HorizontalAlignment="Right"  Grid.Column="3" Orientation="Horizontal">
 | 
				
			||||||
 | 
					                    <Button
 | 
				
			||||||
 | 
					                        Style="{StaticResource MaterialDesignOutlinedLightButton}"
 | 
				
			||||||
 | 
					                        ToolTip="绑定库位"
 | 
				
			||||||
 | 
					                        Content="绑定"
 | 
				
			||||||
 | 
					                        Command="{Binding BindingDrug}"/>
 | 
				
			||||||
 | 
					                    <Button
 | 
				
			||||||
 | 
					                        Margin="6 0 6 0"
 | 
				
			||||||
 | 
					                        Style="{StaticResource MaterialDesignOutlinedLightButton}"
 | 
				
			||||||
 | 
					                        ToolTip="解除绑定"
 | 
				
			||||||
 | 
					                        Content="解绑"
 | 
				
			||||||
 | 
					                        Command="{Binding RemoveBinding}" />
 | 
				
			||||||
 | 
					                    <Button
 | 
				
			||||||
 | 
					                        Margin="0 0 6 0"
 | 
				
			||||||
 | 
					                        Style="{StaticResource MaterialDesignOutlinedLightButton}"
 | 
				
			||||||
 | 
					                        ToolTip="刷新"
 | 
				
			||||||
 | 
					                        Command="{Binding Query}"
 | 
				
			||||||
 | 
					                        Content="{materialDesign:PackIcon Refresh}"/>
 | 
				
			||||||
 | 
					                </StackPanel>
 | 
				
			||||||
 | 
					            </Grid>
 | 
				
			||||||
 | 
					        <ItemsControl
 | 
				
			||||||
 | 
					                Grid.Row="2"
 | 
				
			||||||
 | 
					                ItemsSource="{Binding Channels}"
 | 
				
			||||||
 | 
					                Grid.IsSharedSizeScope="True"
 | 
				
			||||||
 | 
					                Margin="12 0 12 0">
 | 
				
			||||||
 | 
					            <ItemsControl.ItemsPanel>
 | 
				
			||||||
 | 
					                <ItemsPanelTemplate>
 | 
				
			||||||
 | 
					                    <UniformGrid Columns="4"/>
 | 
				
			||||||
 | 
					                </ItemsPanelTemplate>
 | 
				
			||||||
 | 
					            </ItemsControl.ItemsPanel>
 | 
				
			||||||
 | 
					            <ItemsControl.ItemTemplate>
 | 
				
			||||||
 | 
					                <DataTemplate>
 | 
				
			||||||
 | 
					                    <materialDesign:Card
 | 
				
			||||||
 | 
					                                Background="{StaticResource MaterialDesignLightBackground}"
 | 
				
			||||||
 | 
					                                Margin="4"
 | 
				
			||||||
 | 
					                                Padding="0">
 | 
				
			||||||
 | 
					                        <Grid>
 | 
				
			||||||
 | 
					                            <Grid.RowDefinitions>
 | 
				
			||||||
 | 
					                                <RowDefinition />
 | 
				
			||||||
 | 
					                                <RowDefinition />
 | 
				
			||||||
 | 
					                            </Grid.RowDefinitions>
 | 
				
			||||||
 | 
					                            <StackPanel Grid.Row="0" Orientation="Horizontal" Background="#31ccec" >
 | 
				
			||||||
 | 
					                                <CheckBox
 | 
				
			||||||
 | 
					                                        materialDesign:CheckBoxAssist.CheckBoxSize="30"
 | 
				
			||||||
 | 
					                                        VerticalAlignment="Center"
 | 
				
			||||||
 | 
					                                        IsChecked="{Binding IsSelected}" />
 | 
				
			||||||
 | 
					                                <TextBlock
 | 
				
			||||||
 | 
					                                        Style="{StaticResource MaterialDesignHeadline5TextBlock}"
 | 
				
			||||||
 | 
					                                        Foreground="{DynamicResource PrimaryHueDarkForegroundBrush}"
 | 
				
			||||||
 | 
					                                        Padding="8"
 | 
				
			||||||
 | 
					                                        Text="{Binding Location}" />
 | 
				
			||||||
 | 
					                                <TextBlock
 | 
				
			||||||
 | 
					                                        Style="{StaticResource MaterialDesignHeadline5TextBlock}"
 | 
				
			||||||
 | 
					                                        Foreground="{DynamicResource PrimaryHueDarkForegroundBrush}"
 | 
				
			||||||
 | 
					                                        Padding="8"
 | 
				
			||||||
 | 
					                                        HorizontalAlignment="Right">
 | 
				
			||||||
 | 
					                                    <TextBlock.Text>
 | 
				
			||||||
 | 
					                                        <MultiBinding Converter="{StaticResource BoardTypeConverter}">
 | 
				
			||||||
 | 
					                                            <Binding Path="BoardType" />
 | 
				
			||||||
 | 
					                                            <Binding Path="DrawerType" />
 | 
				
			||||||
 | 
					                                        </MultiBinding>
 | 
				
			||||||
 | 
					                                    </TextBlock.Text>
 | 
				
			||||||
 | 
					                                </TextBlock>
 | 
				
			||||||
 | 
					                            </StackPanel>
 | 
				
			||||||
 | 
					                            <Grid Grid.Row="1" x:Name="Border">
 | 
				
			||||||
 | 
					                                <Grid.RowDefinitions>
 | 
				
			||||||
 | 
					                                    <RowDefinition />
 | 
				
			||||||
 | 
					                                    <RowDefinition />
 | 
				
			||||||
 | 
					                                    <RowDefinition />
 | 
				
			||||||
 | 
					                                </Grid.RowDefinitions>
 | 
				
			||||||
 | 
					                                <Grid.ColumnDefinitions>
 | 
				
			||||||
 | 
					                                    <ColumnDefinition Width="Auto" />
 | 
				
			||||||
 | 
					                                    <ColumnDefinition />
 | 
				
			||||||
 | 
					                                </Grid.ColumnDefinitions>
 | 
				
			||||||
 | 
					                                <Grid.Resources>
 | 
				
			||||||
 | 
					                                    <Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource MaterialDesignSubtitle1TextBlock}">
 | 
				
			||||||
 | 
					                                        <Setter Property="Padding" Value="6" />
 | 
				
			||||||
 | 
					                                    </Style>
 | 
				
			||||||
 | 
					                                </Grid.Resources>
 | 
				
			||||||
 | 
					                                <TextBlock
 | 
				
			||||||
 | 
					                                        HorizontalAlignment="Left"
 | 
				
			||||||
 | 
					                                        Grid.Row="0"
 | 
				
			||||||
 | 
					                                        Grid.Column="0"
 | 
				
			||||||
 | 
					                                        Text="药品:" />
 | 
				
			||||||
 | 
					                                <WrapPanel
 | 
				
			||||||
 | 
					                                        Grid.Row="0"
 | 
				
			||||||
 | 
					                                        Grid.Column="1"
 | 
				
			||||||
 | 
					                                        HorizontalAlignment="Right"
 | 
				
			||||||
 | 
					                                        Orientation="Horizontal">
 | 
				
			||||||
 | 
					                                    <TextBlock Text="{Binding Drug.DrugName}"/>
 | 
				
			||||||
 | 
					                                    <!--<TextBlock
 | 
				
			||||||
 | 
					                                            Text="{Binding totalCount, StringFormat=总库存({0})}" />-->
 | 
				
			||||||
 | 
					                                </WrapPanel>
 | 
				
			||||||
 | 
					                                <TextBlock
 | 
				
			||||||
 | 
					                                        HorizontalAlignment="Left"
 | 
				
			||||||
 | 
					                                        Grid.Row="1"
 | 
				
			||||||
 | 
					                                        Grid.Column="0"
 | 
				
			||||||
 | 
					                                        Text="规格" />
 | 
				
			||||||
 | 
					                                <TextBlock
 | 
				
			||||||
 | 
					                                        HorizontalAlignment="Right"
 | 
				
			||||||
 | 
					                                        Grid.Row="1"
 | 
				
			||||||
 | 
					                                        Grid.Column="1"
 | 
				
			||||||
 | 
					                                        Text="{Binding Drug.DrugSpec}" />
 | 
				
			||||||
 | 
					                                <TextBlock
 | 
				
			||||||
 | 
					                                        HorizontalAlignment="Left"
 | 
				
			||||||
 | 
					                                        Grid.Row="2"
 | 
				
			||||||
 | 
					                                        Grid.Column="0"
 | 
				
			||||||
 | 
					                                        Text="总库存:" />
 | 
				
			||||||
 | 
					                                <TextBlock
 | 
				
			||||||
 | 
					                                        HorizontalAlignment="Right"
 | 
				
			||||||
 | 
					                                        Grid.Row="2"
 | 
				
			||||||
 | 
					                                        Grid.Column="1"
 | 
				
			||||||
 | 
					                                        Text="{Binding totalCount}" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                <!--<TextBlock
 | 
				
			||||||
 | 
					                                        HorizontalAlignment="Left"
 | 
				
			||||||
 | 
					                                        Grid.Row="1"
 | 
				
			||||||
 | 
					                                        Grid.Column="0"
 | 
				
			||||||
 | 
					                                        Text="批次:" />
 | 
				
			||||||
 | 
					                                <TextBlock
 | 
				
			||||||
 | 
					                                        HorizontalAlignment="Right"
 | 
				
			||||||
 | 
					                                        Grid.Row="1"
 | 
				
			||||||
 | 
					                                        Grid.Column="1"
 | 
				
			||||||
 | 
					                                        Text="{Binding ManuNo}" />
 | 
				
			||||||
 | 
					                                <TextBlock
 | 
				
			||||||
 | 
					                                        HorizontalAlignment="Left"
 | 
				
			||||||
 | 
					                                        Grid.Row="2"
 | 
				
			||||||
 | 
					                                        Grid.Column="0"
 | 
				
			||||||
 | 
					                                        Text="效期:" />
 | 
				
			||||||
 | 
					                                <TextBlock
 | 
				
			||||||
 | 
					                                        HorizontalAlignment="Right"
 | 
				
			||||||
 | 
					                                        Grid.Row="2"
 | 
				
			||||||
 | 
					                                        Grid.Column="1"
 | 
				
			||||||
 | 
					                                        Text="{Binding EffDate}" />-->
 | 
				
			||||||
 | 
					                            </Grid>
 | 
				
			||||||
 | 
					                        </Grid>
 | 
				
			||||||
 | 
					                    </materialDesign:Card>
 | 
				
			||||||
 | 
					                    <DataTemplate.Triggers>
 | 
				
			||||||
 | 
					                        <DataTrigger Binding="{Binding IsSelected}" Value="True">
 | 
				
			||||||
 | 
					                            <Setter Property="RenderTransformOrigin" Value="0.5,0.5" />
 | 
				
			||||||
 | 
					                            <Setter TargetName="Border" Property="Background" Value="#90caf9" />
 | 
				
			||||||
 | 
					                            <Setter Property="RenderTransform">
 | 
				
			||||||
 | 
					                                <Setter.Value>
 | 
				
			||||||
 | 
					                                    <ScaleTransform  ScaleX="0.95" ScaleY="0.95" />
 | 
				
			||||||
 | 
					                                </Setter.Value>
 | 
				
			||||||
 | 
					                            </Setter>
 | 
				
			||||||
 | 
					                        </DataTrigger>
 | 
				
			||||||
 | 
					                    </DataTemplate.Triggers>
 | 
				
			||||||
 | 
					                </DataTemplate>
 | 
				
			||||||
 | 
					            </ItemsControl.ItemTemplate>
 | 
				
			||||||
 | 
					        </ItemsControl>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <pagination:Pagination Grid.Row="3"
 | 
				
			||||||
 | 
					                                   CurrentPage="{Binding PageNum}"
 | 
				
			||||||
 | 
					                                   PageSize="{Binding PageSize}"
 | 
				
			||||||
 | 
					                                   TotalPages="{Binding TotalCount}"
 | 
				
			||||||
 | 
					                                   InfoTextIsEnabel="True"
 | 
				
			||||||
 | 
					                                />
 | 
				
			||||||
 | 
					        <materialDesign:Snackbar
 | 
				
			||||||
 | 
					                Background="{Binding SnackbarBackground}"
 | 
				
			||||||
 | 
					                MessageQueue="{Binding SnackbarMessageQueue}"/>
 | 
				
			||||||
 | 
					        </Grid>
 | 
				
			||||||
 | 
					</UserControl>
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,48 @@
 | 
				
			||||||
 | 
					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.Dialog
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    /// <summary>
 | 
				
			||||||
 | 
					    /// BindingChannelNewDialog.xaml 的交互逻辑
 | 
				
			||||||
 | 
					    /// </summary>
 | 
				
			||||||
 | 
					    public partial class BindingChannelNewDialog : UserControl
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        BindingChannelNewDialogViewModel vms;
 | 
				
			||||||
 | 
					        public BindingChannelNewDialog()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            InitializeComponent();
 | 
				
			||||||
 | 
					            vms = BindingChannelNewDialogViewModel.vm;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        /// <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;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,122 @@
 | 
				
			||||||
 | 
					<UserControl x:Class="DM_Weight.Views.Dialog.CheckRecordDetailDialog"
 | 
				
			||||||
 | 
					             xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes" 
 | 
				
			||||||
 | 
					             xmlns:pagination="clr-namespace:DM_Weight.Components.pagination"
 | 
				
			||||||
 | 
					             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:prism="http://prismlibrary.com/"
 | 
				
			||||||
 | 
					             xmlns:convert="clr-namespace:DM_Weight.Converter"
 | 
				
			||||||
 | 
					             mc:Ignorable="d" 
 | 
				
			||||||
 | 
					              Width="Auto"
 | 
				
			||||||
 | 
					             Height="Auto">
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    <Grid>
 | 
				
			||||||
 | 
					        <Grid.Resources>
 | 
				
			||||||
 | 
					            <convert:GroupSumConverter x:Key="GroupSumConverter" />
 | 
				
			||||||
 | 
					            <convert:DrawerSelectConverter x:Key="DrawerSelectConverter" />
 | 
				
			||||||
 | 
					            <convert:StatusConverter x:Key="StatusConverter" />
 | 
				
			||||||
 | 
					        </Grid.Resources>
 | 
				
			||||||
 | 
					        <Grid.RowDefinitions>
 | 
				
			||||||
 | 
					            <RowDefinition Height="Auto" />
 | 
				
			||||||
 | 
					            <RowDefinition />
 | 
				
			||||||
 | 
					        </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="关闭" Cursor="Hand"
 | 
				
			||||||
 | 
					                    >
 | 
				
			||||||
 | 
					                <materialDesign:PackIcon Kind="Close" Width="34" Height="34" />
 | 
				
			||||||
 | 
					            </Button>
 | 
				
			||||||
 | 
					        </Grid>
 | 
				
			||||||
 | 
					        <DataGrid x:Name="dgv1"
 | 
				
			||||||
 | 
					                Grid.Row="1"
 | 
				
			||||||
 | 
					                materialDesign:DataGridAssist.ColumnHeaderPadding="15"
 | 
				
			||||||
 | 
					                ItemsSource="{Binding ChannelStocks}"
 | 
				
			||||||
 | 
					                SelectedItem="SelectedChannel"
 | 
				
			||||||
 | 
					                materialDesign:DataGridAssist.EnableEditBoxAssist="False"
 | 
				
			||||||
 | 
					                IsSynchronizedWithCurrentItem="True"
 | 
				
			||||||
 | 
					                materialDesign:DataGridAssist.CellPadding="13"
 | 
				
			||||||
 | 
					                CanUserAddRows="False"
 | 
				
			||||||
 | 
					                AutoGenerateColumns="False" >
 | 
				
			||||||
 | 
					            <!--<DataGrid.RowStyle>
 | 
				
			||||||
 | 
					                <Style  TargetType="DataGridRow" BasedOn="{StaticResource MaterialDesignDataGridRow}">
 | 
				
			||||||
 | 
					                    <EventSetter Event="GotFocus" Handler="Item_GotFocus"/>
 | 
				
			||||||
 | 
					                </Style>
 | 
				
			||||||
 | 
					            </DataGrid.RowStyle>-->
 | 
				
			||||||
 | 
					            <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="Background" Value="Transparent"/>
 | 
				
			||||||
 | 
					                            <!--<Setter Property="HorizontalAlignment" Value="Left"/>-->
 | 
				
			||||||
 | 
					                        </Trigger>
 | 
				
			||||||
 | 
					                    </Style.Triggers>
 | 
				
			||||||
 | 
					                </Style>
 | 
				
			||||||
 | 
					            </DataGrid.Resources>
 | 
				
			||||||
 | 
					            <!--GroupStyle to group data-->
 | 
				
			||||||
 | 
					            <DataGrid.GroupStyle>
 | 
				
			||||||
 | 
					                <GroupStyle>
 | 
				
			||||||
 | 
					                    <!--Group DataItems into DataGroup-->
 | 
				
			||||||
 | 
					                    <GroupStyle.ContainerStyle>
 | 
				
			||||||
 | 
					                        <Style TargetType="{x:Type GroupItem}">
 | 
				
			||||||
 | 
					                            <Setter Property="Template">
 | 
				
			||||||
 | 
					                                <Setter.Value>
 | 
				
			||||||
 | 
					                                    <ControlTemplate TargetType="{x:Type GroupItem}">
 | 
				
			||||||
 | 
					                                        <Expander IsExpanded="True"
 | 
				
			||||||
 | 
					                                                  materialDesign:ExpanderAssist.HeaderBackground="PaleTurquoise">
 | 
				
			||||||
 | 
					                                            <Expander.Header >
 | 
				
			||||||
 | 
					                                                <StackPanel Orientation="Horizontal">
 | 
				
			||||||
 | 
					                                                    <TextBlock Text="{Binding Path=Name.DrugName,StringFormat=药品:{0},}" FontWeight="Bold" />
 | 
				
			||||||
 | 
					                                                    <TextBlock FontWeight="Bold" Text="{Binding Path=Name.DrugSpec,StringFormat=规格:{0},}" />
 | 
				
			||||||
 | 
					                                                    <TextBlock FontWeight="Bold" Text="{Binding Path=Name.Manufactory,StringFormat=厂家:{0},}" />
 | 
				
			||||||
 | 
					                                                    <TextBlock FontWeight="Bold" Text="{Binding Path=Items[0].quantity,StringFormat=总库存:{0},}" />
 | 
				
			||||||
 | 
					                                                    <!--<TextBlock FontWeight="Bold" Text="{Binding Path=Items,Converter={StaticResource GroupSumConverter}}" />-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                                </StackPanel>
 | 
				
			||||||
 | 
					                                            </Expander.Header>
 | 
				
			||||||
 | 
					                                            <ItemsPresenter/>
 | 
				
			||||||
 | 
					                                        </Expander>
 | 
				
			||||||
 | 
					                                    </ControlTemplate>
 | 
				
			||||||
 | 
					                                </Setter.Value>
 | 
				
			||||||
 | 
					                            </Setter>
 | 
				
			||||||
 | 
					                        </Style>
 | 
				
			||||||
 | 
					                    </GroupStyle.ContainerStyle>
 | 
				
			||||||
 | 
					                </GroupStyle>
 | 
				
			||||||
 | 
					            </DataGrid.GroupStyle>
 | 
				
			||||||
 | 
					            <DataGrid.Columns>
 | 
				
			||||||
 | 
					                <DataGridTextColumn Width="250"
 | 
				
			||||||
 | 
					                        Binding="{Binding manuNo}"
 | 
				
			||||||
 | 
					                        Header="批次"
 | 
				
			||||||
 | 
					                        IsReadOnly="True"
 | 
				
			||||||
 | 
					                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                <DataGridTextColumn Width="250"
 | 
				
			||||||
 | 
					                        Binding="{Binding effDate}"
 | 
				
			||||||
 | 
					                        Header="效期"
 | 
				
			||||||
 | 
					                        IsReadOnly="True"
 | 
				
			||||||
 | 
					                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                <DataGridTextColumn Width="241"
 | 
				
			||||||
 | 
					                        Binding="{Binding ManuQuantity}"
 | 
				
			||||||
 | 
					                        Header="库存"
 | 
				
			||||||
 | 
					                        IsReadOnly="True"
 | 
				
			||||||
 | 
					                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            </DataGrid.Columns>
 | 
				
			||||||
 | 
					        </DataGrid>
 | 
				
			||||||
 | 
					    </Grid>
 | 
				
			||||||
 | 
					</UserControl>
 | 
				
			||||||
| 
						 | 
					@ -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>
 | 
				
			||||||
 | 
					    /// CheckRecordDetailDialog.xaml 的交互逻辑
 | 
				
			||||||
 | 
					    /// </summary>
 | 
				
			||||||
 | 
					    public partial class CheckRecordDetailDialog : UserControl
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public CheckRecordDetailDialog()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            InitializeComponent();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,12 @@
 | 
				
			||||||
 | 
					<UserControl x:Class="DM_Weight.Views.Dialog.MaskDialog"
 | 
				
			||||||
 | 
					             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"
 | 
				
			||||||
 | 
					             mc:Ignorable="d" 
 | 
				
			||||||
 | 
					             d:DesignHeight="450" d:DesignWidth="800">
 | 
				
			||||||
 | 
					    <Grid>
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					    </Grid>
 | 
				
			||||||
 | 
					</UserControl>
 | 
				
			||||||
| 
						 | 
					@ -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>
 | 
				
			||||||
 | 
					    /// MaskDialog.xaml 的交互逻辑
 | 
				
			||||||
 | 
					    /// </summary>
 | 
				
			||||||
 | 
					    public partial class MaskDialog : UserControl
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public MaskDialog()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            InitializeComponent();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,59 @@
 | 
				
			||||||
 | 
					<UserControl x:Class="DM_Weight.Views.Dialog.StockListAccountDialog"
 | 
				
			||||||
 | 
					             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:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes" 
 | 
				
			||||||
 | 
					             mc:Ignorable="d" 
 | 
				
			||||||
 | 
					             d:DesignHeight="450" d:DesignWidth="800">
 | 
				
			||||||
 | 
					    <Grid>
 | 
				
			||||||
 | 
					        <Grid Margin="0 0 0 6" Grid.Row="0">
 | 
				
			||||||
 | 
					            <Grid.RowDefinitions>
 | 
				
			||||||
 | 
					                <RowDefinition Height="2*" />
 | 
				
			||||||
 | 
					                <RowDefinition Height="2*" />
 | 
				
			||||||
 | 
					                <RowDefinition Height="2*" />
 | 
				
			||||||
 | 
					                <RowDefinition Height="4*" />
 | 
				
			||||||
 | 
					            </Grid.RowDefinitions>
 | 
				
			||||||
 | 
					            <Grid.ColumnDefinitions>
 | 
				
			||||||
 | 
					                <ColumnDefinition Width="5*" />
 | 
				
			||||||
 | 
					                <ColumnDefinition Width="5*" />
 | 
				
			||||||
 | 
					            </Grid.ColumnDefinitions>
 | 
				
			||||||
 | 
					            <Grid Background="#03a9f4" Grid.Row="0" Grid.ColumnSpan="3">
 | 
				
			||||||
 | 
					                <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="关闭" Cursor="Hand"
 | 
				
			||||||
 | 
					                    >
 | 
				
			||||||
 | 
					                    <materialDesign:PackIcon Kind="Close" Width="34" Height="34" />
 | 
				
			||||||
 | 
					                </Button>
 | 
				
			||||||
 | 
					            </Grid>
 | 
				
			||||||
 | 
					            <DatePicker
 | 
				
			||||||
 | 
					                Grid.Column="0" Grid.Row="1"
 | 
				
			||||||
 | 
					                SelectedDate="{Binding StartDate, TargetNullValue=''}"
 | 
				
			||||||
 | 
					                Margin="10"
 | 
				
			||||||
 | 
					                materialDesign:HintAssist.Hint="开始时间"
 | 
				
			||||||
 | 
					                Style="{StaticResource MaterialDesignOutlinedDatePicker}"
 | 
				
			||||||
 | 
					            />
 | 
				
			||||||
 | 
					            <DatePicker Grid.Row="1"
 | 
				
			||||||
 | 
					                Grid.Column="1"
 | 
				
			||||||
 | 
					                SelectedDate="{Binding EndDate}"
 | 
				
			||||||
 | 
					                Margin="10"
 | 
				
			||||||
 | 
					                materialDesign:HintAssist.Hint="结束时间"
 | 
				
			||||||
 | 
					                Style="{StaticResource MaterialDesignOutlinedDatePicker}"
 | 
				
			||||||
 | 
					            />
 | 
				
			||||||
 | 
					            <Button Grid.ColumnSpan="2" Grid.Row="2" 
 | 
				
			||||||
 | 
					                    Margin="6"
 | 
				
			||||||
 | 
					                    VerticalAlignment="Center"
 | 
				
			||||||
 | 
					                    Style="{StaticResource MaterialDesignOutlinedLightButton}"
 | 
				
			||||||
 | 
					                    ToolTip="导出" Command="{Binding DownloadAccountBook}">
 | 
				
			||||||
 | 
					                <StackPanel Orientation="Horizontal">
 | 
				
			||||||
 | 
					                    <TextBlock Text="确定"  />
 | 
				
			||||||
 | 
					                </StackPanel>
 | 
				
			||||||
 | 
					            </Button>
 | 
				
			||||||
 | 
					        </Grid>
 | 
				
			||||||
 | 
					    </Grid>
 | 
				
			||||||
 | 
					</UserControl>
 | 
				
			||||||
| 
						 | 
					@ -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>
 | 
				
			||||||
 | 
					    /// StockListAccountDialog.xaml 的交互逻辑
 | 
				
			||||||
 | 
					    /// </summary>
 | 
				
			||||||
 | 
					    public partial class StockListAccountDialog : UserControl
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public StockListAccountDialog()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            InitializeComponent();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -229,11 +229,16 @@
 | 
				
			||||||
                        Header="规格"
 | 
					                        Header="规格"
 | 
				
			||||||
                        IsReadOnly="True"
 | 
					                        IsReadOnly="True"
 | 
				
			||||||
                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
					                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
                    <!--<DataGridTextColumn Width="100"
 | 
					                    <DataGridTextColumn Width="100"
 | 
				
			||||||
                        Binding="{Binding ManuNo}"
 | 
					                        Binding="{Binding ManuNo}"
 | 
				
			||||||
                        Header="批次"
 | 
					                        Header="批次"
 | 
				
			||||||
                        IsReadOnly="True"
 | 
					                        IsReadOnly="True"
 | 
				
			||||||
                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>-->
 | 
					                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                    <DataGridTextColumn Width="100"
 | 
				
			||||||
 | 
					                        Binding="{Binding EffDate}"
 | 
				
			||||||
 | 
					                        Header="效期"
 | 
				
			||||||
 | 
					                        IsReadOnly="True"
 | 
				
			||||||
 | 
					                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
                    <!--<materialDesign:DataGridComboBoxColumn
 | 
					                    <!--<materialDesign:DataGridComboBoxColumn
 | 
				
			||||||
                          Header="批次/效期"
 | 
					                          Header="批次/效期"
 | 
				
			||||||
                          Width="200"
 | 
					                          Width="200"
 | 
				
			||||||
| 
						 | 
					@ -243,7 +248,7 @@
 | 
				
			||||||
                        >
 | 
					                        >
 | 
				
			||||||
                    </materialDesign:DataGridComboBoxColumn>-->
 | 
					                    </materialDesign:DataGridComboBoxColumn>-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    <DataGridTemplateColumn Width="200" IsReadOnly="True"
 | 
					                    <!--<DataGridTemplateColumn Width="200" IsReadOnly="True"
 | 
				
			||||||
                        Header="批次">
 | 
					                        Header="批次">
 | 
				
			||||||
                        <DataGridTemplateColumn.CellTemplate>
 | 
					                        <DataGridTemplateColumn.CellTemplate>
 | 
				
			||||||
                            <DataTemplate>
 | 
					                            <DataTemplate>
 | 
				
			||||||
| 
						 | 
					@ -263,7 +268,7 @@
 | 
				
			||||||
                        Binding="{Binding drugManuNo.EffDate}"
 | 
					                        Binding="{Binding drugManuNo.EffDate}"
 | 
				
			||||||
                        Header="效期"
 | 
					                        Header="效期"
 | 
				
			||||||
                        IsReadOnly="True"
 | 
					                        IsReadOnly="True"
 | 
				
			||||||
                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
					                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>-->
 | 
				
			||||||
                    <DataGridTextColumn Width="100"
 | 
					                    <DataGridTextColumn Width="100"
 | 
				
			||||||
                        Binding="{Binding Quantity}"
 | 
					                        Binding="{Binding Quantity}"
 | 
				
			||||||
                        Header="库存"
 | 
					                        Header="库存"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,6 +17,7 @@
 | 
				
			||||||
    <Grid>
 | 
					    <Grid>
 | 
				
			||||||
        <Grid.RowDefinitions>
 | 
					        <Grid.RowDefinitions>
 | 
				
			||||||
            <RowDefinition Height="Auto"></RowDefinition>
 | 
					            <RowDefinition Height="Auto"></RowDefinition>
 | 
				
			||||||
 | 
					            <!--<RowDefinition  Height="Auto"></RowDefinition>-->
 | 
				
			||||||
            <RowDefinition></RowDefinition>
 | 
					            <RowDefinition></RowDefinition>
 | 
				
			||||||
            <RowDefinition Height="Auto"></RowDefinition>
 | 
					            <RowDefinition Height="Auto"></RowDefinition>
 | 
				
			||||||
        </Grid.RowDefinitions>
 | 
					        </Grid.RowDefinitions>
 | 
				
			||||||
| 
						 | 
					@ -26,10 +27,11 @@
 | 
				
			||||||
                <ColumnDefinition />
 | 
					                <ColumnDefinition />
 | 
				
			||||||
            </Grid.ColumnDefinitions>
 | 
					            </Grid.ColumnDefinitions>
 | 
				
			||||||
            <Image Grid.Column="0" Margin="30 0 30 0" HorizontalAlignment="Left" Width="Auto" Height="26"  Source="/Images/logo.png" />
 | 
					            <Image Grid.Column="0" Margin="30 0 30 0" HorizontalAlignment="Left" Width="Auto" Height="26"  Source="/Images/logo.png" />
 | 
				
			||||||
            <ListBox Name="ListBoxName" Grid.Column="1" ItemsSource="{Binding PremissionDmList}"  HorizontalAlignment="Right" Cursor="Hand">
 | 
					            <ListBox Name="ListBoxName" Grid.Column="1" SelectedItem="{Binding SelectedMenu}" ItemsSource="{Binding PremissionDmList}"  HorizontalAlignment="Right">
 | 
				
			||||||
                <i:Interaction.Triggers>
 | 
					                <i:Interaction.Triggers>
 | 
				
			||||||
                    <i:EventTrigger EventName="SelectionChanged">
 | 
					                    <i:EventTrigger EventName="SelectionChanged">
 | 
				
			||||||
                        <i:InvokeCommandAction Command="{Binding SelectionCommon}" CommandParameter="{Binding ElementName=ListBoxName}"/>
 | 
					                        <!--<i:InvokeCommandAction Command="{Binding SelectionCommon}" CommandParameter="{Binding ElementName=ListBoxName}"/>-->
 | 
				
			||||||
 | 
					                        <i:InvokeCommandAction Command="{Binding SelectionCommon}"/>
 | 
				
			||||||
                    </i:EventTrigger>
 | 
					                    </i:EventTrigger>
 | 
				
			||||||
                </i:Interaction.Triggers>
 | 
					                </i:Interaction.Triggers>
 | 
				
			||||||
                <ListBox.ItemsPanel>
 | 
					                <ListBox.ItemsPanel>
 | 
				
			||||||
| 
						 | 
					@ -46,7 +48,22 @@
 | 
				
			||||||
                    </DataTemplate>
 | 
					                    </DataTemplate>
 | 
				
			||||||
                </ListBox.ItemTemplate>
 | 
					                </ListBox.ItemTemplate>
 | 
				
			||||||
            </ListBox>
 | 
					            </ListBox>
 | 
				
			||||||
 | 
					          
 | 
				
			||||||
        </Grid>
 | 
					        </Grid>
 | 
				
			||||||
 | 
					        <!--<Grid  Grid.Row="1">
 | 
				
			||||||
 | 
					            <Grid.ColumnDefinitions>
 | 
				
			||||||
 | 
					                <ColumnDefinition/>
 | 
				
			||||||
 | 
					                <ColumnDefinition/>
 | 
				
			||||||
 | 
					                <ColumnDefinition/>
 | 
				
			||||||
 | 
					                <ColumnDefinition/>
 | 
				
			||||||
 | 
					                <ColumnDefinition/>
 | 
				
			||||||
 | 
					            </Grid.ColumnDefinitions>
 | 
				
			||||||
 | 
					            <Button Content="取药"  Grid.Column="0" Command="{Binding TakeCommand}" />
 | 
				
			||||||
 | 
					            <Button Content="加药"  Grid.Column="1" Command="{Binding AddCommand}"/>
 | 
				
			||||||
 | 
					            <Button Content="还药"    Grid.Column="2" Command="{Binding ReturnCommand}"/>
 | 
				
			||||||
 | 
					            <Button Content="库存管理"   Grid.Column="3" Command="{Binding StockCommand}"/>
 | 
				
			||||||
 | 
					            <Button Content="系统设置"   Grid.Column="4" Command="{Binding SettingCommand}"/>
 | 
				
			||||||
 | 
					        </Grid>-->
 | 
				
			||||||
        <Grid Grid.Row="1" Margin="8,6,8,6">
 | 
					        <Grid Grid.Row="1" Margin="8,6,8,6">
 | 
				
			||||||
            <Grid.RowDefinitions>
 | 
					            <Grid.RowDefinitions>
 | 
				
			||||||
                <RowDefinition Height="Auto"/>
 | 
					                <RowDefinition Height="Auto"/>
 | 
				
			||||||
| 
						 | 
					@ -59,7 +76,11 @@
 | 
				
			||||||
            <materialDesign:Card Grid.Row="0" Grid.ColumnSpan="2">
 | 
					            <materialDesign:Card Grid.Row="0" Grid.ColumnSpan="2">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                <ListBox ItemsSource="{Binding SelectedMenu.Children}" SelectedItem="{ Binding SelectedChildMenu }" HorizontalAlignment="left" Cursor="Hand">
 | 
					                <ListBox ItemsSource="{Binding SelectedMenu.Children}" SelectedItem="{ Binding SelectedChildMenu }" HorizontalAlignment="left" Cursor="Hand">
 | 
				
			||||||
 | 
					                    <i:Interaction.Triggers>
 | 
				
			||||||
 | 
					                        <i:EventTrigger EventName="SelectionChanged">
 | 
				
			||||||
 | 
					                            <i:InvokeCommandAction Command="{Binding SelectionChildCommon}"/>
 | 
				
			||||||
 | 
					                        </i:EventTrigger>
 | 
				
			||||||
 | 
					                    </i:Interaction.Triggers>
 | 
				
			||||||
                    <ListBox.ItemsPanel>
 | 
					                    <ListBox.ItemsPanel>
 | 
				
			||||||
                        <ItemsPanelTemplate>
 | 
					                        <ItemsPanelTemplate>
 | 
				
			||||||
                            <WrapPanel Orientation="Horizontal" IsItemsHost="True"/>
 | 
					                            <WrapPanel Orientation="Horizontal" IsItemsHost="True"/>
 | 
				
			||||||
| 
						 | 
					@ -74,16 +95,6 @@
 | 
				
			||||||
                    </ListBox.ItemTemplate>
 | 
					                    </ListBox.ItemTemplate>
 | 
				
			||||||
                </ListBox>
 | 
					                </ListBox>
 | 
				
			||||||
            </materialDesign:Card>
 | 
					            </materialDesign:Card>
 | 
				
			||||||
 | 
					 | 
				
			||||||
            <!--<materialDesign:Card Grid.Row="0" Grid.Column="1">-->
 | 
					 | 
				
			||||||
                <!--<Button HorizontalAlignment="Right"
 | 
					 | 
				
			||||||
                                    Grid.Column="1"
 | 
					 | 
				
			||||||
                                    Style="{StaticResource MaterialDesignRaisedButton}"
 | 
					 | 
				
			||||||
                                    materialDesign:ButtonAssist.CornerRadius="5"
 | 
					 | 
				
			||||||
                                    Command="{ Binding ShiftsCommand }"
 | 
					 | 
				
			||||||
                                    Background="#42a5f5"
 | 
					 | 
				
			||||||
                                    BorderBrush="#42a5f5" Cursor="Hand"  IsDefault="True"  Content="交接班"/>-->
 | 
					 | 
				
			||||||
            <!--</materialDesign:Card>-->
 | 
					 | 
				
			||||||
            <materialDesign:Card Grid.Row="1" Margin="0 8 0 8" Grid.ColumnSpan="2">
 | 
					            <materialDesign:Card Grid.Row="1" Margin="0 8 0 8" Grid.ColumnSpan="2">
 | 
				
			||||||
                <ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Disabled" Focusable="True">
 | 
					                <ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Disabled" Focusable="True">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,309 @@
 | 
				
			||||||
 | 
					<UserControl x:Class="DM_Weight.Views.InvoiceInNewWindow"
 | 
				
			||||||
 | 
					             xmlns:pagination="clr-namespace:DM_Weight.Components.pagination"
 | 
				
			||||||
 | 
					             xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes" 
 | 
				
			||||||
 | 
					             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:i="http://schemas.microsoft.com/xaml/behaviors"
 | 
				
			||||||
 | 
					             xmlns:prism="http://prismlibrary.com/"
 | 
				
			||||||
 | 
					             xmlns:convert="clr-namespace:DM_Weight.Converter"
 | 
				
			||||||
 | 
					             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>
 | 
				
			||||||
 | 
					            <convert:GroupSumConverter x:Key="GroupSumConverter" />
 | 
				
			||||||
 | 
					            <convert:QuantityCountConverter x:Key="QuantityCountConverter" />
 | 
				
			||||||
 | 
					            <convert:StatusConverter x:Key="StatusConverter" />
 | 
				
			||||||
 | 
					            <convert:InputQuantityConverter x:Key="InputQuantityConverter" />
 | 
				
			||||||
 | 
					        </Grid.Resources>
 | 
				
			||||||
 | 
					        <Grid.ColumnDefinitions>
 | 
				
			||||||
 | 
					            <ColumnDefinition Width="3*" />
 | 
				
			||||||
 | 
					            <ColumnDefinition Width="7*"/>
 | 
				
			||||||
 | 
					        </Grid.ColumnDefinitions>
 | 
				
			||||||
 | 
					        <Grid Grid.Column="0" >
 | 
				
			||||||
 | 
					            <Grid.RowDefinitions>
 | 
				
			||||||
 | 
					                <RowDefinition Height="Auto" />
 | 
				
			||||||
 | 
					                <RowDefinition />
 | 
				
			||||||
 | 
					                <RowDefinition Height="Auto" />
 | 
				
			||||||
 | 
					            </Grid.RowDefinitions>
 | 
				
			||||||
 | 
					            <Grid Margin="0 6 0 6" Grid.Row="0">
 | 
				
			||||||
 | 
					                <Grid.ColumnDefinitions>
 | 
				
			||||||
 | 
					                    <ColumnDefinition Width="3*" />
 | 
				
			||||||
 | 
					                    <ColumnDefinition Width="3*" />
 | 
				
			||||||
 | 
					                    <ColumnDefinition Width="4*" />
 | 
				
			||||||
 | 
					                </Grid.ColumnDefinitions>
 | 
				
			||||||
 | 
					                <ComboBox
 | 
				
			||||||
 | 
					                Grid.Column="0"
 | 
				
			||||||
 | 
					                Margin="6 0 0 0"
 | 
				
			||||||
 | 
					                Style="{StaticResource MaterialDesignOutlinedComboBox}"
 | 
				
			||||||
 | 
					                SelectedItem="{Binding SelectedItem}"
 | 
				
			||||||
 | 
					                DisplayMemberPath="Name"
 | 
				
			||||||
 | 
					                ItemsSource="{Binding OrderTakeSelects}"
 | 
				
			||||||
 | 
					                />
 | 
				
			||||||
 | 
					                <TextBox
 | 
				
			||||||
 | 
					                Grid.Column="1"
 | 
				
			||||||
 | 
					                Text="{Binding SearchValue, UpdateSourceTrigger=PropertyChanged}"
 | 
				
			||||||
 | 
					                materialDesign:HintAssist.Hint="{Binding SelectedItem.Name}"
 | 
				
			||||||
 | 
					                materialDesign:HintAssist.IsFloating="True"
 | 
				
			||||||
 | 
					                Margin="6 0 0 0"
 | 
				
			||||||
 | 
					                Style="{StaticResource MaterialDesignOutlinedTextBox}"/>
 | 
				
			||||||
 | 
					                <DatePicker
 | 
				
			||||||
 | 
					                Grid.Column="2"
 | 
				
			||||||
 | 
					                SelectedDate="{Binding OrderDate, StringFormat=yyyy-MM-dd, TargetNullValue='',UpdateSourceTrigger=PropertyChanged}"
 | 
				
			||||||
 | 
					                SelectedDateFormat="Short"
 | 
				
			||||||
 | 
					                Margin="6 0 0 0"
 | 
				
			||||||
 | 
					                materialDesign:HintAssist.Hint="日期"
 | 
				
			||||||
 | 
					                Style="{StaticResource MaterialDesignOutlinedDatePicker}" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            </Grid>
 | 
				
			||||||
 | 
					            <ListView Grid.Row="1"
 | 
				
			||||||
 | 
					                    ItemsSource="{Binding Invoices}"
 | 
				
			||||||
 | 
					                    SelectedItem="{Binding SelectedInvoice}"
 | 
				
			||||||
 | 
					                    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="100"
 | 
				
			||||||
 | 
					                        Header="凭证单号"
 | 
				
			||||||
 | 
					                        DisplayMemberBinding="{Binding InvoiceNo}"/>
 | 
				
			||||||
 | 
					                        <GridViewColumn Width="70"
 | 
				
			||||||
 | 
					                        Header="时间"
 | 
				
			||||||
 | 
					                        DisplayMemberBinding="{Binding InvoiceDate, StringFormat=yyyy-MM-dd}" />
 | 
				
			||||||
 | 
					                        <GridViewColumn Width="60" DisplayMemberBinding="{Binding Count}" Header="药品种类">
 | 
				
			||||||
 | 
					                            <!--<GridViewColumn.Header>
 | 
				
			||||||
 | 
					                                <TextBlock Text= "" TextWrapping="Wrap"/>
 | 
				
			||||||
 | 
					                            </GridViewColumn.Header>-->
 | 
				
			||||||
 | 
					                        </GridViewColumn>
 | 
				
			||||||
 | 
					                        <GridViewColumn Width="60"
 | 
				
			||||||
 | 
					                        DisplayMemberBinding="{Binding Quantity}" Header="药品总数">
 | 
				
			||||||
 | 
					                            <!--<GridViewColumn.Header>
 | 
				
			||||||
 | 
					                                <TextBlock Text="" TextWrapping="Wrap"/>
 | 
				
			||||||
 | 
					                            </GridViewColumn.Header>-->
 | 
				
			||||||
 | 
					                        </GridViewColumn>
 | 
				
			||||||
 | 
					                        <!--<GridViewColumn
 | 
				
			||||||
 | 
					                        DisplayMemberBinding="{Binding Status}"
 | 
				
			||||||
 | 
					                        Header="状态"/>-->
 | 
				
			||||||
 | 
					                    </GridView>
 | 
				
			||||||
 | 
					                </ListView.View>
 | 
				
			||||||
 | 
					            </ListView>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <pagination:Pagination Grid.Row="2"
 | 
				
			||||||
 | 
					                                   CurrentPage="{Binding PageNum}"
 | 
				
			||||||
 | 
					                                   PageSize="{Binding PageSize}"
 | 
				
			||||||
 | 
					                                   TotalPages="{Binding TotalCount}"
 | 
				
			||||||
 | 
					                                   InfoTextIsEnabel="True"
 | 
				
			||||||
 | 
					                                />
 | 
				
			||||||
 | 
					        </Grid>
 | 
				
			||||||
 | 
					        <Grid Grid.Column="1" Margin="0">
 | 
				
			||||||
 | 
					            <Grid.RowDefinitions>
 | 
				
			||||||
 | 
					                <RowDefinition Height="61" />
 | 
				
			||||||
 | 
					                <RowDefinition />
 | 
				
			||||||
 | 
					            </Grid.RowDefinitions>
 | 
				
			||||||
 | 
					            <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
 | 
				
			||||||
 | 
					                <Button
 | 
				
			||||||
 | 
					                    Margin="0 0 3 0"
 | 
				
			||||||
 | 
					                    VerticalAlignment="Center"
 | 
				
			||||||
 | 
					                    Command="{Binding OpenInvoiceAdd}"
 | 
				
			||||||
 | 
					                    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}"
 | 
				
			||||||
 | 
					                    Style="{StaticResource MaterialDesignOutlinedLightButton}"
 | 
				
			||||||
 | 
					                    Content="入库" />
 | 
				
			||||||
 | 
					                <Button
 | 
				
			||||||
 | 
					                    Margin="0 0 3 0"
 | 
				
			||||||
 | 
					                    VerticalAlignment="Center"
 | 
				
			||||||
 | 
					                    Command="{Binding TakeFinish}"
 | 
				
			||||||
 | 
					                    Visibility="{Binding Status, Converter={StaticResource StatusConverter}, ConverterParameter=CompleteBtn}"
 | 
				
			||||||
 | 
					                    Style="{StaticResource MaterialDesignOutlinedLightButton}"
 | 
				
			||||||
 | 
					                    Content="完成" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                <Button
 | 
				
			||||||
 | 
					                    Margin="0 0 6 0"
 | 
				
			||||||
 | 
					                    VerticalAlignment="Center"
 | 
				
			||||||
 | 
					                    Command="{Binding CancleTake}"
 | 
				
			||||||
 | 
					                    Visibility="{Binding Status, Converter={StaticResource StatusConverter}, ConverterParameter=CancelBtn}"
 | 
				
			||||||
 | 
					                    Style="{StaticResource MaterialDesignOutlinedLightButton}"
 | 
				
			||||||
 | 
					                    Content="取消" />
 | 
				
			||||||
 | 
					                <!--<Button
 | 
				
			||||||
 | 
					                    Margin="0 0 6 0"
 | 
				
			||||||
 | 
					                    VerticalAlignment="Center"
 | 
				
			||||||
 | 
					                    Style="{StaticResource MaterialDesignOutlinedLightButton}"
 | 
				
			||||||
 | 
					                    Command="{Binding OpenInvoiceAdd}"
 | 
				
			||||||
 | 
					                    Content="入库"
 | 
				
			||||||
 | 
					                    />-->
 | 
				
			||||||
 | 
					                <Button
 | 
				
			||||||
 | 
					                    Margin="0 0 6 0"
 | 
				
			||||||
 | 
					                    VerticalAlignment="Center"
 | 
				
			||||||
 | 
					                    Style="{StaticResource MaterialDesignOutlinedLightButton}"
 | 
				
			||||||
 | 
					                    Command="{Binding QueryCommand}"
 | 
				
			||||||
 | 
					                    ToolTip="刷新">
 | 
				
			||||||
 | 
					                    <materialDesign:PackIcon
 | 
				
			||||||
 | 
					                    Kind="Refresh" />
 | 
				
			||||||
 | 
					                </Button>
 | 
				
			||||||
 | 
					            </StackPanel>
 | 
				
			||||||
 | 
					            <ScrollViewer  Grid.Row="1"  Margin="0">
 | 
				
			||||||
 | 
					                <ItemsControl 
 | 
				
			||||||
 | 
					                ItemsSource="{Binding ChannelLsts,UpdateSourceTrigger=PropertyChanged}"
 | 
				
			||||||
 | 
					                Grid.IsSharedSizeScope="True">
 | 
				
			||||||
 | 
					                    <ItemsControl.ItemTemplate>
 | 
				
			||||||
 | 
					                        <DataTemplate>
 | 
				
			||||||
 | 
					                            <Grid>
 | 
				
			||||||
 | 
					                                <Grid.ColumnDefinitions>
 | 
				
			||||||
 | 
					                                    <ColumnDefinition Width="200"/>
 | 
				
			||||||
 | 
					                                    <ColumnDefinition/>
 | 
				
			||||||
 | 
					                                </Grid.ColumnDefinitions>
 | 
				
			||||||
 | 
					                                <Border BorderBrush="White" BorderThickness="1">
 | 
				
			||||||
 | 
					                                    <StackPanel Orientation="Horizontal" Background="#31ccec" Grid.Column="0">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                        <Grid>
 | 
				
			||||||
 | 
					                                            <Grid.RowDefinitions>
 | 
				
			||||||
 | 
					                                                <RowDefinition/>
 | 
				
			||||||
 | 
					                                                <RowDefinition/>
 | 
				
			||||||
 | 
					                                                <RowDefinition/>
 | 
				
			||||||
 | 
					                                            </Grid.RowDefinitions>
 | 
				
			||||||
 | 
					                                            <Grid.ColumnDefinitions>
 | 
				
			||||||
 | 
					                                                <ColumnDefinition Width="200"/>
 | 
				
			||||||
 | 
					                                            </Grid.ColumnDefinitions>
 | 
				
			||||||
 | 
					                                            <TextBlock TextWrapping="Wrap" Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Center"  Padding="0 10 0 0 " Text="{Binding Drug.DrugName}"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                            <TextBlock TextWrapping="Wrap" Grid.Row="1"  HorizontalAlignment="Center" VerticalAlignment="Center"  Padding="0 0 0 1 " Text="{Binding Drug.DrugSpec}"/>
 | 
				
			||||||
 | 
					                                            <!--<Button  Grid.Row="2"   Padding="0 0 0 1 "  Style="{x:Null}" BorderBrush="{x:Null}" Background="{x:Null}" Click="Button_Click" CommandParameter="{Binding}">
 | 
				
			||||||
 | 
					                                                <Button.Content>
 | 
				
			||||||
 | 
					                                                    <Border Width="32" Height="32" CornerRadius="16" Background="CornflowerBlue" VerticalAlignment="Center" HorizontalAlignment="Center">
 | 
				
			||||||
 | 
					                                                        <Path Data="M0 11L22 11M11 0L11 22" Stroke="WhiteSmoke" StrokeThickness="4" VerticalAlignment="Center" HorizontalAlignment="Center"></Path>
 | 
				
			||||||
 | 
					                                                    </Border>
 | 
				
			||||||
 | 
					                                                </Button.Content>
 | 
				
			||||||
 | 
					                                            </Button>-->
 | 
				
			||||||
 | 
					                                        </Grid>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    </StackPanel>
 | 
				
			||||||
 | 
					                                </Border>
 | 
				
			||||||
 | 
					                                <DataGrid
 | 
				
			||||||
 | 
					                Margin="0"
 | 
				
			||||||
 | 
					                 Grid.Column="1" 
 | 
				
			||||||
 | 
					                materialDesign:DataGridAssist.ColumnHeaderPadding="15"
 | 
				
			||||||
 | 
					                 ItemsSource="{Binding channelStocks}"  
 | 
				
			||||||
 | 
					                materialDesign:DataGridAssist.EnableEditBoxAssist="False"
 | 
				
			||||||
 | 
					                materialDesign:DataGridAssist.CellPadding="15"
 | 
				
			||||||
 | 
					                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="60" />
 | 
				
			||||||
 | 
					                                            <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="Center"/>
 | 
				
			||||||
 | 
					                                                </Trigger>
 | 
				
			||||||
 | 
					                                            </Style.Triggers>
 | 
				
			||||||
 | 
					                                        </Style>
 | 
				
			||||||
 | 
					                                    </DataGrid.Resources>
 | 
				
			||||||
 | 
					                                    <DataGrid.Columns>
 | 
				
			||||||
 | 
					                                        <DataGridTextColumn Width="60"
 | 
				
			||||||
 | 
					                        Binding="{Binding Location}"
 | 
				
			||||||
 | 
					                        Header="库位"
 | 
				
			||||||
 | 
					                        IsReadOnly="True"
 | 
				
			||||||
 | 
					                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                                        <DataGridTextColumn Width="150" Binding="{Binding ManuNo}" Header="批次" IsReadOnly="True" 
 | 
				
			||||||
 | 
					                                                            ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                                        <DataGridTextColumn Width="100" Binding="{Binding EffDate}" Header="效期" IsReadOnly="True" 
 | 
				
			||||||
 | 
					                                                            ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                                        <!--<DataGridTextColumn Width="60"
 | 
				
			||||||
 | 
					                                        <DataGridTemplateColumn Width="180" IsReadOnly="True"
 | 
				
			||||||
 | 
					                        Header="批次">
 | 
				
			||||||
 | 
					                                            <DataGridTemplateColumn.CellTemplate>
 | 
				
			||||||
 | 
					                                                <DataTemplate>
 | 
				
			||||||
 | 
					                                                    <ComboBox
 | 
				
			||||||
 | 
					                                    Style="{StaticResource MaterialDesignDataGridComboBox}"                  
 | 
				
			||||||
 | 
					                                    ItemsSource="{Binding DrugInfo.DrugManuNos}"
 | 
				
			||||||
 | 
					                                    SelectedItem="{Binding drugManuNo,UpdateSourceTrigger=PropertyChanged}"
 | 
				
			||||||
 | 
					                                    DisplayMemberPath="ManuNo" 
 | 
				
			||||||
 | 
					                                    IsEnabled="{Binding Quantity,Converter={StaticResource QuantityCountConverter}}">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                                    </ComboBox>
 | 
				
			||||||
 | 
					                                                </DataTemplate>
 | 
				
			||||||
 | 
					                                            </DataGridTemplateColumn.CellTemplate>
 | 
				
			||||||
 | 
					                                        </DataGridTemplateColumn>-->
 | 
				
			||||||
 | 
					                                        <!--<DataGridTextColumn Width="100"
 | 
				
			||||||
 | 
					                        Binding="{Binding drugManuNo.EffDate}"
 | 
				
			||||||
 | 
					                        Header="效期"
 | 
				
			||||||
 | 
					                        IsReadOnly="True"
 | 
				
			||||||
 | 
					                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>-->
 | 
				
			||||||
 | 
					                                        <DataGridTextColumn  Width="60"
 | 
				
			||||||
 | 
					                        Binding="{Binding Quantity}"
 | 
				
			||||||
 | 
					                        Header="库存"
 | 
				
			||||||
 | 
					                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                                        <DataGridTextColumn Width="100"
 | 
				
			||||||
 | 
					                        Binding="{Binding AddQuantity}"
 | 
				
			||||||
 | 
					                        Header="添加数量"
 | 
				
			||||||
 | 
					                        IsReadOnly="True"
 | 
				
			||||||
 | 
					                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"/>
 | 
				
			||||||
 | 
					                                        <!--<DataGridTemplateColumn Width="60">
 | 
				
			||||||
 | 
					                                            <DataGridTemplateColumn.Header>
 | 
				
			||||||
 | 
					                                                <TextBlock Text="添加数量" TextWrapping="Wrap"/>
 | 
				
			||||||
 | 
					                                            </DataGridTemplateColumn.Header>
 | 
				
			||||||
 | 
					                                            <DataGridTemplateColumn.CellTemplate>
 | 
				
			||||||
 | 
					                                                <DataTemplate>
 | 
				
			||||||
 | 
					                                                    <TextBox Style="{StaticResource MaterialDesignDataGridTextColumnEditingStyle}">
 | 
				
			||||||
 | 
					                                                        <TextBox.Text>
 | 
				
			||||||
 | 
					                                                            <Binding Path="AddQuantity" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged">
 | 
				
			||||||
 | 
					                                                                <Binding.ValidationRules>
 | 
				
			||||||
 | 
					                                                                    <ExceptionValidationRule />
 | 
				
			||||||
 | 
					                                                                </Binding.ValidationRules>
 | 
				
			||||||
 | 
					                                                            </Binding>
 | 
				
			||||||
 | 
					                                                        </TextBox.Text>
 | 
				
			||||||
 | 
					                                                    </TextBox>
 | 
				
			||||||
 | 
					                                                </DataTemplate>
 | 
				
			||||||
 | 
					                                            </DataGridTemplateColumn.CellTemplate>
 | 
				
			||||||
 | 
					                                        </DataGridTemplateColumn>-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    </DataGrid.Columns>
 | 
				
			||||||
 | 
					                                </DataGrid>
 | 
				
			||||||
 | 
					                            </Grid>
 | 
				
			||||||
 | 
					                        </DataTemplate>
 | 
				
			||||||
 | 
					                    </ItemsControl.ItemTemplate>
 | 
				
			||||||
 | 
					                </ItemsControl>
 | 
				
			||||||
 | 
					            </ScrollViewer>
 | 
				
			||||||
 | 
					        </Grid>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    </Grid>
 | 
				
			||||||
 | 
					</UserControl>
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,40 @@
 | 
				
			||||||
 | 
					using DM_Weight.Models;
 | 
				
			||||||
 | 
					using DM_Weight.msg;
 | 
				
			||||||
 | 
					using Prism.Events;
 | 
				
			||||||
 | 
					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>
 | 
				
			||||||
 | 
					    /// InvoiceInNewWindow.xaml 的交互逻辑
 | 
				
			||||||
 | 
					    /// </summary>
 | 
				
			||||||
 | 
					    public partial class InvoiceInNewWindow : UserControl
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        IEventAggregator _eventAggregator;
 | 
				
			||||||
 | 
					        public InvoiceInNewWindow(IEventAggregator eventAggregator)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            InitializeComponent();
 | 
				
			||||||
 | 
					            _eventAggregator = eventAggregator;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        private void Button_Click(object sender, RoutedEventArgs e)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Button btn = (Button)sender;
 | 
				
			||||||
 | 
					            ChannelList cls = (ChannelList)btn.CommandParameter;
 | 
				
			||||||
 | 
					            //vms.AddAction(cls);
 | 
				
			||||||
 | 
					            _eventAggregator.GetEvent<AddDrugEvent>().Publish(cls);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -179,7 +179,7 @@
 | 
				
			||||||
                            FontSize="14"
 | 
					                            FontSize="14"
 | 
				
			||||||
                            FontWeight="Bold"
 | 
					                            FontWeight="Bold"
 | 
				
			||||||
                            Foreground="{DynamicResource MaterialDesignPaper}"
 | 
					                            Foreground="{DynamicResource MaterialDesignPaper}"
 | 
				
			||||||
                            Grid.Row="0" Grid.Column="2" Text="{Binding Operator.Nickname}" />
 | 
					                            Grid.Row="0" Grid.Column="2" Text="{Binding Operator.Nickname,UpdateSourceTrigger=PropertyChanged}" />
 | 
				
			||||||
                        <TextBlock
 | 
					                        <TextBlock
 | 
				
			||||||
                            FontSize="14"
 | 
					                            FontSize="14"
 | 
				
			||||||
                            FontWeight="Bold"
 | 
					                            FontWeight="Bold"
 | 
				
			||||||
| 
						 | 
					@ -189,7 +189,7 @@
 | 
				
			||||||
                            FontSize="14"
 | 
					                            FontSize="14"
 | 
				
			||||||
                            FontWeight="Bold"
 | 
					                            FontWeight="Bold"
 | 
				
			||||||
                            Foreground="{DynamicResource MaterialDesignPaper}"
 | 
					                            Foreground="{DynamicResource MaterialDesignPaper}"
 | 
				
			||||||
                            Grid.Row="1" Grid.Column="2" Text="{Binding Reviewer.Nickname}" />
 | 
					                            Grid.Row="1" Grid.Column="2" Text="{Binding Reviewer.Nickname,UpdateSourceTrigger=PropertyChanged}" />
 | 
				
			||||||
                    </Grid>
 | 
					                    </Grid>
 | 
				
			||||||
                </Grid>
 | 
					                </Grid>
 | 
				
			||||||
            </Grid>
 | 
					            </Grid>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
		Reference in New Issue