更新提交
This commit is contained in:
parent
ac39763b13
commit
ff96d4e676
|
@ -50,10 +50,35 @@ namespace MasaBlazorApp3.DataAccess.Dao
|
|||
//手术室药箱补药获取毒麻柜中的药品信息
|
||||
Task<List<BoxTakeVo>> getTakeInfoByBox(ChannelList cl);
|
||||
//手术室药箱补药完成
|
||||
Task<bool> BoxTakeFinish(List<BoxTakeVo> datas);
|
||||
Task<bool> BoxTakeFinish(List<BoxTakeVo> datas, ChannelList boxChannelList);
|
||||
//手术室药箱入库
|
||||
Task<PageData<ChannelList>> GetBoxWaitInfo(int? take, int? skip);
|
||||
//手术室药箱入库获取待入库明细
|
||||
Task<List<BoxTakeVo>> getBoxWaitByBox(ChannelList cl);
|
||||
|
||||
|
||||
//手术室药箱获取药箱药品及库存信息
|
||||
Task<PageData<PlanDetails>> GetBoxDrugInfo(int DrawerNo, int? take, int? skip);
|
||||
//药箱移库时获取选中药箱号的药品信息
|
||||
Task<PageData<ChannelStock>> GetChannelStockByDrug(ChannelStock cs, int drawerNo, int? take, int? skip);
|
||||
|
||||
/// <summary>
|
||||
/// 药箱交换药品获取所有除本药箱外的所有药箱号
|
||||
/// </summary>
|
||||
/// <param name="machineId"></param>
|
||||
/// <returns></returns>
|
||||
Task<int[]> GetDrawerNum(ChannelStock channelStock);
|
||||
|
||||
/// <summary>
|
||||
/// 药箱移除药品,获取所有除本药箱外的所有包含该药品的药箱号
|
||||
/// </summary>
|
||||
/// <param name="machineId"></param>
|
||||
/// <returns></returns>
|
||||
Task<int[]> GetDrawerNumForRemove(ChannelStock channelStock);
|
||||
|
||||
//手术室药箱交换药品完成
|
||||
Task<bool> BoxReplaceFinish(ChannelStock stock, List<ChannelStock> Stocks);
|
||||
//手术室药箱移出药品完成
|
||||
Task<bool> BoxRemoveFinish(ChannelStock stock, int SelectedDrawerNo, int removeQuantity);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -848,7 +848,7 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
}
|
||||
}
|
||||
//手术室药箱补药完成
|
||||
public async Task<bool> BoxTakeFinish(List<BoxTakeVo> datas)
|
||||
public async Task<bool> BoxTakeFinish(List<BoxTakeVo> datas, ChannelList boxChannelList)
|
||||
{
|
||||
|
||||
try
|
||||
|
@ -950,7 +950,8 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
#endregion
|
||||
|
||||
//更新药箱中的药品数量
|
||||
int boxID = _connection.Insert(new ChannelStock() {
|
||||
int boxID = _connection.Insert(new ChannelStock()
|
||||
{
|
||||
Id = Guid.NewGuid().ToString(),
|
||||
ListId = boxTakeVo.BoxDetail.Id,
|
||||
MachineId = _setting.boxMachineId,
|
||||
|
@ -979,12 +980,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(boxTakeVo.BoxDetail.DrugId)).Sum(p => p.BaseQuantity);
|
||||
int list=_connection.ChannelList.Where(cl => cl.Id == boxTakeVo.BoxDetail.Id)
|
||||
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&& delResutl>0&& list>0)
|
||||
if (mid > 0 && r > 0 && boxID > 0 && boxMId > 0 && list > 0)
|
||||
{
|
||||
if (boxTakeVo.ChannelStock.BoardType.ToString().Contains("5"))
|
||||
{
|
||||
|
@ -1167,5 +1168,431 @@ namespace MasaBlazorApp3.DataAccess.Impl
|
|||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
//手术室药箱获取药箱药品及库存信息
|
||||
public async Task<PageData<PlanDetails>> GetBoxDrugInfo(int DrawerNo, int? take, int? skip)
|
||||
{
|
||||
var query = _connection.PlanDetails.AsQueryable()
|
||||
.InnerJoin(
|
||||
_connection.ChannelList.Where(cl => cl.MachineId == _setting.boxMachineId && cl.DrawerNo.Equals(DrawerNo)),
|
||||
(pd, cl) => pd.PlanId.ToString() == cl.DrugId,
|
||||
(pd, cl) => pd);
|
||||
|
||||
|
||||
|
||||
int pagedData = await query.CountAsync();
|
||||
|
||||
List<PlanDetails> list = await query
|
||||
.LoadWith(pd => pd._DrugInfo)
|
||||
//.LoadWith(pd => cl._PlanDetails._DrugInfo)
|
||||
.OrderBy((pd) => pd.DrugId)
|
||||
//.ThenBy((cl) => cl.ColNo)
|
||||
.Skip((int)skip)
|
||||
.Take((int)take)
|
||||
.ToListAsync();
|
||||
if (list != null && list.Count > 0)
|
||||
{
|
||||
for (int i = 0; i < list.Count; i++)
|
||||
{
|
||||
list[i].channelStocks = _connection.ChannelStock.AsQueryable()
|
||||
.Where(cs => cs.MachineId == _setting.boxMachineId && cs.DrawerNo == DrawerNo && cs.DrugId == list[i].DrugId)
|
||||
.LoadWith(cs => cs.Drug)
|
||||
.LoadWith(cs => cs.Drug.Manus)
|
||||
.ToList();
|
||||
}
|
||||
}
|
||||
|
||||
//List<ChannelStock> list = await query
|
||||
// .LoadWith(cl => cl.Drug)
|
||||
// .LoadWith(cl => cl.Drug.Manus)
|
||||
// .LoadWith(cl => cl.drugManuNo)
|
||||
// .OrderBy((cl) => cl.DrawerNo)
|
||||
// .ThenBy((cl) => cl.ColNo)
|
||||
// .Skip((int)skip)
|
||||
// .Take((int)take)
|
||||
// .ToListAsync();
|
||||
|
||||
|
||||
return new PageData<PlanDetails>()
|
||||
{
|
||||
|
||||
TotalDesserts = pagedData,
|
||||
Desserts = list
|
||||
};
|
||||
}
|
||||
|
||||
//药箱移库时获取选中药箱号的药品信息
|
||||
public async Task<PageData<ChannelStock>> GetChannelStockByDrug(ChannelStock cs, int drawerNo, int? take, int? skip)
|
||||
{
|
||||
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);
|
||||
|
||||
|
||||
|
||||
int pagedData = await query.CountAsync();
|
||||
|
||||
List<ChannelStock> list = await query
|
||||
.LoadWith(cs => cs.Drug)
|
||||
.OrderBy((cs) => cs.DrugId)
|
||||
.Skip((int)skip)
|
||||
.Take((int)take)
|
||||
.ToListAsync();
|
||||
|
||||
return new PageData<ChannelStock>()
|
||||
{
|
||||
|
||||
TotalDesserts = pagedData,
|
||||
Desserts = list
|
||||
};
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Info($"药箱移库时获取选中药箱号的药品信息异常:{ex.Message}");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 药箱交换药品获取所有除本药箱外的所有药箱号
|
||||
/// </summary>
|
||||
/// <param name="machineId"></param>
|
||||
/// <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)
|
||||
.GroupBy(cs => cs.DrawerNo).Select(cs => cs.Key).ToArray();
|
||||
return ints;
|
||||
}
|
||||
/// <summary>
|
||||
/// 药箱移除药品,获取所有除本药箱外的所有包含该药品的药箱号
|
||||
/// </summary>
|
||||
/// <param name="machineId"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<int[]> GetDrawerNumForRemove(ChannelStock channelStock)
|
||||
{
|
||||
int[] ints = _connection.ChannelStock.Where(cs => cs.MachineId == channelStock.MachineId && cs.DrugId == channelStock.DrugId && cs.DrawerNo != channelStock.DrawerNo).GroupBy(cs => cs.DrawerNo).Select(cs => cs.Key).ToArray();
|
||||
return ints;
|
||||
}
|
||||
//手术室药箱交换药品完成
|
||||
public async Task<bool> BoxReplaceFinish(ChannelStock stock, List<ChannelStock> stockList)
|
||||
{
|
||||
try
|
||||
{
|
||||
bool flag = true;
|
||||
_connection.BeginTransaction();
|
||||
for (int i = 0; i < stockList.Count; i++)
|
||||
{
|
||||
//查询出药的药箱是否有该批次的药品
|
||||
ChannelStock replace1ChannelStock = _connection.ChannelStock.AsQueryable()
|
||||
.Where(cs => cs.MachineId == stockList[i].MachineId && cs.DrawerNo == stock.DrawerNo && cs.DrugId == stockList[i].DrugId && cs.ManuNo == stockList[i].ManuNo && cs.EffDate == stockList[i].EffDate)
|
||||
.FirstOrDefault();
|
||||
if (replace1ChannelStock != null)
|
||||
{
|
||||
//如果有该批次的药品,则更新数量
|
||||
int r = _connection.ChannelStock.Where(cs => cs.Id == replace1ChannelStock.Id)
|
||||
.Set(cs => cs.Quantity, replace1ChannelStock.Quantity + stockList[i].AddQuantity)
|
||||
.Update();
|
||||
if (r <= 0)
|
||||
{
|
||||
logger.Info($"更新药箱药品数量失败,药箱号:{stockList[i].DrawerNo},药品ID:{stockList[i].DrugId}");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//如果没有该批次的药品,则新增一条记录
|
||||
int mid = _connection.Insert(new ChannelStock()
|
||||
{
|
||||
Id = Guid.NewGuid().ToString(),
|
||||
MachineId = stockList[i].MachineId,
|
||||
DrawerNo = stock.DrawerNo,
|
||||
DrugId = stockList[i].DrugId,
|
||||
ManuNo = stockList[i].ManuNo,
|
||||
EffDate = stockList[i].EffDate,
|
||||
Quantity = stockList[i].AddToQuantity,
|
||||
BaseQuantity = stockList[i].BaseQuantity,
|
||||
BoxState = 1
|
||||
});
|
||||
if (mid <= 0)
|
||||
{
|
||||
logger.Info($"新增药箱药品记录失败,药箱号:{stockList[i].DrawerNo},药品ID:{stockList[i].DrugId}");
|
||||
flag = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//记录操作记录
|
||||
int recordId = _connection.InsertWithInt32Identity(new MachineRecord()
|
||||
{
|
||||
MachineId = stock.MachineId,
|
||||
DrawerNo = stock.DrawerNo,
|
||||
DrugId = stock.DrugId,
|
||||
ManuNo = stock.ManuNo,
|
||||
EffDate = !String.IsNullOrEmpty(stock.EffDate) ? DateTime.ParseExact(stock.EffDate, "yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture) : null,
|
||||
OperationTime = DateTime.Now,
|
||||
Type = 69, //交换
|
||||
Quantity = stockList[i].AddQuantity,
|
||||
Operator = _globalStateService.Operator.Id,
|
||||
Reviewer = _globalStateService.Reviewer?.Id ?? _globalStateService.Operator.Id,
|
||||
InvoiceId = stockList[i].Id.ToString(),
|
||||
});
|
||||
if(recordId <= 0)
|
||||
{
|
||||
logger.Info($"药箱{stock.DrawerNo}交换药品新增操作记录失败,药箱号:{stockList[i].DrawerNo},药品ID:{stockList[i].DrugId}");
|
||||
flag = false;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//更新入药的药箱中的药品数量
|
||||
ChannelStock replace2ChannelStock = _connection.ChannelStock.AsQueryable()
|
||||
.Where(cs => cs.MachineId == stockList[i].MachineId && cs.DrawerNo == stockList[i].DrawerNo && cs.DrugId == stock.DrugId && cs.ManuNo == stock.ManuNo && cs.EffDate == stock.EffDate)
|
||||
.FirstOrDefault();
|
||||
if (replace2ChannelStock != null)
|
||||
{
|
||||
//如果有该批次的药品,则更新数量
|
||||
int r = _connection.ChannelStock.Where(cs => cs.Id == replace2ChannelStock.Id)
|
||||
.Set(cs => cs.Quantity, replace2ChannelStock.Quantity + stockList[i].AddQuantity)
|
||||
.Update();
|
||||
if (r <= 0)
|
||||
{
|
||||
logger.Info($"更新药箱药品数量失败,药箱号:{stockList[i].DrawerNo},药品ID:{stockList[i].DrugId}");
|
||||
flag= false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//如果没有该批次的药品,则新增一条记录
|
||||
int mid = _connection.Insert(new ChannelStock()
|
||||
{
|
||||
Id = Guid.NewGuid().ToString(),
|
||||
MachineId = stockList[i].MachineId,
|
||||
DrawerNo = stockList[i].DrawerNo,
|
||||
DrugId = stock.DrugId,
|
||||
ManuNo = stock.ManuNo,
|
||||
EffDate = stock.EffDate,
|
||||
Quantity = stockList[i].AddQuantity,
|
||||
BaseQuantity = stock.BaseQuantity,
|
||||
BoxState = 1
|
||||
});
|
||||
if (mid <= 0)
|
||||
{
|
||||
logger.Info($"新增药箱药品记录失败,药箱号:{stockList[i].DrawerNo},药品ID:{stockList[i].DrugId}");
|
||||
flag= false;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
//记录操作记录
|
||||
int record2Id = _connection.InsertWithInt32Identity(new MachineRecord()
|
||||
{
|
||||
MachineId = stockList[i].MachineId,
|
||||
DrawerNo = stockList[i].DrawerNo,
|
||||
DrugId = stockList[i].DrugId,
|
||||
ManuNo = stockList[i].ManuNo,
|
||||
EffDate = !String.IsNullOrEmpty(stockList[i].EffDate) ? DateTime.ParseExact(stockList[i].EffDate, "yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture) : null,
|
||||
OperationTime = DateTime.Now,
|
||||
Type = 69, //交换
|
||||
Quantity = stockList[i].AddQuantity,
|
||||
Operator = _globalStateService.Operator.Id,
|
||||
Reviewer = _globalStateService.Reviewer?.Id ?? _globalStateService.Operator.Id,
|
||||
InvoiceId = stock.Id.ToString(),
|
||||
});
|
||||
if (record2Id <= 0)
|
||||
{
|
||||
logger.Info($"药箱{stock.DrawerNo}交换药品新增操作记录失败,药箱号:{stockList[i].DrawerNo},药品ID:{stockList[i].DrugId}");
|
||||
flag = false;
|
||||
break;
|
||||
}
|
||||
//出库药箱减数量
|
||||
int updateQuantity = _connection.ChannelStock.Where(cs => cs.Id == stock.Id)
|
||||
.Set(cs => cs.Quantity, stock.Quantity - stockList[i].AddQuantity)
|
||||
.Update();
|
||||
if (updateQuantity <= 0)
|
||||
{
|
||||
logger.Info($"更新出库药箱药品减数量失败,药箱号:{stock.DrawerNo},药品ID:{stock.DrugId}");
|
||||
flag = false;
|
||||
break;
|
||||
}
|
||||
//入库药箱减数量
|
||||
int updateQuantity2 = _connection.ChannelStock.Where(cs => cs.Id == stockList[i].Id)
|
||||
.Set(cs => cs.Quantity, stockList[i].Quantity - stockList[i].AddQuantity)
|
||||
.Update();
|
||||
if (updateQuantity2 <= 0)
|
||||
{
|
||||
logger.Info($"更新入库药箱药品减数量失败,药箱号:{stockList[i].DrawerNo},药品ID:{stockList[i].DrugId}"); flag = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (flag)
|
||||
{
|
||||
|
||||
_connection.CommitTransaction();
|
||||
}
|
||||
else
|
||||
{
|
||||
_connection.RollbackTransaction();
|
||||
}
|
||||
return flag;
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Info($"手术室药箱交换药品完成异常:{ex.Message}");
|
||||
_connection.RollbackTransaction();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
//手术室药箱移出药品完成
|
||||
public async Task<bool> BoxRemoveFinish(ChannelStock stock,int SelectedDrawerNo,int removeQuantity)
|
||||
{
|
||||
try
|
||||
{
|
||||
bool flag = true;
|
||||
_connection.BeginTransaction();
|
||||
//查询移入的药品是否有库存
|
||||
ChannelStock inChannelStock = _connection.ChannelStock.AsQueryable()
|
||||
.Where(cs => cs.MachineId == stock.MachineId && cs.DrawerNo == SelectedDrawerNo && cs.DrugId == stock.DrugId && cs.ManuNo == stock.ManuNo && cs.EffDate == stock.EffDate)
|
||||
.FirstOrDefault();
|
||||
if (inChannelStock != null)
|
||||
{
|
||||
//如果有该批次的药品,则更新数量
|
||||
int r = _connection.ChannelStock.Where(cs => cs.Id == inChannelStock.Id)
|
||||
.Set(cs => cs.Quantity, inChannelStock.Quantity + removeQuantity)
|
||||
.Update();
|
||||
if (r <= 0)
|
||||
{
|
||||
logger.Info($"手术室药箱移出药品更新数量失败,药箱号:{SelectedDrawerNo},药品ID:{stock.DrugId}");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//如果没有该批次的药品,先查询是否有未绑批次的,有则更新批次信息,无则新增一条记录
|
||||
ChannelStock inDrugChannelStock = _connection.ChannelStock.AsQueryable()
|
||||
.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)
|
||||
.Set(cs => cs.Quantity, removeQuantity)
|
||||
.Set(cs=>cs.ManuNo, stock.ManuNo)
|
||||
.Set(cs=>cs.EffDate,stock.EffDate)
|
||||
.Update();
|
||||
if (mid <= 0)
|
||||
{
|
||||
logger.Info($"更新药箱药品批次记录失败,药箱号:{stock.DrawerNo},药品ID:{stock.DrugId}");
|
||||
flag = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
int mid = _connection.Insert(new ChannelStock()
|
||||
{
|
||||
Id = Guid.NewGuid().ToString(),
|
||||
MachineId = stock.MachineId,
|
||||
DrawerNo = SelectedDrawerNo,
|
||||
DrugId = stock.DrugId,
|
||||
ManuNo = stock.ManuNo,
|
||||
EffDate = stock.EffDate,
|
||||
Quantity = removeQuantity,
|
||||
BaseQuantity = stock.BaseQuantity,
|
||||
BoxState = 1
|
||||
});
|
||||
if (mid <= 0)
|
||||
{
|
||||
logger.Info($"新增药箱药品记录失败,药箱号:{stock.DrawerNo},药品ID:{stock.DrugId}");
|
||||
flag = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (flag)
|
||||
{
|
||||
//减本库位库存数量
|
||||
int updateQuantity2 = _connection.ChannelStock.Where(cs => cs.Id == stock.Id)
|
||||
.Set(cs => cs.Quantity, stock.Quantity - removeQuantity)
|
||||
.Update();
|
||||
if (updateQuantity2 <= 0)
|
||||
{
|
||||
logger.Info($"更新入库药箱药品减数量失败,药箱号:{stock.DrawerNo},药品ID:{stock.DrugId}");
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
int updateTotalQuantity = 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)
|
||||
{
|
||||
updateTotalQuantity = _connection.ChannelList.Where(cl => cl.Id == channelList.Id)
|
||||
.Set(cl => cl.TotalQuantity, channelList.TotalQuantity - removeQuantity)
|
||||
.Update();
|
||||
}
|
||||
//修改移入药箱的总库存数
|
||||
ChannelList moveToChannelList = _connection.ChannelList.Where(cl => cl.MachineId == stock.MachineId && cl.DrawerNo == SelectedDrawerNo && cl.DrugId == stock.DrugId).FirstOrDefault();
|
||||
if (moveToChannelList != null)
|
||||
{
|
||||
updateTotalQuantity = _connection.ChannelList.Where(cl => cl.Id == moveToChannelList.Id)
|
||||
.Set(cl => cl.TotalQuantity, channelList.TotalQuantity + removeQuantity)
|
||||
.Update();
|
||||
}
|
||||
if(updateTotalQuantity>0&&updateMoveToTotalQuantity > 0)
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
|
||||
}
|
||||
if (flag)
|
||||
{
|
||||
//记录操作记录
|
||||
int recordId = _connection.InsertWithInt32Identity(new MachineRecord()
|
||||
{
|
||||
MachineId = stock.MachineId,
|
||||
DrawerNo = stock.DrawerNo,
|
||||
ColNo = SelectedDrawerNo,//移入的药箱号
|
||||
DrugId = stock.DrugId,
|
||||
ManuNo = stock.ManuNo,
|
||||
EffDate = !String.IsNullOrEmpty(stock.EffDate) ? DateTime.ParseExact(stock.EffDate, "yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture) : null,
|
||||
OperationTime = DateTime.Now,
|
||||
Type = 21, //交换
|
||||
Quantity = removeQuantity,
|
||||
Operator = _globalStateService.Operator.Id,
|
||||
Reviewer = _globalStateService.Reviewer?.Id ?? _globalStateService.Operator.Id,
|
||||
InvoiceId = stock.Id.ToString(),
|
||||
});
|
||||
if (recordId <= 0)
|
||||
{
|
||||
logger.Info($"药箱{stock.DrawerNo}交换药品新增操作记录失败,药箱号:{stock.DrawerNo},药品ID:{stock.DrugId}");
|
||||
flag = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (flag)
|
||||
{
|
||||
|
||||
_connection.CommitTransaction();
|
||||
}
|
||||
else
|
||||
{
|
||||
_connection.RollbackTransaction();
|
||||
}
|
||||
return flag;
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Info($"手术室药箱移出药品异常{ex.Message}");
|
||||
_connection.RollbackTransaction();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -68,8 +68,8 @@ 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.Detail)
|
||||
//.LoadWith(oi => oi.Detail.Drug)
|
||||
.OrderBy((oi) => oi.RecvDate)
|
||||
.ThenBy((oi => oi.OrderNo))
|
||||
.Skip((int)skip)
|
||||
|
@ -619,8 +619,8 @@ 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.Detail)
|
||||
.LoadWith(oi => oi.Detail.Drug)
|
||||
.OrderBy((oi) => oi.RecvDate)
|
||||
.ThenBy((oi => oi.OrderNo))
|
||||
.Skip((int)skip)
|
||||
|
|
|
@ -43,12 +43,12 @@
|
|||
<div class="container-fluid">
|
||||
|
||||
<RadzenDataGrid @ref="grid" RowSelect="@OnRowSelect" TItem="ChannelList"
|
||||
IsLoading="@isLoading"
|
||||
RowRender="@RowRender"
|
||||
EmptyText="无数据"
|
||||
Data="@_forecasts" @bind-Value=@selectedChannelLists
|
||||
AllowColumnResize="true" AllowAlternatingRows="false"
|
||||
SelectionMode="DataGridSelectionMode.Single"
|
||||
SelectionMode="DataGridSelectionMode.Single" LoadData="@LoadData" IsLoading="@isLoading"
|
||||
Count="@count" AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} 共{2}条数据"
|
||||
ExpandMode="DataGridExpandMode.Multiple">
|
||||
<Template Context="cs">
|
||||
<RadzenDataGrid Data="@cs.ChannelStocks" EmptyText="无数据">
|
||||
|
@ -95,9 +95,13 @@
|
|||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
await base.OnInitializedAsync();
|
||||
|
||||
}
|
||||
async Task LoadData(LoadDataArgs args)
|
||||
{
|
||||
isLoading = true;
|
||||
|
||||
var result = await channelStockDao.GetBoxWaitInfo(10, 0);
|
||||
var result = await channelStockDao.GetBoxWaitInfo(args.Top, args.Skip);
|
||||
// Update the Data property
|
||||
_forecasts = result.Desserts;
|
||||
isLoading = false;
|
||||
|
@ -112,7 +116,6 @@
|
|||
// await grid.ExpandRows(grid.PagedView.Where(di => di.Stocks.Count > 0));
|
||||
}
|
||||
}
|
||||
|
||||
void RowRender(RowRenderEventArgs<ChannelList> args)
|
||||
{
|
||||
args.Expandable = args.Data.ChannelStocks.Count > 0;
|
||||
|
|
|
@ -296,7 +296,7 @@
|
|||
{
|
||||
|
||||
// 保存账册、操作记录
|
||||
var b = await channelListDao.BoxTakeFinish(data);
|
||||
var b = await channelListDao.BoxTakeFinish(data, boxChannelList);
|
||||
if (!b)
|
||||
{
|
||||
_message.Notify(new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"数据保存失败", Duration = 4000 });
|
||||
|
|
|
@ -307,7 +307,7 @@
|
|||
{
|
||||
|
||||
// 保存账册、操作记录
|
||||
var b = await channelListDao.BoxTakeFinish(data);
|
||||
var b = await channelListDao.BoxTakeFinish(data, boxChannelList);
|
||||
if (!b)
|
||||
{
|
||||
_message.Notify(new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"数据保存失败", Duration = 4000 });
|
||||
|
|
|
@ -42,13 +42,13 @@
|
|||
<div class="container-fluid">
|
||||
|
||||
<RadzenDataGrid @ref="grid" RowSelect="@OnRowSelect" TItem="ChannelList"
|
||||
IsLoading="@isLoading"
|
||||
RowRender="@RowRender"
|
||||
EmptyText="无数据"
|
||||
Data="@_forecasts" @bind-Value=@selectedChannelLists
|
||||
AllowColumnResize="true" AllowAlternatingRows="false"
|
||||
SelectionMode="DataGridSelectionMode.Single"
|
||||
ExpandMode="DataGridExpandMode.Multiple">
|
||||
ExpandMode="DataGridExpandMode.Multiple" LoadData="@LoadData" IsLoading="@isLoading" Count="@count"
|
||||
AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} 共{2}条数据">
|
||||
<Template Context="cs">
|
||||
<RadzenDataGrid Data="@cs.ChannelStocks" EmptyText="无数据">
|
||||
<Columns>
|
||||
|
@ -94,14 +94,17 @@
|
|||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
await base.OnInitializedAsync();
|
||||
|
||||
}
|
||||
async Task LoadData(LoadDataArgs args)
|
||||
{
|
||||
isLoading = true;
|
||||
|
||||
var result = await channelStockDao.GetAllBoxAddDrug(10, 0);
|
||||
var result = await channelStockDao.GetAllBoxAddDrug(args.Top, args.Skip);
|
||||
// Update the Data property
|
||||
_forecasts = result.Desserts;
|
||||
isLoading = false;
|
||||
}
|
||||
|
||||
protected override async Task OnAfterRenderAsync(bool firstRender)
|
||||
{
|
||||
base.OnAfterRender(firstRender);
|
||||
|
|
|
@ -0,0 +1,131 @@
|
|||
@page "/Box/BoxRemove"
|
||||
@using MasaBlazorApp3.Pojo.Config;
|
||||
@using MasaBlazorApp3.Pojo.Vo;
|
||||
@using MasaBlazorApp3.Util;
|
||||
@using Microsoft.Extensions.Options;
|
||||
@using Newtonsoft.Json;
|
||||
@using log4net;
|
||||
|
||||
<RadzenStack Gap="1rem" Orientation="Orientation.Vertical" Style="height: 100%;">
|
||||
<RadzenStack>
|
||||
<RadzenStack class="rz-p-4 rz-border-radius-1" Style="border: var(--rz-grid-cell-border)" Orientation="Orientation.Horizontal" Gap="1rem">
|
||||
<RadzenText Class="rz-mt-2 rz-my-0" Style="color: var(--rz-text-tertiary-color);">药名:</RadzenText>
|
||||
<RadzenText Class="rz-text-truncate"><b>@(channelStock.Drug.DrugName)</b></RadzenText>
|
||||
<RadzenText Class="rz-mt-2 rz-my-0" Style="color: var(--rz-text-tertiary-color);">规格:</RadzenText>
|
||||
<RadzenText TextStyle="TextStyle.Body1" Class="rz-text-truncate"><b>@(channelStock.Drug.DrugSpec)</b></RadzenText>
|
||||
<RadzenText Class="rz-mt-2 rz-my-0" Style="color: var(--rz-text-tertiary-color);">批次:</RadzenText>
|
||||
<RadzenText TextStyle="TextStyle.Body1" Class="rz-text-truncate"><b>@(channelStock.ManuNo)</b></RadzenText>
|
||||
<RadzenText Class="rz-mt-2 rz-my-0" Style="color: var(--rz-text-tertiary-color);">效期:</RadzenText>
|
||||
<RadzenText TextStyle="TextStyle.Body1" Class="rz-text-truncate"><b>@(channelStock.EffDate)</b></RadzenText>
|
||||
<RadzenText Class="rz-mt-2 rz-my-0" Style="color: var(--rz-text-tertiary-color);">库存:</RadzenText>
|
||||
<RadzenText TextStyle="TextStyle.Body1" Class="rz-text-truncate"><b>@(channelStock.Quantity)</b></RadzenText>
|
||||
</RadzenStack>
|
||||
</RadzenStack>
|
||||
<RadzenStack style="align-content:center">
|
||||
|
||||
<RadzenStack class="rz-p-4 rz-border-radius-1" Style="border: var(--rz-grid-cell-border);align-content:center" Orientation="Orientation.Horizontal" Gap="1rem">
|
||||
<RadzenText Class="rz-mt-2 rz-my-0" Style="color: var(--rz-text-tertiary-color);">移入药箱:</RadzenText>
|
||||
<RadzenDropDown @bind-Value="SelectedDrawerNo" Data="@DrawerNos" Style="display: block;" Name="DropDownChangeEvent">
|
||||
<RadzenText TextStyle="TextStyle.Subtitle2" class="mb-0">@(SelectedDrawerNo)</RadzenText>
|
||||
</RadzenDropDown>
|
||||
|
||||
<RadzenText Class="rz-mt-2 rz-my-0" Style="color: var(--rz-text-tertiary-color);">移入数量:</RadzenText>
|
||||
|
||||
<RadzenNumeric Min="0" Style="display: block" Max=@channelStock.Quantity Name="Quantity" @bind-Value="removeQuantity" />
|
||||
</RadzenStack>
|
||||
</RadzenStack>
|
||||
<RadzenStack Orientation="Orientation.Horizontal" JustifyContent="JustifyContent.Center" Gap="0.5rem">
|
||||
|
||||
<RadzenButton Click="@Save" ButtonStyle="ButtonStyle.Success" Variant="Variant.Flat" Text="完成" Style="width: 120px" />
|
||||
|
||||
<RadzenButton Click="@Cancel" Variant="Variant.Flat" Text="取消" Style="width: 120px" />
|
||||
|
||||
</RadzenStack>
|
||||
</RadzenStack>
|
||||
|
||||
@code {
|
||||
@inject Radzen.DialogService dialogService;
|
||||
@inject IChannelListDao channelListDao;
|
||||
@inject IOptions<SettingConfig> setting;
|
||||
@inject NotificationService _message
|
||||
@inject PortUtil PortUtil;
|
||||
private readonly ILog logger = LogManager.GetLogger(typeof(OrderDetailDialog));
|
||||
|
||||
int removeQuantity;
|
||||
int status;
|
||||
|
||||
int[] DrawerNos;
|
||||
int SelectedDrawerNo = 0;
|
||||
|
||||
[Parameter] public ChannelStock channelStock { get; set; }
|
||||
private bool CanTakeDrug = true;
|
||||
|
||||
// public List<BoxTakeVo> data { get; set; }
|
||||
|
||||
|
||||
//称重取药数量
|
||||
int[] WeightFinnalQuantity { get; set; } = new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
|
||||
|
||||
//开抽屉前操作标识
|
||||
List<string> DrawerNoColNoList = new List<string>();
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
DrawerNos = await channelListDao.GetDrawerNumForRemove(channelStock);
|
||||
if (DrawerNos != null && DrawerNos.Count() > 0)
|
||||
{
|
||||
SelectedDrawerNo = DrawerNos[0];
|
||||
// var result = await channelListDao.GetChannelStockByDrug(channelStock, SelectedDrawerNo, 8, 0);
|
||||
// selectedDrawerData = result.Desserts;
|
||||
}
|
||||
base.OnInitializedAsync();
|
||||
}
|
||||
|
||||
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 Save()
|
||||
{
|
||||
if (removeQuantity<=0)
|
||||
{
|
||||
_message.Notify(new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = "请输入移入数量", Duration = 4000 });
|
||||
return;
|
||||
}
|
||||
if (SelectedDrawerNo<=0)
|
||||
{
|
||||
_message.Notify(new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = "无可移入的药箱", Duration = 4000 });
|
||||
return;
|
||||
}
|
||||
var b = await channelListDao.BoxRemoveFinish(channelStock, SelectedDrawerNo,removeQuantity);
|
||||
if (!b)
|
||||
{
|
||||
_message.Notify(new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"数据保存失败", Duration = 4000 });
|
||||
logger.Error($"药箱移出保存数据失败,数据{JsonConvert.SerializeObject(channelStock)}");
|
||||
}
|
||||
else
|
||||
{
|
||||
_message.Notify(new NotificationMessage { Severity = NotificationSeverity.Success, Summary = "提示", Detail = $"交换完成", Duration = 4000 });
|
||||
// 关闭弹窗
|
||||
dialogService.Close(true);
|
||||
|
||||
}
|
||||
//重置状态
|
||||
this.RestData();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,169 @@
|
|||
@page "/Box/BoxReplace"
|
||||
@using MasaBlazorApp3.Pojo.Config;
|
||||
@using MasaBlazorApp3.Pojo.Vo;
|
||||
@using MasaBlazorApp3.Util;
|
||||
@using Microsoft.Extensions.Options;
|
||||
@using Newtonsoft.Json;
|
||||
@using log4net;
|
||||
|
||||
<RadzenStack Gap="1rem" Orientation="Orientation.Vertical" Style="height: 100%;">
|
||||
<RadzenStack>
|
||||
<RadzenStack class="rz-p-4 rz-border-radius-1" Style="border: var(--rz-grid-cell-border)" Orientation="Orientation.Horizontal" Gap="1rem">
|
||||
<RadzenText Class="rz-mt-2 rz-my-0" Style="color: var(--rz-text-tertiary-color);">药名:</RadzenText>
|
||||
<RadzenText Class="rz-text-truncate"><b>@(channelStock.Drug.DrugName)</b></RadzenText>
|
||||
<RadzenText Class="rz-mt-2 rz-my-0" Style="color: var(--rz-text-tertiary-color);">规格:</RadzenText>
|
||||
<RadzenText TextStyle="TextStyle.Body1" Class="rz-text-truncate"><b>@(channelStock.Drug.DrugSpec)</b></RadzenText>
|
||||
<RadzenText Class="rz-mt-2 rz-my-0" Style="color: var(--rz-text-tertiary-color);">批次:</RadzenText>
|
||||
<RadzenText TextStyle="TextStyle.Body1" Class="rz-text-truncate"><b>@(channelStock.ManuNo)</b></RadzenText>
|
||||
<RadzenText Class="rz-mt-2 rz-my-0" Style="color: var(--rz-text-tertiary-color);">效期:</RadzenText>
|
||||
<RadzenText TextStyle="TextStyle.Body1" Class="rz-text-truncate"><b>@(channelStock.EffDate)</b></RadzenText>
|
||||
<RadzenText Class="rz-mt-2 rz-my-0" Style="color: var(--rz-text-tertiary-color);">库存:</RadzenText>
|
||||
<RadzenText TextStyle="TextStyle.Body1" Class="rz-text-truncate"><b>@(channelStock.Quantity)</b></RadzenText>
|
||||
<RadzenText Class="rz-mt-2 rz-my-0" Style="color: var(--rz-text-tertiary-color);">交换药箱:</RadzenText>
|
||||
<RadzenDropDown @bind-Value="SelectedDrawerNo" Data="@DrawerNos" Style="display: block;" Change="@(args => SelectedDrawerChange(args))" Name="DropDownChangeEvent">
|
||||
|
||||
<RadzenText TextStyle="TextStyle.Subtitle2" class="mb-0">@(SelectedDrawerNo)</RadzenText>
|
||||
|
||||
</RadzenDropDown>
|
||||
|
||||
</RadzenStack>
|
||||
<RadzenDataGrid @ref="grid" Data="@selectedDrawerData" AllowAlternatingRows="true" LoadData="@LoadData" IsLoading="@isLoading" Count="@count" EmptyText="无数据"
|
||||
CellClick="@((DataGridCellMouseEventArgs<ChannelStock> args) => OnCellClick(args))"
|
||||
AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} 共{2}条数据">
|
||||
<Columns>
|
||||
<RadzenDataGridColumn Property="DrawerNo" Title="药箱号">
|
||||
</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 MinWidth="100px" Title="交换数量" Property="AddQuantity">
|
||||
<EditTemplate Context="cs">
|
||||
<RadzenNumeric Min="0" Style="display: block" Max=@cs.Quantity Name="Quantity" @bind-Value=@cs.AddQuantity />
|
||||
<RadzenNumericRangeValidator Style="position: absolute;z-index: 9999;" Min="0" Text="请填写正确的交换数量" Component="Quantity" Popup="true" />
|
||||
</EditTemplate>
|
||||
</RadzenDataGridColumn>
|
||||
</Columns>
|
||||
</RadzenDataGrid>
|
||||
|
||||
</RadzenStack>
|
||||
<RadzenStack Orientation="Orientation.Horizontal" JustifyContent="JustifyContent.Center" Gap="0.5rem">
|
||||
|
||||
<RadzenButton Click="@Save" ButtonStyle="ButtonStyle.Success" Variant="Variant.Flat" Text="保存" Style="width: 120px" />
|
||||
|
||||
<RadzenButton Click="@Cancel" Variant="Variant.Flat" Text="取消" Style="width: 120px" />
|
||||
|
||||
</RadzenStack>
|
||||
</RadzenStack>
|
||||
|
||||
@code {
|
||||
@inject Radzen.DialogService dialogService;
|
||||
@inject IChannelListDao channelListDao;
|
||||
@inject IOptions<SettingConfig> setting;
|
||||
@inject NotificationService _message
|
||||
@inject PortUtil PortUtil;
|
||||
private readonly ILog logger = LogManager.GetLogger(typeof(OrderDetailDialog));
|
||||
|
||||
int status;
|
||||
bool isLoading;
|
||||
int count;
|
||||
int[] DrawerNos;
|
||||
int SelectedDrawerNo=0;
|
||||
|
||||
[Parameter] public ChannelStock channelStock { get; set; }
|
||||
private bool CanTakeDrug = true;
|
||||
|
||||
// public List<BoxTakeVo> data { get; set; }
|
||||
|
||||
public List<ChannelStock> selectedDrawerData{ get; set; }
|
||||
|
||||
//称重取药数量
|
||||
int[] WeightFinnalQuantity { get; set; } = new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
|
||||
|
||||
//开抽屉前操作标识
|
||||
List<string> DrawerNoColNoList = new List<string>();
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
DrawerNos = await channelListDao.GetDrawerNum(channelStock);
|
||||
base.OnInitializedAsync();
|
||||
}
|
||||
async Task LoadData(LoadDataArgs args)
|
||||
{
|
||||
isLoading = true;
|
||||
|
||||
if (DrawerNos != null && DrawerNos.Count() > 0)
|
||||
{
|
||||
SelectedDrawerNo = DrawerNos[0];
|
||||
var result = await channelListDao.GetChannelStockByDrug(channelStock, SelectedDrawerNo, args.Top, args.Skip);
|
||||
selectedDrawerData = result.Desserts;
|
||||
count = result.TotalDesserts;
|
||||
}
|
||||
isLoading = false;
|
||||
}
|
||||
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 Save()
|
||||
{
|
||||
if (selectedDrawerData!=null&&selectedDrawerData.Any(cl => cl.AddQuantity != 0 && cl.DrugId != null && cl.ManuNo != null))
|
||||
{
|
||||
if (selectedDrawerData.Where(cs => cs.AddQuantity != 0).Sum(cs => cs.Quantity) > channelStock.Quantity)
|
||||
{
|
||||
_message.Notify(new NotificationMessage { Severity = NotificationSeverity.Warning, Summary = "提示", Detail = $"交换总数量不能大于库存", Duration = 4000 });
|
||||
return;
|
||||
}
|
||||
var b = await channelListDao.BoxReplaceFinish(channelStock,selectedDrawerData.Where(cl => cl.AddQuantity != 0).ToList());
|
||||
if (!b)
|
||||
{
|
||||
_message.Notify(new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"数据保存失败", Duration = 4000 });
|
||||
logger.Error($"药箱药品替换保存数据库失败,数据{JsonConvert.SerializeObject(selectedDrawerData.Where(cl => cl.AddQuantity != 0).ToList())}");
|
||||
}
|
||||
else
|
||||
{
|
||||
_message.Notify(new NotificationMessage { Severity = NotificationSeverity.Success, Summary = "提示", Detail = $"交换完成", Duration = 4000 });
|
||||
// 关闭弹窗
|
||||
dialogService.Close(true);
|
||||
|
||||
}
|
||||
//重置状态
|
||||
this.RestData();
|
||||
}
|
||||
else
|
||||
{
|
||||
_message.Notify(new NotificationMessage { Severity = NotificationSeverity.Warning, Summary = "提示", Detail = $"无可交换数据或未输入交换数量", Duration = 4000 });
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
async Task SelectedDrawerChange(object drawerNo)
|
||||
{
|
||||
var result = await channelListDao.GetChannelStockByDrug(channelStock, Convert.ToInt32(drawerNo), 8, 0);
|
||||
selectedDrawerData = result.Desserts;
|
||||
}
|
||||
int currentCol = 0;
|
||||
|
||||
RadzenDataGrid<ChannelStock> grid;
|
||||
void OnCellClick(DataGridCellMouseEventArgs<ChannelStock> args)
|
||||
{
|
||||
currentCol = args.Data.ColNo;
|
||||
grid.EditRow(args.Data);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,239 @@
|
|||
@page "/Box/BoxStock"
|
||||
@using MasaBlazorApp3.Pojo.Config
|
||||
|
||||
<RadzenStack Orientation="Orientation.Horizontal" class="col-12 mb-4">
|
||||
<div class="col-12 row justify-content-center align-items-center text-center" style="background: url('/images/box-16.jpg') no-repeat; background-size: 100% 100%; width: 380px; height:650px">
|
||||
<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)" />
|
||||
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-9 mb-4">
|
||||
@* <RadzenFieldset Text="">
|
||||
<RadzenStack Orientation="Orientation.Horizontal" Gap="1rem">
|
||||
<RadzenRow AlignItems="AlignItems.Center">
|
||||
<RadzenColumn Size="12">
|
||||
<RadzenButton Size="ButtonSize.Medium" ButtonType="ButtonType.Submit" IsBusy="isLoading" Icon="search" Text="替换药品" />
|
||||
<RadzenButton Size="ButtonSize.Medium" Click="reloadGrid" IsBusy="isLoading" Icon="refresh" Text="移出药品" ButtonStyle="ButtonStyle.Warning" />
|
||||
</RadzenColumn>
|
||||
</RadzenRow>
|
||||
</RadzenStack>
|
||||
</RadzenFieldset> *@
|
||||
|
||||
@* <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}条数据">
|
||||
<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)))"
|
||||
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" } })"
|
||||
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" />
|
||||
</Columns>
|
||||
</RadzenDataGrid> *@
|
||||
|
||||
<RadzenDataList @ref="grid" LoadData="@LoadData" WrapItems="true" Count="@count" IsLoading="@isLoading"
|
||||
Data="@_forecasts" PageSize="6" AllowPaging="true" PagerHorizontalAlign="HorizontalAlign.Left"
|
||||
ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} 共{2}条数据">
|
||||
<Template Context="pd">
|
||||
<RadzenCard Variant="Variant.Outlined" class="rz-p-0" Style="width: 100%; overflow: hidden;">
|
||||
<RadzenRow Gap="0">
|
||||
<RadzenColumn Size="12" SizeLG="2" class="rz-p-4 product-title">
|
||||
<RadzenText TextStyle="TextStyle.H6" TagName="TagName.H5" class="rz-color-on-secondary-lighter">@(pd._DrugInfo.DrugName)</RadzenText>
|
||||
</RadzenColumn>
|
||||
<RadzenColumn Size="12" SizeLG="3" class="rz-p-4 product-title">
|
||||
<RadzenText TextStyle="TextStyle.H6" TagName="TagName.H5" class="rz-color-on-secondary-lighter">@(pd._DrugInfo.Manufactory)</RadzenText>
|
||||
</RadzenColumn>
|
||||
<RadzenColumn Size="12" SizeLG="2" class="rz-p-4 product-title">
|
||||
<RadzenText TextStyle="TextStyle.H6" TagName="TagName.H5" class="rz-color-on-secondary-lighter">@(pd._DrugInfo.DrugSpec)</RadzenText>
|
||||
</RadzenColumn>
|
||||
<RadzenColumn Size="12" SizeLG="1" class="rz-p-4 product-title">
|
||||
<RadzenText TextStyle="TextStyle.H6" TagName="TagName.H5" class="rz-color-on-secondary-lighter">@(pd.BaseQuantity)</RadzenText>
|
||||
</RadzenColumn>
|
||||
@* <RadzenColumn Size="12" SizeLG="2" class="rz-p-4">
|
||||
<RadzenButton Text="替换药品" Style="width: 100%" Click="@(() => replaceClick(pd))" />
|
||||
</RadzenColumn>
|
||||
<RadzenColumn Size="12" SizeLG="2" class="rz-p-4">
|
||||
<RadzenButton Text="移出药品" Style="width: 100%" Click="@(()=>removeClick(pd))" />
|
||||
</RadzenColumn> *@
|
||||
@if (pd.channelStocks != null && pd.channelStocks.Count > 0)
|
||||
{
|
||||
for (int i = 0; i < pd.channelStocks.Count; i++)
|
||||
{
|
||||
var manuInfo = pd.channelStocks[i];
|
||||
var manuNo = 1;
|
||||
if (i == 0)
|
||||
{
|
||||
manuNo = 0;
|
||||
}
|
||||
<RadzenColumn Size="12" SizeLG="7" class="rz-p-4">
|
||||
@if (manuInfo != null && manuInfo.ManuNo != null)
|
||||
{
|
||||
<RadzenRow Gap="0">
|
||||
<RadzenColumn Size="12" SizeMD="6" SizeLG="2">
|
||||
@if (manuNo == 0)
|
||||
{
|
||||
<RadzenText TextStyle="TextStyle.H6" TagName="TagName.H5" class="rz-mb-0">批次</RadzenText>
|
||||
}
|
||||
<RadzenText TextStyle="TextStyle.Body2">@(manuInfo.ManuNo)</RadzenText>
|
||||
</RadzenColumn>
|
||||
<RadzenColumn Size="12" SizeMD="6" SizeLG="2">
|
||||
@if (manuNo == 0)
|
||||
{
|
||||
<RadzenText TextStyle="TextStyle.H6" TagName="TagName.H5" class="rz-mb-0">效期</RadzenText>
|
||||
}
|
||||
<RadzenText TextStyle="TextStyle.Body2">@(manuInfo.EffDate)</RadzenText>
|
||||
</RadzenColumn>
|
||||
<RadzenColumn Size="12" SizeMD="6" SizeLG="2">
|
||||
@if (manuNo == 0)
|
||||
{
|
||||
<RadzenText TextStyle="TextStyle.H6" TagName="TagName.H5" class="rz-mb-0">库存</RadzenText>
|
||||
}
|
||||
<RadzenText TextStyle="TextStyle.Body2">@(manuInfo.Quantity)</RadzenText>
|
||||
</RadzenColumn>
|
||||
<RadzenColumn Size="12" SizeLG="2" class="rz-p-4">
|
||||
<RadzenButton Text="替换药品" Style="width: 100%" Click="@(() => replaceClick(manuInfo))" />
|
||||
</RadzenColumn>
|
||||
<RadzenColumn Size="12" SizeLG="2" class="rz-p-4">
|
||||
<RadzenButton Text="移出药品" Style="width: 100%" Click="@(() => removeClick(manuInfo))" />
|
||||
</RadzenColumn>
|
||||
</RadzenRow>
|
||||
}
|
||||
else
|
||||
{
|
||||
<RadzenRow Gap="0">
|
||||
<RadzenColumn Size="12" SizeMD="6" SizeLG="2">
|
||||
<RadzenText TextStyle="TextStyle.H6" TagName="TagName.H5" class="rz-mb-0">未绑定批次</RadzenText>
|
||||
</RadzenColumn>
|
||||
</RadzenRow>
|
||||
}
|
||||
</RadzenColumn>
|
||||
}
|
||||
}
|
||||
</RadzenRow>
|
||||
</RadzenCard>
|
||||
</Template>
|
||||
</RadzenDataList>
|
||||
|
||||
</div>
|
||||
</RadzenStack>
|
||||
@code {
|
||||
@inject IOrderInfoDao orderInfoDao;
|
||||
@inject IChannelListDao channelListDao;
|
||||
@inject DialogService dialogService;
|
||||
@inject Microsoft.Extensions.Options.IOptions<Pojo.Config.SettingConfig> setting;
|
||||
@inject NotificationService _message
|
||||
|
||||
private IEnumerable<PlanDetails>? _forecasts;
|
||||
bool allowRowSelectOnRowClick = true;
|
||||
// IEnumerable<DrugManuNo> drugManuNos;
|
||||
// IList<DrugManuNo> selectedDrugManuNos;
|
||||
RadzenDataList<PlanDetails> grid;
|
||||
// RadzenDataGrid<DrugManuNo> gridManuNo;
|
||||
bool isLoading;
|
||||
int count;
|
||||
int[] DrawerNos = new int[] { 1, 2, 3, 4, 5, 6, 7, 8 };
|
||||
int status = 0;
|
||||
int drawerNo = 1;
|
||||
string OrderNo;
|
||||
DateTime OrderDate;
|
||||
void SelectDrawer(int drawerNo)
|
||||
{
|
||||
this.drawerNo = drawerNo;
|
||||
grid.Reload();
|
||||
}
|
||||
// void OnCurrentDateChanged(DateTime args)
|
||||
// {
|
||||
// OrderDate = new DateTime(args.Year, args.Month, args.Day);
|
||||
// }
|
||||
//重置
|
||||
async Task reloadGrid()
|
||||
{
|
||||
OrderNo = "";
|
||||
OrderDate = DateTime.MinValue;
|
||||
await grid.Reload();
|
||||
}
|
||||
//确认
|
||||
async Task Confirm()
|
||||
{
|
||||
// orderInfoDao.CheckOrderInfo(selectedOrderInfos, drawerNo);
|
||||
}
|
||||
|
||||
async Task LoadData(LoadDataArgs args)
|
||||
{
|
||||
isLoading = true;
|
||||
|
||||
var result = await channelListDao.GetBoxDrugInfo(drawerNo, args.Top, args.Skip);
|
||||
// Update the Data property
|
||||
_forecasts = result.Desserts;
|
||||
// Update the count
|
||||
count = result.TotalDesserts;
|
||||
|
||||
isLoading = false;
|
||||
|
||||
DrawerNos = await orderInfoDao.GetDrawerNum(setting.Value.boxMachineId);
|
||||
}
|
||||
//替换按钮
|
||||
async Task replaceClick(ChannelStock cs)
|
||||
{
|
||||
if (cs.Quantity > 0)
|
||||
{
|
||||
var b = await dialogService.OpenAsync<BoxReplace>(
|
||||
$"{cs.DrawerNo}号药箱替换药品详情",
|
||||
new Dictionary<string, object>() { { "channelStock", cs } },
|
||||
new DialogOptions() { Width = "85vw", Resizable = true, Draggable = true, ShowClose = false }
|
||||
);
|
||||
if (b)
|
||||
{
|
||||
await reloadGrid();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//库存为0无法操作
|
||||
_message.Notify(
|
||||
new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"库存为0无法替换", Duration = 4000 }
|
||||
);
|
||||
}
|
||||
}
|
||||
//移除按钮
|
||||
async Task removeClick(ChannelStock cs)
|
||||
{
|
||||
if (cs.Quantity > 0)
|
||||
{
|
||||
var b = await dialogService.OpenAsync<BoxRemoveDialog>(
|
||||
$"{cs.DrawerNo}号药箱替换药品详情",
|
||||
new Dictionary<string, object>() { { "channelStock", cs } },
|
||||
new DialogOptions() { Width = "85vw", Resizable = true, Draggable = true, ShowClose = false }
|
||||
);
|
||||
if (b)
|
||||
{
|
||||
await reloadGrid();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//库存为0无法操作
|
||||
_message.Notify(
|
||||
new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"库存为0,没有要移出的药品", Duration = 4000 }
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -50,5 +50,7 @@ namespace MasaBlazorApp3.Pojo
|
|||
//手术室药箱中的库存总数
|
||||
[Column("stock_quantity")]
|
||||
public int TotalQuantity { get; set; }
|
||||
[Association(ThisKey = nameof(DrugId), OtherKey = nameof(PlanDetails.PlanId))]
|
||||
public List<PlanDetails> _PlanDetails { get; set; } = new();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -72,7 +72,7 @@ namespace MasaBlazorApp3.Pojo
|
|||
[Column("eff_date")]
|
||||
public DateTime? EffDate { get; set; }
|
||||
/// <summary>
|
||||
/// 出库入库类型(1入库2出库31还药32还空瓶)
|
||||
/// 出库入库类型(1入库2出库31还药32还空瓶,21药箱移出移入,69药箱药品替换,55药箱套餐绑定解绑)
|
||||
///</summary>
|
||||
[Column("type")]
|
||||
public int Type { get; set; }
|
||||
|
|
|
@ -23,7 +23,7 @@ namespace MasaBlazorApp3.Pojo
|
|||
[Column("Drug_Id")]
|
||||
public string DrugId { get; set; }
|
||||
|
||||
[Association(ThisKey = nameof(Id), OtherKey = nameof(PlanDetails.DrugId))]
|
||||
[Association(ThisKey = nameof(DrugId), OtherKey = nameof(DrugInfo.DrugId))]
|
||||
public DrugInfo _DrugInfo { get; set; } = new();
|
||||
//添加时间
|
||||
[Column("AddTime")]
|
||||
|
@ -37,5 +37,9 @@ namespace MasaBlazorApp3.Pojo
|
|||
//审核人
|
||||
[Column("reviewerUser")]
|
||||
public int ReviewerUser { get; set; }
|
||||
public List<ChannelStock> channelStocks { get; set; } = new List<ChannelStock>();
|
||||
|
||||
public DrugManuNo _ManuNo { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -246,6 +246,12 @@ namespace MasaBlazorApp3.Pojo
|
|||
PremissionName = "药箱入库",
|
||||
PremissionPath = "/Box/BoxAddBox"
|
||||
});
|
||||
x.AddChild(new Premission()
|
||||
{
|
||||
Id = 59,
|
||||
PremissionName = "药箱库存",
|
||||
PremissionPath = "/Box/BoxStock"
|
||||
});
|
||||
list.Add(q);
|
||||
list.Add(j);
|
||||
list.Add(h);
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"connectionStrings": "server=127.0.0.1;port=3306;database=hkcdb;userid=root;password=root;Charset=utf8mb4;",
|
||||
"connectionStrings": "server=127.0.0.1;port=3306;database=hkcdb;userid=root;password=qq1223;Charset=utf8mb4;",
|
||||
"finger": {
|
||||
"ip": "192.168.50.201",
|
||||
"ip": "192.168.50.59",
|
||||
"port": 4370,
|
||||
"type": 2
|
||||
},
|
||||
|
@ -15,9 +15,9 @@
|
|||
"boxMachineId": "DM5"
|
||||
},
|
||||
"port": {
|
||||
"drawerPortPath": "COM1",
|
||||
"drawerPortPath": "COM2",
|
||||
"drawerProtocol": 485,
|
||||
"scanCodePortPath": "COM8",
|
||||
"scanCodePortPath": "COM1",
|
||||
"canBusPortPath": "COM31",
|
||||
"canBusExsit": true,
|
||||
"doorAddr": 0,
|
||||
|
|
Loading…
Reference in New Issue