private void FormMain_Load(object sender, EventArgs e) { try { lblVer.Text = @"Ver " + Application.ProductVersion; timerNow_Tick(null, null); timerNotify.Start(); superTabControlMain.Tabs.Clear(); try { Init(); } catch (Exception ex) { MessageHelper.ShowError(ex); } SpareEntities db = EntitiesFactory.CreateSpareInstance(); NotifyController.AddStockNotify(db, GlobalVar.Oper.OperName); db.SaveChanges(); } catch (Exception ex) { this.Close(); } }
public static void CloseNotify(SpareEntities db, string operName, TL_NOTIFY notify) { notify.CloseOperName = operName; notify.CloseTime = DateTime.Now; notify.State = (int)BillState.Finished; AddOrUpdateNotify(db, notify); }
private void BtnSave_Click(object sender, EventArgs e) { try { bs.EndEdit(); if (_bill.单据类型 != (int)BillType.MaterialAsk) { MessageHelper.ShowError("请输入有效的单据类型!申请单单据类型为:" + (int)BillType.MaterialAsk); return; } if (_bill.子单据类型 != (int)SubBillType.SpareLoan && _bill.子单据类型 != (int)SubBillType.SpareOut) { MessageHelper.ShowError("维护的子单据类型无效!领用出库类型为:" + (int)SubBillType.SpareOut + "借用出库类型为:" + (int)SubBillType.SpareLoan); return; } var detailList = (List <TB_ASK>)bs.DataSource; if (detailList.Count == 0) { MessageHelper.ShowError("请维护领用申请明细!"); return; } var bill = _bill.VWToBill(GlobalVar.Oper.DeptCode); //List<TB_ASK> detailList = (from TB_ASK d in _list select d).ToList(); SpareEntities db = EntitiesFactory.CreateSpareInstance(); BillHandler.AddMaterialAsk(db, bill, detailList); EntitiesFactory.SaveDb(db); MessageHelper.ShowInfo("保存成功!"); } catch (Exception ex) { MessageHelper.ShowInfo(ex.ToString()); } }
public static void Disable(SpareEntities db, long id, TS_OPERATOR oper) { var part = db.TA_PART.Single(p => p.UID == id); part.State = (int)DataState.Disabled; OperLogController.AddLog(db, LogType.BaseDataDisable, oper.OperName, part.ToString()); }
private static void SetProduceDate(SpareEntities db, TS_STOCK_DETAIL detail) { IFormatProvider ifp = new CultureInfo("zh-CN", true); DateTime pDate = DateTime.Now; try { pDate = DateTime.ParseExact(detail.Batch.Substring(0, 6), "yyMMdd", ifp); } catch (Exception ex) { // throw ex; } var part = db.TA_PART.SingleOrDefault(p => p.PartCode == detail.PartCode); if (part == null) { detail.ProduceDate = pDate; return; } detail.ProduceDate = pDate; if (detail.ProduceDate != null) { detail.OverdueDate = detail.ProduceDate.AddDays(part.ValidityDays); } }
public static void AddOrUpdateList(SpareEntities db, List <TB_OUT> details) { foreach (var detail in details) { db.TB_OUT.AddOrUpdate(detail); } }
public static void LocStart(SpareEntities db, TB_INVENTORY_LOC locBill) { var bill = db.TB_INVENTORY_LOC.SingleOrDefault(p => p.BillNum == locBill.BillNum && p.LocCode == locBill.LocCode); if (bill != null) { bill.CheckBeginTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); // // locBill.CheckBeginTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); // // db.TB_INVENTORY_LOC.Attach(locBill); // db.Entry(locBill).State = EntityState.Modified; } else { locBill.CheckBeginTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); db.TB_INVENTORY_LOC.Remove(locBill); db.TB_INVENTORY_LOC.Attach(locBill); db.Entry(locBill).State = EntityState.Modified; } // bill.State = (int)BillState.Handling; //更新单据状态为正在执行 StoreLocationController.Lock(db, locBill.LocCode); //锁定库位 BillLogController.Add(db, locBill, locBill.OperName, OperateType.Update); //创建【单据日志】 }
public static void CloseNotifyList(SpareEntities db, string operName, List <TL_NOTIFY> list) { foreach (TL_NOTIFY notify in list) { CloseNotify(db, operName, notify); } }
public static void UpdateState(SpareEntities db, TB_BILL bill, BillState state) { bill.State = (int)state;//更新【单据】状态为:完成 OperateType operType; switch (state) { case BillState.New: case BillState.Handling: operType = OperateType.Update; break; case BillState.Finished: operType = OperateType.Finish; break; case BillState.Cancelled: operType = OperateType.Cancel; break; default: operType = OperateType.Update; break; } BillLogController.Add(db, bill, bill.OperName, operType); //创建【单据日志】 }
private void BtnSave_Click(object sender, EventArgs e) { try { bs.EndEdit(); if (_bill.单据类型 != (int)BillType.StockMove) { MessageHelper.ShowError("请输入有效的单据类型!移库单据类型为:" + (int)BillType.StockMove); return; } var detailList = (List <TB_STOCK_MOVE>)bs.DataSource; if (detailList.Count == 0) { MessageHelper.ShowError("请维护移动明细!"); return; } SpareEntities db = EntitiesFactory.CreateSpareInstance(); BillHandler.AddStockMove(db, _bill.VWToBill(GlobalVar.Oper.DeptCode), detailList); EntitiesFactory.SaveDb(db); MessageHelper.ShowInfo("保存成功!"); } catch (Exception ex) { MessageHelper.ShowInfo(ex.ToString()); } }
public static void AdjustStockByInventory(SpareEntities db, TB_BILL bill, List <TB_INVENTORY_DETAIL> details) { var stockMoveList = new List <TB_STOCK_MOVE>(); foreach (TB_INVENTORY_DETAIL detail in details) { StoreLocationController.UnLock(db, detail.CheckLocCode);//解锁库位 var diffqty = detail.BookQty - detail.CheckQty; if (diffqty == 0) { continue; } var stockMove = detail.ToStockMove(); if (diffqty < 0) { stockMove.FromLocCode = "OTHER"; stockMove.ToLocCode = stockMove.ToLocCode; stockMove.Qty = (decimal) - diffqty; } else { stockMove.FromLocCode = stockMove.ToLocCode; stockMove.ToLocCode = "OTHER"; stockMove.Qty = (decimal)diffqty; } stockMoveList.Add(stockMove); } StockDetailController.ListMove(db, bill, stockMoveList);//盘点差异执行移库 }
/// <summary> /// 创建【拣料单】 /// </summary> /// <param name="db"></param> /// <param name="billPickFact">拣料单</param> /// <param name="details">拣料明细</param> /// <returns></returns> public static void AddMaterialOut(SpareEntities db, TB_BILL billPickFact, List <TB_OUT> details) { { //校验单据状态是否为新建 if (billPickFact.State != (int)BillState.New) { throw new WmsException(ResultCode.DataStateError, billPickFact.BillNum, "状态错误,不应为:" + billPickFact.State); } if (string.IsNullOrEmpty(billPickFact.BillNum)) { SetBillNum(billPickFact); //设置单据编号 details.ForEach(p => p.BillNum = billPickFact.BillNum); //设置明细编号 NotifyController.AddNotify(db, billPickFact.OperName, NotifyType.MaterialOut, billPickFact.BillNum, ""); } else { var dbOutList = db.TB_OUT.Where(p => p.BillNum == billPickFact.BillNum).ToList(); foreach (var det in dbOutList) { if (details.FirstOrDefault(p => p.UID == det.UID) == null) { SpareOutController.RemaveDetail(db, det); } } NotifyController.AddNotify(db, billPickFact.OperName, NotifyType.MaterialOutUpdate, billPickFact.BillNum, ""); } BillController.AddOrUpdate(db, billPickFact); //添加【原料拣料单】单据 SpareOutController.AddOrUpdateList(db, details); //更新【实际拣料单】明细 EntitiesFactory.SaveDb(db); } }
private void BtnDeliver_Click(object sender, EventArgs e) { if (_bill == null || _bill.单据编号 == null) { MessageHelper.ShowInfo("请选择单据"); return; } if (MessageHelper.ShowQuestion("确定要执行选定的领用单?") == DialogResult.Yes) { SpareEntities db = EntitiesFactory.CreateSpareInstance(); var outlist = SpareOutController.GetList(db, _bill.单据编号); foreach (var spout in outlist) { if (string.IsNullOrEmpty(spout.TakeUser)) { MessageHelper.ShowError("领用详细中的领用人信息不能为空!"); return; } } BillHandler.FinishMaterialOut(db, _bill.VWToBill(GlobalVar.Oper.DeptCode), outlist); EntitiesFactory.SaveDb(db); NotifyController.AddStockSafeQty(db, GlobalVar.Oper.OperName); MessageHelper.ShowInfo("保存成功!"); } }
private void btnStart_Click(object sender, EventArgs e) { Console.WriteLine(@"系统启动"); //获取默认收货库位 SpareEntities db = EntitiesFactory.CreateSpareInstance(); //todo 需要维护实际收货地点的编号 var firstOrDefault = ConfigController.GetList(db).FirstOrDefault(p => p.ParamName == "收货地点"); if (firstOrDefault != null) { QadInterface._defaultLoc = firstOrDefault.ParamValue; } lblErpGet.Visible = sbErpGet.Value; if (sbErpGet.Value) { _qadInterface.Receive(); _timerErpGet.Start(); Console.WriteLine(@"启动:获取ERP接口数据,执行周期:" + _timerErpGet.Interval / 1000 + "秒"); } lblErpPut.Visible = sbErpPut.Value; if (sbErpPut.Value) { _qadInterface.Send(); _timerErpPut.Start(); Console.WriteLine(@"启动:发送ERP接口数据,执行周期:" + _timerErpPut.Interval / 1000 + "秒"); } _timer.Start(); btnStart.Enabled = false; btnStop.Enabled = true; }
private void BtnSave_Click(object sender, EventArgs e) { try { bs.EndEdit(); if (_bill.单据类型 != (int)BillType.OtherInOut) { MessageHelper.ShowError("请输入有效的单据类型!其他出入库单据类型为:" + (int)BillType.OtherInOut); return; } if (_bill.子单据类型 != (int)SubBillType.OtherIn) { MessageHelper.ShowError("维护的子单据类型无效!其他入库类型为:" + (int)SubBillType.OtherIn); return; } var detailList = (List <TB_OTHER_IN>)bs.DataSource; if (detailList.Count == 0) { MessageHelper.ShowError("请维护其他入库明细!"); return; } SpareEntities db = EntitiesFactory.CreateSpareInstance(); BillHandler.AddOtherIn(db, _bill.VWToBill(GlobalVar.Oper.DeptCode), detailList); EntitiesFactory.SaveDb(db); NotifyController.AddStockSafeQty(db, GlobalVar.Oper.OperName); MessageHelper.ShowInfo("保存成功!"); } catch (Exception ex) { MessageHelper.ShowInfo(ex.ToString()); } }
/// <summary> /// 添加临时盘点 /// </summary> /// <param name="db"></param> /// <param name="locBill">盘点库位</param> /// <param name="details">盘点明细</param> /// <returns></returns> public static void AddTempInventory(SpareEntities db, TB_INVENTORY_LOC locBill, List <TB_INVENTORY_DETAIL> details) { var bill = new TB_BILL { BillType = (int)BillType.InventoryPlan, OperName = locBill.OperName, StartTime = locBill.CheckBeginTime, FinishTime = locBill.CheckEndTime, State = (int)BillState.Finished }; locBill.State = (int)InventoryState.Checked; var locList = new List <TB_INVENTORY_LOC> { locBill }; SetBillNum(bill); //设置单据编号 locList.ForEach(p => p.BillNum = bill.BillNum); //设置明细编号 InventoryController.AddOrUpdate(db, bill); //添加盘点计划 InventoryController.AddLocList(db, locList); //添加盘点库位 InventoryController.AddDetailList(db, details); //添加盘点明细 InventoryController.AdjustStockByInventory(db, bill, details); //根据盘点结果调整库存 }
public static void SaveObj(SpareEntities db, string type, string name, object obj) //将对象存入系统表 { //将对象流化到流 IFormatter formatter = new BinaryFormatter(); Stream stream = new MemoryStream(); formatter.Serialize(stream, obj); stream.Position = 0; // Read into a byte array byte[] blobdata = new Byte[stream.Length]; stream.Read(blobdata, 0, (int)stream.Length); stream.Close(); var config = db.TS_CONFIG.FirstOrDefault(p => p.GRPID == type.Trim() && p.KEYID == name.Trim()); if (config == null) { config = new TS_CONFIG() { GRPID = type.Trim(), KEYID = name.Trim(), DATA = blobdata }; } else { config.DATA = blobdata; } db.TS_CONFIG.AddOrUpdate(config); }
private void btnAdd_Click(object sender, EventArgs e) { OpenFileDialog dlg = new OpenFileDialog(); dlg.Filter = "文件(*.*)|*.*"; if (dlg.ShowDialog() == DialogResult.OK) { var attach = new TA_Attach() { TableName = TableName, TablePKID = TablePKID, CreateDate = DateTime.Now, CreatorName = GlobalVar.Oper.OperName, FileName = Path.GetFileName(dlg.FileName) }; FileStream fs = File.OpenRead(dlg.FileName); fs.Position = 0; byte[] blobdata = new Byte[fs.Length]; fs.Read(blobdata, 0, (int)fs.Length); attach.FileData = blobdata; fs.Close(); SpareEntities db = EntitiesFactory.CreateSpareInstance(); AttachController.AddOrUpdate(db, attach, GlobalVar.Oper); EntitiesFactory.SaveDb(db); MessageHelper.ShowInfo("保存成功!"); RefreshData(); } }
private void SaveData() { int iFind = -1; SpareEntities db = EntitiesFactory.CreateSpareInstance(); for (int i = 0; i < gr.Length; i++) { if (gr[i].Check) { FileStream fs = new FileStream(gr[i].FullName, FileMode.Open, FileAccess.Read); UpdateControl.SaveFile2DB(db,"Update", gr[i].FileName, fs); iFind = servers.Find(gr[i].FileName); if (iFind >= 0) { if (servers[iFind].ModifyDate < DateTime.Parse(gr[i].lModifyDate)) { servers[iFind].ModifyDate = DateTime.Parse(gr[i].lModifyDate); servers[iFind].FileSize = long.Parse(gr[i].lFileSize); } } else { UpdateItem item = new UpdateItem(); item.FileName = gr[i].FileName; item.FileSize = long.Parse(gr[i].lFileSize); item.ModifyDate = DateTime.Parse(gr[i].lModifyDate); servers.Add(item); } } } UpdateControl.SaveObj(db,"Updates", "Updates", servers); EntitiesFactory.SaveDb(db); MessageHelper.ShowInfo("保存成功!"); RefreshData(); }
public static void Disable(SpareEntities db, int id, TS_OPERATOR oper) { var location = db.TA_STORE_LOCATION.Single(p => p.UID == id); location.State = (int)DataState.Disabled; OperLogController.AddLog(db, LogType.BaseDataDisable, oper.OperName, location.ToString()); }
public static void Disable(SpareEntities db, int id, TS_OPERATOR oper) { var data = db.TA_STORE_GROUP.Single(p => p.UID == id); data.State = (int)DataState.Disabled; OperLogController.AddLog(db, LogType.BaseDataDisable, oper.OperName, data.ToString()); }
public static void UpdateState(SpareEntities db, TB_BILL bill, BillState state) { bill.State = (int)state;//更新【单据】状态为:完成 OperateType operType; switch (state) { case BillState.New: case BillState.Handling: bill.StartTime = DateTime.Now.ToString(SysConfig.LongTimeString); operType = OperateType.Update; break; case BillState.Finished: bill.FinishTime = DateTime.Now.ToString(SysConfig.LongTimeString); operType = OperateType.Finish; break; case BillState.Cancelled: bill.FinishTime = DateTime.Now.ToString(SysConfig.LongTimeString); operType = OperateType.Cancel; break; default: bill.StartTime = DateTime.Now.ToString(SysConfig.LongTimeString); operType = OperateType.Update; break; } AddOrUpdate(db, bill); BillLogController.Add(db, bill, bill.OperName, operType); //创建【单据日志】 }
public static object LoadObj(string type, string name, object defobj) //从系统表中得到对象 { Object aObject; SpareEntities db = EntitiesFactory.CreateSpareInstance(); var obj = db.TS_CONFIG.FirstOrDefault(p => p.GRPID == type.Trim() && p.KEYID == name.Trim()); if (obj == null) { return(defobj); } try { byte[] blobdata = (byte[])(obj.DATA); if (blobdata.Length == 0) { return(null); } Stream stream = new MemoryStream(); stream.Write(blobdata, 0, blobdata.Length); stream.Position = 0; IFormatter formatter = new BinaryFormatter(); aObject = formatter.Deserialize(stream); stream.Close(); } catch { aObject = defobj; } return(aObject); }
public static VS_STOCK GetV(SpareEntities db, string partCode, string locCode) { var stock = db.VS_STOCK.SingleOrDefault(p => p.PartCode == partCode && p.LocCode == locCode); return(stock); }
public static bool DownloadServerFiles() { //同步服务器时间 SpareEntities db = EntitiesFactory.CreateSpareInstance(); DateTime dtNow = db.Database.SqlQuery <DateTime>("select getdate()").FirstOrDefault(); if (dtNow != null) { TimeHelper.SyncTime(DateTime.Parse(dtNow.ToString())); } bool bReturn = false; int iFind = -1; Updates servers = GetServerFilesInfo(); if (servers == null) { return(bReturn); } Updates locals = new Updates(); GetLocalFilesInfo(locals, new System.IO.DirectoryInfo(Application.StartupPath)); string sFullname = ""; string sPath = ""; foreach (UpdateItem item in servers) { iFind = locals.Find(item.FileName); if (iFind >= 0) { if (item.ModifyDate > locals[iFind].ModifyDate.AddSeconds(5)) { Application.DoEvents(); sFullname = Application.StartupPath + @"\updatetmp\" + item.FileName; sPath = Path.GetDirectoryName(sFullname); if (!Directory.Exists(sPath)) { Directory.CreateDirectory(sPath); } FileStream tmpfs = (FileStream)LoadFileFromDB(db, "Update", item.FileName, sFullname); tmpfs.Close(); bReturn = true; } } else { Application.DoEvents(); sFullname = Application.StartupPath + @"\updatetmp\" + item.FileName; sPath = Path.GetDirectoryName(sFullname); if (!Directory.Exists(sPath)) { Directory.CreateDirectory(sPath); } FileStream tmpfs = (FileStream)LoadFileFromDB(db, "BLMUpdate", item.FileName, sFullname); tmpfs.Close(); bReturn = true; } } return(bReturn); }
private void BtnSave_Click(object sender, EventArgs e) { try { bs.EndEdit(); if (_bill.单据类型 != (int)BillType.SpareReturn) { MessageHelper.ShowError("请输入有效的单据类型!领用归还单据类型为:" + (int)BillType.SpareReturn); return; } var detailList = (List <TB_RETURN>)bs.DataSource; if (detailList.Count == 0) { MessageHelper.ShowError("请维护领用还回明细!"); return; } //List<TB_RETURN> detailList = (from TB_RETURN d in _list select d).ToList(); SpareEntities db = EntitiesFactory.CreateSpareInstance(); BillHandler.AddMaterialReturn(db, _bill.VWToBill(GlobalVar.Oper.DeptCode), detailList); EntitiesFactory.SaveDb(db); MessageHelper.ShowInfo("保存成功!"); } catch (Exception ex) { MessageHelper.ShowInfo(ex.ToString()); } }
/// <summary> /// 添加【其它出库单】 /// </summary> /// <param name="db"></param> /// <param name="bill">其它出库单</param> /// <param name="details">其它出库明细</param> /// <returns></returns> public static void AddOtherOut(SpareEntities db, TB_BILL bill, List <TB_OTHER_OUT> details) { { SetBillNum(bill); //设置单据编号 details.ForEach(p => p.BillNum = bill.BillNum); //设置明细编号 BillController.AddOrUpdate(db, bill); //添加单据 foreach (var detail in details) { OtherOutController.AddOrUpdate(db, detail); //添加明细 } var subBillType = (SubBillType)bill.SubBillType; switch (subBillType) { //出库 case SubBillType.OtherOut: //其它出库 // case SubBillType.ReturnToSupplier: //原料退货 case SubBillType.InventoryLoss: //盘亏 case SubBillType.ScrapDestroy: //报废销毁 var detailsOut = details.Select(detail => detail.ToStockDetailOut(bill)).ToList(); StockDetailController.ListOut(db, bill, detailsOut); //更新【库存主表】【库存明细】出库 break; default: throw new WmsException(ResultCode.Exception, bill.BillNum, "单据二级类型错误"); } NotifyController.AddNotify(db, bill.OperName, NotifyType.OtherOutApprove, bill.BillNum, ""); } }
private static void Init() { using (SpareEntities db = EntitiesFactory.CreateSpareInstance()) { var configList = ConfigController.GetList(db); foreach (TA_CONFIG config in configList) { switch (config.ParamName) { case "IsProductInspect": IsProductInspect = Convert.ToBoolean(config.ParamValue); break; case "IsOutSourceInspect": IsOutSourceInspect = Convert.ToBoolean(config.ParamValue); break; case "IsBackFlush": IsBackFlush = Convert.ToBoolean(config.ParamValue); break; case "AutoFinishPartPick": AutoFinishPartPick = Convert.ToBoolean(config.ParamValue); break; case "AutoHandleMaterialAsk": AutoHandleMaterialAsk = Convert.ToBoolean(config.ParamValue); break; case "CcPartCode": CcPartCode = config.ParamValue; break; case "CcProjectId": CcProjectId = config.ParamValue; break; case "IgnoreErpPartCodeList": IgnoreErpPartCodeList = config.ParamValue.Split(',').ToList(); break; case "LocCodeVinWip": LocCodeVinWip = config.ParamValue; break; case "LocCodeVinFg": LocCodeVinFg = config.ParamValue; break; case "LocCodeVinSale": LocCodeVinSale = config.ParamValue; break; default: break; } } } }
private void GetBillList() { using (SpareEntities db = EntitiesFactory.CreateSpareInstance()) { _billList = ReportViewController.GetIoSummarysByStockDetailList(db, _beginTime, _endTime); dgvBill.DataSource = ListHelper.ListToDataTable(_billList); } }
/// <summary> /// 【盘点单】调整库存 /// </summary> /// <param name="db"></param> /// <param name="bill"></param> /// <param name="details"></param> /// <returns></returns> public static void AdjustStockByInventoryLoc(SpareEntities db, TB_BILL bill) { var details = db.TB_INVENTORY_DETAIL.Where(p => p.BillNum == bill.BillNum).ToList(); InventoryController.AdjustStockByInventory(db, bill, details); BillController.UpdateState(db, bill, BillState.Finished); NotifyController.AddNotify(db, bill.OperName, NotifyType.InventoryPlanApprove, bill.BillNum, ""); }