using System; using System.Collections.Generic; using System.Linq; using System.Text; using QMAPP.FJC.Entity.Basic; using QMAPP.FJC.Entity.Operation; using QMAPP.FJC.DAL.Operation; using QMAPP.FJC.Entity; using QMAPP.FJC.BLL.Basic; using QMFrameWork.Data; using QMAPP.FJC.DAL.Injection; using QMAPP.FJC.Entity.Injection; namespace QMAPP.FJC.BLL.Process { /// /// 红外扫描操作处理类 /// 作者:闫永刚 /// 日期:2015-05-28 /// public class OperateProcess1 { #region IProcess 成员 public void Process(MachineInfo machine,List parConfigList) { #region 获取加工记录 List listOperate = new List(); MainOperationDAL modal = new MainOperationDAL(); MainOperation condition = new MainOperation() { OPERATESTATE = EnumGeter.OPERATESTATE.OPERATING.GetHashCode().ToString(), PROCESSTYPE = machine.PROCESSTYPE, MACHINECODDE = machine.MACHINECODDE, MOLDNUMBER = parConfigList.First(o => o.COLUMNCODE.Contains("MCNO")).PARAVALUE.ToString(), PRODUCELINE = machine.PRODUCELINE }; //获取正在加工中的加工记录 List mainOperatingList = modal.GetList(condition) .OrderBy(o => o.CREATEDATE).ToList(); //加工操作 if (mainOperatingList.Count > 0) { List addInjectItemList = new List(); //获取加工工序记录 MainOperation mainOpe = mainOperatingList[0]; #region 处理本体或是产品对象 //初始化本体对象 MainDAL mainDal=new MainDAL(); Main mainObj = new Main(); //初始化零件对象 ProductDAL productDal = new ProductDAL(); Product product = new Product(); //判断加工工序产品的产品类别,获取对应的对象 if (mainOpe.PRODUCTTYPE == EnumGeter.ProductType.benti.GetHashCode().ToString()) { //获取本体对象 mainObj = mainDal.Get(new Main() { PID = mainOpe.PDID}); } else { //获取产品对象 product = productDal.Get(new Product() { PID = mainOpe.PDID }); } #endregion #region 如果浇注操作关联浇注投料信息 if (machine.PROCESSTYPE == EnumGeter.ProcessType.jiaozhu.GetHashCode().ToString()) { InjectionRecorderDAL injectDal = new InjectionRecorderDAL(); List list = injectDal.GetLastRecorder(new InjectionRecorder() { MACHINECODDE = machine.MACHINECODDE, }); if (list.Count > 0) { InjectionRecorder inRecorder = list[0]; #region 零件投料关联记录 ProductInjection proInject = new ProductInjection(); proInject.PID = Guid.NewGuid().ToString(); proInject.IPID = inRecorder.PID; proInject.MPPID = mainObj.PID; proInject.MATERIALNAME = inRecorder.MATERIALNAME; proInject.MATERIALCODE = inRecorder.MATERIALCODE; proInject.MATERIALTYPE = inRecorder.MATERIALTYPE; proInject.MATERIALBATCH = inRecorder.MATERIALBATCH; proInject.MATERIALCODE = inRecorder.MATERIALCODE; proInject.INJECTIONINDEX = inRecorder.INJECTIONINDEX; proInject.INJECTIONTERMINAL = inRecorder.INJECTIONTERMINAL; proInject.USEDWEIGHT = 0; proInject.CREATEDATE = System.DateTime.Now; proInject.CREATEUSER = inRecorder.CREATEUSER; proInject.UPDATEUSER = inRecorder.UPDATEUSER; addInjectItemList.Add(proInject); #endregion } } #endregion #region 设定一下道工序 //获取当前工序设置信息 ProcessSetBLL processSetBLL = new ProcessSetBLL(); //该产品的下一道工序信息 ProcessSet nextSet = processSetBLL.GetNextProcess(new ProcessSet() { PRODUCTTYPE = mainOpe.PRODUCTTYPE, PRODUCELINE = mainOpe.PRODUCELINE }); if (mainOpe.PRODUCTTYPE == EnumGeter.ProductType.benti.GetHashCode().ToString()) { if (nextSet != null && string.IsNullOrEmpty(nextSet.PID) == false) { mainObj.CURRENTPROCESS = nextSet.PROCESSTYPE; } else { //没有下一道工序,修改加工完成标记和加工完成时间 mainObj.COMPLETEFLAG = EnumGeter.COMPLETEFLAG.COMPLETED.GetHashCode().ToString(); mainObj.PROCESSSTATE = EnumGeter.COMPLETEFLAG.COMPLETED.GetHashCode().ToString(); mainObj.COMPLETETIME = System.DateTime.Now; } } else { product.CURRENTPROCESS = nextSet.PROCESSTYPE; } #endregion #region 数据库操作 using (IDataSession session = AppDataFactory.CreateMainSession()) { session.OpenTs(); modal.BaseSession = session; try { //更新加工工序对象 modal.Update(mainOpe); #region 更新本体或是零件信息 if (mainOpe.PRODUCTTYPE == EnumGeter.ProductType.benti.GetHashCode().ToString()) { //更新本体信息 mainDal.BaseSession = session; mainDal.Update(mainObj); } else { //更新零件信息 productDal.BaseSession = session; productDal.Update(product); } #endregion #region 浇注投料信息 if (addInjectItemList.Count > 0) { ProductInjectionDAL proInDal = new ProductInjectionDAL(); proInDal.BaseSession = session; foreach (var p in addInjectItemList) { proInDal.Insert(p); } } #endregion //新增加工参数 ParameterDeal deal = new ParameterDeal(); deal.InsertParameter(parConfigList, mainOpe, session); session.CommitTs(); } catch (Exception ex) { session.RollbackTs(); } } #endregion } #endregion } #endregion } }