/// <summary> /// 新增实际库存商品 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void onLoadData(object sender, EventArgs e) { SetPopInventoryEvent(this, true); #if TESTENV HashSet <CommodityEps> hs = RfidHelper.GetEpcDataJsonInventory(out bool isGetSuccess); #else HashSet <CommodityEps> hs = RfidHelper.GetEpcDataJson(out bool isGetSuccess); #endif if (hs.Count > 0) { list = CommodityCodeBll.GetInstance().GetCommodityCode(hs).body.objects.ToList(); } else { list = new List <CommodityCode>(); } inventoryOrder.GoodsLocationName = CommodityCodeBll.GetInstance().GetNameById <GoodsLocation>(inventoryOrder.GoodsLocationId); SetPopInventoryEvent(this, false); App.Current.Dispatcher.Invoke((Action)(() => { goodsDtllistConfirmView.DataContext = list; goodsDtllistConfirmView.Items.Refresh(); codeInputTb.Focus(); })); }
/// <summary> /// 保存当前货柜的商品信息 /// </summary> /// <param name="hs"></param> public static void SetGoodsInfo(HashSet <CommodityEps> hs) { SetValue((int)ApplicationKey.Goods, hs); //插入数据库,每次开门时,即同步数据到 CommodityCodeBll.GetInstance().InsertLocalCommodityEpsInfo(hs); return; }
public BaseData <CommodityCode> GetBaseData() { return(CommodityCodeBll.GetInstance().GetCompareCommodity( new HashSet <CommodityEps>() { new CommodityEps { CommodityCodeId = "AQACQqweBhEBAAAAwXCOmiFcsxUmKAIA", CommodityCodeName = "QR00000038", CommodityName = "止血包", EquipmentId = "AQACQqweDg8BAAAAFUD8WDEPsxV_FwQA", EquipmentName = "E00000008", GoodsLocationId = "AQACQqweJ4wBAAAAjYv6XmUPsxWWowMA", GoodsLocationName = "L00000013" } }, new HashSet <CommodityEps>() { new CommodityEps { CommodityCodeId = "AQACQqweBhEBAAAAVF0JmCFcsxUkKAIA", CommodityCodeName = "QR00000035", CommodityName = "止血包", EquipmentId = "AQACQqweDg8BAAAAFUD8WDEPsxV_FwQA", EquipmentName = "E00000008", GoodsLocationId = "AQACQqweJ4wBAAAAjYv6XmUPsxWWowMA", GoodsLocationName = "L00000013" } } )); }
/// <summary> /// 数据加载 /// </summary> private void onInitData(object sender, ElapsedEventArgs e) { App.Current.Dispatcher.Invoke((Action)(() => { HashSet <CommodityEps> before = ApplicationState.GetGoodsInfo(); List <CommodityCode> commodityCodeList = CommodityCodeBll.GetInstance().GetCompareSimpleCommodity(before, after); if (commodityCodeList == null || commodityCodeList.Count <= 0) { MessageBox.Show("没有检测到商品变化!", "温馨提示", MessageBoxButton.OK); isSuccess = false; return; } LoadingDataEvent(this, true); bdCommodityCode = CommodityCodeBll.GetInstance().GetCommodityCode(commodityCodeList); LoadingDataEvent(this, false); HttpHelper.GetInstance().ResultCheck(bdCommodityCode, out isSuccess); if (!isSuccess) { MessageBox.Show("获取商品信息错误!" + bdCommodityCode.message, "温馨提示", MessageBoxButton.OK); return; } bdCommodityDetail = PickBll.GetInstance().GetPickTaskCommodityDetail(pickTask); HttpHelper.GetInstance().ResultCheck(bdCommodityDetail, out isSuccess); if (!isSuccess) { MessageBox.Show("获取拣货任务单商品明细信息错误!" + bdCommodityDetail.message, "温馨提示", MessageBoxButton.OK); return; } LoadingDataEvent(this, true); PickBll.GetInstance().GetPickTaskChange(bdCommodityCode, pickTask, bdCommodityDetail); LoadingDataEvent(this, false); int outCnt = bdCommodityCode.body.objects.Where(item => item.operate_type == 0).ToList().Count; int abnormalOutCnt = bdCommodityCode.body.objects.Where(item => item.operate_type == 0 && item.AbnormalDisplay == "异常").ToList().Count; int abnormalInCnt = bdCommodityCode.body.objects.Where(item => item.operate_type == 1).ToList().Count; outNum.Content = outCnt; abnormalInNum.Content = abnormalInCnt; abnormalOutNum.Content = abnormalOutCnt; listView.DataContext = bdCommodityCode.body.objects; int abnormalLargeNum = bdCommodityDetail.body.objects.Where(item => item.CurPickNumber > (item.Number - item.PickNumber)).Count(); if (abnormalInCnt == 0 && abnormalOutCnt == 0 && abnormalLargeNum == 0) { normalBtmView.Visibility = Visibility.Visible; abnormalBtmView.Visibility = Visibility.Collapsed; } else { normalBtmView.Visibility = Visibility.Collapsed; abnormalBtmView.Visibility = Visibility.Visible; } })); }
public Task Execute(IJobExecutionContext context) { LogUtils.Debug("ExecuteInventoryPlanJoB进入"); var epcs = RfidHelper.GetEpcDataJson(out bool isGetSucess); if (isGetSucess) { var baseDataCommodityCodes = CommodityCodeBll.GetInstance().GetCommodityCode(epcs); HttpHelper.GetInstance().ResultCheck(baseDataCommodityCodes, out bool isSuccess); if (isSuccess) { var basePostInventoryDetail = InventoryTaskBll.GetInstance().CreateInventoryOrderAndDetail(baseDataCommodityCodes.body.objects); LogUtils.Debug($"已执行自动盘点任务:{JsonConvert.SerializeObject(basePostInventoryDetail)}"); } } else { LogUtils.Debug("盘点计划未扫描出有效商品"); } return(null); }
/// <summary> /// 加载数据 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void onInitData(object sender, ElapsedEventArgs e) { App.Current.Dispatcher.Invoke((Action)(() => { HashSet <CommodityEps> before = ApplicationState.GetGoodsInfo(); LoadingDataEvent(this, true); List <CommodityCode> commodityCodeList = CommodityCodeBll.GetInstance().GetCompareSimpleCommodity(before, after); LoadingDataEvent(this, false); if (commodityCodeList == null || commodityCodeList.Count <= 0) { MessageBox.Show("没有检测到商品变化!", "温馨提示", MessageBoxButton.OK); isSuccess = false; return; } LoadingDataEvent(this, true); bdCommodityCode = CommodityCodeBll.GetInstance().GetCommodityCode(commodityCodeList); HttpHelper.GetInstance().ResultCheck(bdCommodityCode, out isSuccess); if (isSuccess) { bdCommodityCode = CommodityCodeBll.GetInstance().GetQualityStatus(bdCommodityCode, out isSuccess); } LoadingDataEvent(this, false); //校验是否含有数据 HttpHelper.GetInstance().ResultCheck(bdCommodityCode, out isSuccess); if (!isSuccess) { MessageBox.Show("获取商品比较信息错误!" + bdCommodityCode.message, "温馨提示", MessageBoxButton.OK); return; } listView.DataContext = bdCommodityCode.body.objects; returnNum.Content = bdCommodityCode.body.objects.Where(item => item.operate_type == 1).Count(); fetchNum.Content = bdCommodityCode.body.objects.Where(item => item.operate_type == 0).Count(); int expiredCnt = bdCommodityCode.body.objects.Where(item => item.operate_type == 0 && (item.QualityStatus == QualityStatusType.过期.ToString() || item.InventoryStatus == CommodityInventoryChangeStatus.待回收.ToString())).Count(); expiredNum.Content = expiredCnt; bdCommodityCode.body.objects.Where(item => item.operate_type == 0).ToList().ForEach(it => { it.AbnormalDisplay = AbnormalDisplay.异常.ToString(); }); //领用产品上包含过期商品不让用户主动提交 if (expiredCnt == 0) { normalBtmView.Visibility = Visibility.Visible; abnormalBtmView.Visibility = Visibility.Collapsed; } else { normalBtmView.Visibility = Visibility.Collapsed; abnormalBtmView.Visibility = Visibility.Visible; } })); }
/// <summary> /// 数据加载 /// </summary> private void onInitData(object sender, ElapsedEventArgs e) { App.Current.Dispatcher.Invoke((Action)(() => { HashSet <CommodityEps> before = ApplicationState.GetGoodsInfo(); List <CommodityCode> commodityCodeList = CommodityCodeBll.GetInstance().GetCompareSimpleCommodity(before, after); if (commodityCodeList == null || commodityCodeList.Count <= 0) { MessageBox.Show("没有检测到商品变化!", "温馨提示", MessageBoxButton.OK); isSuccess = false; return; } LoadingDataEvent(this, true); bdCommodityCode = CommodityCodeBll.GetInstance().GetCommodityCode(commodityCodeList); LoadingDataEvent(this, false); HttpHelper.GetInstance().ResultCheck(bdCommodityCode, out isSuccess); if (!isSuccess) { MessageBox.Show("获取商品信息错误!" + bdCommodityCode.message, "温馨提示", MessageBoxButton.OK); return; } listView.DataContext = bdCommodityCode.body.objects; outNum.Content = bdCommodityCode.body.objects.Where(item => item.operate_type == 0).Count(); abnormalInNum.Content = bdCommodityCode.body.objects.Where(item => item.operate_type == 1).Count(); //回收取货 if (commodityRecovery != null) { bdCommodityCode.body.objects.Where(item => item.operate_type == 1).ToList().ForEach(it => { it.AbnormalDisplay = AbnormalDisplay.异常.ToString(); }); if (bdCommodityCode.body.objects.Where(item => item.operate_type == 1).Count() > 0) { normalBtmView.Visibility = Visibility.Collapsed; abnormalBtmView.Visibility = Visibility.Visible; } else { normalBtmView.Visibility = Visibility.Visible; abnormalBtmView.Visibility = Visibility.Collapsed; } } //回收取货 else { normalBtmView.Visibility = Visibility.Visible; abnormalBtmView.Visibility = Visibility.Collapsed; } })); }
protected override void OnStartup(StartupEventArgs e) { ProgramStarted = new EventWaitHandle(false, EventResetMode.AutoReset, "乘法云链", out bool createNew); if (!createNew) { MessageBox.Show("已有一个程序实例运行"); Current.Shutdown(); Environment.Exit(0); } base.OnStartup(e); //控制台信息展示 ConsoleManager.Show(); Console.ReadKey(); // 注册Application_Error(全局捕捉异常) DispatcherUnhandledException += new DispatcherUnhandledExceptionEventHandler(App_DispatcherUnhandledException); //初始化日志 LogUtils.InitLog4Net(); //隐藏工具类 Taskbar.HideTask(true); //开启启动 BootUpHelper.GetInstance().SetMeAutoStart(); //加载系统配置文件 //Console.ReadKey(); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load($"{ApplicationState.GetProjectRootPath()}/MyProject.xml"); XmlNode root = xmlDoc.SelectSingleNode("config"); //指向根节点 XmlNode device = root.SelectSingleNode("device"); //指向设备节点 ApplicationState.SetUserInfo(new User()); //设置初始化goodsInfo ApplicationState.SetInitGoodsInfo(new HashSet <CommodityEps>()); ApplicationState.SetEquipName(device.SelectSingleNode("equip_name").InnerText); ApplicationState.SetEquipId(device.SelectSingleNode("equip_id").InnerText); ApplicationState.SetHouseName(device.SelectSingleNode("house_name").InnerText); ApplicationState.SetHouseId(device.SelectSingleNode("house_id").InnerText); ApplicationState.SetMCabName(device.SelectSingleNode("mcab_name").InnerText); ApplicationState.SetMCabId(device.SelectSingleNode("mcab_id").InnerText); #if DUALCAB ApplicationState.SetSCabName(device.SelectSingleNode("scab_name").InnerText); ApplicationState.SetSCabId(device.SelectSingleNode("scab_id").InnerText); #endif ApplicationState.SetMLockerCOM(device.SelectSingleNode("mlocker_com").InnerText); //"COM2" ApplicationState.SetSLockerCOM(device.SelectSingleNode("slocker_com").InnerText); //"COM5" ApplicationState.SetMRfidCOM(device.SelectSingleNode("mrfid_com").InnerText); //"COM1" ApplicationState.SetSRfidCOM(device.SelectSingleNode("srfid_com").InnerText); //"COM4" ApplicationState.SetMVeinCOM(device.SelectSingleNode("mvein_com").InnerText); //"COM9" LogUtils.Debug("App config initial..."); #region 处理开机(即应用启动时)需要对比库存变化上传的逻辑 //获取当前机柜所有商品数据 HashSet <CommodityEps> currentCommodityEps = RfidHelper.GetEpcDataJson(out bool isGetSuccess); //判断是否是初次使用本地库存上次,如果是则不上传 bool isInitLocalCommodityEpsInfo = CommodityCodeBll.GetInstance().isInitLocalCommodityEpsInfo(); if (isGetSuccess && !isInitLocalCommodityEpsInfo) { //获取数据库记录的以前所有商品数据 HashSet <CommodityEps> lastCommodityEps = CommodityCodeBll.GetInstance().GetLastLocalCommodityEpsInfo(); //比对 List <CommodityCode> commodityCodeList = CommodityCodeBll.GetInstance().GetCompareSimpleCommodity(lastCommodityEps, currentCommodityEps); //有不同的情况,则需要处理上传逻辑 if (commodityCodeList != null && commodityCodeList.Count > 0) { //根据商品码集合获取完整商品属性集合(已对比后结果) var bdCommodityCodeList = CommodityCodeBll.GetInstance().GetCommodityCode(commodityCodeList); var checkbdCommodityCodeList = HttpHelper.GetInstance().ResultCheck(bdCommodityCodeList, out bool isSuccess); if (isSuccess) { //按照类似无单一般领用的方式(故障领用) var bdBasePostData = ConsumingBll.GetInstance().SubmitConsumingChangeWithoutOrder(bdCommodityCodeList, ConsumingOrderType.故障领用); //校验是否含有数据 HttpHelper.GetInstance().ResultCheck(bdBasePostData, out bool isSuccess1); if (!isSuccess1) { LogUtils.Error("提交故障领用结果失败!" + bdBasePostData.message); } else { LogUtils.Info("提交故障领用结果成功!" + bdBasePostData.message); } } else { LogUtils.Info("提交故障领用结果成功!"); } } } #endregion }
/// <summary> /// 进入盘点详情事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void onEnterInventoryDetailLocal(object sender, RoutedEventArgs e) { Button btnItem = sender as Button; int id; if (btnItem.Name == "LocalInventoryBtn") { //SetPopInventoryEvent(this, true); LoadingDataEvent(this, true); #if TESTENV HashSet <CommodityEps> hs = RfidHelper.GetEpcDataJsonInventory(out bool isGetSuccess); #else HashSet <CommodityEps> hs = RfidHelper.GetEpcDataJson(out bool isGetSuccess); #endif LoadingDataEvent(this, false); //SetPopInventoryEvent(this, false); if (hs.Count == 0) { MessageBox.Show("医疗柜中没有任何商品!", "温馨提示", MessageBoxButton.OK); } else { BaseData <CommodityCode> bdCommodityCode = CommodityCodeBll.GetInstance().GetCommodityCode(hs); HttpHelper.GetInstance().ResultCheck(bdCommodityCode, out bool isSuccess); CommodityCodeBll.GetInstance().GetExpirationAndManufactor(bdCommodityCode, out bool isSuccess2); if (!isSuccess) { MessageBox.Show("盘点时获取商品信息失败!", "温馨提示", MessageBoxButton.OK); } else { List <GoodsDto> list = new List <GoodsDto>(); foreach (var item in bdCommodityCode.body.objects) { GoodsDto goodItem = new GoodsDto { name = item.CommodityName, code = item.name, position = item.GoodsLocationName }; if (isSuccess2) { goodItem.Specifications = item.Specifications; if (item.ManufactorName != null) { goodItem.ManufactorName = item.ManufactorName; } if (item.ExpirationDate != null) { goodItem.ExpirationDate = item.ExpirationDate; } } list.Add(goodItem); } id = inventoryBll.NewInventory(list, InventoryType.Manual); GetInventoryList(); EnterInventoryDetailLocalEvent(this, id); } } } else { id = (int)btnItem.CommandParameter; EnterInventoryDetailLocalEvent(this, id); } }
/// <summary> /// 新增实际库存商品 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void onAddProduct(object sender, RoutedEventArgs e) { string inputStr = codeInputTb.Text; if (string.IsNullOrWhiteSpace(inputStr)) { MessageBox.Show("盘点任务单号不可以为空!", "温馨提示", MessageBoxButton.OK); return; } List <CommodityCode> adds = new List <CommodityCode>(); #if TESTENV CommodityEps commodityEps = new CommodityEps { CommodityCodeId = "AQACQqweBhEBAAAAVF0JmCFcsxUkKAIA", CommodityCodeName = "QR00000035", CommodityName = "止血包", EquipmentId = "AQACQqweDg8BAAAAFUD8WDEPsxV_FwQA", EquipmentName = "E00000008", GoodsLocationId = "AQACQqweJ4wBAAAAjYv6XmUPsxWWowMA", GoodsLocationName = "L00000013" }; HashSet <CommodityEps> addHs = new HashSet <CommodityEps>(); addHs.Add(commodityEps); adds = CommodityCodeBll.GetInstance().GetCommodityCode(addHs).body.objects.ToList(); #else CommodityOrder commodityOrder; string name; try { commodityOrder = JsonConvert.DeserializeObject <CommodityOrder>(inputStr); name = commodityOrder.CommodityCodeName; } catch (Exception ex) { LogUtils.Error($"数据解析失败!{inputStr} ; 异常报错为:{ex.Message}"); name = inputStr; } LoadingDataEvent(this, true); BaseData <CommodityCode> bdCommodityCode = CommodityCodeBll.GetInstance().GetCommodityCodeByName(name.ToUpper()); LoadingDataEvent(this, false); //校验是否含有数据 HttpHelper.GetInstance().ResultCheck(bdCommodityCode, out bool isSuccess); if (!isSuccess) { MessageBox.Show("获取商品信息失败" + bdCommodityCode.message, "温馨提示", MessageBoxButton.OK); return; } bdCommodityCode.body.objects[0].EquipmentId = inventoryOrder.EquipmentId; bdCommodityCode.body.objects[0].StoreHouseId = inventoryOrder.StoreHouseId; bdCommodityCode.body.objects[0].GoodsLocationId = inventoryOrder.GoodsLocationId; bdCommodityCode.body.objects[0].GoodsLocationName = inventoryOrder.GoodsLocationName; adds.Add(bdCommodityCode.body.objects[0]); #endif if (list.Where(item => item.name == adds[0].name).Count() > 0) { MessageBox.Show("此商品已经在列表中!", "温馨提示", MessageBoxButton.OK); return; } App.Current.Dispatcher.Invoke((Action)(() => { App.Current.Dispatcher.Invoke((Action)(() => { list.AddRange(adds); goodsDtllistConfirmView.Items.Refresh(); })); })); }
/// <summary> /// 处理输入事件 /// </summary> /// <returns></returns> private bool HandleEnterDetail() { var inputStr = tbInputCode.Text; if (string.IsNullOrWhiteSpace(inputStr)) { MessageBox.Show("单号不可以为空!", "温馨提示", MessageBoxButton.OK); return(false); } TaskOrder taskOrder; string name; try { taskOrder = JsonConvert.DeserializeObject <TaskOrder>(inputStr); name = taskOrder.name; } catch { name = inputStr; } if (consumingOrderType != ConsumingOrderType.医嘱处方领用) { FetchParam fetchParam = new FetchParam(); LoadingDataEvent(this, true); fetchParam.bdConsumingOrder = ConsumingBll.GetInstance().GetConsumingOrder(name.ToUpper()); LoadingDataEvent(this, false); //校验是否含有数据 HttpHelper.GetInstance().ResultCheck(fetchParam.bdConsumingOrder, out bool isSuccess); if (!isSuccess) { MessageBox.Show("无法获取领用单详情!" + fetchParam.bdConsumingOrder.message, "温馨提示", MessageBoxButton.OK); return(false); } LoadingDataEvent(this, true); fetchParam.bdOperationOrderGoodsDetail = ConsumingBll.GetInstance().GetOperationOrderGoodsDetail(fetchParam.bdConsumingOrder); LoadingDataEvent(this, false); //校验是否含有数据 HttpHelper.GetInstance().ResultCheck(fetchParam.bdOperationOrderGoodsDetail, out bool isSuccess1); if (!isSuccess1) { MessageBox.Show("无法获取手术单物品详情!" + fetchParam.bdOperationOrderGoodsDetail.message, "温馨提示", MessageBoxButton.OK); return(false); } HashSet <CommodityEps> hs = ApplicationState.GetGoodsInfo(); BaseData <CommodityCode> bdCommodityCode = CommodityCodeBll.GetInstance().GetCommodityCode(ApplicationState.GetGoodsInfo()); ConsumingBll.GetInstance().CombinationStockNum(fetchParam.bdOperationOrderGoodsDetail, bdCommodityCode); EnterSurgeryDetailEvent(this, fetchParam); } else { LoadingDataEvent(this, true); BaseData <PrescriptionBill> baseData = ConsumingBll.GetInstance().GetPrescriptionBill(name); LoadingDataEvent(this, false); //校验是否含有数据 HttpHelper.GetInstance().ResultCheck(baseData, out bool isSuccess); if (!isSuccess) { MessageBox.Show("无法获取处方单!" + baseData.message, "温馨提示", MessageBoxButton.OK); return(false); } EnterPrescriptionOpenEvent(this, new ConsumingOrder { SourceBill = new SourceBill { object_name = "PrescriptionBill", object_id = baseData.body.objects[0].id } }); } return(true); }