You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
222 lines
7.8 KiB
222 lines
7.8 KiB
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
|
|
{
|
|
/// <summary>
|
|
/// 红外扫描操作处理类
|
|
/// 作者:闫永刚
|
|
/// 日期:2015-05-28
|
|
/// </summary>
|
|
public class OperateProcess1
|
|
{
|
|
#region IProcess 成员
|
|
|
|
public void Process(MachineInfo machine,List<ParameterConfig> parConfigList)
|
|
{
|
|
|
|
#region 获取加工记录
|
|
|
|
List<MainOperation> listOperate = new List<MainOperation>();
|
|
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<MainOperation> mainOperatingList = modal.GetList(condition)
|
|
.OrderBy(o => o.CREATEDATE).ToList<MainOperation>();
|
|
|
|
//加工操作
|
|
if (mainOperatingList.Count > 0)
|
|
{
|
|
List<ProductInjection> addInjectItemList = new List<ProductInjection>();
|
|
|
|
//获取加工工序记录
|
|
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<InjectionRecorder> 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
|
|
}
|
|
}
|
|
|