修改更新
This commit is contained in:
parent
ff96d4e676
commit
396fb8743f
|
@ -8,13 +8,19 @@ EndProject
|
|||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|x64 = Debug|x64
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|x64 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{B589889C-FAEB-4394-A21D-DDCADF39382D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B589889C-FAEB-4394-A21D-DDCADF39382D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B589889C-FAEB-4394-A21D-DDCADF39382D}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{B589889C-FAEB-4394-A21D-DDCADF39382D}.Debug|x64.Build.0 = Debug|x64
|
||||
{B589889C-FAEB-4394-A21D-DDCADF39382D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{B589889C-FAEB-4394-A21D-DDCADF39382D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{B589889C-FAEB-4394-A21D-DDCADF39382D}.Release|x64.ActiveCfg = Release|x64
|
||||
{B589889C-FAEB-4394-A21D-DDCADF39382D}.Release|x64.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
|
|
@ -54,8 +54,9 @@ namespace MasaBlazorApp3.DataAccess.Dao
|
|||
//手术室药箱入库
|
||||
Task<PageData<ChannelList>> GetBoxWaitInfo(int? take, int? skip);
|
||||
//手术室药箱入库获取待入库明细
|
||||
Task<List<BoxTakeVo>> getBoxWaitByBox(ChannelList cl);
|
||||
|
||||
Task<List<BoxTakeVo>> getBoxWaitByBox(ChannelList cl, int? take, int? skip);
|
||||
// 手术室药箱待入库明细入库完成
|
||||
Task<bool> BoxAddBoxFinish(ChannelList boxChannelList);
|
||||
|
||||
//手术室药箱获取药箱药品及库存信息
|
||||
Task<PageData<PlanDetails>> GetBoxDrugInfo(int DrawerNo, int? take, int? skip);
|
||||
|
|
|
@ -51,6 +51,10 @@ namespace MasaBlazorApp3.DataAccess.Dao
|
|||
/// <param name="details"></param>
|
||||
/// <returns></returns>
|
||||
Task<bool> UpdatePlanDetail(PlanDetails details);
|
||||
//查询要删除的套餐下是否有绑定,且绑定有库存
|
||||
Task<bool> CheckPlanBind(int planId);
|
||||
//查询要删除的药品是否有绑定且库存大于0
|
||||
Task<bool> CheckPlanDetailBind(PlanDetails planDetail);
|
||||
/// <summary>
|
||||
/// 删除套餐中的药品
|
||||
/// </summary>
|
||||
|
|
|
@ -21,5 +21,9 @@ namespace MasaBlazorApp3.DataAccess.Dao
|
|||
Task<bool> UpdateSign(int id, string sign);
|
||||
|
||||
bool UpdateUserPassword(User user);
|
||||
//查询当前值班信息
|
||||
HkcChangeShifts GetOnDuty();
|
||||
//保存交接班信息
|
||||
Task<bool> UpdateChangeShift(HkcChangeShifts changeShift, HkcChangeShifts changeShiftNew);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -315,7 +315,7 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
var q = _connection.ChannelStock
|
||||
.Where(cs => cs.Id == Stock.Id)
|
||||
.Set(cs => cs.Dmnguid, Stock.drugManuNo?.Id ?? String.Empty)
|
||||
.Set(cs => cs.EffDate, Stock.drugManuNo?.EffDate.ToString().Substring(0, 10) ?? String.Empty)
|
||||
.Set(cs => cs.EffDate, Stock.drugManuNo?.EffDate.Value.ToString("yyyy-MM-dd") ?? String.Empty)
|
||||
.Set(cs => cs.ManuNo, Stock.drugManuNo?.ManuNo ?? String.Empty);
|
||||
|
||||
if (Stock.Drug != null && !Stock.Drug.DrugId.Equals(Stock.DrugId))
|
||||
|
@ -617,7 +617,7 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
.Where(cs => cs.Id == list.Id).Set(cs => cs.DrugId, list.PlanInfo.Id.ToString());
|
||||
//将套餐中的药品信息写入channelStock
|
||||
//查询套餐中药品信息
|
||||
var query = _connection.PlanDetails.AsQueryable().Where(p => p.PlanId == list.PlanInfo.Id);
|
||||
var query = _connection.PlanDetails.AsQueryable().Where(p => p.PlanId == list.PlanInfo.Id&&p.UseState==1);
|
||||
List<PlanDetails> planInfos = await query.ToListAsync();
|
||||
if (planInfos != null && planInfos.Count > 0)
|
||||
{
|
||||
|
@ -631,6 +631,7 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
DrawerNo = list.DrawerNo,
|
||||
DrugId = planInfos[i].DrugId.ToString(),
|
||||
BaseQuantity = planInfos[i].BaseQuantity,
|
||||
BoxState = 1
|
||||
});
|
||||
if (mid > 0)
|
||||
{
|
||||
|
@ -789,7 +790,7 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
if (flag)
|
||||
{
|
||||
// 盘点库存是否足够
|
||||
if (total > Quantity)
|
||||
if (total >= Quantity)
|
||||
{
|
||||
|
||||
for (var j = 0; Quantity > 0; j++)
|
||||
|
@ -960,7 +961,7 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
NeedQuantity = 0,
|
||||
DrugId = boxTakeVo.ChannelStock.DrugId,
|
||||
ManuNo = boxTakeVo.ChannelStock.ManuNo,
|
||||
EffDate = boxTakeVo.ChannelStock.EffDate,
|
||||
EffDate = EffDate,
|
||||
BaseQuantity = boxTakeVo.BoxDetail.BaseQuantity,
|
||||
BoardType = boxTakeVo.BoxDetail.BoardType,
|
||||
BoxState = 2 //补药完成
|
||||
|
@ -980,12 +981,12 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
Reviewer = _globalStateService.Reviewer?.Id ?? _globalStateService.Operator.Id,
|
||||
InvoiceId = boxTakeVo.ChannelStock.Id.ToString(),
|
||||
});
|
||||
int totalQuantity = _connection.PlanDetails.Where(p => p.PlanId == Convert.ToInt32(boxChannelList.DrugId)&&p.DrugId== boxTakeVo.BoxDetail.DrugId).Sum(p => p.BaseQuantity);
|
||||
int list = _connection.ChannelList.Where(cl => cl.Id == boxChannelList.Id)
|
||||
.Set(cl => cl.TotalQuantity, totalQuantity)
|
||||
.Update();
|
||||
//int totalQuantity = _connection.PlanDetails.Where(p => p.PlanId == Convert.ToInt32(boxChannelList.DrugId)&&p.DrugId== boxTakeVo.BoxDetail.DrugId).Sum(p => p.BaseQuantity);
|
||||
//int list = _connection.ChannelList.Where(cl => cl.Id == boxChannelList.Id)
|
||||
// .Set(cl => cl.TotalQuantity, totalQuantity)
|
||||
// .Update();
|
||||
int delResutl = await _connection.ChannelStock.Where(cs => cs.Id == boxTakeVo.BoxDetail.Id).DeleteAsync();
|
||||
if (mid > 0 && r > 0 && boxID > 0 && boxMId > 0 && list > 0)
|
||||
if (mid > 0 && r > 0 && boxID > 0 && boxMId > 0)
|
||||
{
|
||||
if (boxTakeVo.ChannelStock.BoardType.ToString().Contains("5"))
|
||||
{
|
||||
|
@ -1080,7 +1081,7 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
}
|
||||
}
|
||||
//手术室药箱入库获取待入库明细
|
||||
public async Task<List<BoxTakeVo>> getBoxWaitByBox(ChannelList cl)
|
||||
public async Task<List<BoxTakeVo>> getBoxWaitByBox(ChannelList cl, int? take, int? skip)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -1093,8 +1094,10 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
// 当前药品取药数量
|
||||
var Quantity = boxCs.NeedQuantity;
|
||||
List<ChannelStock> stockList = await _connection.ChannelStock
|
||||
.Where(cs => cs.MachineId == _setting.machineId && cs.DrawerType == 1 && cs.DrugId == boxCs.DrugId && cs.Quantity > 0 && cs.ManuNo != null)
|
||||
.Where(cs => cs.MachineId == _setting.boxMachineId && cs.DrugId == boxCs.DrugId && cs.Quantity > 0 && cs.ManuNo != null)
|
||||
.AsQueryable()
|
||||
.Skip((int)skip)
|
||||
.Take((int)take)
|
||||
.OrderBy(cs => cs.EffDate).ToListAsync();
|
||||
|
||||
// 当前药品的库存总量
|
||||
|
@ -1106,58 +1109,6 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
StockQuantity = total,
|
||||
Quantity = Quantity
|
||||
});
|
||||
|
||||
if (flag)
|
||||
{
|
||||
// 盘点库存是否足够
|
||||
if (total > Quantity)
|
||||
{
|
||||
|
||||
for (var j = 0; Quantity > 0; j++)
|
||||
{
|
||||
ChannelStock stock = stockList[j];
|
||||
if (Quantity > stock.Quantity)
|
||||
{
|
||||
// 取药数量大于库存
|
||||
tempData.Add(new BoxTakeVo()
|
||||
{
|
||||
Drug = boxCs.Drug,
|
||||
BoxDetail = boxCs,
|
||||
ChannelStock = stock,
|
||||
StockQuantity = total,
|
||||
Quantity = stock.Quantity,
|
||||
});
|
||||
Quantity -= stock.Quantity;
|
||||
}
|
||||
else
|
||||
{
|
||||
//取药数量小于库存
|
||||
tempData.Add(new BoxTakeVo()
|
||||
{
|
||||
Drug = boxCs.Drug,
|
||||
BoxDetail = boxCs,
|
||||
ChannelStock = stock,
|
||||
StockQuantity = total,
|
||||
Quantity = Quantity,
|
||||
});
|
||||
Quantity = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// 库存不足
|
||||
flag = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (flag)
|
||||
{
|
||||
return tempData;
|
||||
}
|
||||
else
|
||||
{
|
||||
return tempData2;
|
||||
}
|
||||
return tempData;
|
||||
|
||||
|
@ -1168,6 +1119,98 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
return null;
|
||||
}
|
||||
}
|
||||
// 手术室药箱待入库明细入库完成
|
||||
public async Task<bool> BoxAddBoxFinish(ChannelList boxChannelList)
|
||||
{
|
||||
try
|
||||
{
|
||||
_connection.BeginTransaction();
|
||||
bool flag = true;
|
||||
int totalQuantity =0;
|
||||
for (var i = 0; i < boxChannelList.ChannelStocks.Count; i++)
|
||||
{
|
||||
|
||||
var EffDate = boxChannelList.ChannelStocks[i].EffDate;
|
||||
//效期转换出错
|
||||
if (boxChannelList.ChannelStocks[i].EffDate != null)
|
||||
{
|
||||
string[] idate = boxChannelList.ChannelStocks[i].EffDate.Split('/');
|
||||
foreach (string iS in idate)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(iS.Trim()))
|
||||
{
|
||||
switch (iS.Trim().Length)
|
||||
{
|
||||
case 4:
|
||||
EffDate = iS.Trim();
|
||||
break;
|
||||
case 2:
|
||||
EffDate += "-" + iS.Trim();
|
||||
break;
|
||||
case 1:
|
||||
EffDate += "-0" + iS.Trim();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// 手术室药箱入库记录
|
||||
int mid = _connection.InsertWithInt32Identity(new MachineRecord()
|
||||
{
|
||||
MachineId = _setting.boxMachineId,
|
||||
DrawerNo = boxChannelList.ChannelStocks[i].DrawerNo,
|
||||
DrugId = boxChannelList.ChannelStocks[i].DrugId,
|
||||
ManuNo = boxChannelList.ChannelStocks[i].ManuNo,
|
||||
EffDate = !String.IsNullOrEmpty(EffDate) ? DateTime.ParseExact(EffDate, "yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture) : null,
|
||||
OperationTime = DateTime.Now,
|
||||
Type = 1,
|
||||
Quantity = boxChannelList.ChannelStocks[i].AddToQuantity,
|
||||
Operator = _globalStateService.Operator.Id,
|
||||
Reviewer = _globalStateService.Reviewer?.Id ?? _globalStateService.Operator.Id,
|
||||
InvoiceId = boxChannelList.ChannelStocks[i].Id.ToString(),
|
||||
});
|
||||
// 更新库存
|
||||
boxChannelList.ChannelStocks[i].Quantity= boxChannelList.ChannelStocks[i].Quantity+ boxChannelList.ChannelStocks[i].AddToQuantity;
|
||||
boxChannelList.ChannelStocks[i].AddToQuantity = 0;
|
||||
boxChannelList.ChannelStocks[i].NeedQuantity = 0;
|
||||
boxChannelList.ChannelStocks[i].BoxState=0;
|
||||
boxChannelList.ChannelStocks[i].EffDate = EffDate;
|
||||
int r = _connection.Update(boxChannelList.ChannelStocks[i]);
|
||||
|
||||
totalQuantity += _connection.PlanDetails.Where(p => p.PlanId == Convert.ToInt32(boxChannelList.DrugId) && p.DrugId == boxChannelList.ChannelStocks[i].DrugId).Sum(p => p.BaseQuantity);
|
||||
|
||||
if (!(mid > 0 && r > 0 ))
|
||||
{
|
||||
flag = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (flag)
|
||||
{
|
||||
boxChannelList.TotalQuantity+= totalQuantity;
|
||||
int updateResult = _connection
|
||||
.Update(boxChannelList);
|
||||
if (updateResult > 0)
|
||||
{
|
||||
_connection.CommitTransaction();
|
||||
}
|
||||
else
|
||||
{ flag = false;
|
||||
_connection.RollbackTransaction();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_connection.RollbackTransaction();
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Info($"手术室药箱待入库明细入库完成操作异常:{ex.Message}");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//手术室药箱获取药箱药品及库存信息
|
||||
public async Task<PageData<PlanDetails>> GetBoxDrugInfo(int DrawerNo, int? take, int? skip)
|
||||
|
@ -1176,7 +1219,7 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
.InnerJoin(
|
||||
_connection.ChannelList.Where(cl => cl.MachineId == _setting.boxMachineId && cl.DrawerNo.Equals(DrawerNo)),
|
||||
(pd, cl) => pd.PlanId.ToString() == cl.DrugId,
|
||||
(pd, cl) => pd);
|
||||
(pd, cl) => pd).Where(pd=>pd.UseState==1);
|
||||
|
||||
|
||||
|
||||
|
@ -1226,7 +1269,7 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
{
|
||||
try
|
||||
{
|
||||
var query = _connection.ChannelStock.AsQueryable().Where(c => c.MachineId == _setting.boxMachineId && c.DrawerNo.Equals(drawerNo) && c.DrugId.Equals(cs.DrugId)&&c.ManuNo!=cs.ManuNo&&c.EffDate!=cs.EffDate);
|
||||
var query = _connection.ChannelStock.AsQueryable().Where(c => c.MachineId == _setting.boxMachineId && c.DrawerNo.Equals(drawerNo) && c.DrugId.Equals(cs.DrugId) && c.ManuNo != cs.ManuNo && c.EffDate != cs.EffDate);
|
||||
|
||||
|
||||
|
||||
|
@ -1261,7 +1304,7 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
/// <returns></returns>
|
||||
public async Task<int[]> GetDrawerNum(ChannelStock channelStock)
|
||||
{
|
||||
int[] ints = _connection.ChannelStock.Where(cs => cs.MachineId == channelStock.MachineId && cs.DrugId == channelStock.DrugId && cs.DrawerNo != channelStock.DrawerNo && !string.IsNullOrEmpty(cs.ManuNo)&&cs.ManuNo!=channelStock.ManuNo)
|
||||
int[] ints = _connection.ChannelStock.Where(cs => cs.MachineId == channelStock.MachineId && cs.DrugId == channelStock.DrugId && cs.DrawerNo != channelStock.DrawerNo && !string.IsNullOrEmpty(cs.ManuNo) && cs.ManuNo != channelStock.ManuNo)
|
||||
.GroupBy(cs => cs.DrawerNo).Select(cs => cs.Key).ToArray();
|
||||
return ints;
|
||||
}
|
||||
|
@ -1321,9 +1364,9 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//记录操作记录
|
||||
int recordId = _connection.InsertWithInt32Identity(new MachineRecord()
|
||||
int recordId = _connection.InsertWithInt32Identity(new MachineRecord()
|
||||
{
|
||||
MachineId = stock.MachineId,
|
||||
DrawerNo = stock.DrawerNo,
|
||||
|
@ -1337,7 +1380,7 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
Reviewer = _globalStateService.Reviewer?.Id ?? _globalStateService.Operator.Id,
|
||||
InvoiceId = stockList[i].Id.ToString(),
|
||||
});
|
||||
if(recordId <= 0)
|
||||
if (recordId <= 0)
|
||||
{
|
||||
logger.Info($"药箱{stock.DrawerNo}交换药品新增操作记录失败,药箱号:{stockList[i].DrawerNo},药品ID:{stockList[i].DrugId}");
|
||||
flag = false;
|
||||
|
@ -1359,7 +1402,7 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
if (r <= 0)
|
||||
{
|
||||
logger.Info($"更新药箱药品数量失败,药箱号:{stockList[i].DrawerNo},药品ID:{stockList[i].DrugId}");
|
||||
flag= false;
|
||||
flag = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1381,7 +1424,7 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
if (mid <= 0)
|
||||
{
|
||||
logger.Info($"新增药箱药品记录失败,药箱号:{stockList[i].DrawerNo},药品ID:{stockList[i].DrugId}");
|
||||
flag= false;
|
||||
flag = false;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1429,7 +1472,7 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
}
|
||||
if (flag)
|
||||
{
|
||||
|
||||
|
||||
_connection.CommitTransaction();
|
||||
}
|
||||
else
|
||||
|
@ -1447,7 +1490,7 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
}
|
||||
}
|
||||
//手术室药箱移出药品完成
|
||||
public async Task<bool> BoxRemoveFinish(ChannelStock stock,int SelectedDrawerNo,int removeQuantity)
|
||||
public async Task<bool> BoxRemoveFinish(ChannelStock stock, int SelectedDrawerNo, int removeQuantity)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -1472,14 +1515,14 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
{
|
||||
//如果没有该批次的药品,先查询是否有未绑批次的,有则更新批次信息,无则新增一条记录
|
||||
ChannelStock inDrugChannelStock = _connection.ChannelStock.AsQueryable()
|
||||
.Where(cs => cs.MachineId == stock.MachineId && cs.DrawerNo == SelectedDrawerNo && cs.DrugId == stock.DrugId )
|
||||
.Where(cs => cs.MachineId == stock.MachineId && cs.DrawerNo == SelectedDrawerNo && cs.DrugId == stock.DrugId)
|
||||
.FirstOrDefault();
|
||||
if (inDrugChannelStock != null)
|
||||
{
|
||||
int mid= _connection.ChannelStock.Where(cs => cs.Id == inDrugChannelStock.Id)
|
||||
int mid = _connection.ChannelStock.Where(cs => cs.Id == inDrugChannelStock.Id)
|
||||
.Set(cs => cs.Quantity, removeQuantity)
|
||||
.Set(cs=>cs.ManuNo, stock.ManuNo)
|
||||
.Set(cs=>cs.EffDate,stock.EffDate)
|
||||
.Set(cs => cs.ManuNo, stock.ManuNo)
|
||||
.Set(cs => cs.EffDate, stock.EffDate)
|
||||
.Update();
|
||||
if (mid <= 0)
|
||||
{
|
||||
|
@ -1516,16 +1559,16 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
.Update();
|
||||
if (updateQuantity2 <= 0)
|
||||
{
|
||||
logger.Info($"更新入库药箱药品减数量失败,药箱号:{stock.DrawerNo},药品ID:{stock.DrugId}");
|
||||
logger.Info($"更新入库药箱药品减数量失败,药箱号:{stock.DrawerNo},药品ID:{stock.DrugId}");
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
int updateTotalQuantity = 0;
|
||||
int updateMoveToTotalQuantity=0;
|
||||
int updateMoveToTotalQuantity = 0;
|
||||
//修改总库存数
|
||||
ChannelList channelList = _connection.ChannelList.Where(cl => cl.MachineId == stock.MachineId && cl.DrawerNo == stock.DrawerNo && cl.DrugId == stock.DrugId).FirstOrDefault();
|
||||
if(channelList!=null)
|
||||
if (channelList != null)
|
||||
{
|
||||
updateTotalQuantity = _connection.ChannelList.Where(cl => cl.Id == channelList.Id)
|
||||
.Set(cl => cl.TotalQuantity, channelList.TotalQuantity - removeQuantity)
|
||||
|
@ -1539,7 +1582,7 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
.Set(cl => cl.TotalQuantity, channelList.TotalQuantity + removeQuantity)
|
||||
.Update();
|
||||
}
|
||||
if(updateTotalQuantity>0&&updateMoveToTotalQuantity > 0)
|
||||
if (updateTotalQuantity > 0 && updateMoveToTotalQuantity > 0)
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
|
|
|
@ -590,10 +590,6 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
/// <returns></returns>
|
||||
public async Task<PageData<OrderInfo>> GetAllOrderInfoByBox(int box, string OrderrNo, DateTime OrderDate, int? take, int? skip)
|
||||
{
|
||||
//var query = _connection.OrderInfo.AsQueryable();
|
||||
|
||||
//query.InnerJoin<OrderDetail>((oi, od) => oi.OrderNo == od.OrderNo);
|
||||
|
||||
var query2 = from od in _connection.OrderDetail
|
||||
from cl in _connection.ChannelStock.Where(c => c.MachineId == _setting.machineId).InnerJoin(c => c.DrugId == od.DrugId)
|
||||
group od by od.OrderNo into temp
|
||||
|
@ -601,7 +597,6 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
var query = from oi in _connection.OrderInfo
|
||||
from od in query2.InnerJoin(od => od.Key == oi.OrderNo)
|
||||
select oi;
|
||||
|
||||
if (!String.IsNullOrEmpty(OrderrNo))
|
||||
{
|
||||
query = query.Where(oi => oi.OrderNo.Equals(OrderrNo));
|
||||
|
@ -619,8 +614,7 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
int pagedData = await query.CountAsync();
|
||||
|
||||
List<OrderInfo> list = await query
|
||||
.LoadWith(oi => oi.Detail)
|
||||
.LoadWith(oi => oi.Detail.Drug)
|
||||
//.LoadWith(oi => oi.DetailList)
|
||||
.OrderBy((oi) => oi.RecvDate)
|
||||
.ThenBy((oi => oi.OrderNo))
|
||||
.Skip((int)skip)
|
||||
|
@ -630,13 +624,57 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
{
|
||||
for (int i = 0; i < list.Count; i++)
|
||||
{
|
||||
//list[i].Detail = await _connection.OrderDetail.AsQueryable()
|
||||
// .Where(od => od.OrderNo == list[i].OrderNo)
|
||||
// .LoadWith(od => od.Drug)
|
||||
// .ToListAsync();
|
||||
for (int j = 0; j < list[i].DetailList.Count; j++)
|
||||
{
|
||||
list[i].DetailList[j].Drug = await _connection.DrugInfo.AsQueryable().Where(d => d.DrugId == list[i].DetailList[j].DrugId).FirstOrDefaultAsync();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//var query2 = from od in _connection.OrderDetail
|
||||
// from cl in _connection.ChannelStock.Where(c => c.MachineId == _setting.machineId).InnerJoin(c => c.DrugId == od.DrugId)
|
||||
// group od by od.OrderNo into temp
|
||||
// select new { temp.Key };
|
||||
//var query = from oi in _connection.OrderInfo
|
||||
// from od in query2.InnerJoin(od => od.Key == oi.OrderNo)
|
||||
// select oi;
|
||||
|
||||
//if (!String.IsNullOrEmpty(OrderrNo))
|
||||
//{
|
||||
// query = query.Where(oi => oi.OrderNo.Equals(OrderrNo));
|
||||
//}
|
||||
//if (OrderDate != null && OrderDate != DateTime.MinValue)
|
||||
//{
|
||||
// query = query.Where(oi => oi.OrderDate.Date.Equals(OrderDate.Date));
|
||||
//}
|
||||
|
||||
//query = query.Where(oi => oi.Status == 0);
|
||||
//query = query.Where(oi => oi.HisDispFlag == 0);
|
||||
//query = query.Where(oi => oi.CancelFlag == 0);
|
||||
////query = query.Where(oi => oi.DoctorCode == box);
|
||||
|
||||
//int pagedData = await query.CountAsync();
|
||||
|
||||
//List<OrderInfo> list = await query
|
||||
// .LoadWith(oi => oi.Detail)
|
||||
// .LoadWith(oi => oi.Detail.Drug)
|
||||
// .OrderBy((oi) => oi.RecvDate)
|
||||
// .ThenBy((oi => oi.OrderNo))
|
||||
// .Skip((int)skip)
|
||||
// .Take((int)take)
|
||||
// .ToListAsync();
|
||||
//if (list != null && list.Count > 0)
|
||||
//{
|
||||
// for (int i = 0; i < list.Count; i++)
|
||||
// {
|
||||
// //list[i].Detail = await _connection.OrderDetail.AsQueryable()
|
||||
// // .Where(od => od.OrderNo == list[i].OrderNo)
|
||||
// // .LoadWith(od => od.Drug)
|
||||
// // .ToListAsync();
|
||||
// }
|
||||
//}
|
||||
|
||||
return new PageData<OrderInfo>()
|
||||
{
|
||||
TotalDesserts = pagedData,
|
||||
|
@ -654,7 +692,7 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
return ints;
|
||||
}
|
||||
//核对处方
|
||||
public async Task<bool> CheckOrderInfo(IList<OrderInfo> selectedOrderInfos,int DrawerNo)
|
||||
public async Task<bool> CheckOrderInfo(IList<OrderInfo> selectedOrderInfos, int DrawerNo)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -670,9 +708,9 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
OrderInfo oi = selectedOrderInfos[i];
|
||||
|
||||
//更新处方状态
|
||||
if (oi.state == 1)
|
||||
if (oi.Status == 1)
|
||||
{
|
||||
int iUpdate= _connection.OrderInfo.Where(o=>o.OrderNo==oi.OrderNo).Set(o=>o.state,2).Update();
|
||||
int iUpdate = _connection.OrderInfo.Where(o => o.OrderNo == oi.OrderNo).Set(o => o.Status, 2).Update();
|
||||
_connection.Insert(new OrderFinish()
|
||||
{
|
||||
OrderNo = oi.OrderNo,
|
||||
|
@ -683,149 +721,162 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
Operator = _globalStateService.Operator.NickName,
|
||||
});
|
||||
}
|
||||
int drawerNo = DrawerNo + 1;
|
||||
ChannelStock cs =_connection.ChannelStock.AsQueryable()
|
||||
.Where(cs => cs.DrugId == oi.Detail.DrugId
|
||||
&& cs.ManuNo == oi.Detail.SetManuNo
|
||||
// && cs.EffDate == oi._OrderDetail.SetEffDate
|
||||
&& cs.MachineId.Equals(_setting.boxMachineId)
|
||||
&& cs.DrawerNo == drawerNo
|
||||
&& cs.Quantity >= oi.Detail.Quantity).First();
|
||||
if (cs == null)
|
||||
int drawerNo = DrawerNo;
|
||||
if (oi.DetailList != null && oi.DetailList.Count > 0)
|
||||
{
|
||||
logger.Info($"手麻单{oi.OrderNo}对药品批次{oi.Detail.DrugId}-{oi.Detail.SetManuNo}在{drawerNo}药箱无库存");
|
||||
continue;
|
||||
}
|
||||
cs.Quantity = cs.Quantity - oi.Detail.Quantity;
|
||||
//cs.NeedNum = cs.NeedNum > 0 ? cs.NeedNum + oi._OrderDetail.Quantity : oi._OrderDetail.Quantity;
|
||||
logger.Info($"更新手术间{cs.DrawerNo}药品{cs.DrugId}批次{cs.ManuNo}库存为{cs.Quantity},需补药数量为{oi.Detail.Quantity}");
|
||||
// 更新数据 库存信息
|
||||
_connection.Update(cs);
|
||||
|
||||
// 获取更新完库存后的药品库存
|
||||
List<ChannelStock> nowChannels = _connection.ChannelStock.AsQueryable()
|
||||
.Where(it => it.MachineId.Equals(cs.MachineId) || it.MachineId.Equals(_setting.machineId))
|
||||
.Where(it => it.DrugId.Equals(cs.DrugId))
|
||||
.Where(it => it.ManuNo.Equals(cs.ManuNo))
|
||||
.Where(it => it.DrawerType == 1)
|
||||
.ToList();
|
||||
if (cs != null)
|
||||
{
|
||||
_connection.Insert(new MachineRecord()
|
||||
for (int j = 0; j < oi.DetailList.Count; j++)
|
||||
{
|
||||
MachineId = _setting.machineId,
|
||||
DrawerNo = cs.DrawerNo,
|
||||
ColNo = cs.ColNo,
|
||||
DrugId = cs.DrugId,
|
||||
ManuNo = cs.ManuNo,
|
||||
EffDate = !String.IsNullOrEmpty(cs.EffDate) ? DateTime.ParseExact(cs.EffDate, "yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture) : null,
|
||||
Operator = _globalStateService.Operator?.Id,
|
||||
Reviewer = _globalStateService.Reviewer?.Id,
|
||||
OperationTime = DateTime.Now,
|
||||
Quantity = oi.Detail.Quantity,
|
||||
Type = 2,
|
||||
InvoiceId = oi.OrderNo
|
||||
//, StockQuantity = nowChannels.Sum(it => it.Quantity)
|
||||
});
|
||||
|
||||
|
||||
//查询上一条账册中的空瓶数
|
||||
AccountBookG2 accountBookEmpty =_connection.AccountBookG2.AsQueryable()
|
||||
.Where(ab => ab.MachineId.Equals(_setting.machineId))
|
||||
.Where(ab => ab.Type == 1 || ab.Type == 2)
|
||||
.Where(ab => ab.DrugId == oi.Detail.DrugId)
|
||||
.Where(ab => ab.ManuNo == cs.ManuNo).OrderByDescending(ab => ab.Id).First();
|
||||
//保存账册
|
||||
int iInsertResult = _connection.Insert(new AccountBookG2()
|
||||
{
|
||||
DrugId = oi.Detail.DrugId,
|
||||
Type = 2,
|
||||
Department = oi.DeptName,
|
||||
OrderNo = oi.OrderNo,
|
||||
ManuNo = cs.ManuNo,
|
||||
EffDate = cs.EffDate,
|
||||
OutQuantity = oi.Detail.Quantity,
|
||||
UserId1 = _globalStateService.Operator?.Id,
|
||||
UserId2 = _globalStateService.Reviewer?.Id,
|
||||
MachineId = _setting.machineId,
|
||||
CreateDate = DateTime.Now.ToString("yyyy-MM-dd"),
|
||||
CreateTime = DateTime.Now,
|
||||
InvoiceNo = oi.OrderNo,
|
||||
ManuStock = nowChannels.Sum(it => it.Quantity),
|
||||
TotalStock = (accountBookEmpty != null ? (accountBookEmpty.TotalStock > 0 ? accountBookEmpty.TotalStock : 0) : 0) + oi.Detail.Quantity,
|
||||
ShoushuJian = drawerNo.ToString()
|
||||
});
|
||||
//修改凌晨生成的日结存与总结存数据
|
||||
AccountBookG2 accountBookG2Day = _connection.AccountBookG2.AsQueryable()
|
||||
.Where(ab => ab.MachineId.Equals(_setting.machineId))
|
||||
.Where(ab => ab.Type == 3)
|
||||
.Where(ab => ab.DrugId == oi.Detail.DrugId)
|
||||
.Where(ab => ab.ManuNo == cs.ManuNo)
|
||||
.Where(ab => ab.CreateDate == DateTime.Now.ToString("yyyy-MM-dd")).First();
|
||||
if (accountBookG2Day != null)
|
||||
{
|
||||
accountBookG2Day.ManuStock = accountBookG2Day.ManuStock - oi.Detail.Quantity;
|
||||
_connection.Update(accountBookG2Day);
|
||||
}
|
||||
else
|
||||
{
|
||||
//生成日结存时可能没有该库位的绑定信息,需要写入日结存
|
||||
int iDayResult =_connection.Insert(new AccountBookG2()
|
||||
ChannelStock cs = _connection.ChannelStock.AsQueryable()
|
||||
.Where(cs => cs.DrugId == oi.DetailList[j].DrugId
|
||||
&& cs.ManuNo == oi.DetailList[j].SetManuNo
|
||||
// && cs.EffDate == oi._OrderDetail.SetEffDate
|
||||
&& cs.MachineId.Equals(_setting.boxMachineId)
|
||||
&& cs.DrawerNo == drawerNo
|
||||
&& cs.Quantity >= oi.DetailList[j].Quantity).First();
|
||||
if (cs == null)
|
||||
{
|
||||
DrugId = oi.Detail.DrugId,
|
||||
Type = 3,
|
||||
ManuNo = cs.ManuNo,
|
||||
EffDate = cs.EffDate,
|
||||
YQuantity = 0,
|
||||
ManuStock = oi.Detail.Quantity,
|
||||
TotalStock = oi.Detail.Quantity,
|
||||
UserId1 = _globalStateService.Operator?.Id,
|
||||
UserId2 = _globalStateService.Reviewer?.Id,
|
||||
MachineId = _setting.machineId,
|
||||
CreateDate = DateTime.Now.ToString("yyyy-MM-dd"),
|
||||
InvoiceNo = "日结存"
|
||||
});
|
||||
if (iDayResult <= 0)
|
||||
{
|
||||
logger.Info($"未写入日结存数据{oi.Detail.DrugId}-{cs.ManuNo}-{cs.EffDate}-{cs.Quantity}");
|
||||
logger.Info($"手麻单{oi.OrderNo}对药品批次{oi.DetailList[j].DrugId}-{oi.DetailList[j].SetManuNo}在{drawerNo}药箱无库存");
|
||||
continue;
|
||||
}
|
||||
}
|
||||
//修改凌晨生成的日结存与总结存数据
|
||||
AccountBookG2 accountBookG2Total = _connection.AccountBookG2.AsQueryable()
|
||||
.Where(ab => ab.MachineId.Equals(_setting.machineId))
|
||||
.Where(ab => ab.Type == 4)
|
||||
.Where(ab => ab.DrugId == oi.Detail.DrugId)
|
||||
.Where(ab => ab.CreateDate == DateTime.Now.ToString("yyyy-MM-dd")).First();
|
||||
if (accountBookG2Total != null)
|
||||
{
|
||||
accountBookG2Total.TotalStock = accountBookG2Total.TotalStock - oi.Detail.Quantity;
|
||||
_connection.Update(accountBookG2Total);
|
||||
}
|
||||
else
|
||||
{
|
||||
//生成总结存时可能没有该库位的绑定信息,需要写入总结存
|
||||
int iTotalResult = _connection.Insert(new AccountBookG2()
|
||||
{
|
||||
DrugId = oi.Detail.DrugId,
|
||||
Type = 4,
|
||||
YQuantity = 0,
|
||||
ManuStock = oi.Detail.Quantity,
|
||||
TotalStock = oi.Detail.Quantity,
|
||||
UserId1 = _globalStateService.Operator?.Id,
|
||||
UserId2 = _globalStateService.Reviewer?.Id,
|
||||
MachineId = _setting.machineId,
|
||||
CreateDate = DateTime.Now.ToString("yyyy-MM-dd"),
|
||||
InvoiceNo = "总结存"
|
||||
});
|
||||
if (iTotalResult <= 0)
|
||||
{
|
||||
logger.Info($"未写入总结存数据{oi.Detail.DrugId}-{oi.Detail.Quantity}");
|
||||
}
|
||||
}
|
||||
cs.Quantity = cs.Quantity - oi.DetailList[j].Quantity;
|
||||
//cs.NeedNum = cs.NeedNum > 0 ? cs.NeedNum + oi._OrderDetail.Quantity : oi._OrderDetail.Quantity;
|
||||
logger.Info($"更新手术间{cs.DrawerNo}药品{cs.DrugId}批次{cs.ManuNo}库存为{cs.Quantity},需补药数量为{oi.DetailList[j].Quantity}");
|
||||
// 更新数据 库存信息
|
||||
_connection.Update(cs);
|
||||
|
||||
//更新ChannelList对应的总库存
|
||||
ChannelList channelList = _connection.ChannelList.AsQueryable().Where(cl => cl.MachineId.Equals(cs.MachineId) && cl.Id.Equals(cs.ListId) && cl.DrawerNo.Equals(cs.DrawerNo)).FirstOrDefault();
|
||||
channelList.TotalQuantity = channelList.TotalQuantity - oi.DetailList[j].Quantity;
|
||||
_connection.Update(channelList);
|
||||
|
||||
// 获取更新完库存后的药品库存
|
||||
List<ChannelStock> nowChannels = _connection.ChannelStock.AsQueryable()
|
||||
.Where(it => it.MachineId.Equals(cs.MachineId) || it.MachineId.Equals(_setting.machineId))
|
||||
.Where(it => it.DrugId.Equals(cs.DrugId))
|
||||
.Where(it => it.ManuNo.Equals(cs.ManuNo))
|
||||
.Where(it => it.DrawerType == 1)
|
||||
.ToList();
|
||||
|
||||
if (cs != null)
|
||||
{
|
||||
_connection.Insert(new MachineRecord()
|
||||
{
|
||||
MachineId = _setting.machineId,
|
||||
DrawerNo = cs.DrawerNo,
|
||||
ColNo = cs.ColNo,
|
||||
DrugId = cs.DrugId,
|
||||
ManuNo = cs.ManuNo,
|
||||
EffDate = !String.IsNullOrEmpty(cs.EffDate) ? DateTime.ParseExact(cs.EffDate, "yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture) : null,
|
||||
Operator = _globalStateService.Operator?.Id,
|
||||
Reviewer = _globalStateService.Reviewer?.Id,
|
||||
OperationTime = DateTime.Now,
|
||||
Quantity = oi.DetailList[j].Quantity,
|
||||
Type = 2,
|
||||
InvoiceId = oi.OrderNo
|
||||
//, StockQuantity = nowChannels.Sum(it => it.Quantity)
|
||||
});
|
||||
|
||||
|
||||
//查询上一条账册中的空瓶数
|
||||
AccountBookG2 accountBookEmpty = _connection.AccountBookG2.AsQueryable()
|
||||
.Where(ab => ab.MachineId.Equals(_setting.machineId))
|
||||
.Where(ab => ab.Type == 1 || ab.Type == 2)
|
||||
.Where(ab => ab.DrugId == oi.DetailList[j].DrugId)
|
||||
.Where(ab => ab.ManuNo == cs.ManuNo).OrderByDescending(ab => ab.Id).First();
|
||||
//保存账册
|
||||
int iInsertResult = _connection.Insert(new AccountBookG2()
|
||||
{
|
||||
DrugId = oi.DetailList[j].DrugId,
|
||||
Type = 2,
|
||||
Department = oi.DeptName,
|
||||
OrderNo = oi.OrderNo,
|
||||
ManuNo = cs.ManuNo,
|
||||
EffDate = cs.EffDate,
|
||||
OutQuantity = oi.DetailList[j].Quantity,
|
||||
UserId1 = _globalStateService.Operator?.Id,
|
||||
UserId2 = _globalStateService.Reviewer?.Id,
|
||||
MachineId = _setting.machineId,
|
||||
CreateDate = DateTime.Now.ToString("yyyy-MM-dd"),
|
||||
CreateTime = DateTime.Now,
|
||||
InvoiceNo = oi.OrderNo,
|
||||
ManuStock = nowChannels.Sum(it => it.Quantity),
|
||||
TotalStock = (accountBookEmpty != null ? (accountBookEmpty.TotalStock > 0 ? accountBookEmpty.TotalStock : 0) : 0) + oi.DetailList[j].Quantity,
|
||||
ShoushuJian = drawerNo.ToString()
|
||||
});
|
||||
//修改凌晨生成的日结存与总结存数据
|
||||
AccountBookG2 accountBookG2Day = _connection.AccountBookG2.AsQueryable()
|
||||
.Where(ab => ab.MachineId.Equals(_setting.machineId))
|
||||
.Where(ab => ab.Type == 3)
|
||||
.Where(ab => ab.DrugId == oi.DetailList[j].DrugId)
|
||||
.Where(ab => ab.ManuNo == cs.ManuNo)
|
||||
.Where(ab => ab.CreateDate == DateTime.Now.ToString("yyyy-MM-dd")).First();
|
||||
if (accountBookG2Day != null)
|
||||
{
|
||||
accountBookG2Day.ManuStock = accountBookG2Day.ManuStock - oi.DetailList[j].Quantity;
|
||||
_connection.Update(accountBookG2Day);
|
||||
}
|
||||
else
|
||||
{
|
||||
//生成日结存时可能没有该库位的绑定信息,需要写入日结存
|
||||
int iDayResult = _connection.Insert(new AccountBookG2()
|
||||
{
|
||||
DrugId = oi.DetailList[j].DrugId,
|
||||
Type = 3,
|
||||
ManuNo = cs.ManuNo,
|
||||
EffDate = cs.EffDate,
|
||||
YQuantity = 0,
|
||||
ManuStock = oi.DetailList[j].Quantity,
|
||||
TotalStock = oi.DetailList[j].Quantity,
|
||||
UserId1 = _globalStateService.Operator?.Id,
|
||||
UserId2 = _globalStateService.Reviewer?.Id,
|
||||
MachineId = _setting.machineId,
|
||||
CreateDate = DateTime.Now.ToString("yyyy-MM-dd"),
|
||||
InvoiceNo = "日结存"
|
||||
});
|
||||
if (iDayResult <= 0)
|
||||
{
|
||||
logger.Info($"未写入日结存数据{oi.DetailList[j].DrugId}-{cs.ManuNo}-{cs.EffDate}-{cs.Quantity}");
|
||||
}
|
||||
}
|
||||
//修改凌晨生成的日结存与总结存数据
|
||||
AccountBookG2 accountBookG2Total = _connection.AccountBookG2.AsQueryable()
|
||||
.Where(ab => ab.MachineId.Equals(_setting.machineId))
|
||||
.Where(ab => ab.Type == 4)
|
||||
.Where(ab => ab.DrugId == oi.DetailList[j].DrugId)
|
||||
.Where(ab => ab.CreateDate == DateTime.Now.ToString("yyyy-MM-dd")).First();
|
||||
if (accountBookG2Total != null)
|
||||
{
|
||||
accountBookG2Total.TotalStock = accountBookG2Total.TotalStock - oi.DetailList[j].Quantity;
|
||||
_connection.Update(accountBookG2Total);
|
||||
}
|
||||
else
|
||||
{
|
||||
//生成总结存时可能没有该库位的绑定信息,需要写入总结存
|
||||
int iTotalResult = _connection.Insert(new AccountBookG2()
|
||||
{
|
||||
DrugId = oi.DetailList[j].DrugId,
|
||||
Type = 4,
|
||||
YQuantity = 0,
|
||||
ManuStock = oi.DetailList[j].Quantity,
|
||||
TotalStock = oi.DetailList[j].Quantity,
|
||||
UserId1 = _globalStateService.Operator?.Id,
|
||||
UserId2 = _globalStateService.Reviewer?.Id,
|
||||
MachineId = _setting.machineId,
|
||||
CreateDate = DateTime.Now.ToString("yyyy-MM-dd"),
|
||||
InvoiceNo = "总结存"
|
||||
});
|
||||
if (iTotalResult <= 0)
|
||||
{
|
||||
logger.Info($"未写入总结存数据{oi.DetailList[j].DrugId}-{oi.DetailList[j].Quantity}");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
|
||||
logger.Info($"管理员{_globalStateService.Operator.NickName}结束确认手麻单");
|
||||
|
|
|
@ -4,6 +4,7 @@ using MasaBlazorApp3.DataAccess.Dao;
|
|||
using MasaBlazorApp3.Pojo;
|
||||
using MasaBlazorApp3.Pojo.Config;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Org.BouncyCastle.Crypto;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Common;
|
||||
|
@ -38,8 +39,8 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
{
|
||||
var query = _connection.Plan.AsQueryable();
|
||||
|
||||
List<Plan> list = await query.Where(p=>p.UseState==1)
|
||||
.LoadWith(p => p._PlanDetails.Where(pd=>pd.UseState==1))
|
||||
List<Plan> list = await query.Where(p => p.UseState == 1)
|
||||
.LoadWith(p => p._PlanDetails.Where(pd => pd.UseState == 1))
|
||||
//.ThenLoad(p=>p._DrugInfo)
|
||||
.OrderBy(r => r.Id)
|
||||
.ToListAsync();
|
||||
|
@ -78,7 +79,7 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
/// <returns></returns>
|
||||
public async Task<Plan> GetPlanById(int Id)
|
||||
{
|
||||
var query = _connection.Plan.AsQueryable().Where(p => p.Id == Id&&p.UseState==1);
|
||||
var query = _connection.Plan.AsQueryable().Where(p => p.Id == Id && p.UseState == 1);
|
||||
List<Plan> list = await query
|
||||
.LoadWith(p => p._PlanDetails)
|
||||
//.ThenLoad(p=>p._DrugInfo)
|
||||
|
@ -112,6 +113,7 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
plan.AddTime = DateTime.Now;
|
||||
plan.OperatorUser = _globalStateService.Operator.Id;
|
||||
plan.ReviewerUser = _globalStateService.Reviewer?.Id ?? _globalStateService.Operator.Id;
|
||||
plan.UseState = 1;
|
||||
return _connection.InsertWithInt32Identity(plan) > 0;
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
@ -143,6 +145,38 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
return false;
|
||||
}
|
||||
}
|
||||
//查询要删除的套餐下是否有绑定,且绑定有库存
|
||||
public async Task<bool> CheckPlanBind(int planId)
|
||||
{
|
||||
try
|
||||
{
|
||||
//查询是否有绑定,没有绑定可以删除,有绑定则不允许删除
|
||||
List<string> channelListsId =await _connection.ChannelList.AsQueryable().Where(cl => cl.DrugId == planId.ToString() && cl.MachineId == _setting.boxMachineId).Select(cl => cl.Id).ToListAsync();
|
||||
if (channelListsId != null && channelListsId.Count > 0)
|
||||
{
|
||||
bool searchResult = _connection.ChannelStock.AsQueryable().Where(cs => channelListsId.Contains(cs.ListId)).Any(cs => cs.Quantity > 0);
|
||||
if (searchResult)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Error($"查询要删除的套餐下是否有绑定异常{ex.Message}");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 删除套餐
|
||||
/// </summary>
|
||||
|
@ -154,27 +188,32 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
{
|
||||
_connection.BeginTransaction();
|
||||
bool flag = false;
|
||||
//查询是否有绑定,没有绑定可以删除,有绑定则不允许删除
|
||||
int hasCount = _connection.ChannelList.Where(cl => cl.DrugId == planId.ToString() && cl.MachineId == _setting.machineId).Count();
|
||||
if (hasCount > 0)
|
||||
logger.Error($"删除套餐{planId}");
|
||||
//查询该套餐下是否有药品,如果有则一并删除
|
||||
int iHasPd = _connection.PlanDetails.Where(pd => pd.PlanId == planId).Count();
|
||||
int pdResult = 1;
|
||||
if (iHasPd > 0)
|
||||
{
|
||||
return flag;
|
||||
pdResult =await _connection.PlanDetails.Where(pd => pd.PlanId == planId).Set(pd => pd.UseState, 0).UpdateAsync();
|
||||
}
|
||||
else
|
||||
int pResult = await _connection.Plan.Where(p => p.Id == planId).Set(pd => pd.UseState, 0).UpdateAsync();
|
||||
|
||||
//如果套餐下有绑药且库存为0的也将绑定药品信息一并删除
|
||||
List<string> listIds =await _connection.ChannelList.Where(cl => cl.DrugId == planId.ToString()).Select(cl => cl.Id).ToListAsync();
|
||||
int iDelResult = 1;
|
||||
int iDelChannelListResult = 1;
|
||||
if (listIds != null && listIds.Count > 0)
|
||||
{
|
||||
logger.Error($"删除套餐{planId}");
|
||||
//查询该套餐下是否有药品,如果有则一并删除
|
||||
int iHasPd = _connection.PlanDetails.Where(pd => pd.PlanId == planId).Count();
|
||||
int pdResult = 1;
|
||||
if (iHasPd > 0)
|
||||
{
|
||||
pdResult = _connection.PlanDetails.Where(pd => pd.PlanId == planId).Set(pd => pd.UseState, 0).Update();
|
||||
}
|
||||
int pResult = _connection.Plan.Where(p => p.Id == planId).Set(pd => pd.UseState, 0).Update();
|
||||
if (pdResult > 0 && pResult > 0)
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
//删除channelStock表中的绑定药品
|
||||
iDelResult = _connection.ChannelStock.Where(cs => listIds.Contains(cs.ListId)).Delete();
|
||||
_connection.ChannelList.Where(cl => listIds.Contains(cl.Id)).Set(cl=>cl.DrugId,"").Update();
|
||||
|
||||
|
||||
}
|
||||
|
||||
if (pdResult > 0 && pResult > 0 && iDelResult > 0 && iDelChannelListResult > 0)
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
|
||||
if (flag)
|
||||
|
@ -207,7 +246,7 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
{
|
||||
if (!string.IsNullOrEmpty(details.DrugId))
|
||||
{
|
||||
int id = _connection.InsertWithInt32Identity(details);
|
||||
int id =await _connection.InsertWithInt32IdentityAsync(details);
|
||||
details.Id = id;
|
||||
return id > 0;
|
||||
}
|
||||
|
@ -235,7 +274,7 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
.Where(p => p.Id == details.Id)
|
||||
.Set(p => p.DrugId, details._DrugInfo.DrugId)
|
||||
.Set(p => p.BaseQuantity, details.BaseQuantity);
|
||||
return iResult.Update() > 0;
|
||||
return await iResult.UpdateAsync() > 0;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
@ -244,6 +283,26 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
}
|
||||
}
|
||||
|
||||
//查询要删除的药品是否有绑定且库存大于0
|
||||
public async Task<bool> CheckPlanDetailBind(PlanDetails planDetail)
|
||||
{
|
||||
try
|
||||
{
|
||||
bool bFlag = true;
|
||||
List<string> idList =await _connection.ChannelList.AsQueryable().Where(cl => cl.DrugId == planDetail.PlanId.ToString()).Select(cl => cl.Id).ToListAsync();
|
||||
if (idList != null && idList.Count > 0)
|
||||
{
|
||||
bFlag = !(_connection.ChannelStock.AsQueryable().Where(cs => idList.Contains(cs.ListId) && cs.DrugId == planDetail.DrugId).Any(cs => cs.Quantity > 0));
|
||||
}
|
||||
return bFlag;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Error($"查询要删除的药品是否有绑定异常{ex.Message}");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除套餐中的药品
|
||||
/// </summary>
|
||||
|
@ -253,9 +312,33 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
{
|
||||
try
|
||||
{
|
||||
_connection.BeginTransaction();
|
||||
logger.Error($"删除套餐中的药品{detail._DrugInfo.DrugName}");
|
||||
return _connection.PlanDetails.Where(p => p.Id == detail.Id).Set(p=>p.UseState,0).Update() > 0;
|
||||
|
||||
int iDelResult = 1;
|
||||
//删除该套餐下该药品对应绑定的库位
|
||||
List<string> idList = await _connection.ChannelList.AsQueryable().Where(cl => cl.DrugId == detail.PlanId.ToString()).Select(cl => cl.Id).ToListAsync();
|
||||
if (idList != null && idList.Count > 0)
|
||||
{
|
||||
iDelResult= await _connection.ChannelStock.AsQueryable().Where(cs => idList.Contains(cs.ListId) && cs.DrugId == detail.DrugId).DeleteAsync();
|
||||
}
|
||||
if (iDelResult > 0)
|
||||
{
|
||||
bool bUpdateResult= _connection.PlanDetails.Where(p => p.Id == detail.Id).Set(p => p.UseState, 0).Update() > 0;
|
||||
if(bUpdateResult)
|
||||
{
|
||||
_connection.CommitTransaction();
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
_connection.RollbackTransaction();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
@ -269,7 +352,7 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
if (details._DrugInfo.DrugId != null)
|
||||
{
|
||||
//查询该药品是否已在套餐中存在,存在则不再添加
|
||||
PlanDetails pdDrug = _connection.PlanDetails.Where(p => p.PlanId == details.PlanId && p.DrugId == details._DrugInfo.DrugId&&p.UseState==1).FirstOrDefault();
|
||||
PlanDetails pdDrug = _connection.PlanDetails.Where(p => p.PlanId == details.PlanId && p.DrugId == details._DrugInfo.DrugId && p.UseState == 1).FirstOrDefault();
|
||||
|
||||
if (details.Id > 0)
|
||||
{
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
using Google.Protobuf.WellKnownTypes;
|
||||
using LinqToDB;
|
||||
using log4net;
|
||||
using MasaBlazorApp3.DataAccess.Dao;
|
||||
using MasaBlazorApp3.Pojo;
|
||||
using MasaBlazorApp3.Pojo.Config;
|
||||
|
@ -17,6 +18,7 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
|
||||
private readonly AppDataConnection _connection;
|
||||
private readonly SettingConfig _setting;
|
||||
private readonly ILog logger = LogManager.GetLogger(typeof(OrderInfoDao));
|
||||
|
||||
//public UserDao(MyContext context)
|
||||
//{
|
||||
|
@ -61,7 +63,7 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
public User GetByUsername(string username)
|
||||
{
|
||||
|
||||
return _connection.User.LoadWith(u => (u.role)).FirstOrDefault(u => u.Username == username&&u.MachineId== _setting.machineId);
|
||||
return _connection.User.LoadWith(u => (u.role)).FirstOrDefault(u => u.Username == username && u.MachineId == _setting.machineId);
|
||||
}
|
||||
|
||||
public int InsertUser(User user)
|
||||
|
@ -92,7 +94,7 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
//重置用户密码
|
||||
public bool ResetPassword(int id)
|
||||
{
|
||||
var statement= _connection.User.Where(u => u.Id == id).Set(u=>u.Password, MD5.GetMD5Hash("123456").ToLower());
|
||||
var statement = _connection.User.Where(u => u.Id == id).Set(u => u.Password, MD5.GetMD5Hash("123456").ToLower());
|
||||
return statement.Update() > 0;
|
||||
}
|
||||
|
||||
|
@ -115,5 +117,50 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
.Set(u => u.Password, MD5.GetMD5Hash(user.Password).ToLower());
|
||||
return statement.Update() > 0;
|
||||
}
|
||||
|
||||
//查询当前值班信息
|
||||
public HkcChangeShifts GetOnDuty()
|
||||
{
|
||||
try
|
||||
{
|
||||
return _connection.HkcChangeShifts.Where(cs => cs.MachineId == _setting.machineId && cs.State == "0").FirstOrDefault();
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Info($"查询当前值班信息异常{ex.Message}");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
//保存交接班信息
|
||||
public async Task<bool> UpdateChangeShift(HkcChangeShifts changeShift, HkcChangeShifts changeShiftNew)
|
||||
{
|
||||
try
|
||||
{
|
||||
_connection.BeginTransaction();
|
||||
var insertResult = _connection.InsertWithInt32Identity(changeShiftNew);
|
||||
|
||||
int updateResult = _connection.HkcChangeShifts
|
||||
.Where(cs => cs.Id == changeShift.Id)
|
||||
.Set(cs => cs.State, "1")
|
||||
.Set(cs => cs.ToDate, DateTime.Now)
|
||||
.Set(cs=>cs.ToOperator,changeShift.ToOperator).Update();
|
||||
if (insertResult <= 0 || updateResult <= 0)
|
||||
{
|
||||
_connection.RollbackTransaction();
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
_connection.CommitTransaction();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Error($"更新交接班信息异常: {ex.Message}");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<ApplicationIcon>favicon.ico</ApplicationIcon>
|
||||
<Platforms>AnyCPU;x64</Platforms>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
@ -124,7 +124,7 @@
|
|||
async void OnRowSelect(ChannelList cl)
|
||||
{
|
||||
var b = await dialogService.OpenAsync<BoxAddBoxDetailDialog>(
|
||||
$"{cl.DrawerNo}号药箱取药",
|
||||
$"{cl.DrawerNo}号药箱药品入库",
|
||||
new Dictionary<string, object>() { { "boxChannelList", cl } },
|
||||
new DialogOptions() { Width = "85vw", Resizable = true, Draggable = true, ShowClose = false }
|
||||
);
|
||||
|
|
|
@ -8,51 +8,20 @@
|
|||
|
||||
<RadzenStack Gap="1rem" Orientation="Orientation.Vertical" Style="height: 100%;">
|
||||
<RadzenStack>
|
||||
@if (CanTakeDrug)
|
||||
{
|
||||
<RadzenDataGrid Data="@data" AllowAlternatingRows="false">
|
||||
<RadzenDataGrid Data="@boxChannelList.ChannelStocks" AllowAlternatingRows="true"
|
||||
AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} 共{2}条数据">
|
||||
<Columns>
|
||||
<RadzenDataGridColumn Property="ChannelStock" Title="库位">
|
||||
<Template>
|
||||
@context.ChannelStock.DrawerNo - @context.ChannelStock.ColNo
|
||||
</Template>
|
||||
</RadzenDataGridColumn>
|
||||
<RadzenDataGridColumn Property="Drug.DrugName" Title="药品" />
|
||||
<RadzenDataGridColumn Property="Drug.DrugSpec" Title="规格" />
|
||||
<RadzenDataGridColumn Property="ChannelStock.ManuNo" Title="批次" />
|
||||
<RadzenDataGridColumn Property="ChannelStock.EffDate" Title="效期" />
|
||||
<RadzenDataGridColumn Property="Quantity" Title="数量" />
|
||||
<RadzenDataGridColumn Property="ChannelStocks.Drug.DrugName" Title="药品" />
|
||||
<RadzenDataGridColumn Property="ChannelStocks.Drug.DrugSpec" Title="规格" />
|
||||
<RadzenDataGridColumn Property="AddToQuantity" Title="入药箱数量" />
|
||||
<RadzenDataGridColumn Property="Quantity" Title="库存" />
|
||||
</Columns>
|
||||
</RadzenDataGrid>
|
||||
}
|
||||
else
|
||||
{
|
||||
<RadzenDataGrid Data="@data" AllowAlternatingRows="false">
|
||||
<Columns>
|
||||
<RadzenDataGridColumn Property="Drug.DrugName" Title="药品" />
|
||||
<RadzenDataGridColumn Property="Drug.DrugSpec" Title="规格" />
|
||||
<RadzenDataGridColumn Property="Quantity" Title="取药数量" />
|
||||
<RadzenDataGridColumn Property="StockQuantity" Title="库存" />
|
||||
</Columns>
|
||||
</RadzenDataGrid>
|
||||
}
|
||||
|
||||
|
||||
|
||||
</RadzenStack>
|
||||
</RadzenStack>
|
||||
<RadzenStack Orientation="Orientation.Horizontal" JustifyContent="JustifyContent.Center" Gap="0.5rem">
|
||||
@if (status < 2)
|
||||
{
|
||||
<RadzenButton Click="@OpenDrawer" Disabled="!CanTakeDrug" IsBusy="status > 0" BusyText="取药中。。。" ButtonStyle="ButtonStyle.Warning" Variant="Variant.Flat" Text="取药" Style="width: 120px" />
|
||||
}
|
||||
@if (status == 2)
|
||||
{
|
||||
<RadzenButton Click="@TakeFinish" ButtonStyle="ButtonStyle.Success" Variant="Variant.Flat" Text="完成" Style="width: 120px" />
|
||||
}
|
||||
@if (status <= 2)
|
||||
{
|
||||
<RadzenButton Click="@Cancel" Variant="Variant.Flat" Text="取消" Style="width: 120px" />
|
||||
}
|
||||
<RadzenButton Click="@Finish" ButtonStyle="ButtonStyle.Success" Variant="Variant.Flat" Text="保存" Style="width: 120px" />
|
||||
<RadzenButton Click="@Cancel" Variant="Variant.Flat" Text="取消" Style="width: 120px" />
|
||||
|
||||
</RadzenStack>
|
||||
</RadzenStack>
|
||||
|
||||
|
@ -64,10 +33,10 @@
|
|||
@inject PortUtil PortUtil;
|
||||
private readonly ILog logger = LogManager.GetLogger(typeof(OrderDetailDialog));
|
||||
|
||||
int status;
|
||||
|
||||
// int status;
|
||||
bool isLoading;
|
||||
int count;
|
||||
[Parameter] public ChannelList boxChannelList { get; set; }
|
||||
private bool CanTakeDrug = true;
|
||||
|
||||
public List<BoxTakeVo> data { get; set; }
|
||||
//称重取药数量
|
||||
|
@ -78,225 +47,212 @@
|
|||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
data = await channelListDao.getTakeInfoByBox(boxChannelList);
|
||||
// 如果有【stockQuantity】字段说明有药品库存不足
|
||||
if (data.Any(it => it.ChannelStock == null))
|
||||
{
|
||||
CanTakeDrug = false;
|
||||
}
|
||||
base.OnInitializedAsync();
|
||||
}
|
||||
|
||||
async Task OpenDrawer()
|
||||
async Task LoadData(LoadDataArgs args)
|
||||
{
|
||||
this.status = 1;
|
||||
// 解析需要打开的抽屉列表
|
||||
List<BoxTakeVo> drawerNos = this.data.GroupBy(it => it.ChannelStock.DrawerNo).Select(it => it.First()).ToList();
|
||||
isLoading = true;
|
||||
|
||||
// 根据抽屉类型来决定打开前是否需要查询数量
|
||||
var promiseUtil = new PromiseUtil<int>();
|
||||
|
||||
await promiseUtil.taskAsyncLoop(500, 0, async (options, next, stop) =>
|
||||
{
|
||||
var orderTakeVo = drawerNos[options._data];
|
||||
var drawerNo = orderTakeVo.ChannelStock.DrawerNo;
|
||||
try
|
||||
{
|
||||
if (this.status == 0)
|
||||
{
|
||||
stop();
|
||||
}
|
||||
// 开启抽屉
|
||||
else if (this.status == 1)
|
||||
{
|
||||
if (orderTakeVo.Status == 0)
|
||||
{
|
||||
// 判断是否为单支抽屉
|
||||
if (setting.Value.single.Contains(drawerNo))
|
||||
{
|
||||
byte[] quantity = await PortUtil.CheckQuantityByDrawer(drawerNo);
|
||||
orderTakeVo.BeforeQuantity = quantity.Select(it => Convert.ToInt32(it)).ToArray().Skip(3).Take(9).ToArray();
|
||||
logger.Info($"单支抽屉,开抽屉前检测数量【{string.Join(",", orderTakeVo.BeforeQuantity)}】");
|
||||
|
||||
await PortUtil.HasLightOnByCol(drawerNo, data.Where(ot => ot.ChannelStock.DrawerNo == drawerNo).Select(ot => ot.ChannelStock.ColNo).ToArray());
|
||||
}
|
||||
for (int i = 0; i < data.Count; i++)
|
||||
{
|
||||
if (!DrawerNoColNoList.Contains(data[i].ChannelStock.DrawerNo.ToString() + data[i].ChannelStock.ColNo))
|
||||
{
|
||||
if (data[i].ChannelStock.BoardType.ToString().Contains("6"))
|
||||
{
|
||||
PortUtil.DrawerNo = data[i].ChannelStock.DrawerNo;
|
||||
PortUtil.ColNoLst.Add(data[i].ChannelStock.ColNo);
|
||||
|
||||
data[i].BeforeQuantity[data[i].ChannelStock.ColNo - 1] = await PortUtil.CheckQuantityForSingle(data[i].ChannelStock.ColNo);
|
||||
logger.Info($"称重抽屉,开抽屉前检测数量【{string.Join(",", orderTakeVo.BeforeQuantity)}】");
|
||||
await Task.Delay(200);
|
||||
}
|
||||
|
||||
//是药盒抽屉开药盒
|
||||
if (data[i].ChannelStock.BoardType.ToString().Contains("3"))
|
||||
{
|
||||
PortUtil.DrawerNo = data[i].ChannelStock.DrawerNo;
|
||||
await PortUtil.OpenBoxByColNo(data[i].ChannelStock.ColNo);
|
||||
await Task.Delay(200);
|
||||
}
|
||||
DrawerNoColNoList.Add(data[i].ChannelStock.DrawerNo.ToString() + data[i].ChannelStock.ColNo);
|
||||
}
|
||||
}
|
||||
var b = await PortUtil.OpenDrawerStatus(drawerNo);
|
||||
if (b)
|
||||
{
|
||||
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
|
||||
PortUtil.SpeakAsync($"{drawerNo}号抽屉已经打开,请,取药");
|
||||
orderTakeVo.Status = 1;
|
||||
next();
|
||||
}
|
||||
else
|
||||
{
|
||||
_message.Notify(
|
||||
new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"抽屉【{drawerNo}】打开失败,请检测硬件", Duration = 4000 }
|
||||
);
|
||||
logger.Info($"抽屉打开失败");
|
||||
PortUtil.AllLightOff();
|
||||
RestData();
|
||||
stop();
|
||||
}
|
||||
}
|
||||
// 检测状态
|
||||
else if (orderTakeVo.Status == 1)
|
||||
{
|
||||
// 查询抽屉是否为关闭状态
|
||||
var b = await PortUtil.CheckDrawerStatus2(drawerNo);
|
||||
// 关闭则改变状态并终止循环
|
||||
if (b)
|
||||
{
|
||||
|
||||
data.ForEach(cl =>
|
||||
{
|
||||
if (cl.ChannelStock.DrawerNo == drawerNo)
|
||||
{
|
||||
cl.GetQuantity = cl.Quantity;
|
||||
|
||||
}
|
||||
});
|
||||
orderTakeVo.Status = 2;
|
||||
PortUtil.AllLightOff();
|
||||
if (options._data == drawerNos.Count - 1)
|
||||
{
|
||||
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
|
||||
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
|
||||
PortUtil.SpeakAsync($"取药完成,请,点击完成按钮进行确认");
|
||||
this.status = 2;
|
||||
string alertMessage = string.Empty;
|
||||
//检查是否称重抽屉,核对实际取出数量是否与应取数量一致,不一致则弹出提示
|
||||
for (int i = 0; i < data.Count; i++)
|
||||
{
|
||||
if (data[i].ChannelStock.BoardType.ToString().Contains("6"))
|
||||
{
|
||||
PortUtil.DrawerNo = data[i].ChannelStock.DrawerNo;// drawerNo;
|
||||
PortUtil.ColNoLst.Add(data[i].ChannelStock.ColNo);
|
||||
|
||||
orderTakeVo.AfterQuantity[data[i].ChannelStock.ColNo - 1] = await PortUtil.CheckQuantityForSingle(data[i].ChannelStock.ColNo);
|
||||
logger.Info($"称重抽屉,关抽屉后检测数量【{string.Join(",", orderTakeVo.AfterQuantity)}】");
|
||||
WeightFinnalQuantity[data[i].ChannelStock.ColNo - 1] = data[i].BeforeQuantity[data[i].ChannelStock.ColNo - 1] - orderTakeVo.AfterQuantity[data[i].ChannelStock.ColNo - 1];
|
||||
if (data[i].Quantity != WeightFinnalQuantity[data[i].ChannelStock.ColNo - 1])
|
||||
{
|
||||
//称重自动计数数量与实际要取数量不一致弹出提示,确认后保存数据
|
||||
alertMessage += $"{data[i].Drug.DrugName}应取数量【{data[i].Quantity}】,实际取出数量【{WeightFinnalQuantity[data[i].ChannelStock.ColNo - 1]}】";
|
||||
|
||||
}
|
||||
await Task.Delay(200);
|
||||
}
|
||||
|
||||
if (data[i].ChannelStock.BoardType.ToString().Contains("2"))
|
||||
{
|
||||
byte[] quantity = await PortUtil.CheckQuantityByDrawer(drawerNo);
|
||||
orderTakeVo.AfterQuantity = quantity.Select(it => Convert.ToInt32(it)).ToArray().Skip(3).Take(9).ToArray();
|
||||
logger.Info($"单支抽屉,关抽屉后检测数量【{string.Join(",", orderTakeVo.AfterQuantity)}】");
|
||||
WeightFinnalQuantity[data[i].ChannelStock.ColNo - 1] = orderTakeVo.BeforeQuantity[data[i].ChannelStock.ColNo - 1] - orderTakeVo.AfterQuantity[data[i].ChannelStock.ColNo - 1];
|
||||
if (data[i].Quantity != WeightFinnalQuantity[data[i].ChannelStock.ColNo - 1])
|
||||
{
|
||||
alertMessage += $"{data[i].Drug.DrugName}应取数量【{orderTakeVo.Quantity}】,实际取出数量【{WeightFinnalQuantity[data[i].ChannelStock.ColNo - 1]}】";
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!string.IsNullOrEmpty(alertMessage))
|
||||
{
|
||||
//弹出确认对话框
|
||||
alertMessage += "应取数与实际取出数不一致确认要保存吗?";
|
||||
//弹出确认提示框
|
||||
var confirm = await dialogService.OpenAsync<ConfirmDialog>(
|
||||
$"保存确认",
|
||||
new Dictionary<string, object>() { { "confirmInfo", alertMessage } },
|
||||
new DialogOptions() { Width = "45vw", Resizable = true, Draggable = true, ShowClose = false });
|
||||
logger.Info(alertMessage);
|
||||
if (!confirm)
|
||||
{
|
||||
RestData();
|
||||
logger.Info("取消保存");
|
||||
// 关闭弹窗
|
||||
dialogService.Close(false);
|
||||
}
|
||||
}
|
||||
stop();
|
||||
}
|
||||
else
|
||||
{
|
||||
options._data += 1;
|
||||
next();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
next(); // continue iteration
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
RestData();
|
||||
logger.Info($"{boxChannelList.DrawerNo}药盒取药发生错误,{e.Message}");
|
||||
_message.Notify(
|
||||
new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"发生错误,{e.Message}", Duration = 4000 }
|
||||
);
|
||||
if (setting.Value.single.Contains(drawerNo))
|
||||
{
|
||||
PortUtil.AllLightOff();
|
||||
}
|
||||
stop();
|
||||
}
|
||||
});
|
||||
data = await channelListDao.getBoxWaitByBox(boxChannelList, args.Top, args.Skip);
|
||||
// Update the Data property
|
||||
isLoading = false;
|
||||
}
|
||||
// async Task OpenDrawer()
|
||||
// {
|
||||
// this.status = 1;
|
||||
// // 解析需要打开的抽屉列表
|
||||
// List<BoxTakeVo> drawerNos = this.data.GroupBy(it => it.ChannelStock.DrawerNo).Select(it => it.First()).ToList();
|
||||
|
||||
// // 根据抽屉类型来决定打开前是否需要查询数量
|
||||
// var promiseUtil = new PromiseUtil<int>();
|
||||
|
||||
// await promiseUtil.taskAsyncLoop(500, 0, async (options, next, stop) =>
|
||||
// {
|
||||
// var orderTakeVo = drawerNos[options._data];
|
||||
// var drawerNo = orderTakeVo.ChannelStock.DrawerNo;
|
||||
// try
|
||||
// {
|
||||
// if (this.status == 0)
|
||||
// {
|
||||
// stop();
|
||||
// }
|
||||
// // 开启抽屉
|
||||
// else if (this.status == 1)
|
||||
// {
|
||||
// if (orderTakeVo.Status == 0)
|
||||
// {
|
||||
// // 判断是否为单支抽屉
|
||||
// if (setting.Value.single.Contains(drawerNo))
|
||||
// {
|
||||
// byte[] quantity = await PortUtil.CheckQuantityByDrawer(drawerNo);
|
||||
// orderTakeVo.BeforeQuantity = quantity.Select(it => Convert.ToInt32(it)).ToArray().Skip(3).Take(9).ToArray();
|
||||
// logger.Info($"单支抽屉,开抽屉前检测数量【{string.Join(",", orderTakeVo.BeforeQuantity)}】");
|
||||
|
||||
// await PortUtil.HasLightOnByCol(drawerNo, data.Where(ot => ot.ChannelStock.DrawerNo == drawerNo).Select(ot => ot.ChannelStock.ColNo).ToArray());
|
||||
// }
|
||||
// for (int i = 0; i < data.Count; i++)
|
||||
// {
|
||||
// if (!DrawerNoColNoList.Contains(data[i].ChannelStock.DrawerNo.ToString() + data[i].ChannelStock.ColNo))
|
||||
// {
|
||||
// if (data[i].ChannelStock.BoardType.ToString().Contains("6"))
|
||||
// {
|
||||
// PortUtil.DrawerNo = data[i].ChannelStock.DrawerNo;
|
||||
// PortUtil.ColNoLst.Add(data[i].ChannelStock.ColNo);
|
||||
|
||||
// data[i].BeforeQuantity[data[i].ChannelStock.ColNo - 1] = await PortUtil.CheckQuantityForSingle(data[i].ChannelStock.ColNo);
|
||||
// logger.Info($"称重抽屉,开抽屉前检测数量【{string.Join(",", orderTakeVo.BeforeQuantity)}】");
|
||||
// await Task.Delay(200);
|
||||
// }
|
||||
|
||||
// //是药盒抽屉开药盒
|
||||
// if (data[i].ChannelStock.BoardType.ToString().Contains("3"))
|
||||
// {
|
||||
// PortUtil.DrawerNo = data[i].ChannelStock.DrawerNo;
|
||||
// await PortUtil.OpenBoxByColNo(data[i].ChannelStock.ColNo);
|
||||
// await Task.Delay(200);
|
||||
// }
|
||||
// DrawerNoColNoList.Add(data[i].ChannelStock.DrawerNo.ToString() + data[i].ChannelStock.ColNo);
|
||||
// }
|
||||
// }
|
||||
// var b = await PortUtil.OpenDrawerStatus(drawerNo);
|
||||
// if (b)
|
||||
// {
|
||||
// PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
|
||||
// PortUtil.SpeakAsync($"{drawerNo}号抽屉已经打开,请,取药");
|
||||
// orderTakeVo.Status = 1;
|
||||
// next();
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// _message.Notify(
|
||||
// new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"抽屉【{drawerNo}】打开失败,请检测硬件", Duration = 4000 }
|
||||
// );
|
||||
// logger.Info($"抽屉打开失败");
|
||||
// PortUtil.AllLightOff();
|
||||
// RestData();
|
||||
// stop();
|
||||
// }
|
||||
// }
|
||||
// // 检测状态
|
||||
// else if (orderTakeVo.Status == 1)
|
||||
// {
|
||||
// // 查询抽屉是否为关闭状态
|
||||
// var b = await PortUtil.CheckDrawerStatus2(drawerNo);
|
||||
// // 关闭则改变状态并终止循环
|
||||
// if (b)
|
||||
// {
|
||||
|
||||
// data.ForEach(cl =>
|
||||
// {
|
||||
// if (cl.ChannelStock.DrawerNo == drawerNo)
|
||||
// {
|
||||
// cl.GetQuantity = cl.Quantity;
|
||||
|
||||
// }
|
||||
// });
|
||||
// orderTakeVo.Status = 2;
|
||||
// PortUtil.AllLightOff();
|
||||
// if (options._data == drawerNos.Count - 1)
|
||||
// {
|
||||
// PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
|
||||
// PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
|
||||
// PortUtil.SpeakAsync($"取药完成,请,点击完成按钮进行确认");
|
||||
// this.status = 2;
|
||||
// string alertMessage = string.Empty;
|
||||
// //检查是否称重抽屉,核对实际取出数量是否与应取数量一致,不一致则弹出提示
|
||||
// for (int i = 0; i < data.Count; i++)
|
||||
// {
|
||||
// if (data[i].ChannelStock.BoardType.ToString().Contains("6"))
|
||||
// {
|
||||
// PortUtil.DrawerNo = data[i].ChannelStock.DrawerNo;// drawerNo;
|
||||
// PortUtil.ColNoLst.Add(data[i].ChannelStock.ColNo);
|
||||
|
||||
// orderTakeVo.AfterQuantity[data[i].ChannelStock.ColNo - 1] = await PortUtil.CheckQuantityForSingle(data[i].ChannelStock.ColNo);
|
||||
// logger.Info($"称重抽屉,关抽屉后检测数量【{string.Join(",", orderTakeVo.AfterQuantity)}】");
|
||||
// WeightFinnalQuantity[data[i].ChannelStock.ColNo - 1] = data[i].BeforeQuantity[data[i].ChannelStock.ColNo - 1] - orderTakeVo.AfterQuantity[data[i].ChannelStock.ColNo - 1];
|
||||
// if (data[i].Quantity != WeightFinnalQuantity[data[i].ChannelStock.ColNo - 1])
|
||||
// {
|
||||
// //称重自动计数数量与实际要取数量不一致弹出提示,确认后保存数据
|
||||
// alertMessage += $"{data[i].Drug.DrugName}应取数量【{data[i].Quantity}】,实际取出数量【{WeightFinnalQuantity[data[i].ChannelStock.ColNo - 1]}】";
|
||||
|
||||
// }
|
||||
// await Task.Delay(200);
|
||||
// }
|
||||
|
||||
// if (data[i].ChannelStock.BoardType.ToString().Contains("2"))
|
||||
// {
|
||||
// byte[] quantity = await PortUtil.CheckQuantityByDrawer(drawerNo);
|
||||
// orderTakeVo.AfterQuantity = quantity.Select(it => Convert.ToInt32(it)).ToArray().Skip(3).Take(9).ToArray();
|
||||
// logger.Info($"单支抽屉,关抽屉后检测数量【{string.Join(",", orderTakeVo.AfterQuantity)}】");
|
||||
// WeightFinnalQuantity[data[i].ChannelStock.ColNo - 1] = orderTakeVo.BeforeQuantity[data[i].ChannelStock.ColNo - 1] - orderTakeVo.AfterQuantity[data[i].ChannelStock.ColNo - 1];
|
||||
// if (data[i].Quantity != WeightFinnalQuantity[data[i].ChannelStock.ColNo - 1])
|
||||
// {
|
||||
// alertMessage += $"{data[i].Drug.DrugName}应取数量【{orderTakeVo.Quantity}】,实际取出数量【{WeightFinnalQuantity[data[i].ChannelStock.ColNo - 1]}】";
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// if (!string.IsNullOrEmpty(alertMessage))
|
||||
// {
|
||||
// //弹出确认对话框
|
||||
// alertMessage += "应取数与实际取出数不一致确认要保存吗?";
|
||||
// //弹出确认提示框
|
||||
// var confirm = await dialogService.OpenAsync<ConfirmDialog>(
|
||||
// $"保存确认",
|
||||
// new Dictionary<string, object>() { { "confirmInfo", alertMessage } },
|
||||
// new DialogOptions() { Width = "45vw", Resizable = true, Draggable = true, ShowClose = false });
|
||||
// logger.Info(alertMessage);
|
||||
// if (!confirm)
|
||||
// {
|
||||
// RestData();
|
||||
// logger.Info("取消保存");
|
||||
// // 关闭弹窗
|
||||
// dialogService.Close(false);
|
||||
// }
|
||||
// }
|
||||
// stop();
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// options._data += 1;
|
||||
// next();
|
||||
// }
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// next(); // continue iteration
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
// }
|
||||
|
||||
// }
|
||||
// catch (Exception e)
|
||||
// {
|
||||
// RestData();
|
||||
// logger.Info($"{boxChannelList.DrawerNo}药盒取药发生错误,{e.Message}");
|
||||
// _message.Notify(
|
||||
// new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"发生错误,{e.Message}", Duration = 4000 }
|
||||
// );
|
||||
// if (setting.Value.single.Contains(drawerNo))
|
||||
// {
|
||||
// PortUtil.AllLightOff();
|
||||
// }
|
||||
// stop();
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
|
||||
void RestData()
|
||||
{
|
||||
PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
|
||||
this.status = 0;
|
||||
data.ForEach(it =>
|
||||
{
|
||||
it.Status = 0;
|
||||
it.BeforeQuantity = new int[9];
|
||||
it.AfterQuantity = new int[9];
|
||||
});
|
||||
this.WeightFinnalQuantity = new int[9];
|
||||
DrawerNoColNoList.Clear();
|
||||
}
|
||||
void Cancel()
|
||||
{
|
||||
RestData();
|
||||
// 关闭弹窗
|
||||
dialogService.Close(false);
|
||||
}
|
||||
async Task TakeFinish()
|
||||
async Task Finish()
|
||||
{
|
||||
|
||||
// 保存账册、操作记录
|
||||
var b = await channelListDao.BoxTakeFinish(data, boxChannelList);
|
||||
var b = await channelListDao.BoxAddBoxFinish(boxChannelList);
|
||||
if (!b)
|
||||
{
|
||||
_message.Notify(new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"数据保存失败", Duration = 4000 });
|
||||
|
@ -310,8 +266,6 @@
|
|||
dialogService.Close(true);
|
||||
|
||||
}
|
||||
//重置状态
|
||||
this.RestData();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,114 +1,330 @@
|
|||
@page "/setting/Change"
|
||||
@page "/0"
|
||||
@using MasaBlazorApp3.Pojo.Config;
|
||||
@using MasaBlazorApp3.Pojo.Vo;
|
||||
@using MasaBlazorApp3.Util;
|
||||
@using Microsoft.Extensions.Options;
|
||||
@using Newtonsoft.Json;
|
||||
@using log4net;
|
||||
<style>
|
||||
.rz-dialog-content {
|
||||
padding: 0 !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-12 mb-4">
|
||||
<RadzenRow Gap="0" Style="overflow: hidden;width:100%;height:100%">
|
||||
<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)
|
||||
{
|
||||
<RadzenText TextStyle="TextStyle.H5" class="rz-color-white">
|
||||
请交班操作人 @FromOperator?.NickName
|
||||
<p>登录验证</p>
|
||||
</RadzenText>
|
||||
}
|
||||
else if (userI == 2)
|
||||
{
|
||||
<RadzenText TextStyle="TextStyle.H5" class="rz-color-white">
|
||||
请交班复核人 @FromRviewer?.NickName
|
||||
<p>登录验证</p>
|
||||
</RadzenText>
|
||||
}
|
||||
else
|
||||
@if (userI == 3)
|
||||
{
|
||||
<RadzenText TextStyle="TextStyle.H5" class="rz-color-white">
|
||||
请接班操作人 @ToOperator?.NickName
|
||||
<p>登录验证</p>
|
||||
</RadzenText>
|
||||
}
|
||||
else if (userI == 4)
|
||||
{
|
||||
<RadzenText TextStyle="TextStyle.H5" class="rz-color-white">
|
||||
请接班复核人 @ToReviewer?.NickName
|
||||
<p>登录验证</p>
|
||||
</RadzenText>
|
||||
}
|
||||
</RadzenCard>
|
||||
</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">
|
||||
登录
|
||||
</RadzenText>
|
||||
<RadzenTemplateForm Data="@loginModel" Submit="@((Pojo.User args) => { Submit(args); })" Style="width:100%;height:100%">
|
||||
<div class="rz-form-row">
|
||||
<label class="rz-label" for="username">账号</label>
|
||||
<div class="rz-form-input-wrapper">
|
||||
<!--@onfocusin="@(() => Util.VirtualKeyboardHelper.ShowVirtualKeyboard())"-->
|
||||
<RadzenTextBox id="username" Name="Username" @bind-Value="@loginModel.Username" Style="width:100%" />
|
||||
<RadzenRequiredValidator Component="Username" Text="请填写用户名" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="rz-form-row">
|
||||
<label class="rz-label" for="password">密码</label>
|
||||
<div class="rz-form-input-wrapper">
|
||||
<RadzenPassword id="password" Name="Password" @bind-Value="@loginModel.Password" Style="width:100%" />
|
||||
<RadzenRequiredValidator Component="Password" Text="请填写密码" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="rz-form-row">
|
||||
<label class="rz-label"></label>
|
||||
<div class="rz-form-input-wrapper rz-login-buttons">
|
||||
<RadzenButton Style="background:#255dd4;color:white;width:110px" ButtonType="ButtonType.Submit" Text="登录" />
|
||||
<RadzenButton Style="border-color:#255dd4;width:110px" Variant="Variant.Outlined" Text="取消" Click="@Exit" />
|
||||
|
||||
<form onsubmit="@(() => grid.Reload())">
|
||||
<RadzenFieldset Text="查询">
|
||||
<RadzenStack Orientation="Orientation.Horizontal" Gap="1rem">
|
||||
<RadzenRow AlignItems="AlignItems.Center">
|
||||
<RadzenColumn Size="4">
|
||||
<RadzenLabel Text="开始时间" Component="Start" />
|
||||
</RadzenColumn>
|
||||
<RadzenColumn Size="8">
|
||||
<RadzenDatePicker DateFormat="yyyy-MM-dd HH:mm:ss" ShowTime="true" @bind-Value="start" Style="width: 100%;" Name="Start" />
|
||||
</RadzenColumn>
|
||||
</RadzenRow>
|
||||
<RadzenRow AlignItems="AlignItems.Center">
|
||||
<RadzenColumn Size="4">
|
||||
<RadzenLabel Text="结束时间" Component="End" />
|
||||
</RadzenColumn>
|
||||
<RadzenColumn Size="8">
|
||||
<RadzenDatePicker DateFormat="yyyy-MM-dd HH:mm:ss" ShowTime="true" @bind-Value="end" Style="width: 100%;" Name="End" />
|
||||
</RadzenColumn>
|
||||
</RadzenRow>
|
||||
</div>
|
||||
</div>
|
||||
</RadzenTemplateForm>
|
||||
</RadzenCard>
|
||||
</RadzenColumn>
|
||||
|
||||
<RadzenRow AlignItems="AlignItems.Center">
|
||||
<RadzenColumn Size="12">
|
||||
<RadzenButton Size="ButtonSize.Large" ButtonType="ButtonType.Submit" IsBusy="isLoading" Icon="search" Text="查询" />
|
||||
<RadzenButton Size="ButtonSize.Large" Click="reloadGrid" IsBusy="isLoading" Icon="refresh" Text="重置" ButtonStyle="ButtonStyle.Warning" />
|
||||
</RadzenColumn>
|
||||
</RadzenRow>
|
||||
</RadzenStack>
|
||||
</RadzenFieldset>
|
||||
</form>
|
||||
</div>
|
||||
<div class="col-12 mb-4">
|
||||
|
||||
<RadzenDataGrid @ref="grid"
|
||||
LoadData="@LoadData"
|
||||
IsLoading="@isLoading"
|
||||
Count="@count"
|
||||
EmptyText="无数据"
|
||||
Data="@_forecasts"
|
||||
AllowColumnResize="true" AllowAlternatingRows="false"
|
||||
SelectionMode="DataGridSelectionMode.Single"
|
||||
AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} 共{2}条数据">
|
||||
<Columns>
|
||||
<RadzenDataGridColumn Title="日期" Property="optDate">
|
||||
<Template Context="mr">
|
||||
@mr.optDate.ToString("yyyy-MM-dd")
|
||||
</Template>
|
||||
</RadzenDataGridColumn>
|
||||
<RadzenDataGridColumn Title="交班人发药人" Property="FromOperator"></RadzenDataGridColumn>
|
||||
<RadzenDataGridColumn Title="交班人审核人" Property="FromRviewer"></RadzenDataGridColumn>
|
||||
<RadzenDataGridColumn Title="接班人发药人" Property="ToOperator"></RadzenDataGridColumn>
|
||||
<RadzenDataGridColumn Title="接班人审核人" Property="ToReviewer"></RadzenDataGridColumn>
|
||||
<RadzenDataGridColumn Title="接班日期" Property="ToDate">
|
||||
|
||||
<Template Context="mr">
|
||||
@mr.ToDate.ToString("yyyy-MM-dd")
|
||||
</Template>
|
||||
</RadzenDataGridColumn>
|
||||
<RadzenDataGridColumn Title="当班状态" Property="State">
|
||||
</RadzenDataGridColumn>
|
||||
<RadzenDataGridColumn title="库位" Property="Location"></RadzenDataGridColumn>
|
||||
</Columns>
|
||||
</RadzenDataGrid>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</RadzenRow>
|
||||
|
||||
@code {
|
||||
@inject IHkcChangeShiftsDao hkcChangeShiftsDao;
|
||||
@inject DialogService dialogService;
|
||||
@inject Radzen.DialogService dialogService;
|
||||
|
||||
@inject NavigationManager navigate;
|
||||
RadzenDataGrid<HkcChangeShifts> grid;
|
||||
bool isLoading;
|
||||
int count;
|
||||
private IEnumerable<HkcChangeShifts>? _forecasts;
|
||||
DateTime start;
|
||||
DateTime end;
|
||||
@inject FingerprintUtil FingerprintUtil;
|
||||
@inject PortUtil PortUtil;
|
||||
@inject NavigationManager na;
|
||||
@inject NotificationService _message
|
||||
@inject GlobalStateService globalStateService;
|
||||
@inject IUserDao userDao;
|
||||
@inject Microsoft.Extensions.Options.IOptions<Pojo.Config.SettingConfig> setting;
|
||||
|
||||
|
||||
[Parameter] public string type { get; set; }
|
||||
|
||||
protected override void OnParametersSet()
|
||||
private readonly ILog logger = LogManager.GetLogger(typeof(LoginDialog));
|
||||
|
||||
private int loginMode = 1;
|
||||
private bool opFirst = true;
|
||||
[Parameter] public int userI { get; set; }
|
||||
|
||||
Pojo.User FromOperator = new Pojo.User();
|
||||
Pojo.User FromRviewer = new Pojo.User();
|
||||
Pojo.User ToOperator = new Pojo.User();
|
||||
Pojo.User ToReviewer = new Pojo.User();
|
||||
|
||||
HkcChangeShifts hkcChange = new HkcChangeShifts();
|
||||
|
||||
bool isShow;
|
||||
|
||||
private Pojo.User loginModel = new();
|
||||
|
||||
protected override Task OnInitializedAsync()
|
||||
{
|
||||
if (grid != null)
|
||||
FingerprintUtil.axCZKEM1.OnAttTransactionEx += axCZKEM1_OnAttTransactionEx;
|
||||
|
||||
loginMode = setting.Value.loginMode;
|
||||
opFirst = setting.Value.opFirst;
|
||||
|
||||
//查询当前值班信息
|
||||
hkcChange = userDao.GetOnDuty();
|
||||
if (hkcChange != null && !string.IsNullOrEmpty(hkcChange.FromOperator))
|
||||
{
|
||||
reloadGrid();
|
||||
FromOperator = userDao.GetByUsername(hkcChange.FromOperator);
|
||||
}
|
||||
if (hkcChange != null && string.IsNullOrEmpty(hkcChange.FromRviewer))
|
||||
{
|
||||
FromRviewer = userDao.GetByUsername(hkcChange.FromRviewer);
|
||||
}
|
||||
return base.OnInitializedAsync();
|
||||
}
|
||||
|
||||
private async Task SetUser(Pojo.User user)
|
||||
{
|
||||
if (userI == 1)
|
||||
{
|
||||
if(FromOperator.Id != user.Id)
|
||||
{
|
||||
_message.Notify(
|
||||
new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"值班操作人有误,请核查当前值班人", Duration = 3000 }
|
||||
);
|
||||
return;
|
||||
}
|
||||
//交班人操作人登录
|
||||
if (FromRviewer != null)
|
||||
{
|
||||
userI = 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
userI = 3;
|
||||
}
|
||||
|
||||
}
|
||||
else if (userI == 2)
|
||||
{
|
||||
if (FromOperator != null && FromOperator.Id == user.Id)
|
||||
{
|
||||
_message.Notify(
|
||||
new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"验证重复,请使用其他账号", Duration = 3000 }
|
||||
);
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(FromRviewer.Id!=user.Id)
|
||||
{
|
||||
_message.Notify(
|
||||
new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"值班审核人有误,请核查当前值班人", Duration = 3000 }
|
||||
);
|
||||
return;
|
||||
}
|
||||
FromRviewer = user;
|
||||
userI = 3;
|
||||
}
|
||||
}
|
||||
else if (userI == 3)
|
||||
{
|
||||
if (loginMode == 2)
|
||||
{
|
||||
if (FromOperator.Id == user.Id || (FromRviewer != null && FromRviewer.Id == user.Id))
|
||||
{
|
||||
_message.Notify(
|
||||
new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"验证重复,请使用其他账号", Duration = 3000 }
|
||||
);
|
||||
return;
|
||||
}
|
||||
userI = 4;
|
||||
ToOperator = user;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (FromOperator.Id == user.Id || (FromRviewer != null && FromRviewer.Id == user.Id))
|
||||
{
|
||||
_message.Notify(
|
||||
new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"验证重复,请使用其他账号", Duration = 3000 }
|
||||
);
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
ToOperator = user;
|
||||
//保存交接班信息
|
||||
HkcChangeShifts hkcChangeNew = new HkcChangeShifts
|
||||
{
|
||||
FromOperator = ToOperator.Username,
|
||||
optDate = DateTime.Now,
|
||||
ToDate = DateTime.Now,
|
||||
State = "0", //状态为1表示交接班完成
|
||||
MachineId = hkcChange.MachineId
|
||||
};
|
||||
hkcChange.ToOperator = ToOperator.Username;
|
||||
bool bResult = await userDao.UpdateChangeShift(hkcChange, hkcChangeNew);
|
||||
if (bResult)
|
||||
{
|
||||
FingerprintUtil.axCZKEM1.OnAttTransactionEx -= axCZKEM1_OnAttTransactionEx;
|
||||
logger.Info($"交接班完成,交班人{FromOperator.NickName};{FromRviewer?.NickName},接班人{ToOperator?.NickName};{ToOperator?.NickName}");
|
||||
_message.Notify(
|
||||
new NotificationMessage { Severity = NotificationSeverity.Success, Summary = "提示", Detail = $"交接班完成", Duration = 3000 }
|
||||
);
|
||||
dialogService.Close(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
_message.Notify(
|
||||
new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = "交接班保存数据失败", Duration = 3000 }
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (userI == 4)
|
||||
{
|
||||
if (FromOperator.Id == user.Id || (FromRviewer != null && FromRviewer.Id == user.Id) || (ToOperator != null && ToOperator.Id == user.Id))
|
||||
{
|
||||
_message.Notify(
|
||||
new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"验证重复,请使用其他账号", Duration = 3000 }
|
||||
);
|
||||
return;
|
||||
}
|
||||
ToReviewer = user;
|
||||
hkcChange.ToReviewer = ToReviewer?.Username;
|
||||
//保存交接班信息
|
||||
HkcChangeShifts hkcChangeNew = new HkcChangeShifts
|
||||
{
|
||||
FromOperator = ToOperator.Username,
|
||||
FromRviewer = ToReviewer?.Username,
|
||||
optDate = DateTime.Now,
|
||||
State = "0", //状态为1表示交接班完成
|
||||
MachineId = hkcChange.MachineId
|
||||
};
|
||||
bool bResult = await userDao.UpdateChangeShift(hkcChange, hkcChangeNew);
|
||||
if (bResult)
|
||||
{
|
||||
FingerprintUtil.axCZKEM1.OnAttTransactionEx -= axCZKEM1_OnAttTransactionEx;
|
||||
logger.Info($"交接班完成,交班人{FromOperator.NickName};{FromRviewer?.NickName},接班人{ToOperator?.NickName};{ToReviewer?.NickName}");
|
||||
_message.Notify(
|
||||
new NotificationMessage { Severity = NotificationSeverity.Success, Summary = "提示", Detail = $"交接班完成", Duration = 3000 }
|
||||
);
|
||||
dialogService.Close(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
_message.Notify(
|
||||
new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = "交接班保存数据失败", Duration = 3000 }
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
async Task LoadData(LoadDataArgs args)
|
||||
|
||||
|
||||
|
||||
private void Submit(Pojo.User user)
|
||||
{
|
||||
isLoading = true;
|
||||
Pojo.User u = userDao.GetByUsername(loginModel.Username);
|
||||
if (u != null)
|
||||
{
|
||||
if (Util.MD5.GetMD5Hash(loginModel.Password).ToLower().Equals(u.Password))
|
||||
{
|
||||
SetUser(u);
|
||||
loginModel.Username = "";
|
||||
loginModel.Password = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
_message.Notify(
|
||||
new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"密码错误", Duration = 4000 }
|
||||
);
|
||||
logger.Info($"用户【{u.NickName}】密码输入错误");
|
||||
|
||||
var result = await hkcChangeShiftsDao.GetChangeShiftRecordAsync(start, end,args.Top, args.Skip);
|
||||
// Update the Data property
|
||||
_forecasts = result.Desserts;
|
||||
// Update the count
|
||||
count = result.TotalDesserts;
|
||||
}
|
||||
|
||||
isLoading = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
_message.Notify(
|
||||
new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"无此用户", Duration = 4000 }
|
||||
);
|
||||
logger.Info($"没有用户:【{loginModel.Username}】");
|
||||
}
|
||||
}
|
||||
|
||||
async Task reloadGrid()
|
||||
private void axCZKEM1_OnAttTransactionEx(string sEnrollNumber, int iIsInValid, int iAttState, int iVerifyMethod, int iYear, int iMonth, int iDay, int iHour, int iMinute, int iSecond, int iWorkCode)
|
||||
{
|
||||
start = DateTime.MinValue;
|
||||
end = DateTime.MinValue;
|
||||
await grid.Reload();
|
||||
|
||||
Pojo.User u = userDao.GetById(Convert.ToInt32(sEnrollNumber));
|
||||
if (u != null)
|
||||
{
|
||||
SetUser(u);
|
||||
InvokeAsync(StateHasChanged);
|
||||
}
|
||||
else
|
||||
{
|
||||
_message.Notify(
|
||||
new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"系统中没有ID为【{sEnrollNumber}】的用户", Duration = 4000 }
|
||||
);
|
||||
logger.Info($"指纹机验证通过id为【{sEnrollNumber}】,但是华康数据库中无此用户");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void Exit()
|
||||
{
|
||||
dialogService.Close(false);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,123 @@
|
|||
@page "/stock/Change"
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-12 mb-4">
|
||||
|
||||
<form onsubmit="@(() => grid.Reload())">
|
||||
<RadzenFieldset Text="查询">
|
||||
<RadzenStack Orientation="Orientation.Horizontal" Gap="1rem">
|
||||
<RadzenRow AlignItems="AlignItems.Center">
|
||||
<RadzenColumn Size="4">
|
||||
<RadzenLabel Text="开始时间" Component="Start" />
|
||||
</RadzenColumn>
|
||||
<RadzenColumn Size="8">
|
||||
<RadzenDatePicker DateFormat="yyyy-MM-dd HH:mm:ss" ShowTime="true" @bind-Value="start" Style="width: 100%;" Name="Start" />
|
||||
</RadzenColumn>
|
||||
</RadzenRow>
|
||||
<RadzenRow AlignItems="AlignItems.Center">
|
||||
<RadzenColumn Size="4">
|
||||
<RadzenLabel Text="结束时间" Component="End" />
|
||||
</RadzenColumn>
|
||||
<RadzenColumn Size="8">
|
||||
<RadzenDatePicker DateFormat="yyyy-MM-dd HH:mm:ss" ShowTime="true" @bind-Value="end" Style="width: 100%;" Name="End" />
|
||||
</RadzenColumn>
|
||||
</RadzenRow>
|
||||
|
||||
<RadzenRow AlignItems="AlignItems.Center">
|
||||
<RadzenColumn Size="12">
|
||||
<RadzenButton Size="ButtonSize.Large" ButtonType="ButtonType.Submit" IsBusy="isLoading" Icon="search" Text="查询" />
|
||||
<RadzenButton Size="ButtonSize.Large" Click="reloadGrid" IsBusy="isLoading" Icon="refresh" Text="重置" ButtonStyle="ButtonStyle.Warning" />
|
||||
</RadzenColumn>
|
||||
</RadzenRow>
|
||||
</RadzenStack>
|
||||
</RadzenFieldset>
|
||||
</form>
|
||||
</div>
|
||||
<div class="col-12 mb-4">
|
||||
|
||||
<RadzenDataGrid @ref="grid"
|
||||
LoadData="@LoadData"
|
||||
IsLoading="@isLoading"
|
||||
Count="@count"
|
||||
EmptyText="无数据"
|
||||
Data="@_forecasts"
|
||||
AllowColumnResize="true" AllowAlternatingRows="false"
|
||||
SelectionMode="DataGridSelectionMode.Single"
|
||||
AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} 共{2}条数据">
|
||||
<Columns>
|
||||
<RadzenDataGridColumn Title="日期" Property="optDate">
|
||||
<Template Context="mr">
|
||||
@mr.optDate.ToString("yyyy-MM-dd")
|
||||
</Template>
|
||||
</RadzenDataGridColumn>
|
||||
<RadzenDataGridColumn Title="交班发药人" Property="FromOperator"></RadzenDataGridColumn>
|
||||
<RadzenDataGridColumn Title="交班审核人" Property="FromRviewer"></RadzenDataGridColumn>
|
||||
<RadzenDataGridColumn Title="接班发药人" Property="ToOperator"></RadzenDataGridColumn>
|
||||
<RadzenDataGridColumn Title="接班审核人" Property="ToReviewer"></RadzenDataGridColumn>
|
||||
<RadzenDataGridColumn Title="接班日期" Property="ToDate">
|
||||
|
||||
<Template Context="mr">
|
||||
@mr.ToDate.ToString("yyyy-MM-dd")
|
||||
</Template>
|
||||
</RadzenDataGridColumn>
|
||||
<RadzenDataGridColumn Title="当班状态" Property="State">
|
||||
<Template Context="state">
|
||||
@if(state.State=="0")
|
||||
{
|
||||
<RadzenText>值班中</RadzenText>
|
||||
}
|
||||
else
|
||||
{
|
||||
<RadzenText>已交班</RadzenText>
|
||||
}
|
||||
</Template>
|
||||
</RadzenDataGridColumn>
|
||||
</Columns>
|
||||
</RadzenDataGrid>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@code {
|
||||
@inject IHkcChangeShiftsDao hkcChangeShiftsDao;
|
||||
@inject DialogService dialogService;
|
||||
|
||||
@inject NavigationManager navigate;
|
||||
RadzenDataGrid<HkcChangeShifts> grid;
|
||||
bool isLoading;
|
||||
int count;
|
||||
private IEnumerable<HkcChangeShifts>? _forecasts;
|
||||
DateTime start;
|
||||
DateTime end;
|
||||
|
||||
|
||||
[Parameter] public string type { get; set; }
|
||||
|
||||
protected override void OnParametersSet()
|
||||
{
|
||||
if (grid != null)
|
||||
{
|
||||
reloadGrid();
|
||||
}
|
||||
}
|
||||
async Task LoadData(LoadDataArgs args)
|
||||
{
|
||||
isLoading = true;
|
||||
|
||||
var result = await hkcChangeShiftsDao.GetChangeShiftRecordAsync(start, end,args.Top, args.Skip);
|
||||
// Update the Data property
|
||||
_forecasts = result.Desserts;
|
||||
// Update the count
|
||||
count = result.TotalDesserts;
|
||||
|
||||
isLoading = false;
|
||||
}
|
||||
|
||||
async Task reloadGrid()
|
||||
{
|
||||
start = DateTime.MinValue;
|
||||
end = DateTime.MinValue;
|
||||
await grid.Reload();
|
||||
}
|
||||
}
|
|
@ -6,7 +6,7 @@
|
|||
<div class="row justify-content-around align-items-center" style="margin-top: 220px; height: 430px;">
|
||||
@foreach (int i in DrawerNos)
|
||||
{
|
||||
<RadzenButton class="col-5" Click="@(() => SelectDrawer(i))" Text="@i.ToString()" Disabled="@(status > 0)" Shade="Shade.Light" Variant="@(drawerNo !=i ? Variant.Outlined : Variant.Flat)" />
|
||||
<RadzenButton class="col-5" Click="@(() => SelectDrawer(i))" Text="@i.ToString()" Disabled="@(status > 0)" Shade="Shade.Light" Variant="@(drawerNo != i ? Variant.Outlined : Variant.Flat)" />
|
||||
|
||||
}
|
||||
</div>
|
||||
|
@ -44,28 +44,52 @@
|
|||
|
||||
</form>
|
||||
<RadzenDataGrid @ref="grid" AllowRowSelectOnRowClick="@allowRowSelectOnRowClick" AllowFiltering="true" LoadData="@LoadData"
|
||||
FilterPopupRenderMode="PopupRenderMode.OnDemand" FilterCaseSensitivity="FilterCaseSensitivity.CaseInsensitive"
|
||||
Data="@orderInfos" ColumnWidth="200px" IsLoading="@isLoading" Count="@count" EmptyText="无数据"
|
||||
SelectionMode="DataGridSelectionMode.Multiple" @bind-Value=@selectedOrderInfos
|
||||
AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} 共{2}条数据">
|
||||
FilterPopupRenderMode="PopupRenderMode.OnDemand" FilterCaseSensitivity="FilterCaseSensitivity.CaseInsensitive"
|
||||
Data="@orderInfos" ColumnWidth="200px" IsLoading="@isLoading" Count="@count" EmptyText="无数据"
|
||||
SelectionMode="DataGridSelectionMode.Multiple" @bind-Value=@selectedOrderInfos
|
||||
AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} 共{2}条数据">
|
||||
<Columns>
|
||||
<RadzenDataGridColumn Sortable="false" Filterable="false" Width="4rem">
|
||||
<HeaderTemplate>
|
||||
<RadzenCheckBox TabIndex="-1" TriState="false" TValue="bool?" InputAttributes="@(new Dictionary<string,object>(){ { "aria-label", "Select all items" }})"
|
||||
Value="@(selectedOrderInfos == null || selectedOrderInfos?.Any() != true ? false : !orderInfos.All(i => selectedOrderInfos.Contains(i)) ? null : orderInfos.Any(i => selectedOrderInfos.Contains(i)))"
|
||||
<RadzenCheckBox TabIndex="-1" TriState="false" TValue="bool?" InputAttributes="@(new Dictionary<string, object>() { { "aria-label", "Select all items" } })"
|
||||
Value="@(selectedOrderInfos == null || selectedOrderInfos?.Any() != true ? false : !orderInfos.All(i => selectedOrderInfos.Contains(i)) ? null : orderInfos.Any(i => selectedOrderInfos.Contains(i)))"
|
||||
Change="@(args => selectedOrderInfos = args == true ? orderInfos.ToList() : null)" />
|
||||
</HeaderTemplate>
|
||||
<Template Context="data">
|
||||
<RadzenCheckBox TabIndex="-1" TriState="false" Value="@(selectedOrderInfos != null && selectedOrderInfos.Contains(data))" InputAttributes="@(new Dictionary<string,object>(){ { "aria-label", "Select item" }})"
|
||||
<RadzenCheckBox TabIndex="-1" TriState="false" Value="@(selectedOrderInfos != null && selectedOrderInfos.Contains(data))" InputAttributes="@(new Dictionary<string, object>() { { "aria-label", "Select item" } })"
|
||||
TValue="bool" Change="@(args => { if (!allowRowSelectOnRowClick) { grid.SelectRow(data); } })" />
|
||||
</Template>
|
||||
</RadzenDataGridColumn>
|
||||
<RadzenDataGridColumn Property="PatientName" Title="姓名" Sortable="false" Filterable="false" Width="4rem" />
|
||||
<RadzenDataGridColumn Property="Sex" Title="性别" Sortable="false" Filterable="false" Width="2rem" />
|
||||
<RadzenDataGridColumn Property="OrderNo" Title="单号" Sortable="false" Filterable="false" Width="8rem" />
|
||||
<RadzenDataGridColumn Property="Detail.Drug.DrugName" Title="药品名称" FormatString="{0:d}" Sortable="false" Filterable="false" Width="8rem" />
|
||||
<RadzenDataGridColumn Property="Detail.SetManuNo" Title="药品批次" Sortable="false" Filterable="false" Width="8rem" />
|
||||
<RadzenDataGridColumn Property="Detail.Quantity" Title="数量" Sortable="false" Filterable="false" Width="2rem" />
|
||||
<RadzenDataGridColumn Property="Detail.Drug.DrugName" Title="药品名称" FormatString="{0:d}" Sortable="false" Filterable="false" Width="8rem">
|
||||
<Template Context="DetailList">
|
||||
@for (int i = 0; i < DetailList.DetailList.Count; i++)
|
||||
{
|
||||
OrderDetail orderDetail = DetailList.DetailList[i];
|
||||
<RadzenText TextStyle="TextStyle.Subtitle2" class="rz-mb-0">@orderDetail.Drug.DrugName</RadzenText>
|
||||
}
|
||||
</Template>
|
||||
</RadzenDataGridColumn>
|
||||
<RadzenDataGridColumn Property="Detail.SetManuNo" Title="药品批次" Sortable="false" Filterable="false" Width="8rem">
|
||||
<Template Context="DetailList">
|
||||
@for (int i = 0; i < DetailList.DetailList.Count; i++)
|
||||
{
|
||||
OrderDetail orderDetail = DetailList.DetailList[i];
|
||||
<RadzenText TextStyle="TextStyle.Subtitle2" class="rz-mb-0">@orderDetail.SetManuNo</RadzenText>
|
||||
}
|
||||
</Template>
|
||||
</RadzenDataGridColumn>
|
||||
<RadzenDataGridColumn Property="Detail.Quantity" Title="数量" Sortable="false" Filterable="false" Width="2rem">
|
||||
<Template Context="DetailList">
|
||||
@for (int i = 0; i < DetailList.DetailList.Count; i++)
|
||||
{
|
||||
OrderDetail orderDetail = DetailList.DetailList[i];
|
||||
<RadzenText TextStyle="TextStyle.Subtitle2" class="rz-mb-0">@orderDetail.Quantity</RadzenText>
|
||||
}
|
||||
</Template>
|
||||
</RadzenDataGridColumn>
|
||||
</Columns>
|
||||
</RadzenDataGrid>
|
||||
</div>
|
||||
|
|
|
@ -36,33 +36,57 @@
|
|||
.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="4">
|
||||
<RadzenColumn Size="2">
|
||||
|
||||
</RadzenColumn>
|
||||
<RadzenColumn Size="8">
|
||||
<RadzenRow Style="height: 100%;width:100%" Orientation="Orientation.Horizontal" JustifyContent="JustifyContent.End" AlignItems="AlignItems.Center">
|
||||
<RadzenColumn Size="3">
|
||||
<RadzenColumn Size="2">
|
||||
@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>
|
||||
|
||||
}
|
||||
@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>
|
||||
}
|
||||
</RadzenColumn>
|
||||
<RadzenColumn Size="3">
|
||||
<RadzenColumn Size="3" Orientation="Orientation.Horizontal" Wrap="FlexWrap.Wrap" class="icon-preview rz-p-12">
|
||||
<div>
|
||||
<RadzenIcon Icon="compare_arrows" Style="font-size:3rem;cursor: pointer;" class="rz-ripple" IconColor="white" @onclick="@(() => { changeShifts(); })" />
|
||||
<span>交接班</span>
|
||||
</div>
|
||||
</RadzenColumn>
|
||||
<RadzenColumn Size="2">
|
||||
<RadzenIcon Icon="exit_to_app" Style="font-size:3rem;cursor: pointer;" class="rz-ripple" IconColor="white" @onclick="@(() => { logout(); })" />
|
||||
</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">
|
||||
|
@ -80,17 +104,31 @@
|
|||
}
|
||||
}
|
||||
</RadzenStack>
|
||||
<RadzenStack class="home-menu rz-background-color-success-light rz-text-white rz-ripple" JustifyContent="JustifyContent.Center" @onclick="@(() => jump2Page(2))" Style="height: 50%">
|
||||
<RadzenText class="rz-color-white" TextStyle="TextStyle.H2" TextAlign="TextAlign.Center">入库</RadzenText>
|
||||
@if (globalStateService.Operator != null)
|
||||
{
|
||||
@if (!globalStateService.Operator.role.permissionIds.Any(id => id - 20 > 0 && id - 20 < 10))
|
||||
<RadzenStack Orientation="Orientation.Horizontal" Style="height: 50%;width:100%">
|
||||
<RadzenStack class="home-menu rz-background-color-success-light rz-text-white rz-ripple" JustifyContent="JustifyContent.Center" @onclick="@(() => jump2Page(2))" Style="height: 100%;width:50%">
|
||||
<RadzenText class="rz-color-white" TextStyle="TextStyle.H2" TextAlign="TextAlign.Center">入库</RadzenText>
|
||||
@if (globalStateService.Operator != null)
|
||||
{
|
||||
<div class="mask">
|
||||
<RadzenImage Path="images/no_auth.png" />
|
||||
</div>
|
||||
@if (!globalStateService.Operator.role.permissionIds.Any(id => id - 20 > 0 && id - 20 < 10))
|
||||
{
|
||||
<div class="mask">
|
||||
<RadzenImage Path="images/no_auth.png" />
|
||||
</div>
|
||||
}
|
||||
}
|
||||
}
|
||||
</RadzenStack>
|
||||
<RadzenStack class="home-menu rz-background-color-danger-lighter rz-text-white rz-ripple" JustifyContent="JustifyContent.Center" @onclick="@(() => jump2Page(6))" Style="height: 100%;width:50%">
|
||||
<RadzenText class="rz-color-white" TextStyle="TextStyle.H2" TextAlign="TextAlign.Center">药箱管理</RadzenText>
|
||||
@if (globalStateService.Operator != null)
|
||||
{
|
||||
@if (!globalStateService.Operator.role.permissionIds.Any(id => id - 60 > 0 && id - 60 < 10))
|
||||
{
|
||||
<div class="mask">
|
||||
<RadzenImage Path="images/no_auth.png" />
|
||||
</div>
|
||||
}
|
||||
}
|
||||
</RadzenStack>
|
||||
</RadzenStack>
|
||||
</RadzenStack>
|
||||
<RadzenStack Style="height: 100%;width:59%" Gap="20">
|
||||
|
@ -296,4 +334,15 @@
|
|||
new DialogOptions() { Width = "55vw", Resizable = false, Draggable = false, ShowClose = false, ShowTitle = false });
|
||||
|
||||
}
|
||||
|
||||
//交接班
|
||||
async void changeShifts()
|
||||
{
|
||||
//修改复核人
|
||||
await dialogService.OpenAsync<ChangeShifts>(
|
||||
"",
|
||||
new Dictionary<string, object>() { { "userI", 1 } },
|
||||
new DialogOptions() { Width = "55vw", Resizable = false, Draggable = false, ShowClose = false, ShowTitle = false });
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
@page "/return/record1/{type}"
|
||||
@page "/return/record2/{type}"
|
||||
@page "/stock/record/{type}"
|
||||
@using MasaBlazorApp3.Report
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
|
@ -35,6 +36,10 @@
|
|||
<RadzenButton Size="ButtonSize.Large" Click="reloadGrid" IsBusy="isLoading" Icon="refresh" Text="ÖØÖÃ" ButtonStyle="ButtonStyle.Warning" />
|
||||
</RadzenColumn>
|
||||
</RadzenRow>
|
||||
<RadzenRow AlignItems="AlignItems.Center">
|
||||
<RadzenButton Icon="download" Text="库存导出" Variant="Variant.Outlined" Click="StockExport" />
|
||||
<RadzenButton Icon="download" Text="专用账册导出" Variant="Variant.Outlined" Click="AccountBookExport" />
|
||||
</RadzenRow>
|
||||
</RadzenStack>
|
||||
</RadzenFieldset>
|
||||
</form>
|
||||
|
@ -111,7 +116,18 @@
|
|||
await grid.Reload();
|
||||
}
|
||||
|
||||
|
||||
//库存导出
|
||||
void StockExport()
|
||||
{
|
||||
|
||||
}
|
||||
//专用账册导出
|
||||
void AccountBookExport()
|
||||
{
|
||||
// string drugId = drugName != null ? drugName.Split('/').Last().Trim():"";
|
||||
// GridReportUtil gridReportUtil = new GridReportUtil();
|
||||
GridReportUtil.PrintReport("stock_template.grf", null);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
EmptyText="无数据"
|
||||
Data="@_forecasts"
|
||||
AllowColumnResize="true" AllowAlternatingRows="false"
|
||||
SelectionMode="DataGridSelectionMode.Single" RowUpdate="@((Plan di)=>{OnUpdatePlanRow(di);})" RowCreate="@((Plan di)=>{OnCreatePlanRow(di);})"
|
||||
SelectionMode="DataGridSelectionMode.Single" RowUpdate="@((Plan di) => { OnUpdatePlanRow(di); })" RowCreate="@((Plan di) => { OnCreatePlanRow(di); })"
|
||||
AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ColumnWidth="100px" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} 共{2}条数据">
|
||||
<Columns>
|
||||
<RadzenDataGridColumn Frozen="true" Title="套餐名称" Property="Name">
|
||||
|
@ -96,8 +96,8 @@
|
|||
<RadzenDropDownDataGridColumn Property="DrugSpec" Title="规格" />
|
||||
</Columns>
|
||||
</RadzenDropDownDataGrid>
|
||||
<RadzenCustomValidator Component="drugName" Validator="@(()=>(planDetails._DrugInfo.DrugId!=null))" Text="请选择药品" Popup=true />
|
||||
<RadzenCustomValidator Component="drugName" Validator="@(()=>ValidatroDrug(planDetails))" Text="套餐中已包含该药品" Popup=true />
|
||||
<RadzenCustomValidator Component="drugName" Validator="@(() => (planDetails._DrugInfo.DrugId != null))" Text="请选择药品" Popup=true />
|
||||
<RadzenCustomValidator Component="drugName" Validator="@(() => ValidatroDrug(planDetails))" Text="套餐中已包含该药品" Popup=true />
|
||||
|
||||
</EditTemplate>
|
||||
</RadzenDataGridColumn>
|
||||
|
@ -136,6 +136,7 @@
|
|||
@inject IPlanDao planDao;
|
||||
@inject DialogService dialogService;
|
||||
@inject NotificationService _message
|
||||
@inject GlobalStateService globalStateService;
|
||||
|
||||
RadzenDataGrid<Plan> grid;
|
||||
RadzenDataGrid<PlanDetails> PlanDetailsGrid;
|
||||
|
@ -218,18 +219,35 @@
|
|||
new DialogOptions() { Width = "45vw", Resizable = true, Draggable = true, ShowClose = false });
|
||||
if (b)
|
||||
{
|
||||
//查询要删除的套餐下是否有绑定,且绑定有库存
|
||||
if (!(await planDao.CheckPlanBind(planInfo.Id)))
|
||||
{
|
||||
_message.Notify
|
||||
(
|
||||
new NotificationMessage
|
||||
{
|
||||
Severity = NotificationSeverity.Error,
|
||||
Summary = "提示",
|
||||
Detail = $"该套餐还有库存绑定且有库存,请先清库存",
|
||||
Duration = 4000
|
||||
}
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// 数据库删除
|
||||
if (await planDao.DeletePlanInfo(planInfo.Id))
|
||||
{
|
||||
_message.Notify
|
||||
(
|
||||
new NotificationMessage
|
||||
{
|
||||
Severity = NotificationSeverity.Success,
|
||||
Summary = "提示",
|
||||
Detail = $"删除成功",
|
||||
Duration = 4000
|
||||
}
|
||||
{
|
||||
Severity = NotificationSeverity.Success,
|
||||
Summary = "提示",
|
||||
Detail = $"删除成功",
|
||||
Duration = 4000
|
||||
}
|
||||
);
|
||||
}
|
||||
else
|
||||
|
@ -237,12 +255,12 @@
|
|||
_message.Notify
|
||||
(
|
||||
new NotificationMessage
|
||||
{
|
||||
Severity = NotificationSeverity.Error,
|
||||
Summary = "提示",
|
||||
Detail = "删除失败",
|
||||
Duration = 4000
|
||||
}
|
||||
{
|
||||
Severity = NotificationSeverity.Error,
|
||||
Summary = "提示",
|
||||
Detail = "删除失败",
|
||||
Duration = 4000
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -306,28 +324,41 @@
|
|||
);
|
||||
if (b)
|
||||
{
|
||||
SelectedPlan.FirstOrDefault()._PlanDetails.Remove(planDetail);
|
||||
//查询要删除的药品是否有绑定且库存大于0
|
||||
if (!(await planDao.CheckPlanDetailBind(planDetail)))
|
||||
{
|
||||
_message.Notify(new NotificationMessage
|
||||
{
|
||||
Severity = NotificationSeverity.Error,
|
||||
Summary = "提示",
|
||||
Detail = "该药品有绑定且库存不为0,请先清库存",
|
||||
Duration = 4000
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// 数据库删除
|
||||
if (await planDao.DeletePlanDetail(planDetail))
|
||||
{
|
||||
_message.Notify(new NotificationMessage
|
||||
{
|
||||
Severity = NotificationSeverity.Success,
|
||||
Summary = "提示",
|
||||
Detail = "删除成功",
|
||||
Duration = 4000
|
||||
}
|
||||
{
|
||||
Severity = NotificationSeverity.Success,
|
||||
Summary = "提示",
|
||||
Detail = "删除成功",
|
||||
Duration = 4000
|
||||
}
|
||||
);
|
||||
SelectedPlan.FirstOrDefault()._PlanDetails.Remove(planDetail);
|
||||
}
|
||||
else
|
||||
{
|
||||
_message.Notify(new NotificationMessage
|
||||
{
|
||||
Severity = NotificationSeverity.Error,
|
||||
Summary = "提示",
|
||||
Detail = "删除失败",
|
||||
Duration = 4000
|
||||
}
|
||||
{
|
||||
Severity = NotificationSeverity.Error,
|
||||
Summary = "提示",
|
||||
Detail = "删除失败",
|
||||
Duration = 4000
|
||||
}
|
||||
);
|
||||
}
|
||||
await PlanDetailsGrid.Reload();
|
||||
|
@ -348,23 +379,23 @@
|
|||
if (await planDao.UpdatePlanDetail(planDetail))
|
||||
{
|
||||
_message.Notify(new NotificationMessage
|
||||
{
|
||||
Severity = NotificationSeverity.Success,
|
||||
Summary = "提示",
|
||||
Detail = "修改成功",
|
||||
Duration = 4000
|
||||
}
|
||||
{
|
||||
Severity = NotificationSeverity.Success,
|
||||
Summary = "提示",
|
||||
Detail = "修改成功",
|
||||
Duration = 4000
|
||||
}
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
_message.Notify(new NotificationMessage
|
||||
{
|
||||
Severity = NotificationSeverity.Error,
|
||||
Summary = "提示",
|
||||
Detail = "修改失败",
|
||||
Duration = 4000
|
||||
}
|
||||
{
|
||||
Severity = NotificationSeverity.Error,
|
||||
Summary = "提示",
|
||||
Detail = "修改失败",
|
||||
Duration = 4000
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -377,15 +408,18 @@
|
|||
{
|
||||
planDetail.PlanId = SelectedPlan.FirstOrDefault().Id;
|
||||
planDetail.DrugId = planDetail.DrugId == null ? planDetail._DrugInfo.DrugId : planDetail.DrugId;
|
||||
planDetail.UseState = 1;
|
||||
planDetail.OperatorUser = globalStateService.Operator?.Username;
|
||||
planDetail.ReviewerUser = globalStateService.Reviewer?.Username;
|
||||
if (await planDao.AddPlanDetail(planDetail))
|
||||
{
|
||||
_message.Notify(new NotificationMessage
|
||||
{
|
||||
Severity = NotificationSeverity.Success,
|
||||
Summary = "提示",
|
||||
Detail = "保存成功",
|
||||
Duration = 4000
|
||||
}
|
||||
{
|
||||
Severity = NotificationSeverity.Success,
|
||||
Summary = "提示",
|
||||
Detail = "保存成功",
|
||||
Duration = 4000
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
|
@ -393,12 +427,12 @@
|
|||
else
|
||||
{
|
||||
_message.Notify(new NotificationMessage
|
||||
{
|
||||
Severity = NotificationSeverity.Error,
|
||||
Summary = "提示",
|
||||
Detail = "保存失败",
|
||||
Duration = 4000
|
||||
}
|
||||
{
|
||||
Severity = NotificationSeverity.Error,
|
||||
Summary = "提示",
|
||||
Detail = "保存失败",
|
||||
Duration = 4000
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -411,9 +445,9 @@
|
|||
async Task InsertRow()
|
||||
{
|
||||
var detail = new Pojo.PlanDetails()
|
||||
{
|
||||
PlanId = SelectedPlan.FirstOrDefault().Id
|
||||
};
|
||||
{
|
||||
PlanId = SelectedPlan.FirstOrDefault().Id
|
||||
};
|
||||
SelectedPlan.FirstOrDefault()._PlanDetails.Add(detail);
|
||||
await PlanDetailsGrid.InsertRow(detail);
|
||||
|
||||
|
|
|
@ -162,7 +162,11 @@
|
|||
<RadzenDropDownDataGrid @bind-Value=@channel.drugManuNo Data=@channel.Drug?.Manus Disabled="@(channel.Drug == null)" TValue="DrugManuNo" Name="@("Drugmanu_" + channel.Id)" TextProperty="ManuNo">
|
||||
<Columns>
|
||||
<RadzenDropDownDataGridColumn Property="ManuNo" Title="批次" Sortable="false" />
|
||||
<RadzenDropDownDataGridColumn Property="EffDate" Title="效期" Sortable="false" />
|
||||
<RadzenDropDownDataGridColumn Property="EffDate" Title="效期" Sortable="false">
|
||||
<Template Context="data">
|
||||
@data.EffDate.ToString("yyyy-MM-dd")
|
||||
</Template>
|
||||
</RadzenDropDownDataGridColumn>
|
||||
</Columns>
|
||||
</RadzenDropDownDataGrid>
|
||||
}
|
||||
|
|
|
@ -1,39 +1,105 @@
|
|||
@page "/stock/list"
|
||||
@using MasaBlazorApp3.Report
|
||||
<style>
|
||||
@@keyframes shake {
|
||||
0% { opacity:1;color:red; }
|
||||
25%{opacity:1;color:orange;}
|
||||
50% { opacity:0;color:yellow;}
|
||||
75%{opacity:1;color:crimson;}
|
||||
100% { opacity:1;color:red; }
|
||||
0% {
|
||||
opacity: 1;
|
||||
color: red;
|
||||
}
|
||||
|
||||
25% {
|
||||
opacity: 1;
|
||||
color: orange;
|
||||
}
|
||||
|
||||
50% {
|
||||
opacity: 0;
|
||||
color: yellow;
|
||||
}
|
||||
|
||||
75% {
|
||||
opacity: 1;
|
||||
color: crimson;
|
||||
}
|
||||
|
||||
100% {
|
||||
opacity: 1;
|
||||
color: red;
|
||||
}
|
||||
}
|
||||
|
||||
.rz-custom-header {
|
||||
width: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.shaky-text {
|
||||
animation: shake 2s infinite ease-in-out;
|
||||
/* 你可以根据需要调整动画的持续时间和迭代次数 */
|
||||
transition:color 0.5s linear,opacity 0.5s linear;
|
||||
animation: shake 2s infinite ease-in-out;
|
||||
/* 你可以根据需要调整动画的持续时间和迭代次数 */
|
||||
transition: color 0.5s linear,opacity 0.5s linear;
|
||||
}
|
||||
|
||||
</style>
|
||||
<div class="col-12 mb-4">
|
||||
|
||||
<div class="container-fluid">
|
||||
<form onsubmit="@(() => grid.Reload())">
|
||||
<RadzenFieldset Text="查询">
|
||||
<RadzenStack Orientation="Orientation.Horizontal" Gap="1rem">
|
||||
<RadzenRow AlignItems="AlignItems.Center">
|
||||
<RadzenColumn Size="4">
|
||||
<RadzenLabel Text="开始时间" Component="Start" />
|
||||
</RadzenColumn>
|
||||
<RadzenColumn Size="8">
|
||||
<RadzenDatePicker DateFormat="yyyy-MM-dd HH:mm:ss" ShowTime="true" @bind-Value="start" Style="width: 100%;" Name="Start" />
|
||||
</RadzenColumn>
|
||||
</RadzenRow>
|
||||
<RadzenRow AlignItems="AlignItems.Center">
|
||||
<RadzenColumn Size="4">
|
||||
<RadzenLabel Text="结束时间" Component="End" />
|
||||
</RadzenColumn>
|
||||
<RadzenColumn Size="8">
|
||||
<RadzenDatePicker DateFormat="yyyy-MM-dd HH:mm:ss" ShowTime="true" @bind-Value="end" Style="width: 100%;" Name="End" />
|
||||
</RadzenColumn>
|
||||
</RadzenRow>
|
||||
<RadzenRow AlignItems="AlignItems.Center">
|
||||
<RadzenColumn Size="6">
|
||||
<RadzenLabel Text="药品名称/拼音码/编码" Component="drug" />
|
||||
</RadzenColumn>
|
||||
<RadzenColumn Size="6">
|
||||
<RadzenAutoComplete Name="drug" Multiline="true" @bind-Value=@drugName Data=@drugInfo TextProperty="@nameof(DrugInfo.DrugNameSpecManufactory)"
|
||||
Style="width: 100%;" InputAttributes="@(new Dictionary<string, object>() { { "aria-label", "drugInfo" } })" />
|
||||
</RadzenColumn>
|
||||
</RadzenRow>
|
||||
|
||||
<RadzenRow AlignItems="AlignItems.Center">
|
||||
<RadzenColumn Size="12">
|
||||
@* <RadzenButton Size="ButtonSize.Large" ButtonType="ButtonType.Submit" IsBusy="isLoading" Icon="search" Text="查询" /> *@
|
||||
<RadzenButton Size="ButtonSize.Large" Click="reloadGrid" IsBusy="isLoading" Icon="refresh" Text="重置" ButtonStyle="ButtonStyle.Warning" />
|
||||
</RadzenColumn>
|
||||
</RadzenRow>
|
||||
<RadzenRow JustifyContent="JustifyContent.End" AlignItems="AlignItems.Center">
|
||||
<RadzenButton Icon="download" Text="库存导出" Variant="Variant.Outlined" Click="StockExport" />
|
||||
<RadzenButton Icon="download" Text="专用账册导出" Variant="Variant.Outlined" Click="AccountBookExport" />
|
||||
</RadzenRow>
|
||||
</RadzenStack>
|
||||
</RadzenFieldset>
|
||||
</form>
|
||||
</div>
|
||||
<div class="col-12 mb-4">
|
||||
|
||||
<RadzenDataGrid @ref="grid"
|
||||
IsLoading="@isLoading"
|
||||
RowRender="@RowRender"
|
||||
EmptyText="无数据"
|
||||
Data="@_forecasts"
|
||||
AllowColumnResize="true" AllowAlternatingRows="false"
|
||||
SelectionMode="DataGridSelectionMode.Single"
|
||||
ExpandMode="DataGridExpandMode.Multiple">
|
||||
<HeaderTemplate>
|
||||
IsLoading="@isLoading"
|
||||
RowRender="@RowRender"
|
||||
EmptyText="无数据"
|
||||
Data="@_forecasts"
|
||||
AllowColumnResize="true" AllowAlternatingRows="false"
|
||||
SelectionMode="DataGridSelectionMode.Single"
|
||||
ExpandMode="DataGridExpandMode.Multiple">
|
||||
@* <HeaderTemplate>
|
||||
<RadzenRow JustifyContent="JustifyContent.End" AlignItems="AlignItems.Center">
|
||||
<RadzenButton Icon="download" Text="库存导出" Variant="Variant.Outlined" Click="StockExport" />
|
||||
<RadzenButton Icon="download" Text="专用账册导出" Variant="Variant.Outlined" Click="AccountBookExport" />
|
||||
</RadzenRow>
|
||||
</HeaderTemplate>
|
||||
</HeaderTemplate> *@
|
||||
<Template Context="di">
|
||||
<RadzenDataGrid Data="@di.Stocks" EmptyText="无数据">
|
||||
<Columns>
|
||||
|
@ -50,9 +116,11 @@
|
|||
@{
|
||||
DateTime dateTime;
|
||||
bool success = DateTime.TryParse(s.EffDate, out dateTime);
|
||||
if(success&&dateTime<=DateTime.Now.AddMonths(3))
|
||||
if (success && dateTime <= DateTime.Now.AddMonths(3))
|
||||
{
|
||||
@s.EffDate<p class="shaky-text">近效期药品!</p>
|
||||
@s.EffDate
|
||||
|
||||
<p class="shaky-text">近效期药品!</p>
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -67,11 +135,13 @@
|
|||
<Columns>
|
||||
<RadzenDataGridColumn Frozen="true" Width="200px" Title="药品名称" Property="DrugName"></RadzenDataGridColumn>
|
||||
<RadzenDataGridColumn Title="规格" Property="DrugSpec"></RadzenDataGridColumn>
|
||||
<RadzenDataGridColumn Title="总库存" Property="StockQuantity">
|
||||
<RadzenDataGridColumn Title="总库存" Property="StockQuantity">
|
||||
<Template Context="s">
|
||||
@if(s.StockQuantity<10)
|
||||
@if (s.StockQuantity < 10)
|
||||
{
|
||||
@s.StockQuantity<p class="shaky-text">库存预警!</p>
|
||||
@s.StockQuantity
|
||||
|
||||
<p class="shaky-text">库存预警!</p>
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -94,7 +164,9 @@
|
|||
DateTime start;
|
||||
DateTime end;
|
||||
|
||||
string drugName;
|
||||
|
||||
IEnumerable<DrugInfo> drugInfo;
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
|
@ -104,6 +176,9 @@
|
|||
var result = await drugInfoDao.GetAllDrugAndStock();
|
||||
// Update the Data property
|
||||
_forecasts = result;
|
||||
|
||||
drugInfo = await drugInfoDao.GetAllDrug();
|
||||
|
||||
isLoading = false;
|
||||
}
|
||||
|
||||
|
@ -123,17 +198,26 @@
|
|||
}
|
||||
|
||||
|
||||
|
||||
async void StockExport()
|
||||
//库存导出
|
||||
void StockExport()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
async void AccountBookExport()
|
||||
//专用账册导出
|
||||
void AccountBookExport()
|
||||
{
|
||||
|
||||
// string drugId = drugName != null ? drugName.Split('/').Last().Trim():"";
|
||||
// GridReportUtil gridReportUtil = new GridReportUtil();
|
||||
GridReportUtil.PrintReport("stock_template.grf", null);
|
||||
}
|
||||
|
||||
|
||||
//重置
|
||||
async Task reloadGrid()
|
||||
{
|
||||
start = DateTime.MinValue;
|
||||
end = DateTime.MinValue;
|
||||
drugName = string.Empty;
|
||||
await grid.Reload();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -29,7 +29,14 @@ namespace MasaBlazorApp3.Pojo
|
|||
public string Manufactory { get; set; }
|
||||
|
||||
[Column("pack_unit")]
|
||||
public string PackUnit { get; set;}
|
||||
public string PackUnit { get; set; }
|
||||
[Column("py_code")]
|
||||
public string PyCode { get; set; }
|
||||
[Column(IsColumn =false)]
|
||||
public string DrugNameSpecManufactory
|
||||
{
|
||||
get => DrugName + " / " + DrugSpec+ " / " + Manufactory+" / " + PyCode+" / " + DrugId;
|
||||
}
|
||||
|
||||
|
||||
[Association(ThisKey = nameof(DrugId), OtherKey = nameof(ChannelStock.DrugId))]
|
||||
|
|
|
@ -13,20 +13,28 @@ namespace MasaBlazorApp3.Pojo
|
|||
{
|
||||
[Column("Id")]
|
||||
public int Id { get; set; }
|
||||
//操作时间
|
||||
[Column("optDate")]
|
||||
public DateTime optDate { get; set; }
|
||||
//交班操作人
|
||||
[Column("FromOperator")]
|
||||
public string FromOperator { get; set; }
|
||||
//交班审核人
|
||||
[Column("FromRviewer")]
|
||||
public string FromRviewer { get; set; }
|
||||
//接班操作人
|
||||
[Column("ToOperator")]
|
||||
public string ToOperator { get; set; }
|
||||
//接班审核人
|
||||
[Column("ToReviewer")]
|
||||
public string ToReviewer { get; set; }
|
||||
//接班时间
|
||||
[Column("ToDate")]
|
||||
public DateTime ToDate { get; set; }
|
||||
//当班状态(0当前值班,1已交班)
|
||||
[Column("State")]
|
||||
public string State { get; set; }
|
||||
//操作状态(0新增,1修改)
|
||||
[Column("optState")]
|
||||
public string optState { get; set; }
|
||||
[Column("machine_id")]
|
||||
|
|
|
@ -147,15 +147,15 @@ namespace MasaBlazorApp3.Pojo
|
|||
///</summary>
|
||||
[Column("win_no")]
|
||||
public int WinNo { get; set; } = 0;
|
||||
/// <summary>
|
||||
///
|
||||
/// 默认值: 0
|
||||
///</summary>
|
||||
[Column("state")]
|
||||
public int state { get; set; } = 0;
|
||||
///// <summary>
|
||||
/////
|
||||
///// 默认值: 0
|
||||
/////</summary>
|
||||
//[Column("state")]
|
||||
//public int state { get; set; } = 0;
|
||||
|
||||
[Association(ThisKey = nameof(OrderNo), OtherKey = nameof(OrderDetail.OrderNo))]
|
||||
public OrderDetail Detail { get; set; } = new();
|
||||
public List<OrderDetail> DetailList { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// 是否选中
|
||||
|
|
|
@ -33,10 +33,10 @@ namespace MasaBlazorApp3.Pojo
|
|||
public int UseState { get; set; }
|
||||
//操作人
|
||||
[Column("operatorUser")]
|
||||
public int OperatorUser { get; set; }
|
||||
public string OperatorUser { get; set; }
|
||||
//审核人
|
||||
[Column("reviewerUser")]
|
||||
public int ReviewerUser { get; set; }
|
||||
public string ReviewerUser { get; set; }
|
||||
public List<ChannelStock> channelStocks { get; set; } = new List<ChannelStock>();
|
||||
|
||||
public DrugManuNo _ManuNo { get; set; }
|
||||
|
|
|
@ -177,6 +177,12 @@ namespace MasaBlazorApp3.Pojo
|
|||
PremissionName = "药品标定",
|
||||
PremissionPath = "/stock/biaoDing"
|
||||
});
|
||||
k.AddChild(new Premission()
|
||||
{
|
||||
Id = 47,
|
||||
PremissionName = "交接班列表",
|
||||
PremissionPath = "/stock/Change"
|
||||
});
|
||||
Premission x = new Premission
|
||||
{
|
||||
Id = 5,
|
||||
|
@ -216,39 +222,85 @@ namespace MasaBlazorApp3.Pojo
|
|||
PremissionPath = "/manage/setting/Fridge"
|
||||
|
||||
});
|
||||
x.AddChild(new Premission()
|
||||
//x.AddChild(new Premission()
|
||||
//{
|
||||
// Id = 54,
|
||||
// PremissionName = "套餐管理",
|
||||
// PremissionPath = "/Box/Plan"
|
||||
//});
|
||||
//x.AddChild(new Premission()
|
||||
//{
|
||||
// Id = 55,
|
||||
// PremissionName = "绑定药箱",
|
||||
// PremissionPath = "/Box/BoxBindings"
|
||||
//});
|
||||
//x.AddChild(new Premission()
|
||||
//{
|
||||
// Id = 56,
|
||||
// PremissionName = "药箱核对",
|
||||
// PremissionPath = "/Box/Check"
|
||||
//});
|
||||
//x.AddChild(new Premission()
|
||||
//{
|
||||
// Id = 57,
|
||||
// PremissionName = "药箱加药",
|
||||
// PremissionPath = "/Box/BoxAdd"
|
||||
//});
|
||||
//x.AddChild(new Premission()
|
||||
//{
|
||||
// Id = 58,
|
||||
// PremissionName = "药箱入库",
|
||||
// PremissionPath = "/Box/BoxAddBox"
|
||||
//});
|
||||
//x.AddChild(new Premission()
|
||||
//{
|
||||
// Id = 59,
|
||||
// PremissionName = "药箱库存",
|
||||
// PremissionPath = "/Box/BoxStock"
|
||||
//});
|
||||
|
||||
|
||||
Premission b = new Premission
|
||||
{
|
||||
Id = 54,
|
||||
Id = 6,
|
||||
PremissionName = "药箱管理",
|
||||
PremissionPath = "Box"
|
||||
};
|
||||
b.AddChild(new Premission()
|
||||
{
|
||||
Id = 61,
|
||||
PremissionName = "套餐管理",
|
||||
PremissionPath = "/Box/Plan"
|
||||
});
|
||||
x.AddChild(new Premission()
|
||||
b.AddChild(new Premission()
|
||||
{
|
||||
Id = 55,
|
||||
Id = 62,
|
||||
PremissionName = "绑定药箱",
|
||||
PremissionPath = "/Box/BoxBindings"
|
||||
});
|
||||
x.AddChild(new Premission()
|
||||
b.AddChild(new Premission()
|
||||
{
|
||||
Id = 56,
|
||||
Id = 63,
|
||||
PremissionName = "药箱核对",
|
||||
//PremissionName = "盘点交接",
|
||||
PremissionPath = "/Box/Check"
|
||||
});
|
||||
x.AddChild(new Premission()
|
||||
b.AddChild(new Premission()
|
||||
{
|
||||
Id = 57,
|
||||
Id = 66,
|
||||
PremissionName = "药箱加药",
|
||||
//PremissionPath = "/stock/checkRecord"
|
||||
PremissionPath = "/Box/BoxAdd"
|
||||
});
|
||||
x.AddChild(new Premission()
|
||||
b.AddChild(new Premission()
|
||||
{
|
||||
Id = 58,
|
||||
Id = 65,
|
||||
PremissionName = "药箱入库",
|
||||
PremissionPath = "/Box/BoxAddBox"
|
||||
});
|
||||
x.AddChild(new Premission()
|
||||
b.AddChild(new Premission()
|
||||
{
|
||||
Id = 59,
|
||||
Id = 66,
|
||||
PremissionName = "药箱库存",
|
||||
PremissionPath = "/Box/BoxStock"
|
||||
});
|
||||
|
@ -256,6 +308,7 @@ namespace MasaBlazorApp3.Pojo
|
|||
list.Add(j);
|
||||
list.Add(h);
|
||||
list.Add(k);
|
||||
list.Add(b);
|
||||
x.AddChild(set);
|
||||
list.Add(x);
|
||||
|
||||
|
|
|
@ -72,6 +72,10 @@ internal class Program
|
|||
//药品批次
|
||||
appBuilder.Services.AddScoped<IDrugManuNoDao, DrugManuNoDao>();
|
||||
|
||||
|
||||
//交接班记录
|
||||
appBuilder.Services.AddScoped<IHkcChangeShiftsDao, HkcChangeShiftsDao>();
|
||||
//GlobalStateService.connStr = config.GetValue<String>("connectionStrings");
|
||||
var app = appBuilder.Build();
|
||||
app.MainWindow
|
||||
.SetHeight(768)
|
||||
|
|
|
@ -31,8 +31,8 @@ namespace MasaBlazorApp3.Report
|
|||
Report.PrintPreview(true);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"Version":"6.8.5.2",
|
||||
"Version":"6.8.1.1",
|
||||
"Font":{
|
||||
"Name":"宋体",
|
||||
"Size":105000,
|
||||
|
@ -17,8 +17,6 @@
|
|||
"CenterView":true,
|
||||
"AppendBlankRow":true,
|
||||
"Recordset":{
|
||||
"ConnectionString":"MYSQL;\r\nDatabase=hkcdb;\r\nPassword=qq1223;\r\nPort=3307;\r\nServer=127.0.0.1;\r\nUser=root;",
|
||||
"QuerySQL":"SELECT \r\n mr.`stock_quantity` AS `stockQuantity`,\r\n IF(mr.`type` IN (1, 31), mr.`quantity`, IF(mr.`type` = 4 AND mr.`quantity` > 0, mr.`quantity`, 0)) AS `inQuantity`,\r\n IF(mr.`type` = 2, mr.`quantity`, IF(mr.`type` = 4 AND mr.`quantity` < 0, (0 - mr.`quantity`), 0)) AS `outQuantity`,\r\n mr.`operation_time` AS `operationTime`,\r\n mr.`invoice_id` AS `invoiceId`,\r\n di.`drug_name` AS `drugName`,\r\n di.`drug_id` AS `drugId`,\r\n di.`drug_spec` AS `drugSpec`,\r\n di.`pack_unit` AS `packUnit`,\r\n di.`dosage` AS `dosage`,\r\n di.`manufactory` AS `manufactory`,\r\n mr.`manu_no` AS `manuNo`,\r\n mr.`eff_date` AS `effDate`,\r\n u1.`user_name` AS `operatorName`,\r\n u2.`user_name` AS `reviewerName`\r\nFROM\r\n dm_machine_record mr \r\n LEFT JOIN drug_info di ON mr.`drug_id` = di.`drug_id` \r\n LEFT JOIN user_list u1 ON mr.`operator` = u1.`id`\r\n LEFT JOIN user_list u2 ON mr.`reviewer` = u2.`id`\r\n ORDER BY mr.`drug_id`, mr.`operation_time`, mr.`id`",
|
||||
"Field":[
|
||||
{
|
||||
"Name":"日期",
|
||||
|
@ -34,11 +32,6 @@
|
|||
"Name":"批号",
|
||||
"DBFieldName":"manuNo"
|
||||
},
|
||||
{
|
||||
"Name":"上次批次结存",
|
||||
"Type":"Integer",
|
||||
"DBFieldName":"beforeManuQuan"
|
||||
},
|
||||
{
|
||||
"Name":"入库数量",
|
||||
"Type":"Integer",
|
||||
|
@ -49,11 +42,6 @@
|
|||
"Type":"Integer",
|
||||
"DBFieldName":"outQuantity"
|
||||
},
|
||||
{
|
||||
"Name":"批号结存",
|
||||
"Type":"Integer",
|
||||
"DBFieldName":"manuQuantity"
|
||||
},
|
||||
{
|
||||
"Name":"总结存",
|
||||
"Type":"Integer",
|
||||
|
@ -65,7 +53,7 @@
|
|||
},
|
||||
{
|
||||
"Name":"复核人",
|
||||
"DBFieldName":"reviewName"
|
||||
"DBFieldName":"reviewerName"
|
||||
},
|
||||
{
|
||||
"Name":"药品名称",
|
||||
|
@ -94,15 +82,12 @@
|
|||
"DBFieldName":"effDate"
|
||||
},
|
||||
{
|
||||
"Name":"sign1",
|
||||
"Type":"Binary"
|
||||
"Name":"drugId",
|
||||
"DBFieldName":"drug_Id"
|
||||
},
|
||||
{
|
||||
"Name":"sign2",
|
||||
"Type":"Binary"
|
||||
},
|
||||
{
|
||||
"Name":"drugId"
|
||||
"Name":"凭证号",
|
||||
"DBFieldName":"invoiceId"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -112,7 +97,7 @@
|
|||
"Width":1.77271
|
||||
},
|
||||
{
|
||||
"Name":"操作类型",
|
||||
"Name":"凭证号",
|
||||
"Width":2.19604
|
||||
},
|
||||
{
|
||||
|
@ -121,7 +106,7 @@
|
|||
},
|
||||
{
|
||||
"Name":"有效期",
|
||||
"Width":2.43417
|
||||
"Width":2.40771
|
||||
},
|
||||
{
|
||||
"Name":"入库数量",
|
||||
|
@ -157,20 +142,14 @@
|
|||
"ColumnContentCell":[
|
||||
{
|
||||
"Column":"日期",
|
||||
"WordWrap":true,
|
||||
"TextAlign":"MiddleCenter",
|
||||
"ShrinkFontToFit":true,
|
||||
"DataField":"日期"
|
||||
},
|
||||
{
|
||||
"Column":"操作类型",
|
||||
"FreeCell":true,
|
||||
"Control":[
|
||||
{
|
||||
"Type":"StaticBox",
|
||||
"Name":"StaticBox10",
|
||||
"Dock":"Fill",
|
||||
"TextAlign":"MiddleCenter"
|
||||
}
|
||||
]
|
||||
"Column":"凭证号",
|
||||
"DataField":"凭证号"
|
||||
},
|
||||
{
|
||||
"Column":"批号",
|
||||
|
@ -228,11 +207,10 @@
|
|||
"FreeCell":true,
|
||||
"Control":[
|
||||
{
|
||||
"Type":"StaticBox",
|
||||
"Name":"StaticBox6",
|
||||
"Type":"FieldBox",
|
||||
"Name":"FieldBox14",
|
||||
"Dock":"Fill",
|
||||
"TextAlign":"MiddleCenter",
|
||||
"Text":"药库"
|
||||
"TextAlign":"MiddleCenter"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -241,11 +219,10 @@
|
|||
"FreeCell":true,
|
||||
"Control":[
|
||||
{
|
||||
"Type":"StaticBox",
|
||||
"Name":"StaticBox7",
|
||||
"Type":"FieldBox",
|
||||
"Name":"FieldBox15",
|
||||
"Dock":"Fill",
|
||||
"TextAlign":"MiddleCenter",
|
||||
"Text":"门诊药房"
|
||||
"TextAlign":"MiddleCenter"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -269,7 +246,7 @@
|
|||
},
|
||||
{
|
||||
"GroupTitle":false,
|
||||
"Column":"操作类型",
|
||||
"Column":"凭证号",
|
||||
"Font":{
|
||||
"Name":"宋体",
|
||||
"Size":105000,
|
||||
|
@ -394,6 +371,7 @@
|
|||
"Name":"Group1",
|
||||
"ByFields":"drugId",
|
||||
"GroupHeader":{
|
||||
"NewPage":"Before",
|
||||
"PrintGridBorder":false,
|
||||
"RepeatOnPage":true,
|
||||
"Control":[
|
||||
|
|
Loading…
Reference in New Issue