/// <summary> /// 扫描到耗材条码时 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void bsCons_BarcodeScanned(object sender, BarcodeResultArgs e) { try { if (String.IsNullOrEmpty(e.error)) { String cId = e.Value; Consumables con = autofacConfig.consumablesService.GetConsById(cId); if (con == null) { throw new Exception("不存在此耗材"); } String[] locData = ((frmConInventoryResult)Form).locData; ConInventoryResult result = autofacConfig.ConInventoryService.GetResultBySL( ((frmConInventoryResult)Form).IID, e.Value, locData[0], locData[1], locData[2]); if (result == null) { throw new Exception("不存在该盘点行项"); } lblName.Text = con.NAME; lblName.Tag = con.CID; lblNumber.Text = result.TOTAL.ToString(); } } catch (Exception ex) { Toast(ex.Message); } }
/// <summary> /// 耗材扫描 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void barcodeScanner1_BarcodeScanned(object sender, BarcodeResultArgs e) { try { string CID = e.Value.ToUpper(); var con = _autofacConfig.consumablesService.GetConsById(CID); String STID = (lblST.Tag == null) ? null : lblST.Tag.ToString(); String SLID = (lblSL.Tag == null) ? null : lblSL.Tag.ToString(); if (con != null) { ConInventoryResult result = _autofacConfig.ConInventoryService.GetResultByCID(IID, CID); if (result != null) { if (result.RESULT.ToString() != "0") { throw new Exception("该耗材已盘点完毕,请勿重复盘点!"); } frmCIResultTotalLayout frm = new frmCIResultTotalLayout(); ConQuant conq = _autofacConfig.consumablesService.GetQuants(lblWareHouse.Tag.ToString(), STID, SLID, CID); frm.lblNumber.Text = conq.QUANTITY.ToString(); frm.CID = CID; Form.ShowDialog(frm); } else //盘盈 { frmCIResultTotalLayout frm = new frmCIResultTotalLayout(); ConQuant conq = _autofacConfig.consumablesService.GetQuants(lblWareHouse.Tag.ToString(), STID, SLID, CID); frm.plNumber.Visible = false; frm.Height = 120; frm.CID = CID; Form.ShowDialog(frm); } } else { Toast("未找到对应的耗材!"); } } catch (Exception ex) { Toast(ex.Message); } }
/// <summary> /// 开始盘点 /// </summary> /// <param name="inputDto">开始盘点时,传给后台的数据</param> /// <returns></returns> public ReturnInfo AddConInventoryResult(AddCIResultInputDto inputDto) { ReturnInfo RInfo = new ReturnInfo(); StringBuilder sb = new StringBuilder(); if (IsExist(inputDto.IID)) { RInfo.IsSuccess = true; RInfo.ErrorInfo = sb.ToString(); return(RInfo); } else { try { //更新盘点单状态为盘点中 var inventory = _conInventoryRepository.GetConInventoryByID(inputDto.IID).FirstOrDefault(); if (inventory != null) { //添加当前的盘点单行项 List <string> conList = _conQuantRepository.GetInventoryCons(inventory.LOCATIONID).Select(a => a.CID).ToList(); inventory.STATUS = (int)InventoryStatus.盘点中; inventory.TOTAL = conList.Count; inventory.RESULTCOUNT = 0; _unitOfWork.RegisterDirty(inventory); foreach (var con in conList) { ConQuant conQuant = _conQuantRepository.GetByCID(con, inventory.LOCATIONID).FirstOrDefault(); ConInventoryResult result = new ConInventoryResult { IID = inputDto.IID, CID = con, RESULT = 0, TOTAL = conQuant.QUANTITY, CREATEDATE = DateTime.Now, CREATEUSER = inputDto.UserId, MODIFYDATE = DateTime.Now, MODIFYUSER = inputDto.UserId }; _unitOfWork.RegisterNew(result); //更新盘点的物品状态为锁定 var conq = _conQuantRepository.GetQuants(inputDto.LocationId, con).FirstOrDefault(); if (conq != null) { conq.ISLOCKED = 1; _unitOfWork.RegisterDirty(conq); } } } _unitOfWork.Commit(); RInfo.IsSuccess = true; RInfo.ErrorInfo = sb.ToString(); return(RInfo); } catch (Exception ex) { _unitOfWork.Rollback(); sb.Append(ex.Message); RInfo.IsSuccess = false; RInfo.ErrorInfo = sb.ToString(); return(RInfo); } } }
/// <summary> /// 更新盘点单 /// </summary> /// <param name="inputDto">盘点单信息</param> /// <returns></returns> public ReturnInfo UpdateInventory(ConInventoryInputDto inputDto) { ReturnInfo rInfo = new ReturnInfo(); StringBuilder sb = new StringBuilder(); var inventory = _conInventoryRepository.GetConInventoryByID(inputDto.IID).FirstOrDefault(); if (inventory == null) { sb.Append("未找到该编号的盘点单."); rInfo.IsSuccess = false; rInfo.ErrorInfo = sb.ToString(); return(rInfo); } else { if (inventory.STATUS == (int)InventoryStatus.盘点结束) { sb.Append("该盘点单已经盘点结束."); rInfo.IsSuccess = false; rInfo.ErrorInfo = sb.ToString(); return(rInfo); } try { List <string> assList = _conInventoryResultRepository.GetResultsByStatus(inputDto.IID, null).Select(a => a.CID).ToList(); int count = inputDto.ConDictionary.Count; //更新盘点单结果行项 foreach (var key in inputDto.ConDictionary.Keys) { if (assList.Contains(key)) { //更新 var inventoryresult = _conInventoryResultRepository.GetResultsByCID(inputDto.IID, key) .FirstOrDefault(); if (inventoryresult != null) { inventoryresult.RESULT = Convert.ToInt32(inputDto.ConDictionary[key][1]); inventoryresult.REALAMOUNT = inputDto.ConDictionary[key][0]; if (inventoryresult.RESULT == (int)ResultStatus.待盘点) { count--; } } _unitOfWork.RegisterDirty(inventoryresult); } else { //添加 ConInventoryResult result = new ConInventoryResult { IID = inputDto.IID, CID = key, REALAMOUNT = inputDto.ConDictionary[key][0], RESULT = Convert.ToInt32(inputDto.ConDictionary[key][1]), CREATEDATE = DateTime.Now, MODIFYDATE = DateTime.Now, CREATEUSER = inputDto.MODIFYUSER, MODIFYUSER = inputDto.MODIFYUSER }; _unitOfWork.RegisterNew(result); } if (inputDto.IsEnd) { //如果盘点结束,就更新资产状态为非锁定 var conqs = _conQuantRepository.GetQuants(inputDto.LOCATIONID, key).FirstOrDefault(); if (conqs != null) { conqs.ISLOCKED = 0; _unitOfWork.RegisterDirty(conqs); } AssLocation loc = _assLocationRepository.GetByID(inputDto.LOCATIONID).FirstOrDefault(); if (loc != null) { loc.ISLOCKED = 0; _unitOfWork.RegisterDirty(loc); } } } //如果盘点结束,就更新盘点单状态 inventory.MODIFYUSER = inputDto.MODIFYUSER; inventory.MODIFYDATE = DateTime.Now; inventory.RESULTCOUNT = count; if (inputDto.IsEnd) { inventory.STATUS = (int)InventoryStatus.盘点结束; } _unitOfWork.RegisterDirty(inventory); _unitOfWork.Commit(); rInfo.IsSuccess = true; rInfo.ErrorInfo = sb.ToString(); return(rInfo); } catch (Exception ex) { _unitOfWork.Rollback(); sb.Append(ex.Message); rInfo.IsSuccess = false; rInfo.ErrorInfo = sb.ToString(); return(rInfo); } } }
/// <summary> /// 更新盘点单 /// </summary> /// <param name="inputDto">盘点单信息</param> /// <returns></returns> public ReturnInfo UpdateInventory(ConInventoryInputDto inputDto) { ReturnInfo rInfo = new ReturnInfo(); StringBuilder sb = new StringBuilder(); var inventory = _conInventoryRepository.GetConInventoryByID(inputDto.IID).FirstOrDefault(); if (inventory == null) { sb.Append("未找到该编号的盘点单."); rInfo.IsSuccess = false; rInfo.ErrorInfo = sb.ToString(); return(rInfo); } else { if (inventory.STATUS == (int)InventoryStatus.盘点结束) { sb.Append("该盘点单已经盘点结束."); rInfo.IsSuccess = false; rInfo.ErrorInfo = sb.ToString(); return(rInfo); } try { List <ConInventoryResult> resultList = _conInventoryResultRepository.GetResultsByStatus(inputDto.IID, null).ToList(); List <String> keyList = new List <string>(); if (resultList.Count > 0) { foreach (ConInventoryResult row in resultList) { keyList.Add(row.CID + "/" + row.WAREID + "/" + row.STID + "/" + row.SLID); } } int count = inputDto.ConDictionary.Count; //更新盘点单结果行项 foreach (var key in inputDto.ConDictionary.Keys) { if (keyList.Contains(key)) { String[] keys = key.Split('/'); //更新 ConInventoryResult inventoryresult = _conInventoryResultRepository.GetResultBySL (inputDto.IID, keys[0], keys[1], keys[2], keys[3]).FirstOrDefault(); if (inventoryresult != null) { inventoryresult.RESULT = Convert.ToInt32(inputDto.ConDictionary[key][1]); inventoryresult.REALAMOUNT = inputDto.ConDictionary[key][0]; if (inventoryresult.RESULT == (int)ResultStatus.待盘点) { count--; } } _unitOfWork.RegisterDirty(inventoryresult); } else { //添加 ConInventoryResult result = new ConInventoryResult { IID = inputDto.IID, CID = key.Split('/')[0], WAREID = key.Split('/')[1], STID = key.Split('/')[2], SLID = key.Split('/')[3], REALAMOUNT = inputDto.ConDictionary[key][0], RESULT = Convert.ToInt32(inputDto.ConDictionary[key][1]), CREATEDATE = DateTime.Now, MODIFYDATE = DateTime.Now, CREATEUSER = inputDto.MODIFYUSER, MODIFYUSER = inputDto.MODIFYUSER }; _unitOfWork.RegisterNew(result); } if (inputDto.IsEnd) { //如果盘点结束,就更新资产状态为非锁定 var conqs = _conQuantRepository.GetQuants(inputDto.WAREID, key).FirstOrDefault(); if (conqs != null) { conqs.ISLOCKED = 0; _unitOfWork.RegisterDirty(conqs); } } } //如果盘点结束,就更新盘点单状态 inventory.MODIFYUSER = inputDto.MODIFYUSER; inventory.MODIFYDATE = DateTime.Now; inventory.RESULTCOUNT = count; if (inputDto.IsEnd) { inventory.STATUS = (int)InventoryStatus.盘点结束; } _unitOfWork.RegisterDirty(inventory); _unitOfWork.Commit(); rInfo.IsSuccess = true; rInfo.ErrorInfo = sb.ToString(); return(rInfo); } catch (Exception ex) { _unitOfWork.Rollback(); sb.Append(ex.Message); rInfo.IsSuccess = false; rInfo.ErrorInfo = sb.ToString(); return(rInfo); } } }