diff --git a/DM_Weight/App.config b/DM_Weight/App.config
index 4eae1fd..78cf96a 100644
--- a/DM_Weight/App.config
+++ b/DM_Weight/App.config
@@ -3,7 +3,7 @@
-
+
diff --git a/DM_Weight/App.xaml.cs b/DM_Weight/App.xaml.cs
index 4338d05..8ba205c 100644
--- a/DM_Weight/App.xaml.cs
+++ b/DM_Weight/App.xaml.cs
@@ -170,9 +170,11 @@ namespace DM_Weight
//请领列表
containerRegistry.RegisterForNavigation();
- // 请领详情模态框
- containerRegistry.RegisterDialog();
- containerRegistry.RegisterForNavigation();
+
+
+ //请领入库
+ containerRegistry.RegisterForNavigation();
+
#endregion
#region 还药
diff --git a/DM_Weight/Models/ChannelStock.cs b/DM_Weight/Models/ChannelStock.cs
index 8bcd816..2caa30e 100644
--- a/DM_Weight/Models/ChannelStock.cs
+++ b/DM_Weight/Models/ChannelStock.cs
@@ -185,5 +185,8 @@ namespace DM_Weight.Models
[Navigate(NavigateType.ManyToOne, nameof(Chnguid))]
public ChannelList ChannelLst { get => _channelList; set => SetProperty(ref _channelList, value); }
+ [SugarColumn(IsIgnore = true)]
+ public DrugPleaseClaim PleaseClaim { get; set; }
+
}
}
\ No newline at end of file
diff --git a/DM_Weight/Models/DrugPleaseClaim.cs b/DM_Weight/Models/DrugPleaseClaim.cs
index e9ef982..2cd550e 100644
--- a/DM_Weight/Models/DrugPleaseClaim.cs
+++ b/DM_Weight/Models/DrugPleaseClaim.cs
@@ -120,6 +120,10 @@ namespace DM_Weight.Models
//[Navigate(NavigateType.ManyToMany, nameof(PleaseNo))]
- //public CollectDrug collectDrug { get; set; }
+ //public CollectDrug collectDrug { get; set; }]
+
+
+ [Navigate(NavigateType.OneToOne, nameof(DrugId))]
+ public DrugInfo DrugInfo { get; set; }
}
}
diff --git a/DM_Weight/Models/DrugPleaseManuNo.cs b/DM_Weight/Models/DrugPleaseManuNo.cs
new file mode 100644
index 0000000..16d7a90
--- /dev/null
+++ b/DM_Weight/Models/DrugPleaseManuNo.cs
@@ -0,0 +1,25 @@
+using Prism.Mvvm;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace DM_Weight.Models
+{
+ ///
+ /// drug_please_claim表中drug_manu_no字段值对应映射
+ ///
+ public class DrugPleaseManuNo
+ {
+ public string DrugId { get; set; }
+
+ public string ManuNo { get; set; }
+
+ public string EffDate { get; set;}
+
+ public int Quantity { get; set; }
+
+ }
+}
diff --git a/DM_Weight/ViewModels/AccountWindowViewModel.cs b/DM_Weight/ViewModels/AccountWindowViewModel.cs
index ffe0ee6..681e076 100644
--- a/DM_Weight/ViewModels/AccountWindowViewModel.cs
+++ b/DM_Weight/ViewModels/AccountWindowViewModel.cs
@@ -184,7 +184,7 @@ namespace DM_Weight.ViewModels
//MachineRecordService _machineRecordService;
IEventAggregator _eventAggregator;
////private SqlSugarScope SqlSugarHelper.Db;
- public AccountWindowViewModel( IEventAggregator eventAggregator)
+ public AccountWindowViewModel(IEventAggregator eventAggregator)
{
//_machineRecordService = machineRecord;
////this.SqlSugarHelper.Db = sqlSugarScope;
@@ -219,7 +219,7 @@ namespace DM_Weight.ViewModels
DrugInfos = list;
DrugInfo = list[0];
}
-
+
public long CurrentTimeMillis()
{
return (long)(DateTime.UtcNow - Jan1st1970).TotalMilliseconds;
@@ -229,8 +229,9 @@ namespace DM_Weight.ViewModels
///
public DelegateCommand DownloadOrderUser
{
- get => new DelegateCommand(() => {
- GridReportUtil.OrderUseReport(StartDate, EndDate, DrugInfo == null ? "" : DrugInfo.DrugId.ToString() ?? "");
+ get => new DelegateCommand(() =>
+ {
+ GridReportUtil.OrderUseReport(StartDate, EndDate, DrugInfo == null ? "" : DrugInfo.DrugId.ToString() ?? "");
});
}
@@ -308,35 +309,35 @@ namespace DM_Weight.ViewModels
{
SQL += " AND ac.drug_id='" + drug_id + "' ";
}
- SQL += " ORDER BY ac.create_date desc,ac.drug_id";
if (type > 0)
{
if (type == 1)
{
- SQL += " WHERE AddQuantity>0 ";
+ SQL += " AND ac.add_quantity>0 ";
}
if (type == 2)
{
- SQL += " WHERE OutQuantity>0 ";
+ SQL += " AND ac.out_quantity>0 ";
}
if (type == 3)
{
- SQL += " WHERE type=3 ";
+ SQL += " AND type=3 ";
}
if (type == 4)
{
- SQL += " WHERE type=4 ";
+ SQL += " AND type=4 ";
}
+ SQL += " ORDER BY ac.create_date desc,ac.drug_id";
}
//ChannelStocks = q.Select(it => { it.CheckQuantity = it.Quantity; return it; }).ToList();
List accountList = SqlSugarHelper.Db.SqlQueryable(SQL)
- //.AddParameters(new
- //{
- // machineId = ConfigurationManager.AppSettings["machineId"] ?? "DM1"
- //})
+ //.AddParameters(new
+ //{
+ // machineId = ConfigurationManager.AppSettings["machineId"] ?? "DM1"
+ //})
//.Select(it => new { o = new AccountModel(), i = new DrugInfo() })
//.Select(it=>new AccountModel())
//.Select("*") //让上面一行不生成sql
diff --git a/DM_Weight/ViewModels/ApplyInStockWindowViewModel.cs b/DM_Weight/ViewModels/ApplyInStockWindowViewModel.cs
new file mode 100644
index 0000000..daa735d
--- /dev/null
+++ b/DM_Weight/ViewModels/ApplyInStockWindowViewModel.cs
@@ -0,0 +1,748 @@
+using DM_Weight.Models;
+using DM_Weight.msg;
+using DM_Weight.Port;
+using DM_Weight.select;
+using DM_Weight.util;
+using log4net;
+using MySqlConnector;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using Prism.Commands;
+using Prism.Events;
+using Prism.Mvvm;
+using Prism.Regions;
+using Prism.Services.Dialogs;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Configuration;
+using System.Drawing.Printing;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Windows.Data;
+using Unity;
+
+namespace DM_Weight.ViewModels
+{
+ public class ApplyInStockWindowViewModel : BindableBase, IConfirmNavigationRequest, IRegionMemberLifetime
+ {
+ private List _drugPleaseClaimList = new();
+
+ public List _DrugPleaseClaimList { get { return _drugPleaseClaimList; } set { SetProperty(ref _drugPleaseClaimList, value); } }
+
+ private DrugPleaseClaim? selectDrugPleaseClaim;
+
+ public DrugPleaseClaim? SelectDrugPleaseClaim
+ {
+ get { return selectDrugPleaseClaim; }
+ set
+ {
+ SetProperty(ref selectDrugPleaseClaim, value);
+ }
+ }
+ public static List StaticOrderTakeSelects = new()
+ {
+ new OrderTakeSelect
+ {
+ Code = "drugPleaseNo",
+ Name = "请领单号"
+ }
+ };
+
+ private List _orderTakeSelects = StaticOrderTakeSelects;
+
+ public List OrderTakeSelects
+ {
+ get { return _orderTakeSelects; }
+ set
+ {
+ SetProperty(ref _orderTakeSelects, value);
+ }
+ }
+
+ private OrderTakeSelect _selectedItem = StaticOrderTakeSelects[0];
+ ///
+ /// 查询条件 查询字段
+ ///
+ public OrderTakeSelect SelectedItem
+ {
+ get { return _selectedItem; }
+ set
+ {
+ SetProperty(ref _selectedItem, value);
+ RequestData();
+ }
+ }
+ private string _orderDate = DateTime.Now.ToString("yyyy-MM-dd");
+ ///
+ /// 查询条件 处方日期
+ ///
+ public string OrderDate
+ {
+ get { return _orderDate; }
+ set
+ {
+ if (!String.IsNullOrEmpty(value))
+ {
+ SetProperty(ref _orderDate, DateTime.Parse(value).ToString("yyyy-MM-dd"));
+ }
+ else
+ {
+ SetProperty(ref _orderDate, value);
+ }
+
+ RequestData();
+ }
+ }
+
+ private string? _searchValue;
+
+ ///
+ /// 查询条件 查询字段值
+ ///
+ public string? SearchValue
+ {
+ get { return _searchValue; }
+ set
+ {
+ SetProperty(ref _searchValue, value);
+ RequestData();
+ }
+ }
+ private List _channelStocks = new();
+
+ public List ChannelStocks { get { return _channelStocks; } set { SetProperty(ref _channelStocks, value); } }
+
+
+
+ private List _addChannels = new();
+
+ public List AddChannels { get { return _addChannels; } set { SetProperty(ref _addChannels, value); } }
+ private readonly ILog logger = LogManager.GetLogger(typeof(InvoiceInWindowViewModel));
+ private int _pageNum = 1;
+ public int PageNum
+ {
+ get => _pageNum;
+ set
+ {
+ SetProperty(ref _pageNum, value);
+ RequestData();
+ }
+ }
+
+ private int _pageCount = 1;
+ public int PageCount
+ {
+ get => _pageCount;
+ set
+ {
+ SetProperty(ref _pageCount, value);
+ }
+ }
+
+ private int _pageSize = 8;
+ public int PageSize
+ {
+ get => _pageSize;
+ set
+ {
+ SetProperty(ref _pageSize, value);
+ }
+ }
+
+ private int _totalCount = 0;
+ public int TotalCount
+ {
+ get => _totalCount;
+ set
+ {
+ SetProperty(ref _totalCount, value);
+ }
+ }
+
+ private int _status = 0;
+
+ public int Status { get => _status; set => SetProperty(ref _status, value); }
+
+
+ IDialogService _dialogService;
+
+
+ IEventAggregator _eventAggregator;
+ private PortUtil _portUtil;
+ public ApplyInStockWindowViewModel(PortUtil portUtil, IDialogService DialogService, IEventAggregator eventAggregator)
+ {
+ _dialogService = DialogService;
+ _eventAggregator = eventAggregator;
+ _portUtil = portUtil;
+ }
+ private IEnumerable> enumerable;
+ private IEnumerator> enumerator;
+ private string WindowName = "ApplyInStockWindowViewModel";
+ void DoMyPrismEvent(DeviceMsg msg)
+ {
+
+ if (msg.WindowName.Equals(WindowName))
+ {
+ IGrouping grouping = enumerator.Current;
+ int DrawerNo = grouping.Key;
+ List channelStocks = grouping.ToList();
+
+ switch (msg.EventType)
+ {
+ // 抽屉打开
+ case EventType.DRAWEROPEN:
+
+
+ if (Status == 1)
+ {
+ if (channelStocks[0].process == 1)
+ {
+ channelStocks.ForEach(it => it.process = 2);
+ }
+ }
+
+ break;
+ // 抽屉关闭
+ case EventType.DRAWERCLOSE:
+ if (Status == 1)
+ {
+ if (channelStocks[0].process == 2)
+ {
+ channelStocks.ForEach(it => it.process = 3);
+ }
+ IGrouping groupingBefore = enumerator.Current;
+ int DrawerNoBefore = groupingBefore.Key;
+ if (enumerator.MoveNext())
+ {
+ IGrouping groupingAfter = enumerator.Current;
+ int DrawerNoAfter = groupingAfter.Key;
+ if (DrawerNoBefore < 9 && DrawerNoAfter > 8)
+ {
+ Thread.Sleep(50);
+ }
+ OpenOneByOne();
+ }
+ // 已经全部取出
+ else
+ {
+ Status = 3;
+ }
+ }
+ break;
+ // 数量变化
+ case EventType.UPDATEQUANTITY:
+ if (Status == 1)
+ {
+
+ logger.Info($"抽屉【{DrawerNo}】库位药品数量【{msg.Quantitys}】");
+ }
+ break;
+ // 打开失败
+ case EventType.OPENERROR:
+ AlertMsg alertMsg = new AlertMsg
+ {
+ Message = msg.Message,
+ Type = MsgType.ERROR,
+ };
+ _eventAggregator.GetEvent().Publish(alertMsg);
+ Status = 0;
+ break;
+ }
+ }
+
+ }
+ private async void OpenOneByOne()
+ {
+ IGrouping grouping = enumerator.Current;
+ int DrawerNo = grouping.Key;
+ List channelStocks = grouping.ToList();
+ channelStocks.ForEach(it => it.process = 1);
+ _portUtil.SpeakAsync("正在打开" + DrawerNo + "号抽屉");
+ List singleChannels = new List();
+ for (int i = 0; i < channelStocks.Count; i++)
+ {
+ ChannelStock copy = TransExpV2.Trans(channelStocks[i]);
+ singleChannels.Add(copy);
+ }
+ singleChannels = singleChannels.GroupBy(it => new
+ {
+ it.DrawerNo,
+ it.ColNo
+ }).Select(it =>
+ {
+ var ret = it.First();
+ ret.Quantity = it.Sum(itx => itx.Quantity);
+ ret.AddQuantity = it.Sum(itx => itx.AddQuantity);
+ return ret;
+ }).ToList().FindAll(it => it.BoardType != 1);
+
+ _portUtil.WindowName = WindowName;
+ _portUtil.BoardType = singleChannels.Count > 0 ? singleChannels[0].BoardType : 1;
+ _portUtil.ColNos = singleChannels.Select(it => it.ColNo).ToArray();
+ //_portUtil.Stocks = singleChannels.Select(it => it.Quantity).ToArray();
+ _portUtil.DrawerNo = DrawerNo;
+
+ if ((singleChannels.Count > 0 ? singleChannels[0].BoardType : 1) == 5)
+ {
+ List ChannelLst = new List();
+ for (int i = 0; i < channelStocks.Count; i++)
+ {
+ ChannelStock copy = TransExpV2.Trans(channelStocks[i]);
+ singleChannels.Add(copy);
+ }
+ ChannelLst = ChannelLst.Where(it => it.BoardType != 1)
+ .GroupBy(it => it.ColNo)
+ .Select(it =>
+ {
+ var ret = it.First();
+ ret.Quantity = it.Sum(itx => itx.Quantity);
+ ret.AddQuantity = it.Sum(itx => itx.AddQuantity);
+ return ret;
+ }).ToList();
+ // 发送加药数量
+ singleChannels.ForEach(it =>
+ {
+ _portUtil.TakeQuantity(DrawerNo, it.ColNo, it.AddQuantity, it.Quantity + it.AddQuantity);
+ });
+ }
+
+ if ((singleChannels.Count > 0 ? singleChannels[0].BoardType : 1) == 6)
+ {
+ for (int i = 0; i < singleChannels.Count; i++)
+ {
+ ChannelStock it = singleChannels[i];
+ _portUtil.ClearCount(it.DrawerNo, it.ColNo);
+ await Task.Delay(50);
+ }
+ }
+
+ _portUtil.Start();
+ }
+
+ private DelegateCommand _rowSelected;
+
+ public DelegateCommand RowSelected => _rowSelected ??= new DelegateCommand(GetChannelByInvoice);
+ public void GetChannelByInvoice()
+ {
+ ChannelStocks.Clear();
+ //InOutInvoices.Clear();
+ List csList = new List();
+ if (SelectDrugPleaseClaim != null)
+ {
+ if (SelectDrugPleaseClaim.GetQuantity == 1)
+ {
+ //请领单里只有一种药
+ List drugManuInfoList = JsonConvert.DeserializeObject>(SelectDrugPleaseClaim.DrugManuNo);
+ drugManuInfoList.ForEach(dm => dm.DrugId = SelectDrugPleaseClaim.DrugId);
+ for (int i = 0; i < drugManuInfoList.Count; i++)
+ {
+ DrugPleaseManuNo drugPleaseManuNo = drugManuInfoList[i];
+
+
+ ChannelStock q = SqlSugarHelper.Db.Queryable()
+ .Includes(cs => cs.DrugInfo)
+ .WhereIF(!string.IsNullOrEmpty(drugPleaseManuNo.EffDate), cs => cs.EffDate.Equals(drugPleaseManuNo.EffDate))
+ .WhereIF(!string.IsNullOrEmpty(drugPleaseManuNo.ManuNo), cs => cs.ManuNo.Equals(drugPleaseManuNo.ManuNo))
+ .Where(cs => cs.DrugId == drugPleaseManuNo.DrugId)
+ .Where(cs => cs.DrawerType == 1)
+ .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM3"))
+ .OrderBy(cs => cs.DrugId)
+ .OrderBy(cs => cs.DrawerNo)
+ .OrderBy(cs => cs.ColNo)
+ .First();
+ q.AddQuantity = drugPleaseManuNo.Quantity;
+
+ csList.Add(q);
+ }
+
+ }
+ else
+ {
+ //请领单里有多种药
+ List pleaseClaimList = SqlSugarHelper.Db.Queryable().Includes(dpc => dpc.DrugInfo).Where(dpc => dpc.PleaseNo == SelectDrugPleaseClaim.PleaseNo).ToList();
+ if (pleaseClaimList != null)
+ {
+ foreach (DrugPleaseClaim item in pleaseClaimList)
+ {
+ List drugManuInfoList = JsonConvert.DeserializeObject>(item.DrugManuNo);
+ drugManuInfoList.ForEach(dm => dm.DrugId = item.DrugId);
+ for (int i = 0; i < drugManuInfoList.Count; i++)
+ {
+ DrugPleaseManuNo drugPleaseManuNo = drugManuInfoList[i];
+
+
+ List? q = SqlSugarHelper.Db.Queryable()
+ .Includes(cs => cs.DrugInfo)
+ .Where(cs => cs.DrugId != null)
+ .WhereIF(!string.IsNullOrEmpty(drugPleaseManuNo.EffDate), cs => cs.EffDate.Equals(drugPleaseManuNo.EffDate))
+ .WhereIF(!string.IsNullOrEmpty(drugPleaseManuNo.ManuNo), cs => cs.ManuNo.Equals(drugPleaseManuNo.ManuNo))
+ .Where(cs => cs.DrugId == drugPleaseManuNo.DrugId)
+ .Where(cs => cs.DrawerType == 1)
+ .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM3"))
+ .OrderBy(cs => cs.DrugId)
+ .OrderBy(cs => cs.DrawerNo)
+ .OrderBy(cs => cs.ColNo)
+ .ToList();
+ if (q != null)
+ {
+ q[0].AddQuantity = drugPleaseManuNo.Quantity;
+ q.ForEach(csq=>csq.PleaseClaim = item);
+
+ csList.AddRange(q);
+ }
+ }
+ }
+ }
+ }
+ }
+ ICollectionView vw = CollectionViewSource.GetDefaultView(csList);
+ vw.GroupDescriptions.Add(new PropertyGroupDescription("PleaseClaim"));
+ ChannelStocks = csList;
+
+ }
+
+ public bool KeepAlive => false;
+
+ public void ConfirmNavigationRequest(NavigationContext navigationContext, Action continuationCallback)
+ {
+ continuationCallback(true);
+ }
+
+ public bool IsNavigationTarget(NavigationContext navigationContext)
+ {
+ return true;
+ }
+
+ public void OnNavigatedFrom(NavigationContext navigationContext)
+ {
+ _eventAggregator.GetEvent().Unsubscribe(DoMyPrismEvent);
+ }
+
+ public void OnNavigatedTo(NavigationContext navigationContext)
+ {
+ _eventAggregator.GetEvent().Subscribe(DoMyPrismEvent);
+ RequestData();
+ }
+ public void RequestData()
+ {
+ _DrugPleaseClaimList.Clear();
+ int totalCount = 0;
+
+ var sb = new StringBuilder();
+ sb.Append("SELECT i.please_no,i.do_date,i.totalQuantity,count(1) as get_quantity,drug_manu_no,machine_id from drug_please_claim i inner join ");
+ sb.Append(" ( select c.drug_id as drug_id from channel_stock c where c.machine_id = 'DM3' group by c.drug_id ) di on di.drug_id = i.drug_id WHERE state=@State and type=@Type ");
+
+ if (OrderDate != null)
+ {
+ sb.Append(" and i.do_date = @CreateTime ");
+ }
+ if (!String.IsNullOrEmpty(SearchValue))
+ {
+ sb.Append(" and i.please_no = @please_no ");
+ }
+ if (!String.IsNullOrEmpty(ConfigurationManager.AppSettings["department"]))
+ {
+ sb.Append(" and i.department = @department ");
+ }
+ sb.Append(" GROUP BY i.please_no");
+ sb.Append(" order by i.do_date ");
+ _DrugPleaseClaimList = SqlSugarHelper.Db.SqlQueryable(sb.ToString())
+ .AddParameters(new
+ {
+ State = 2,
+ Type = 32,
+ CreateTime = OrderDate,
+ please_no = SearchValue,
+ department = ConfigurationManager.AppSettings["department"]
+ })
+ .Select(it => new DrugPleaseClaim())
+ .Select("*")
+ .ToPageList(PageNum, PageSize, ref totalCount);
+
+ TotalCount = totalCount;
+ PageCount = (int)Math.Ceiling((double)TotalCount / PageSize);
+ }
+ public DelegateCommand OpenInvoiceAdd
+ {
+ get => new DelegateCommand(() =>
+ {
+ bool flag = true;
+
+ AddChannels = ChannelStocks.FindAll(it => it.AddQuantity != 0);
+
+ enumerable = AddChannels.GroupBy(cs => cs.DrawerNo, cs => cs);
+ enumerator = enumerable.GetEnumerator();
+ OpenDrawer(AddChannels);
+ }, () => SelectDrugPleaseClaim != null).ObservesProperty(() => SelectDrugPleaseClaim);
+ }
+ private void OpenDrawer(List AddChannels)
+ {
+ if (Status == 0)
+ {
+ if (AddChannels == null || AddChannels.Count <= 0)
+ {
+ AlertMsg alertMsg = new AlertMsg
+ {
+ Message = "请输入入库数量",
+ Type = MsgType.ERROR,
+ };
+ _eventAggregator.GetEvent().Publish(alertMsg);
+ return;
+ }
+ int totalNum = AddChannels.Sum(add => add.AddQuantity);
+ //if (totalNum != SelectedInvoice.Quantity)
+ //{
+ // AlertMsg alertMsg = new AlertMsg
+ // {
+ // Message = "各批次添加数量要与调拨单药品总数一致!",
+ // Type = MsgType.ERROR,
+ // };
+ // _eventAggregator.GetEvent().Publish(alertMsg);
+ // return;
+ //}
+ enumerator.MoveNext();
+ Status = 1;
+ OpenOneByOne();
+ }
+ }
+ public DelegateCommand QueryCommand
+ {
+ get => new DelegateCommand(() =>
+ {
+ RequestData();
+ });
+ }
+ private bool _isFinishClick = false;
+ public DelegateCommand TakeFinish { get => new DelegateCommand(TakeFinishAction); }
+
+ private void TakeFinishAction()
+ {
+ if (!_isFinishClick)
+ {
+ _isFinishClick = true;
+ List record = ChannelStocks.ToList();
+ string InvoiceId = SelectDrugPleaseClaim.PleaseNo;
+ var f = SqlSugarHelper.Db.UseTran(() =>
+ {
+ SqlSugarHelper.Db.Updateable(new DrugPleaseClaim()
+ {
+ State = 3,
+ PleaseNo = SelectDrugPleaseClaim.PleaseNo
+ }).UpdateColumns(it => new { it.State }).WhereColumns(it => new { it.PleaseNo }).ExecuteCommand();
+
+ for (int i = 0; i < record.Count; i++)
+ {
+
+
+ ChannelStock it = record[i];
+ if (it.BoardType == 6 && it.PosNo == 0)
+ {
+ _portUtil.SetNumCount(it.DrawerNo, it.ColNo, it.AddQuantity);
+ }
+ if (it.Id != null)
+ {
+ // 更新数据 库存信息
+ SqlSugarHelper.Db.Updateable(new ChannelStock()
+ {
+ Quantity = it.Quantity + it.AddQuantity,
+ ManuNo = it.ManuNo,
+ EffDate = it.EffDate,
+ Id = it.Id,
+ }).UpdateColumns(it => new { it.Quantity, it.ManuNo, it.EffDate }).ExecuteCommand();
+ }
+ //else
+ //{
+ // //如果批号重复则不让添加
+ // List csCount = SqlSugarHelper.Db.Queryable().Where(cs => cs.DrawerNo == it.DrawerNo && cs.ColNo == it.ColNo && cs.ManuNo == it.ManuNo && cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1") && cs.Quantity > 0).ToList();
+ // if (csCount.Count > 0)
+ // {
+ // //repeatList.Add(it.ManuNo);
+ // //stockRepeats.Add(it);
+ // continue;
+ // }
+ // //查询现有库位中是否有库存为0的记录,如果有直接update
+ // ChannelStock recordHistory = SqlSugarHelper.Db.Queryable().Where(cs => cs.DrawerNo == it.DrawerNo && cs.ColNo == it.ColNo && cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1") && cs.Quantity <= 0).First();
+ // if (recordHistory != null && recordHistory.Id != null)
+ // {
+ // SqlSugarHelper.Db.Updateable().SetColumns(item => new ChannelStock()
+ // {
+ // Quantity = it.AddQuantity,
+ // ManuNo = it.ManuNo,
+ // EffDate = it.EffDate
+ // }).Where(item => item.Id == recordHistory.Id).ExecuteCommand();
+ // }
+ // else
+ // {
+ // // 更新数据 库存信息
+ // SqlSugarHelper.Db.Insertable(new ChannelStock()
+ // {
+ // Quantity = it.AddQuantity,
+ // Chnguid = it.Chnguid,
+ // ManuNo = it.ManuNo,
+ // EffDate = it.EffDate,
+ // DrawerNo = it.DrawerNo,
+ // ColNo = it.ColNo,
+ // DrugId = it.DrugId,
+ // DrawerType = it.DrawerType,
+ // BoardType = it.BoardType,
+ // Id = Guid.NewGuid().ToString(),
+ // MachineId = ConfigurationManager.AppSettings["machineId"] ?? "DM1"
+ // }).ExecuteCommand();
+ // }
+ //}
+ // 获取更新完库存后的药品库存
+ List nowChannels = SqlSugarHelper.Db.Queryable()
+ .Where(cs => cs.MachineId.Equals(it.MachineId))
+ .Where(cs => cs.DrugId.Equals(it.DrugId))
+ .Where(cs => cs.DrawerType == 1)
+ .ToList();
+
+ // 保存数据 出/入库记录
+ SqlSugarHelper.Db.Insertable(new MachineRecord()
+ {
+ MachineId = it.MachineId,
+ DrawerNo = it.DrawerNo,
+ ColNo = it.ColNo,
+ DrugId = it.DrugId,
+ ManuNo = it.ManuNo,
+ EffDate = !String.IsNullOrEmpty(it.EffDate) ? DateTime.ParseExact(it.EffDate, "yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture) : null,
+ Operator = HomeWindowViewModel.Operator?.Id,
+ Reviewer = HomeWindowViewModel.Reviewer?.Id,
+ OperationTime = DateTime.Now,
+ Quantity = it.AddQuantity,
+ Type = 1,
+ InvoiceId = InvoiceId,
+ //StockQuantity = nowChannels.Sum(it => it.Quantity),
+ //ManunoQuantity = nowChannels.FindAll(it2 => it2.ManuNo == it.ManuNo).Sum(it => it.Quantity),
+ //SupplierDept = SelectedInvoice.PharmacyName1 ?? ConfigurationManager.AppSettings["supplierDept"].ToString(),
+ //ReceiveDept = SelectedInvoice.PharmacyName2 ?? ConfigurationManager.AppSettings["receiveDept"].ToString()
+ }).ExecuteCommand();
+
+ int iIndex= Array.IndexOf(ConfigurationManager.AppSettings["colloctedId"].Split(','), SelectDrugPleaseClaim.MachineId.ToString());
+ string dept = ConfigurationManager.AppSettings["colloctedId"].Split(',')[iIndex-1].ToString();
+
+ //保存账册
+ int iInsertResult = SqlSugarHelper.Db.Insertable(new AccountBookG2()
+ {
+
+ DrugId = Convert.ToInt32(it.DrugId),
+ Type = 1,
+ Department = dept,
+ OrderNo = SelectDrugPleaseClaim.PleaseNo,
+ ManuNo = it.ManuNo,
+ EffDate = it.EffDate,
+ AddQuantity = it.AddQuantity,
+ UserId1 = HomeWindowViewModel.Operator?.Id,
+ UserId2 = HomeWindowViewModel.Reviewer?.Id,
+ MachineId = ConfigurationManager.AppSettings["machineId"].ToString(),
+ CreateDate = DateTime.Now.ToString("yyyy-MM-dd"),
+ CreateTime = DateTime.Now,
+ InvoiceNo = SelectDrugPleaseClaim.PleaseNo
+
+ }).ExecuteCommand();
+ //修改凌晨生成的日结存与总结存数据
+ AccountBookG2 accountBookG2Day = SqlSugarHelper.Db.Queryable()
+ .Where(ab => ab.MachineId.Equals(it.MachineId))
+ .Where(ab => ab.Type == 3)
+ .Where(ab => ab.DrugId == Convert.ToInt32(it.DrugId))
+ .Where(ab => ab.ManuNo == it.ManuNo)
+ .Where(ab => ab.CreateDate == DateTime.Now.ToString("yyyy-MM-dd")).First();
+
+ accountBookG2Day.ManuStock = accountBookG2Day.ManuStock + it.AddQuantity;
+
+ //修改凌晨生成的日结存与总结存数据
+ AccountBookG2 accountBookG2Total = SqlSugarHelper.Db.Queryable()
+ .Where(ab => ab.MachineId.Equals(it.MachineId))
+ .Where(ab => ab.Type == 4)
+ .Where(ab => ab.DrugId == Convert.ToInt32(it.DrugId))
+ .Where(ab => ab.CreateDate == DateTime.Now.ToString("yyyy-MM-dd")).First();
+
+ accountBookG2Total.TotalStock = accountBookG2Total.TotalStock + it.AddQuantity;
+
+ SqlSugarHelper.Db.Updateable(accountBookG2Day).ExecuteCommand();
+
+ SqlSugarHelper.Db.Updateable(accountBookG2Total).ExecuteCommand();
+ }
+
+ return true;
+ });
+ if (f.Data)
+ {
+ // 更新屏显库存
+ //List singleChannels = record.FindAll(it => it.BoardType != 1);
+ List singleChannels = record.Where(it => it.BoardType == 5)
+ .GroupBy(it => new { it.DrawerNo, it.ColNo })
+ .Select(it =>
+ {
+ var ret = it.First();
+ //ret.Quantity = it.Sum(itx => itx.Quantity);
+ //ret.AddQuantity = it.Sum(itx => itx.AddQuantity);
+ return ret;
+ })
+ .ToList();
+ if (singleChannels != null && singleChannels.Count > 0)
+ {
+ for (int i = 0; i < singleChannels.Count; i++)
+ {
+ //if (singleChannels[i].BoardType == 5)
+ //{
+ List channelStockEffDate = SqlSugarHelper.Db.Queryable()
+ .Where(cs => cs.MachineId == singleChannels[i].MachineId)
+ .Where(cs => cs.DrawerNo == singleChannels[i].DrawerNo)
+ .Where(cs => cs.ColNo == singleChannels[i].ColNo)
+ .Where(cs => cs.Quantity > 0)
+ .OrderBy(cs => cs.EffDate).ToList();
+ int totalQuantity = channelStockEffDate.Sum(it => it.Quantity);
+
+ //将库位多批次的总库存数更新标签
+ _portUtil.WriteQuantity(channelStockEffDate[0].DrawerNo, channelStockEffDate[0].ColNo, totalQuantity);
+ Thread.Sleep(200);
+ _portUtil.WriteChannelInfo(6, channelStockEffDate[0].EffDate == null ? "" : channelStockEffDate[0].EffDate, channelStockEffDate[0].DrawerNo, channelStockEffDate[0].ColNo);
+ Thread.Sleep(200);
+ _portUtil.WriteChannelInfo(5, channelStockEffDate[0].ManuNo, channelStockEffDate[0].DrawerNo, channelStockEffDate[0].ColNo);
+ Thread.Sleep(200);
+ _portUtil.ShowContent(channelStockEffDate[0].DrawerNo, channelStockEffDate[0].ColNo);
+ //}
+ }
+ }
+
+
+
+
+ AlertMsg alertMsg = new AlertMsg
+ {
+ Message = "操作完成,库存已更新",
+ Type = MsgType.SUCCESS,
+ };
+ _eventAggregator.GetEvent().Publish(alertMsg);
+ }
+ if (!f.IsSuccess)
+ {
+ logger.Info($"调拨入库,库存更新失败!{f.ErrorMessage}");
+ AlertMsg alertMsg = new AlertMsg
+ {
+ Message = "库存更新失败!",
+ Type = MsgType.ERROR,
+ };
+ _eventAggregator.GetEvent().Publish(alertMsg);
+ }
+ Status = 0;
+ _isFinishClick = false;
+
+ }
+ RequestData();
+ }
+
+
+ public DelegateCommand CancleTake { get => new DelegateCommand(CancelTakeAction); }
+
+ private void CancelTakeAction()
+ {
+ RequestData();
+ Status = 0;
+ }
+ }
+}
diff --git a/DM_Weight/ViewModels/ApplyListWindowViewModel.cs b/DM_Weight/ViewModels/ApplyListWindowViewModel.cs
index 05e4f06..16a0d6d 100644
--- a/DM_Weight/ViewModels/ApplyListWindowViewModel.cs
+++ b/DM_Weight/ViewModels/ApplyListWindowViewModel.cs
@@ -143,7 +143,7 @@ namespace DM_Weight.ViewModels
CollectDrugLst = SqlSugarHelper.Db.Queryable()
.Includes(cd => cd.drugPleaseClaim)
.Includes(cd => cd.drugInfo)
- .Where(cd => cd.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1"))
+ .Where(cd => cd.DeptName.Equals(ConfigurationManager.AppSettings["department"] ?? ""))
.WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("DrugId"), (cd) => cd.drugInfo.DrugId.ToString() == SearchValue)
.WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("DrugName"), (cd) => cd.drugInfo.DrugName.Contains(SearchValue))
.WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("PyCode"), (cd) => cd.drugInfo.PyCode.Contains(SearchValue))
diff --git a/DM_Weight/ViewModels/InvoiceInWindowViewModel.cs b/DM_Weight/ViewModels/InvoiceInWindowViewModel.cs
index 6345ba1..b4c2dc6 100644
--- a/DM_Weight/ViewModels/InvoiceInWindowViewModel.cs
+++ b/DM_Weight/ViewModels/InvoiceInWindowViewModel.cs
@@ -198,7 +198,9 @@ namespace DM_Weight.ViewModels
{
var invoices = SqlSugarHelper.Db.Queryable()
.Includes(i => i.DrugInfo)
- .InnerJoin(SqlSugarHelper.Db.Queryable().Where(cs => cs.DrawerType == 1).Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).GroupBy(cs => cs.DrugId), (i, t) => i.DrugId == t.DrugId)
+ .InnerJoin(SqlSugarHelper.Db.Queryable().Where(cs => cs.DrawerType == 1)
+ .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1"))
+ .GroupBy(cs => cs.DrugId), (i, t) => i.DrugId == t.DrugId)
.Where(i => i.InvoiceNo == SelectedInvoice.InvoiceNo)
.ToList();
foreach (var invoice in invoices)
diff --git a/DM_Weight/ViewModels/RoleManagerWindowViewModel.cs b/DM_Weight/ViewModels/RoleManagerWindowViewModel.cs
index 1ed829e..06a482e 100644
--- a/DM_Weight/ViewModels/RoleManagerWindowViewModel.cs
+++ b/DM_Weight/ViewModels/RoleManagerWindowViewModel.cs
@@ -269,12 +269,19 @@ namespace DM_Weight.ViewModels
PremissionName = "请领列表",
PremissionPath = "ApplyListWindow",
};
+ PremissionDm jiayao8 = new PremissionDm
+ {
+ Id = 28,
+ PremissionName = "请领入库",
+ PremissionPath = "ApplyInStockWindow",
+ };
jiayaoChild.Add(jiayao1);
jiayaoChild.Add(jiayao2);
jiayaoChild.Add(jiayao3);
jiayaoChild.Add(jiayao4);
jiayaoChild.Add(jiayao6);
jiayaoChild.Add(jiayao7);
+ jiayaoChild.Add(jiayao8);
jiayao.Children = jiayaoChild;
defaultAll.Add(jiayao);
#endregion
diff --git a/DM_Weight/Views/ApplyInStockWindow.xaml b/DM_Weight/Views/ApplyInStockWindow.xaml
new file mode 100644
index 0000000..9111056
--- /dev/null
+++ b/DM_Weight/Views/ApplyInStockWindow.xaml
@@ -0,0 +1,266 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/DM_Weight/Views/ApplyInStockWindow.xaml.cs b/DM_Weight/Views/ApplyInStockWindow.xaml.cs
new file mode 100644
index 0000000..f577d71
--- /dev/null
+++ b/DM_Weight/Views/ApplyInStockWindow.xaml.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace DM_Weight.Views
+{
+ ///
+ /// ApplyInStockWindow.xaml 的交互逻辑
+ ///
+ public partial class ApplyInStockWindow : UserControl
+ {
+ public ApplyInStockWindow()
+ {
+ InitializeComponent();
+ }
+ }
+}