using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using QMAPP.FJC.Entity.Operation;
using QMAPP.FJC.Entity.ProcessParameter;
using QMAPP.FJC.DAL.Operation;
using QMAPP.FJC.Entity;
using QMFrameWork.Data;
using QMAPP.FJC.DAL;
using QMAPP.FJC.DAL.Basic;
using QMAPP.FJC.Entity.Basic;
using QMAPP.FJC.BLL.Basic;
namespace QMAPP.FJC.BLL.Process
{
///
/// 总成装配操作处理类
/// 作者:闫永刚
/// 日期:2015-05-28
///
public class AssembleProcess
{
public void Process(AssembleParameter entity)
{
try
{
#region 获取加工记录
List listOperate = new List();
MainOperationDAL modal = new MainOperationDAL();
MainOperation condition = new MainOperation()
{
OPERATESTATE = EnumGeter.OPERATESTATE.OPERATING.GetHashCode().ToString(),
PROCESSTYPE = EnumGeter.ProcessType.zongchengzhuangpei.GetHashCode().ToString(),
MACHINECODDE = entity.MACHINECODDE
};
if (string.IsNullOrEmpty(entity.PRODUCTCODE) == false)
{
condition.PRODUCTCODE = entity.PRODUCTCODE;
}
//获取正在进行总成装配的产品信息
listOperate = modal.GetList(condition);
//按照升序排列
listOperate = listOperate.OrderBy(o => o.CREATEDATE).ToList();
MainOperation operate = listOperate[0];
operate.OPERATESTATE = EnumGeter.OPERATESTATE.COMPLETED.GetHashCode().ToString();
#endregion
#region 获取下一个工序
ProcessSetBLL processSetBLL = new ProcessSetBLL();
ProcessSet nextSet = processSetBLL.GetNextProcess(new ProcessSet()
{
PRODUCTTYPE = EnumGeter.ProductType.benti.GetHashCode().ToString(),
PROCESSTYPE = EnumGeter.ProcessType.zongchengzhuangpei.GetHashCode().ToString()
});
#endregion
#region 获取本体信息
//获取本体信息
MainDAL maindal = new MainDAL();
Main mainOjb = maindal.Get(new Main() { PID = operate.PDID });
//本体当前
mainOjb.PROCESSSTATE = EnumGeter.COMPLETEFLAG.COMPLETED.GetHashCode().ToString();
//存在下一道工序的情况下
if (string.IsNullOrEmpty(nextSet.PID) == false)
{
//修改当前工序类别
mainOjb.PROCESSTYPE = nextSet.PROCESSTYPE;
}
else
{
//没有下一道工序,修改加工完成标记和加工完成时间
mainOjb.COMPLETEFLAG = EnumGeter.COMPLETEFLAG.COMPLETED.GetHashCode().ToString();
mainOjb.COMPLETETIME = System.DateTime.Now;
}
#endregion
#region 总成装配加工参数
entity.PID = Guid.NewGuid().ToString();
entity.PDID = mainOjb.PID;
entity.PRODUCTCODE = mainOjb.MAINCODE;
entity.MOID = operate.PID;
entity.CREATEDATE = System.DateTime.Now;
entity.PRODUCTTYPE = EnumGeter.ProductType.benti.GetHashCode().ToString();
#endregion
#region 数据库操作
//AssembleParameterDAL apdal = new AssembleParameterDAL();
using (IDataSession session = AppDataFactory.CreateMainSession())
{
session.OpenTs();
//apdal.BaseSession = session;
maindal.BaseSession = session;
modal.BaseSession = session;
try
{
#region 更新本体信息
maindal.Update(mainOjb);
#endregion
#region 修改加工工序
modal.Update(operate);
#endregion
#region 插入总成装配加工参数
//apdal.Insert(entity);
#endregion
session.CommitTs();
}
catch (Exception ex)
{
session.RollbackTs();
throw;
}
}
#endregion
}
catch (Exception ex)
{
throw;
}
}
}
}