parent
c21b39a9f3
commit
9a5f97626f
|
@ -9,7 +9,9 @@ namespace MasaBlazorApp3.DataAccess.Dao
|
|||
{
|
||||
public interface IReportDataDao
|
||||
{
|
||||
//获取库存导出数据
|
||||
Task<PageData<ReportStockDateInfo>> GetStockExportData(string drugName);
|
||||
//专用账册导出数据
|
||||
Task<List<ChannelStock>> AccountBookExport(DateTime? startDate, DateTime? endDate, string drugId);
|
||||
Task<PageData<ReportAccountDateInfo>> GetAccountExportData(DateTime? startDate, DateTime? endDate, string drugName);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,13 @@
|
|||
using MasaBlazorApp3.DataAccess.Dao;
|
||||
using LinqToDB;
|
||||
using log4net;
|
||||
using MasaBlazorApp3.DataAccess.Dao;
|
||||
using MasaBlazorApp3.Pojo;
|
||||
using MasaBlazorApp3.Pojo.Config;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Mysqlx.Crud;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
@ -10,9 +16,93 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
{
|
||||
public class ReportDataDao : IReportDataDao
|
||||
{
|
||||
public Task<List<ChannelStock>> AccountBookExport(DateTime? startDate, DateTime? endDate,string drugId)
|
||||
private AppDataConnection _connection;
|
||||
private readonly SettingConfig _setting;
|
||||
private readonly ILog logger = LogManager.GetLogger(typeof(ReportDataDao));
|
||||
public ReportDataDao(AppDataConnection connection, IOptions<SettingConfig> setting)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
_connection = connection;
|
||||
_setting = setting.Value;
|
||||
}
|
||||
//获取库存导出数据
|
||||
public async Task<PageData<ReportStockDateInfo>> GetStockExportData(string drugName)
|
||||
{
|
||||
try
|
||||
{
|
||||
List<ReportStockDateInfo> reportStockList = new List<ReportStockDateInfo>();
|
||||
int pagedData = 0;
|
||||
string SQL = $@"SELECT cl.drug_id AS DrugId,di.`drug_name` AS DrugName,di.drug_type AS DrugType,di.drug_spec AS DrugSpec,di.manufactory AS Manufactory,
|
||||
di.pack_unit AS pack_unit,di.py_code AS PyCode,null AS Stocks,NULL AS Manus,db.baseQuantity AS BaseQuantity,CONCAT(cl.row_no,cl.col_no) as location,
|
||||
cl.manu_no as ManuNo,cl.eff_date as EffDate,cl.Quantity AS Quantity,cl.manu_no,cl.eff_date FROM channel_stock cl INNER JOIN drug_info di ON di.`drug_id` = cl.`drug_id`
|
||||
LEFT JOIN drug_base db ON db.drugid=di.drug_id and db.machine_id= '{_setting.machineId}'
|
||||
WHERE cl.`machine_id` = '{_setting.machineId}' AND cl.`drawer_type` = 1 ";
|
||||
if (!string.IsNullOrEmpty(drugName))
|
||||
{
|
||||
SQL += " and di.drug_name = '{drugName}'";
|
||||
}
|
||||
SQL += " ORDER BY cl.`drug_id`";
|
||||
// 加载模板文件
|
||||
//Report.LoadFromFile(new FileInfo(AppDomain.CurrentDomain.BaseDirectory) + "ReportTemp//" + "stock_template.grf");
|
||||
|
||||
var reportList = _connection.FromSql<ReportStockDateInfo>(SQL);
|
||||
if (reportList != null)
|
||||
{
|
||||
foreach (var report in reportList)
|
||||
{
|
||||
reportStockList.Add(report);
|
||||
}
|
||||
|
||||
pagedData = await reportList.CountAsync();
|
||||
}
|
||||
return new PageData<ReportStockDateInfo>()
|
||||
{
|
||||
|
||||
TotalDesserts = pagedData,
|
||||
Desserts = reportStockList
|
||||
};
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Info($"获取库存导出数据异常:{ex.Message}");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<PageData<ReportAccountDateInfo>> GetAccountExportData(DateTime? startDate, DateTime? endDate, string drugName)
|
||||
{
|
||||
List<ReportAccountDateInfo> accountList = new List<ReportAccountDateInfo>();
|
||||
int pagedData = 0;
|
||||
DateTime? p_startDate = startDate ?? Convert.ToDateTime("2010-1-1");
|
||||
DateTime? p_endDate = endDate ?? DateTime.Now.AddDays(1);
|
||||
string 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))
|
||||
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`, mr.`invoice_id` AS `invoiceId`, di.`drug_name` AS `drugName`, di.`drug_id` AS `drugId`,
|
||||
di.`drug_spec` AS `drugSpec`, 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
|
||||
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` = '{_setting.machineId}' AND mr.`operation_time` > '{p_startDate}'
|
||||
AND mr.`operation_time` < '{p_endDate}'";
|
||||
if (!string.IsNullOrEmpty(drugName))
|
||||
{
|
||||
SQL += " AND di.drug_name= '{drugName}'";
|
||||
}
|
||||
SQL += " ORDER BY mr.`drug_id`, mr.`operation_time`, mr.`id`";
|
||||
var reportList = _connection.FromSql<ReportAccountDateInfo>(SQL);
|
||||
if (reportList != null)
|
||||
{
|
||||
foreach (var report in reportList)
|
||||
{
|
||||
accountList.Add(report);
|
||||
}
|
||||
|
||||
pagedData = await reportList.CountAsync();
|
||||
}
|
||||
return new PageData<ReportAccountDateInfo>()
|
||||
{
|
||||
|
||||
TotalDesserts = pagedData,
|
||||
Desserts = accountList
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
</style>
|
||||
|
||||
<RadzenRow Gap="0" Style="overflow: hidden;width:100%;height:100%">
|
||||
<RadzenColumn Size="12" SizeMD="5">
|
||||
@* <RadzenColumn Size="12" SizeMD="5">
|
||||
<RadzenCard class="rz-shadow-0 rz-border-radius-0 rz-text-align-center rz-p-12 align-items-center justify-content-center" Style="height: 100%; background: var(--rz-primary-light) no-repeat 100% 70% fixed url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIwNCIgaGVpZ2h0PSIxNDU4IiB2aWV3Qm94PSIwIDAgMTIwNCAxNDU4IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8ZyBvcGFjaXR5PSIwLjUiIGZpbHRlcj0idXJsKCNmaWx0ZXIwX2ZfNDkzXzEwMTM0KSI+CjxjaXJjbGUgY3g9IjcyMi4xMjgiIGN5PSI4MzkuMDIiIHI9IjQ4MS40MTkiIGZpbGw9InVybCgjcGFpbnQwX3JhZGlhbF80OTNfMTAxMzQpIi8+CjwvZz4KPGcgb3BhY2l0eT0iMC41IiBmaWx0ZXI9InVybCgjZmlsdGVyMV9mXzQ5M18xMDEzNCkiPgo8Y2lyY2xlIGN4PSI0NzAuMzMzIiBjeT0iNTcwLjMzMyIgcj0iNDcwLjMzMyIgZmlsbD0idXJsKCNwYWludDFfcmFkaWFsXzQ5M18xMDEzNCkiLz4KPC9nPgo8ZyBvcGFjaXR5PSIwLjUiIGZpbHRlcj0idXJsKCNmaWx0ZXIyX2ZfNDkzXzEwMTM0KSI+CjxjaXJjbGUgY3g9IjY5MS41MTEiIGN5PSI1MjIuMjk3IiByPSIzMzEuNTAzIiBmaWxsPSJ1cmwoI3BhaW50Ml9yYWRpYWxfNDkzXzEwMTM0KSIvPgo8L2c+CjxnIG9wYWNpdHk9IjAuNSIgZmlsdGVyPSJ1cmwoI2ZpbHRlcjNfZl80OTNfMTAxMzQpIj4KPGNpcmNsZSBjeD0iNjA4LjI0NCIgY3k9IjEwNzkuOTciIHI9IjMzMS41MDMiIHRyYW5zZm9ybT0icm90YXRlKC04MS4yMjQ0IDYwOC4yNDQgMTA3OS45NykiIGZpbGw9InVybCgjcGFpbnQzX3JhZGlhbF80OTNfMTAxMzQpIi8+CjwvZz4KPGRlZnM+CjxmaWx0ZXIgaWQ9ImZpbHRlcjBfZl80OTNfMTAxMzQiIHg9IjE0MC43MDkiIHk9IjI1Ny42MDEiIHdpZHRoPSIxMTYyLjg0IiBoZWlnaHQ9IjExNjIuODQiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj4KPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMCIgcmVzdWx0PSJCYWNrZ3JvdW5kSW1hZ2VGaXgiLz4KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJCYWNrZ3JvdW5kSW1hZ2VGaXgiIHJlc3VsdD0ic2hhcGUiLz4KPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iNTAiIHJlc3VsdD0iZWZmZWN0MV9mb3JlZ3JvdW5kQmx1cl80OTNfMTAxMzQiLz4KPC9maWx0ZXI+CjxmaWx0ZXIgaWQ9ImZpbHRlcjFfZl80OTNfMTAxMzQiIHg9Ii0xMDAiIHk9IjAiIHdpZHRoPSIxMTQwLjY3IiBoZWlnaHQ9IjExNDAuNjciIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj4KPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMCIgcmVzdWx0PSJCYWNrZ3JvdW5kSW1hZ2VGaXgiLz4KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJCYWNrZ3JvdW5kSW1hZ2VGaXgiIHJlc3VsdD0ic2hhcGUiLz4KPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iNTAiIHJlc3VsdD0iZWZmZWN0MV9mb3JlZ3JvdW5kQmx1cl80OTNfMTAxMzQiLz4KPC9maWx0ZXI+CjxmaWx0ZXIgaWQ9ImZpbHRlcjJfZl80OTNfMTAxMzQiIHg9IjI2MC4wMDgiIHk9IjkwLjc5MzkiIHdpZHRoPSI4NjMuMDA2IiBoZWlnaHQ9Ijg2My4wMDYiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj4KPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMCIgcmVzdWx0PSJCYWNrZ3JvdW5kSW1hZ2VGaXgiLz4KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJCYWNrZ3JvdW5kSW1hZ2VGaXgiIHJlc3VsdD0ic2hhcGUiLz4KPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iNTAiIHJlc3VsdD0iZWZmZWN0MV9mb3JlZ3JvdW5kQmx1cl80OTNfMTAxMzQiLz4KPC9maWx0ZXI+CjxmaWx0ZXIgaWQ9ImZpbHRlcjNfZl80OTNfMTAxMzQiIHg9IjE3Ni42OTQiIHk9IjY0OC40MjMiIHdpZHRoPSI4NjMuMSIgaGVpZ2h0PSI4NjMuMSIgZmlsdGVyVW5pdHM9InVzZXJTcGFjZU9uVXNlIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9InNSR0IiPgo8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PSIwIiByZXN1bHQ9IkJhY2tncm91bmRJbWFnZUZpeCIvPgo8ZmVCbGVuZCBtb2RlPSJub3JtYWwiIGluPSJTb3VyY2VHcmFwaGljIiBpbjI9IkJhY2tncm91bmRJbWFnZUZpeCIgcmVzdWx0PSJzaGFwZSIvPgo8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSI1MCIgcmVzdWx0PSJlZmZlY3QxX2ZvcmVncm91bmRCbHVyXzQ5M18xMDEzNCIvPgo8L2ZpbHRlcj4KPHJhZGlhbEdyYWRpZW50IGlkPSJwYWludDBfcmFkaWFsXzQ5M18xMDEzNCIgY3g9IjAiIGN5PSIwIiByPSIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSg3MjIuMTI4IDgzOS4wMikgcm90YXRlKDkwKSBzY2FsZSg0ODEuNDE5KSI+CjxzdG9wIHN0b3AtY29sb3I9IiNGRjFBNkMiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjRkYxQTZDIiBzdG9wLW9wYWNpdHk9IjAiLz4KPC9yYWRpYWxHcmFkaWVudD4KPHJhZGlhbEdyYWRpZW50IGlkPSJwYWludDFfcmFkaWFsXzQ5M18xMDEzNCIgY3g9IjAiIGN5PSIwIiByPSIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSg0NzAuMzMzIDU3MC4zMzMpIHJvdGF0ZSg5MCkgc2NhbGUoNDcwLjMzMykiPgo8c3RvcCBzdG9wLWNvbG9yPSIjM0FBQ0ZGIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzNBOTVGRiIgc3RvcC1vcGFjaXR5PSIwIi8+CjwvcmFkaWFsR3JhZGllbnQ+CjxyYWRpYWxHcmFkaWVudCBpZD0icGFpbnQyX3JhZGlhbF80OTNfMTAxMzQiIGN4PSIwIiBjeT0iMCIgcj0iMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjkxLjUxMSA1MjIuMjk3KSByb3RhdGUoOTApIHNjYWxlKDMzMS41MDMpIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzQ4M0FGRiIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM0ODNBRkYiIHN0b3Atb3BhY2l0eT0iMCIvPgo8L3JhZGlhbEdyYWRpZW50Pgo8cmFkaWFsR3JhZGllbnQgaWQ9InBhaW50M19yYWRpYWxfNDkzXzEwMTM0IiBjeD0iMCIgY3k9IjAiIHI9IjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDYwOC4yNDQgMTA3OS45Nykgcm90YXRlKDkwKSBzY2FsZSgzMzEuNTAzKSI+CjxzdG9wIHN0b3AtY29sb3I9IiNGRkM4M0EiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjRkZDODNBIiBzdG9wLW9wYWNpdHk9IjAiLz4KPC9yYWRpYWxHcmFkaWVudD4KPC9kZWZzPgo8L3N2Zz4K')">
|
||||
@if (userI == 1)
|
||||
{
|
||||
|
@ -29,7 +29,7 @@
|
|||
</RadzenText>
|
||||
}
|
||||
</RadzenCard>
|
||||
</RadzenColumn>
|
||||
</RadzenColumn> *@
|
||||
<RadzenColumn Size="12" SizeMD="7">
|
||||
<RadzenCard Class="rz-shadow-0 rz-border-radius-0 rz-p-12" Style="width:100%;height:100%">
|
||||
@* <RadzenText TextStyle="TextStyle.H5" TagName="TagName.H2" class="rz-mb-6">
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
@page "/user/finger/{userId}"
|
||||
|
||||
@page "/finger/{userId}"
|
||||
@using log4net;
|
||||
|
||||
<RadzenStack Gap="1.5rem">
|
||||
|
|
|
@ -36,44 +36,49 @@
|
|||
.rz-gauge .rz-tick-text {
|
||||
fill: #ffffff !important;
|
||||
}
|
||||
|
||||
<style >
|
||||
.icon-preview div {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
width: 120px;
|
||||
}
|
||||
|
||||
.icon-preview span {
|
||||
color: white;
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
<RadzenStack Orientation="Orientation.Vertical" class="rz-background-color-primary-light" AlignItems="AlignItems.Center" Style="width:100vw;height:100vh" Gap="0">
|
||||
|
||||
<RadzenRow Style="width:100vw;height:25vh;" Gap="0" RowGap="0">
|
||||
<RadzenColumn Size="2">
|
||||
<RadzenColumn Size="4">
|
||||
|
||||
</RadzenColumn>
|
||||
<RadzenColumn Size="8">
|
||||
<RadzenRow Style="height: 100%;width:100%" Orientation="Orientation.Horizontal" JustifyContent="JustifyContent.End" AlignItems="AlignItems.Center">
|
||||
<RadzenColumn Size="2">
|
||||
<RadzenColumn Size="3">
|
||||
@if (globalStateService.Operator != null)
|
||||
{
|
||||
//<RadzenText Style="" class="rz-color-white" TextStyle="TextStyle.H5" TextAlign="TextAlign.Center">操作人:@globalStateService.Operator.NickName</RadzenText>
|
||||
<RadzenText onclick="@(() => { EditPassword(1); })" Style="" class="rz-color-white" TextStyle="TextStyle.H5" TextAlign="TextAlign.Center">操作人:@globalStateService.Operator.NickName</RadzenText>
|
||||
//<RadzenText onclick="@(() => { EditPassword(1); })" Style="" class="rz-color-white" TextStyle="TextStyle.H5" TextAlign="TextAlign.Center">操作人:@globalStateService.Operator.NickName</RadzenText>
|
||||
|
||||
<RadzenProfileMenu prefix="" Click="MenuClick">
|
||||
<Template>
|
||||
<RadzenText Style="" class="rz-color-white" TextStyle="TextStyle.H5" TextAlign="TextAlign.Center">操作人:@globalStateService.Operator.NickName</RadzenText>
|
||||
</Template>
|
||||
<ChildContent>
|
||||
<RadzenProfileMenuItem Text="录入指纹" Value="11" Icon="account_circle"></RadzenProfileMenuItem>
|
||||
<RadzenProfileMenuItem Text="录入签名" Value="21" Icon="line_weight"></RadzenProfileMenuItem>
|
||||
<RadzenProfileMenuItem Text="修改密码" Value="31" Icon="password"></RadzenProfileMenuItem>
|
||||
</ChildContent>
|
||||
</RadzenProfileMenu>
|
||||
}
|
||||
@if (globalStateService.Reviewer != null)
|
||||
{
|
||||
//<RadzenText Style="" class="rz-color-white" TextStyle="TextStyle.H5" TextAlign="TextAlign.Center">复核人:@globalStateService.Reviewer.NickName</RadzenText>
|
||||
<RadzenText onclick="@(() => { EditPassword(2); })" Style="" class="rz-color-white" TextStyle="TextStyle.H5" TextAlign="TextAlign.Center">复核人:@globalStateService.Reviewer.NickName</RadzenText>
|
||||
//<RadzenText onclick="@(() => { EditPassword(2); })" Style="" class="rz-color-white" TextStyle="TextStyle.H5" TextAlign="TextAlign.Center">复核人:@globalStateService.Reviewer.NickName</RadzenText>
|
||||
<RadzenProfileMenu prefix="" Click="MenuClick">
|
||||
<Template>
|
||||
<RadzenText Style="" class="rz-color-white" TextStyle="TextStyle.H5" TextAlign="TextAlign.Center">操作人:@globalStateService.Operator.NickName</RadzenText>
|
||||
</Template>
|
||||
<ChildContent>
|
||||
<RadzenProfileMenuItem Text="录入指纹" Value="12" Path="fingerprint" Icon="account_circle"></RadzenProfileMenuItem>
|
||||
<RadzenProfileMenuItem Text="录入签名" Value="22" Path="edit_document" Icon="line_weight"></RadzenProfileMenuItem>
|
||||
<RadzenProfileMenuItem Text="修改密码" Value="32" Icon="password"></RadzenProfileMenuItem>
|
||||
</ChildContent>
|
||||
</RadzenProfileMenu>
|
||||
}
|
||||
</RadzenColumn>
|
||||
<RadzenColumn Size="3" Orientation="Orientation.Horizontal" Wrap="FlexWrap.Wrap" class="icon-preview rz-p-12">
|
||||
<RadzenColumn Size="3">
|
||||
<div>
|
||||
<RadzenIcon Icon="compare_arrows" Style="font-size:3rem;cursor: pointer;" class="rz-ripple" IconColor="white" @onclick="@(() => { changeShifts(); })" />
|
||||
<span>交接班</span>
|
||||
|
@ -84,11 +89,7 @@
|
|||
</RadzenColumn>
|
||||
</RadzenRow>
|
||||
</RadzenColumn>
|
||||
<RadzenColumn Size="2">
|
||||
|
||||
</RadzenColumn>
|
||||
</RadzenRow>
|
||||
|
||||
<RadzenStack class="rz-background-color-info-lighter" Orientation="Orientation.Horizontal" JustifyContent="JustifyContent.Center" AlignItems="AlignItems.Center" Style="width: 75vw;height: 57vh" Gap="20">
|
||||
|
||||
<RadzenStack Style="height: 100%;width:41%" Gap="20">
|
||||
|
@ -334,7 +335,63 @@
|
|||
new DialogOptions() { Width = "55vw", Resizable = false, Draggable = false, ShowClose = false, ShowTitle = false });
|
||||
|
||||
}
|
||||
async void MenuClick(RadzenProfileMenuItem item)
|
||||
{
|
||||
|
||||
string strValue= item.Value.Substring(0,1);
|
||||
Pojo.User user = new Pojo.User();
|
||||
switch(strValue)
|
||||
{
|
||||
case "1":
|
||||
int userId = 0;
|
||||
if (item.Value == "11")
|
||||
{
|
||||
user = globalStateService.Operator;
|
||||
}
|
||||
else
|
||||
{
|
||||
user = globalStateService.Reviewer;
|
||||
}
|
||||
await dialogService.OpenAsync<FingerRegDialog>(
|
||||
$"录入指纹-{user.Username}",
|
||||
new Dictionary<string, object>() { { "userId", user.Id } },
|
||||
new DialogOptions() { Width = "55vw", Resizable = true, Draggable = false, ShowClose = false }
|
||||
);
|
||||
break;
|
||||
case "2":
|
||||
if (item.Value=="21")
|
||||
{
|
||||
user = globalStateService.Operator;
|
||||
}
|
||||
else
|
||||
{
|
||||
user = globalStateService.Reviewer;
|
||||
}
|
||||
await dialogService.OpenAsync<SignatureDialog>(
|
||||
$"签名-{user.NickName}",
|
||||
new Dictionary<string, object>() { { "user", user } },
|
||||
new DialogOptions() { Width = "55vw", Resizable = true, Draggable = false, ShowClose = true }
|
||||
);
|
||||
|
||||
break;
|
||||
case "3":
|
||||
if (item.Value == "31")
|
||||
{
|
||||
user = globalStateService.Operator;
|
||||
}
|
||||
else
|
||||
{
|
||||
user = globalStateService.Reviewer;
|
||||
}
|
||||
int userI =Convert.ToInt32(item.Value.Substring(1, 1));
|
||||
await dialogService.OpenAsync<EditPasswordDialog>(
|
||||
$"修改密码-{user.Username}",
|
||||
new Dictionary<string, object>() { { "userI",userI} },
|
||||
new DialogOptions() { Width = "55vw", Resizable = false, Draggable = false, ShowClose = false, ShowTitle = true }
|
||||
);
|
||||
break;
|
||||
}
|
||||
}
|
||||
//交接班
|
||||
async void changeShifts()
|
||||
{
|
||||
|
|
|
@ -217,6 +217,11 @@
|
|||
|
||||
private void Exit()
|
||||
{
|
||||
if (globalStateService.Operator != null)
|
||||
{
|
||||
globalStateService.Operator = null;
|
||||
globalStateService.Reviewer = null;
|
||||
}
|
||||
dialogService.Close(false);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
@page "/signature/{user}"
|
||||
@page "/signature"
|
||||
@layout EmptyLayout
|
||||
<RadzenStack AlignItems="AlignItems.Center" JustifyContent="JustifyContent.Center">
|
||||
@if (user.Sign != null)
|
||||
|
|
|
@ -119,7 +119,7 @@
|
|||
if (success && dateTime <= DateTime.Now.AddMonths(3))
|
||||
{
|
||||
@s.EffDate
|
||||
|
||||
|
||||
<p class="shaky-text">近效期药品!</p>
|
||||
}
|
||||
else
|
||||
|
@ -140,7 +140,7 @@
|
|||
@if (s.StockQuantity < 10)
|
||||
{
|
||||
@s.StockQuantity
|
||||
|
||||
|
||||
<p class="shaky-text">库存预警!</p>
|
||||
}
|
||||
else
|
||||
|
@ -157,13 +157,13 @@
|
|||
@code {
|
||||
@inject IDrugInfoDao drugInfoDao;
|
||||
@inject DialogService dialogService;
|
||||
@inject IChannelListDao channelStockDao;
|
||||
@inject IReportDataDao reportDataDao;
|
||||
RadzenDataGrid<DrugInfo> grid;
|
||||
bool isLoading;
|
||||
int count;
|
||||
private IEnumerable<DrugInfo>? _forecasts;
|
||||
DateTime start;
|
||||
DateTime end;
|
||||
DateTime? start;
|
||||
DateTime? end;
|
||||
|
||||
string drugName;
|
||||
|
||||
|
@ -202,16 +202,16 @@
|
|||
//库存导出
|
||||
async Task StockExport()
|
||||
{
|
||||
string drugId = drugName != null ? drugName.Split('/').Last().Trim() : "";
|
||||
// await GridReportUtil.PrintReportAccountBook(null, null, 0, drugId);
|
||||
PageData<ReportStockDateInfo> pageData = await reportDataDao.GetStockExportData(drugName);
|
||||
GridReportUtil.PrintReport("stock_template.grf", pageData);
|
||||
}
|
||||
//专用账册导出
|
||||
async Task AccountBookExport()
|
||||
{
|
||||
// string drugId = drugName != null ? drugName.Split('/').Last().Trim():"";
|
||||
// GridReportUtil gridReportUtil = new GridReportUtil();
|
||||
PageData<ChannelStock> pageData = await channelStockDao.GetAllChannelList(1,"",0,0);
|
||||
GridReportUtil.PrintReport("stock_template.grf", null);
|
||||
PageData<ReportAccountDateInfo> pageData = await reportDataDao.GetAccountExportData(start, end, drugName);
|
||||
GridReportUtil.PrintReport("account_book_temp.grf", pageData);
|
||||
}
|
||||
|
||||
//重置
|
||||
|
|
|
@ -74,7 +74,7 @@ namespace MasaBlazorApp3.Pojo
|
|||
[Column("eff_date")]
|
||||
public DateTime? EffDate { get; set; }
|
||||
/// <summary>
|
||||
/// 出库入库类型(1领入2发出3日结4日总结5转结)
|
||||
/// 出库入库类型(1领入2发出3盘点4日结5日总结6转结)
|
||||
///</summary>
|
||||
[Column("type")]
|
||||
public int Type { get; set; }
|
||||
|
|
|
@ -1,12 +1,86 @@
|
|||
using System;
|
||||
using MySqlX.XDevAPI.Relational;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace MasaBlazorApp3.Pojo
|
||||
{
|
||||
public class ReportDateInfo
|
||||
public class ReportAccountDateInfo
|
||||
{
|
||||
//日期
|
||||
public string OperationTime { get; set; } = string.Empty;
|
||||
//操作类型
|
||||
//public string Type { get; set; } = string.Empty;
|
||||
//批号
|
||||
public string ManuNo { get; set; } = string.Empty;
|
||||
//效期
|
||||
public string EffDate { get; set; } = string.Empty;
|
||||
//上次批次结存
|
||||
//public string BeforeManuQuan { get; set; } = string.Empty;
|
||||
//入库数量
|
||||
public int InQuantity { get; set; } = 0;
|
||||
// 出库数量
|
||||
public int OutQuantity { get; set; } = 0;
|
||||
//批号结存
|
||||
//public int ManuQuantity { get; set; } = 0;
|
||||
|
||||
//总结存
|
||||
public int StockQuantity { get; set; } = 0;
|
||||
|
||||
//收/发药人
|
||||
public string operatorName { get; set; } = string.Empty;
|
||||
|
||||
//复核人
|
||||
public string ReviewerName { get; set; } = string.Empty;
|
||||
public string DrugId { get; set; } = string.Empty;
|
||||
//药品名称
|
||||
public string DrugName { get; set; } = string.Empty;
|
||||
//药品规格
|
||||
public string DrugSpec { get; set; } = string.Empty;
|
||||
//单位
|
||||
public string BigUnit { get; set; } = string.Empty;
|
||||
//剂型
|
||||
public string Dosage { get; set; } = string.Empty;
|
||||
//生产厂家
|
||||
public string Manufactory { get; set; } = string.Empty;
|
||||
//凭证号
|
||||
public string InvoiceId { get; set; } = string.Empty;
|
||||
////供应单位
|
||||
//public string SupplierDept { get;set; } = string.Empty;
|
||||
////领用部门
|
||||
//public string ReceiveDept { get; set; } = string.Empty;
|
||||
}
|
||||
|
||||
public class ReportStockDateInfo
|
||||
{
|
||||
public string DrugId { get; set; }
|
||||
|
||||
public string DrugName { get; set; }
|
||||
|
||||
public string DrugType { get; set; }
|
||||
|
||||
public string DrugSpec { get; set; }
|
||||
|
||||
|
||||
public string Manufactory { get; set; }
|
||||
|
||||
|
||||
public string PyCode { get; set; }
|
||||
//基数
|
||||
public int BaseQuantity { get; set; }
|
||||
|
||||
//批次
|
||||
public string ManuNo { get; set; }
|
||||
|
||||
//效期
|
||||
public string EffDate { get; set; }
|
||||
//库位
|
||||
public string location { get; set; }
|
||||
|
||||
//数量
|
||||
public int Quantity { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -72,6 +72,9 @@ internal class Program
|
|||
//药品批次
|
||||
appBuilder.Services.AddScoped<IDrugManuNoDao, DrugManuNoDao>();
|
||||
|
||||
//报表
|
||||
appBuilder.Services.AddScoped<IReportDataDao, ReportDataDao>();
|
||||
|
||||
|
||||
//交接班记录
|
||||
appBuilder.Services.AddScoped<IHkcChangeShiftsDao, HkcChangeShiftsDao>();
|
||||
|
|
|
@ -31,8 +31,5 @@ namespace MasaBlazorApp3.Report
|
|||
Report.LoadDataFromXML(JsonConvert.SerializeObject(data));
|
||||
Report.PrintPreview(true);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"Version":"6.3.0.1",
|
||||
"Version":"6.8.1.1",
|
||||
"Font":{
|
||||
"Name":"宋体",
|
||||
"Size":105000,
|
||||
|
@ -316,7 +316,7 @@
|
|||
"Charset":134
|
||||
},
|
||||
"TextAlign":"MiddleCenter",
|
||||
"Text":"借入\r\n数量"
|
||||
"Text":"入库\r\n数量"
|
||||
},
|
||||
{
|
||||
"GroupTitle":false,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"Version":"6.8.5.2",
|
||||
"Version":"6.8.1.1",
|
||||
"Font":{
|
||||
"Name":"宋体",
|
||||
"Size":105000,
|
||||
|
@ -27,7 +27,8 @@
|
|||
"Name":"manuFactory"
|
||||
},
|
||||
{
|
||||
"Name":"quantityCount"
|
||||
"Name":"quantityCount",
|
||||
"DBFieldName":"quantity"
|
||||
},
|
||||
{
|
||||
"Name":"manuNo"
|
||||
|
@ -328,7 +329,7 @@
|
|||
"Type":"StaticBox",
|
||||
"Name":"StaticBox1",
|
||||
"Center":"Horizontal",
|
||||
"Left":7.77875,
|
||||
"Left":8.89,
|
||||
"Top":0.608542,
|
||||
"Width":9.18104,
|
||||
"Height":1.21708,
|
||||
|
|
Loading…
Reference in New Issue