2025-07-02 16:15:16 +08:00
using DM_Weight.Common ;
using DM_Weight.Models ;
using DM_Weight.Port ;
using DM_Weight.util ;
using Prism.Commands ;
using Prism.Mvvm ;
using Prism.Regions ;
using Prism.Services.Dialogs ;
using System ;
using System.Collections.Generic ;
using System.Collections.ObjectModel ;
using System.Configuration ;
using System.Linq ;
using System.Text ;
using System.Threading.Tasks ;
using Unity ;
namespace DM_Weight.ViewModels
{
public class ReportDrugNameDialogViewModel : BindableBase , IRegionMemberLifetime , IDialogAware
{
private string? _reportDrugName ;
public string? ReportDrugName
{
get = > _reportDrugName ;
set = > SetProperty ( ref _reportDrugName , value ) ;
}
private DrugInfo ? _leftDrug ;
public DrugInfo ? LeftDrug
{
get = > _leftDrug ;
set = > SetProperty ( ref _leftDrug , value ) ;
}
private ObservableCollection < DrugInfo > _rightDrugNameList = new ObservableCollection < DrugInfo > ( ) ;
public ObservableCollection < DrugInfo > RightDrugNameList
{
get = > _rightDrugNameList ;
set = > SetProperty ( ref _rightDrugNameList , value ) ;
}
private DrugInfo ? _rightDrugName ;
public DrugInfo ? RightDrugName
{
get = > _rightDrugName ;
set = > SetProperty ( ref _rightDrugName , value ) ;
}
2025-07-04 16:48:43 +08:00
public static ReportDrugNameDialogViewModel vm ;
2025-07-02 16:15:16 +08:00
public static ObservableCollection < DrugInfo > defaultAll = new ObservableCollection < DrugInfo > ( ) ;
private ObservableCollection < DrugInfo > _allPremissions = defaultAll ;
public event Action < IDialogResult > RequestClose ;
2025-07-04 16:48:43 +08:00
public ReportDrugNameDialogViewModel ( )
{
vm = this ;
}
2025-07-02 16:15:16 +08:00
public ObservableCollection < DrugInfo > AllPremissions
{
get = > _allPremissions ;
set = > SetProperty ( ref _allPremissions , value ) ;
}
public bool KeepAlive = > false ;
public bool IsNavigationTarget ( NavigationContext navigationContext )
{
return true ;
}
void RequestData ( )
{
AllPremissions = new ObservableCollection < DrugInfo > ( ) ;
2025-07-04 16:48:43 +08:00
//string str = "SELECT d.drug_id,CONCAT(drug_name,' / ',drug_spec,' / ',manufactory) as drug_name_spec FROM `drug_info` d left join drug_base db on d.drug_id=db.drugid and db.machine_id='DM3'";
//if (ConfigurationManager.AppSettings["DrugNames"] != null)
//{
// str += " where d.drug_id not in (" + CommonClass.ReadAppSetting("DrugNames") + ")";
//}
//List<DrugInfo> DrugInfos = SqlSugarHelper.Db.SqlQueryable<DrugInfo>(str).OrderBy(di => di.DrugId).ToList();
2025-07-02 16:15:16 +08:00
2025-07-04 16:48:43 +08:00
//AllPremissions.AddRange(DrugInfos);
2025-07-02 16:15:16 +08:00
string strRight = "SELECT d.drug_id,CONCAT(drug_name,' / ',drug_spec,' / ',manufactory) as drug_name_spec FROM `drug_info` d left join drug_base db on d.drug_id=db.drugid and db.machine_id='DM3'" ;
if ( ConfigurationManager . AppSettings [ "DrugNames" ] ! = null )
{
strRight + = " where d.drug_id in (" + CommonClass . ReadAppSetting ( "DrugNames" ) + ")" ;
}
List < DrugInfo > DrugInfosRight = SqlSugarHelper . Db . SqlQueryable < DrugInfo > ( strRight ) . OrderBy ( di = > di . DrugId ) . ToList ( ) ;
RightDrugNameList . AddRange ( DrugInfosRight ) ;
}
public bool CanCloseDialog ( )
{
return true ;
}
public void OnDialogClosed ( )
{
}
public void OnDialogOpened ( IDialogParameters parameters )
{
//查询报表中的药品名称
RequestData ( ) ;
2025-07-04 16:48:43 +08:00
GetAllDrugInfos ( ) ;
2025-07-02 16:15:16 +08:00
}
public DelegateCommand < DrugInfo > RightSelectedItemChangedCommand
{
get = > new DelegateCommand < DrugInfo > ( ( DrugInfo _selected ) = >
{
RightDrugName = _selected ;
} ) ;
}
public DelegateCommand ToRight = > new DelegateCommand ( ( ) = >
{
if ( LeftDrug ! = null )
{
RightDrugNameList . Insert ( 0 , LeftDrug ) ;
AllPremissions . RemoveAt ( AllPremissions . ToList ( ) . FindIndex ( it = > it . DrugId = = LeftDrug . DrugId ) ) ;
}
} ) ;
public DelegateCommand ToLeft = > new DelegateCommand ( ( ) = >
{
if ( RightDrugName ! = null )
{
AllPremissions . Insert ( 0 , RightDrugName ) ;
RightDrugNameList . RemoveAt ( RightDrugNameList . ToList ( ) . FindIndex ( it = > it . DrugId = = RightDrugName . DrugId ) ) ;
}
} ) ;
public DelegateCommand < DrugInfo > LeftSelectedItemChangedCommand
{
get = > new DelegateCommand < DrugInfo > ( ( DrugInfo _selected ) = >
{
LeftDrug = _selected ;
} ) ;
}
//保存
public DelegateCommand AddRole
{
get = > new DelegateCommand ( ( ) = >
{
if ( RightDrugNameList ! = null & & RightDrugNameList . Count > 0 )
{
string strDrugInfo = string . Empty ;
for ( int i = 0 ; i < RightDrugNameList . Count ; i + + )
{
strDrugInfo + = "'" + RightDrugNameList [ i ] . DrugId + "'," ;
}
if ( ! string . IsNullOrEmpty ( strDrugInfo ) )
{
strDrugInfo = strDrugInfo . Substring ( 0 , strDrugInfo . Length - 1 ) ;
CommonClass . SaveAppSetting ( "DrugNames" , strDrugInfo ) ;
// 关闭当前窗口
RequestClose ? . Invoke ( new DialogResult ( ButtonResult . Cancel ) ) ;
}
}
} ) ;
}
public string Title = > "" ;
public DelegateCommand BtnCloseCommand
{
get = > new DelegateCommand ( ( ) = >
{
//DialogParameters parameters = new DialogParameters();
//parameters.Add("",);
// 关闭当前窗口
RequestClose ? . Invoke ( new DialogResult ( ButtonResult . Cancel ) ) ;
} ) ;
}
2025-07-04 16:48:43 +08:00
private ObservableCollection < DrugInfo > ? _drugInfos = defaultAll ;
public ObservableCollection < 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 )
{
AllPremissions . Add ( _drugInfo ) ; // = _drugInfo.DrugManuNos.OrderByDescending(dm => dm.ManuNo).ToList();
}
}
}
private void GetAllDrugInfos ( )
{
//var list = SqlSugarHelper.Db.Queryable<DrugInfo>().Includes<DrugManuNo>(di => di.DrugManuNos).OrderBy(di => di.DrugId).ToList();
//DrugInfos = 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,' / ',manufactory) as drug_name_spec FROM `drug_info` d" ;
var DrugInfoslist = SqlSugarHelper . Db . SqlQueryable < DrugInfo > ( str ) . OrderBy ( di = > di . DrugName ) . OrderBy ( di = > di . DrugId ) . ToList ( ) ;
DrugInfos . AddRange ( DrugInfoslist ) ;
//DrugInfos_PY = list;
}
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 , ' / ' , manufactory ) as drug_name_spec FROM ` drug_info ` d ";
if ( string . IsNullOrEmpty ( text ) )
{
var DrugInfosLst = SqlSugarHelper . Db . SqlQueryable < DrugInfo > ( str ) . OrderBy ( di = > di . DrugName ) . OrderBy ( di = > di . DrugId ) . ToList ( ) ;
DrugInfos . AddRange ( DrugInfosLst ) ;
return ;
}
if ( DrugInfos ! = null )
{
DrugInfos . Clear ( ) ;
}
var DrugInfosList = SqlSugarHelper . Db . SqlQueryable < DrugInfo > ( str ) . Where ( di = > di . DrugName . Contains ( text ) | | di . PyCode . Contains ( text ) ) . OrderBy ( di = > di . DrugName ) . OrderBy ( di = > di . DrugId ) . ToList ( ) ;
DrugInfos . AddRange ( DrugInfosList ) ;
}
2025-07-02 16:15:16 +08:00
}
}