379 lines
13 KiB
C#
379 lines
13 KiB
C#
using DM_Weight.Models;
|
|
using DM_Weight.msg;
|
|
using DM_Weight.Report;
|
|
using DM_Weight.util;
|
|
using Prism.Commands;
|
|
using Prism.Events;
|
|
using Prism.Mvvm;
|
|
using Prism.Regions;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Configuration;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Media;
|
|
|
|
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<AccountBookG2> _accountList = new();
|
|
|
|
public List<AccountBookG2> 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=3
|
|
},
|
|
new AccountType
|
|
{
|
|
AccountTypeName="总结存",
|
|
AccountTypeValue=4
|
|
}
|
|
};
|
|
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();
|
|
}
|
|
}
|
|
///// <summary>
|
|
///// 药品类型
|
|
///// </summary>
|
|
//private List<DrugType> _drugTypeList = new List<DrugType>()
|
|
//{
|
|
// new DrugType{ TypeValue=1,TypeName="精一"},
|
|
// new DrugType{TypeValue=2,TypeName="精二"}
|
|
//};
|
|
//public List<DrugType>? DrugTypeList
|
|
//{
|
|
// get => _drugTypeList;
|
|
// set
|
|
// {
|
|
// SetProperty(ref _drugTypeList, value);
|
|
// }
|
|
//}
|
|
|
|
//private DrugType? _drugType;
|
|
//public DrugType? _DrugType
|
|
//{
|
|
// get => _drugType; set
|
|
// {
|
|
// SetProperty(ref _drugType, value);
|
|
// RequestData();
|
|
// }
|
|
//}
|
|
|
|
|
|
//MachineRecordService _machineRecordService;
|
|
IEventAggregator _eventAggregator;
|
|
////private SqlSugarScope SqlSugarHelper.Db;
|
|
public AccountWindowViewModel(IEventAggregator eventAggregator)
|
|
{
|
|
//_machineRecordService = machineRecord;
|
|
////this.SqlSugarHelper.Db = sqlSugarScope;
|
|
_eventAggregator = eventAggregator;
|
|
vm = this;
|
|
}
|
|
void RequestData()
|
|
{
|
|
int totalCount = 0;
|
|
AccountList = ReportAccountBook(StartDate, EndDate, AccountType == null ? 0 : AccountType.AccountTypeValue, DrugInfo == null ? "" : DrugInfo.DrugId.ToString() ?? "");
|
|
//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];
|
|
}
|
|
|
|
public long CurrentTimeMillis()
|
|
{
|
|
return (long)(DateTime.UtcNow - Jan1st1970).TotalMilliseconds;
|
|
}
|
|
/// <summary>
|
|
/// 导出发药登记表
|
|
/// </summary>
|
|
public DelegateCommand DownloadOrderUser
|
|
{
|
|
get => new DelegateCommand(() =>
|
|
{
|
|
GridReportUtil.OrderUseReport(StartDate, EndDate, DrugInfo == null ? "" : DrugInfo.DrugId.ToString() ?? "");
|
|
});
|
|
}
|
|
|
|
/// <summary>
|
|
/// 导出账册
|
|
/// </summary>
|
|
public DelegateCommand DownloadAccountBook
|
|
{
|
|
get => new DelegateCommand(() =>
|
|
{
|
|
GridReportUtil.PrintReportAccountBook(StartDate, EndDate, AccountType == null ? 0 : AccountType.AccountTypeValue, DrugInfo == null ? "" : DrugInfo.DrugId.ToString() ?? "");
|
|
|
|
});
|
|
}
|
|
/// <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)
|
|
{
|
|
}
|
|
|
|
private List<AccountBookG2> 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"] ?? "DM3");
|
|
string SQL = $@" SELECT ac.create_date as CreateDate, ac.TYPE,
|
|
if(ac.type in(1,2),0,ac.yesterday_quantity) as YQuantity,if(ac.type in(3,4),0,ac.add_quantity) as AddQuantity,if(ac.type in(3,4),0,ac.out_quantity) as OutQuantity,
|
|
if(ac.type in(1,2),0,ac.manu_stock) as ManuStock,ac.total_stock, -- if(ac.type in(1,2),0,ac.total_stock) as TotalStock,
|
|
ac.invoice_no as InvoiceNo, ac.manu_no as ManuNo,ac.eff_date as EffDate,di.drug_id,di.drug_name as DrugName,di.drug_spec as DrugSpec,di.manufactory as Manufactory,di.pack_unit,di.dosage,u1.user_name as OperatorName,u2.user_name as ReviewerName
|
|
FROM account_book_g2 ac left join drug_info di on ac.drug_id=di.drug_id left join user_list u1 on ac.user_id1=u1.id left join user_list u2 on ac.user_id2=u2.id
|
|
WHERE ac.machine_id='{p_machine_id}' and create_time>'{p_startDate}' AND create_time<'{p_endDate}' ";
|
|
if (!string.IsNullOrEmpty(drug_id))
|
|
{
|
|
SQL += " AND ac.drug_id='" + drug_id + "' ";
|
|
}
|
|
if (type > 0)
|
|
{
|
|
if (type == 1)
|
|
{
|
|
SQL += " AND ac.add_quantity>0 ";
|
|
}
|
|
if (type == 2)
|
|
{
|
|
SQL += " AND ac.out_quantity>0 ";
|
|
}
|
|
if (type == 3)
|
|
{
|
|
SQL += " AND type=3 ";
|
|
}
|
|
if (type == 4)
|
|
{
|
|
SQL += " AND type=4 ";
|
|
}
|
|
}
|
|
SQL += " ORDER BY ac.create_date desc,ac.drug_id";
|
|
|
|
|
|
//ChannelStocks = q.Select(it => { it.CheckQuantity = it.Quantity; return it; }).ToList();
|
|
|
|
List<AccountBookG2> accountList = SqlSugarHelper.Db.SqlQueryable<AccountBookG2>(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;
|
|
}
|
|
|
|
}
|
|
}
|