锐腾搅拌上料功能
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.

1068 lines
48 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ICSSoft.Frame.Data.Entity;
using ICSSoft.Base.Config.DBHelper;
using System.Data;
using System.Data.SqlClient;
using ICSSoft.Base.Config.AppConfig;
using ICSSoft.Frame.APP.Entity;
namespace ICSSoft.Frame.Data.DAL
{
public class ICSEQPSTPDAL
{
#region 新增和修改
public static void Add(List<ICSEQPSTP> InfoList, string dsconn)
{
FramDataContext db = new FramDataContext(dsconn);
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
try
{
foreach (ICSEQPSTP info in InfoList)
{
bool isNew = false;
var line = db.ICSEQPSTP.SingleOrDefault(a => a.ID == info.ID);
if (line == null)
{
isNew = true;
line = new ICSEQPSTP();
}
if (info.EQPTypeCode == "固定设备")
{
var codes = db.ICSEQPSTP.Where(a => a.ITEMCODE == info.ITEMCODE && a.EATTRIBUTE1 == info.EATTRIBUTE1 && a.OPCODE == info.OPCODE && a.ID != info.ID
&& a.EQPCODE == info.EQPCODE);
if (codes.ToList().Count > 0)
{
throw new Exception("已存在相同'产品-工艺-工序-固定设备'的标准工时");
}
}
else if (info.EQPTypeCode == "加工中心" || info.EQPTypeCode == "设备类型")
{
var codes = db.ICSEQPSTP.Where(a => a.ITEMCODE == info.ITEMCODE && a.EATTRIBUTE1 == info.EATTRIBUTE1 && a.OPCODE == info.OPCODE && a.ID != info.ID
&& a.cClass == info.cClass && a.cAxis == info.cAxis && a.cHandles == info.cHandles && a.cAccuracy == info.cAccuracy && a.cMachinableProfiles == info.cMachinableProfiles && a.cToolMagazine == info.cToolMagazine);
if (codes.ToList().Count > 0)
{
throw new Exception("已存在相同'产品-工序-6大维度'的标准工时");
}
}
else if (info.EQPTypeCode == "车削中心") {
var codes = db.ICSEQPSTP.Where(a => a.ITEMCODE == info.ITEMCODE && a.EATTRIBUTE1 == info.EATTRIBUTE1 && a.OPCODE == info.OPCODE && a.ID != info.ID && a.CXJD == info.CXJD && a.CXType == info.CXType && a.CXBrand1 == info.CXBrand1 && a.CXBrand2 == a.CXBrand2 && a.CXBrand3 == a.CXBrand3);
if (codes.ToList().Count > 0)
{
throw new Exception("已存在相同'产品-工序-车削中心'的标准工时");
}
}
line.ID = info.ID;
line.ITEMCODE = info.ITEMCODE;
line.OPCODE = info.OPCODE;
line.EQPCODE = info.EQPCODE;
line.ETTRCODE = info.ETTRCODE;
line.ISREF = info.ISREF;
line.Status = "New";
var line1 = db.ICSEQPSTP.Where(a => a.ITEMCODE == info.ITEMCODE && a.EATTRIBUTE1 == info.EATTRIBUTE1 && a.OPCODE == info.OPCODE && a.ISREF == "是" && a.ID != info.ID);
if (line1.ToList().Count > 0 && info.ISREF == "是")
{
//已经存在则改为否
foreach (var stp in line1.ToList())
{
var lineOther = db.ICSEQPSTP.SingleOrDefault(a => a.ID == stp.ID);
lineOther.ISREF = "否";
db.SubmitChanges();
}
}
line.STIME = Convert.ToDecimal(info.STIME);
line.RTIME = Convert.ToDecimal(info.RTIME);
line.JiaGongTime = info.JiaGongTime;
line.JiaZhuangTime = info.JiaZhuangTime;
line.JianYanTime = info.JianYanTime;
line.TiaoJiTime = info.TiaoJiTime;
line.MUSER = AppConfig.UserCode;
line.MUSERName = AppConfig.UserName;
line.MTIME = DateTime.Now;
line.WorkPoint = AppConfig.WorkPointCode;
line.EQPTypeCode = info.EQPTypeCode;
line.cClass = info.cClass;
line.cHandles = info.cHandles;
line.cAxis = info.cAxis;
line.cToolMagazine = info.cToolMagazine;
line.cMachinableProfiles = info.cMachinableProfiles;
line.cAccuracy = info.cAccuracy;
line.OPLVL = info.OPLVL;
line.ToolingNo = info.ToolingNo;
line.EATTRIBUTE1 = info.EATTRIBUTE1;
line.WTIME = info.WTIME;
line.CXBrand1 = info.CXBrand1;
line.CXBrand2 = info.CXBrand2;
line.CXBrand3 = info.CXBrand3;
line.CXJD = info.CXJD;
line.CXType = info.CXType;
////20180626新增
//line.BladeModelAndBrand = info.BladeModelAndBrand;
//line.OutsourcingProperties = info.OutsourcingProperties;
//line.ToolingNo = info.ToolingNo;
if (isNew)
db.ICSEQPSTP.InsertOnSubmit(line);
db.SubmitChanges();
}
db.Transaction.Commit();
}
catch (Exception ex)
{
db.Transaction.Rollback();
throw ex;
}
finally
{
db.Connection.Close();
}
}
#endregion
#region 新增和修改List
public static string AddList(List<FormICSEQPSTPUIModelNew> InfoList, string dsconn)
{
FramDataContext db = new FramDataContext(dsconn);
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
try
{
string str = "";
foreach (FormICSEQPSTPUIModelNew info in InfoList)
{
var codes = db.ICSEQPSTP.Where(a => a.ITEMCODE == info.ITEMCODE && a.OPCODE == info.OPCODE && a.EQPTypeCode == info.EQPTypeCode);
List<ICSEQPSTP> list = codes.ToList();
if (list.Count > 0)
{
//已审核不做处理
if (list[0].Status == "Check")
{
var line = list[0];
line.ITEMCODE = info.ITEMCODE;
line.OPCODE = info.OPCODE;
line.EQPCODE = info.EQPCODE;
line.EQPTypeCode = info.EQPTypeCode;
line.ETTRCODE = info.ETTRCODE;
line.STIME = Convert.ToDecimal(info.STIME);
line.ISREF = info.ISREF;
line.RTIME = info.RTIME;
line.Status = info.Status;
line.MUSER = AppConfig.UserId;
line.MUSERName = AppConfig.UserName;
line.MTIME = DateTime.Now;
line.WorkPoint = AppConfig.WorkPointCode;
line.EATTRIBUTE1 = info.EATTRIBUTE1;
line.OutsourcingProperties = info.OutsourcingProperties;
line.BladeModelAndBrand = info.BladeModelAndBrand;
line.ToolingNo = info.ToolingNo;
db.SubmitChanges();
}
else //未审核时需要更新
{
//str += "存货编码:" + info.ITEMCODE + "工序代码:" + info.OPCODE + "设备类型" + info.EQPTypeCode + "已维护标准工时" + "\r\n";
//continue;
var line = list[0];
line.ITEMCODE = info.ITEMCODE;
line.OPCODE = info.OPCODE;
line.EQPCODE = info.EQPCODE;
line.EQPTypeCode = info.EQPTypeCode;
line.ETTRCODE = info.ETTRCODE;
line.STIME = Convert.ToDecimal(info.STIME);
line.ISREF = info.ISREF;
line.RTIME = info.RTIME;
line.Status = info.Status;
var line1 = db.ICSEQPSTP.Where(a => a.ITEMCODE == info.ITEMCODE && a.OPCODE == info.OPCODE && a.ISREF == "是" && a.EQPTypeCode != info.EQPTypeCode);
if (line1.ToList().Count > 0 && info.ISREF == "是")
{
//str += "存货编码:" + info.ITEMCODE + "工序代码:" + info.OPCODE + "已存在默认标准工时" + "\r\n";
//continue;
foreach (var stp in line1.ToList())
{
stp.ISREF = "否";
}
}
line.OutsourcingProperties = info.OutsourcingProperties;
line.BladeModelAndBrand = info.BladeModelAndBrand;
line.ToolingNo = info.ToolingNo;
line.MUSER = info.MUSER;
line.MUSERName = info.MUSERName;
line.MTIME = (DateTime)info.MTIME;
line.WorkPoint = info.WorkPoint;
line.EATTRIBUTE1 = info.EATTRIBUTE1;
db.SubmitChanges();
}
}
else
{
bool isNew = false;
var line = db.ICSEQPSTP.SingleOrDefault(a => a.ITEMCODE == info.ITEMCODE && a.OPCODE == info.OPCODE && a.EQPTypeCode == info.EQPTypeCode);
if (line == null)
{
isNew = true;
line = new ICSEQPSTP();
line.ID = AppConfig.GetGuid();
}
//line.ID = info.ID;
line.ITEMCODE = info.ITEMCODE;
line.OPCODE = info.OPCODE;
//line.EQPCODE = info.EQPCODE;
line.EQPTypeCode = info.EQPTypeCode;
line.ETTRCODE = info.ETTRCODE;
line.STIME = Convert.ToDecimal(info.STIME);
line.ISREF = info.ISREF;
line.RTIME = info.RTIME;
line.Status = info.Status;
var line1 = db.ICSEQPSTP.Where(a => a.ITEMCODE == info.ITEMCODE && a.OPCODE == info.OPCODE && a.EQPTypeCode != info.EQPTypeCode && a.ISREF == "是");
if (line1.ToList().Count > 0 && info.ISREF == "是")
{
//str += "存货编码:" + info.ITEMCODE + "工序代码:" + info.OPCODE + "已存在默认标准工时" + "\r\n";
foreach (var stp in line1.ToList())
{
stp.ISREF = "否";
}
//continue;
}
line.MUSER = AppConfig.UserId;
line.MUSERName = AppConfig.UserName;
line.MTIME = DateTime.Now;
line.WorkPoint = AppConfig.WorkPointCode;
line.EATTRIBUTE1 = info.EATTRIBUTE1;
line.OutsourcingProperties = info.OutsourcingProperties;
line.BladeModelAndBrand = info.BladeModelAndBrand;
line.ToolingNo = info.ToolingNo;
if (isNew)
db.ICSEQPSTP.InsertOnSubmit(line);
db.SubmitChanges();
}
}
db.Transaction.Commit();
return str;
}
catch (Exception ex)
{
db.Transaction.Rollback();
throw ex;
}
}
public static void Import(List<ICSEQPSTP> InfoList, string dsconn)
{
FramDataContext db = new FramDataContext(dsconn);
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
try
{
foreach (ICSEQPSTP info in InfoList)
{
bool isNew = false;
ICSEQPSTP line = null;
if (info.EQPTypeCode == "委外")
{
line = db.ICSEQPSTP.SingleOrDefault(a => a.ITEMCODE == info.ITEMCODE && a.OPCODE == info.OPCODE && a.WorkPoint == AppConfig.WorkPointCode);
if (line == null)
{
isNew = true;
line = new ICSEQPSTP();
line.ID = AppConfig.GetGuid();
}
}
else if (info.EQPTypeCode == "固定设备")
{
line = db.ICSEQPSTP.SingleOrDefault(a => a.ITEMCODE == info.ITEMCODE && a.OPCODE == info.OPCODE && a.WorkPoint == AppConfig.WorkPointCode
&& a.EQPCODE == info.EQPCODE);
if (line == null)
{
isNew = true;
line = new ICSEQPSTP();
line.ID = AppConfig.GetGuid();
}
}
else
{
line = db.ICSEQPSTP.SingleOrDefault(a => a.ITEMCODE == info.ITEMCODE && a.OPCODE == info.OPCODE && a.WorkPoint == AppConfig.WorkPointCode
&& a.cClass == info.cClass && a.cAxis == info.cAxis && a.cHandles == info.cHandles && a.cAccuracy == info.cAccuracy && a.cMachinableProfiles == info.cMachinableProfiles && a.cToolMagazine == info.cToolMagazine);
if (line == null)
{
isNew = true;
line = new ICSEQPSTP();
line.ID = AppConfig.GetGuid();
}
}
line.ITEMCODE = info.ITEMCODE;
line.OPCODE = info.OPCODE;
line.EQPCODE = info.EQPCODE;
line.ETTRCODE = info.ETTRCODE;
line.ISREF = info.ISREF;
line.Status = "New";
if (info.ISREF == "是")
{
//如果当前行是默认,则其他行改为非默认
var line1 = db.ICSEQPSTP.Where(a => a.ITEMCODE == info.ITEMCODE && a.OPCODE == info.OPCODE && a.ISREF == "是" && a.ID != info.ID);
List<ICSEQPSTP> list = line1.ToList();
foreach (var isRef in list)
{
var lineOther = db.ICSEQPSTP.SingleOrDefault(a => a.ID == isRef.ID);
lineOther.ISREF = "否";
db.SubmitChanges();
}
}
line.STIME = Convert.ToDecimal(info.STIME);
line.RTIME = Convert.ToDecimal(info.RTIME);
line.JiaGongTime = info.JiaGongTime;
line.JiaZhuangTime = info.JiaZhuangTime;
line.JianYanTime = info.JianYanTime;
line.TiaoJiTime = info.TiaoJiTime;
line.MUSER = AppConfig.UserId;
line.MUSERName = AppConfig.UserName;
line.MTIME = DateTime.Now;
line.WorkPoint = AppConfig.WorkPointCode;
line.EQPTypeCode = info.EQPTypeCode;
line.cClass = info.cClass;
line.cHandles = info.cHandles;
line.cAxis = info.cAxis;
line.cToolMagazine = info.cToolMagazine;
line.cMachinableProfiles = info.cMachinableProfiles;
line.cAccuracy = info.cAccuracy;
line.OPLVL = info.OPLVL;
line.WTIME = info.WTIME;
//line.EATTRIBUTE1 = info.EATTRIBUTE1;
////20180626新增
//line.BladeModelAndBrand = info.BladeModelAndBrand;
//line.OutsourcingProperties = info.OutsourcingProperties;
//line.ToolingNo = info.ToolingNo;
if (isNew)
db.ICSEQPSTP.InsertOnSubmit(line);
db.SubmitChanges();
}
db.Transaction.Commit();
}
catch (Exception ex)
{
db.Transaction.Rollback();
throw ex;
}
finally
{
db.Connection.Close();
}
}
#endregion
#region 通过ID查询
public static DataTable searchInfoByID(string ID, string dsconn)
{
// string sql = @"select a.ID,
//a.ITEMCODE,
//a.OPCODE,
//a.EQPCODE,
//a.ETTRCOde,
//a.STIME,
//a.RTIME,
//a.ISREF,
//a.OutsourcingProperties ,
//a.BladeModelAndBrand,
//a.ToolingNo,
//
//a.WorkPoint,
//a.MUSER,
//a.MUSERName,
//a.MTIME,
//a.EATTRIBUTE1,
//a.EQPTypeCode,
//b.INVNAME ItemName,
//c.OPDESC,
//d.EnumText as EQPTypeName,
//e.EQPName
//
// FROM ICSEQPSTP a
// left join ICSINVENTORY b on a.ITEMCODE=b.INVCODE
// left join ICSOP c on a.OPCODE=C.OPCODE
// left join ( select * from Sys_EnumValues where EnumKey='001') d on a.EQPTypeCode=d.EnumValue
// left join ICSEquipment e on a.EQPCODE=E.EQPCODE
// where a.ID='{0}'";
string sql = @"
select
a.ID,
a.ITEMCODE,
a.OPCODE,
a.EQPCODE,
a.ETTRCOde,
ISNULL(a.STIME,0) STIME,
ISNULL(a.RTIME,0) RTIME,
ISNULL(a.JianYanTime,0) JianYanTime,
ISNULL(a.TiaoJiTime,0) TiaoJiTime,
ISNULL(a.JiaZhuangTime,0) JiaZhuangTime,
ISNULL(a.JiaGongTime,0) JiaGongTime,
a.ISREF,
a.OutsourcingProperties ,
a.BladeModelAndBrand,
a.ToolingNo AS ROUTEMEMO,
a.WorkPoint,
a.MUSER,
a.MUSERName,
a.MTIME,
a.EATTRIBUTE1 AS ROUTECODE,
a.EQPTypeCode,
b.INVNAME ItemName,
c.OPDESC,
a.EQPTypeCode as EQPTypeCode,
a.cClass,
a.cHandles,
a.cAxis,
a.cToolMagazine,
a.cMachinableProfiles,
a.cAccuracy,
a.OPLVL,
a.CXType,
a.CXBrand1,
a.CXBrand2,
a.CXBrand3,
a.CXJD
-- d.TypeCODE AS EQPCODE,
--d.TypeDESC as EQPTypeName
FROM ICSEQPSTP a
left join ICSINVENTORY b on a.ITEMCODE=b.INVCODE
left join ICSOP c on a.OPCODE=C.OPCODE
--LEFT JOIN ICSEquipmentType d ON a.EQPTypeCode=d.TypeCODE
--left join ( select * from Sys_EnumValues where EnumKey='001') d on a.EQPTypeCode=d.EnumValue
--left join ICSEquipment e on a.EQPCODE=E.EQPCODE
where a.ID='{0}'
";
sql = string.Format(sql, ID);
DataTable dt = DBHelper.ExecuteDataset(dsconn, CommandType.Text, sql).Tables[0];
return dt;
}
#endregion
#region 是否存在
public static bool IsIncluding(string ItemCode, string OPCode, string eqptype, string dsconn)
{
FramDataContext db = new FramDataContext(dsconn);
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
try
{
var line = db.ICSEQPSTP.SingleOrDefault(a => a.ITEMCODE == ItemCode && a.OPCODE == OPCode && a.EQPTypeCode == eqptype);
if (line == null)
return true;
else
return false;
}
catch (Exception ex)
{
db.Transaction.Rollback();
throw ex;
}
}
#endregion
#region 删除
public static void deleteInfo(List<string> codeList, string dsconn)
{
FramDataContext db = new FramDataContext(dsconn);
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
try
{
var lines = db.ICSEQPSTP.Where(a => codeList.Contains(a.ID));
db.ICSEQPSTP.DeleteAllOnSubmit(lines);
db.SubmitChanges();
db.Transaction.Commit();
}
catch (Exception ex)
{
db.Transaction.Rollback();
throw ex;
}
}
#endregion
#region 审核
public static void checkInfo(List<string> codeList, string dsconn)
{
FramDataContext db = new FramDataContext(dsconn);
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
try
{
var lines = db.ICSEQPSTP.Where(a => codeList.Contains(a.ID));
foreach (var line in lines)
{
line.Status = "Check";
}
db.SubmitChanges();
db.Transaction.Commit();
}
catch (Exception ex)
{
db.Transaction.Rollback();
throw ex;
}
}
#endregion
public static DataTable GetEQ(string conn, string wp)
{
string sql = "SELECT EQPID,EQPCode AS EQPCODE,EQPName AS EQPNAME,EQPDESC AS EQPDESC FROM dbo.ICSEquipment WHERE WorkPoint='{0}'";
sql = string.Format(sql, wp);
return DBHelper.ExecuteDataset(conn, CommandType.Text, sql).Tables[0];
}
public static DataTable GetFIXEQ(string conn, string wp)
{
string sql = @"
SELECT
A.EQPID,A.EQPCode AS EQPCODE,A.EQPName AS EQPNAME,A.EQPDESC AS EQPDESC,A.FIXOP,A.EType,B.TypeDESC
FROM dbo.ICSEquipment a
INNER JOIN [dbo].[ICSEquipmentType] b ON a.EType=b.TypeCODE AND a.WorkPoint=b.WorkPoint
WHERE b.TypeDESC='固定设备' AND A.WorkPoint='{0}'";
sql = string.Format(sql, wp);
return DBHelper.ExecuteDataset(conn, CommandType.Text, sql).Tables[0];
}
public static DataTable GetINV(string conn, string wp)
{
string sql = "SELECT ID AS ITEMID,INVCODE AS ITEMCODE,INVNAME AS ITEMNAME,INVDESC AS ITEMDESC FROM dbo.ICSINVENTORY WHERE WorkPoint='{0}'";
sql = string.Format(sql, wp);
return DBHelper.ExecuteDataset(conn, CommandType.Text, sql).Tables[0];
}
public static DataTable GetBaseOP(string conn, string wp)
{
//阿威特 基础工序,状态失效,位数3,用于一键导入拼接工序名称
string sql = @"SELECT distinct OPCODE AS OirOPCODE,OPNAME AS OriOPNAME FROM dbo.ICSOP WHERE EnableFlag=0 AND LEN(OPCODE)=3";
sql = string.Format(sql, wp);
return DBHelper.ExecuteDataset(conn, CommandType.Text, sql).Tables[0];
}
public static void ImportFromErp(string conn, List<ITEM2ROUTE2OP2TIMEawt> list)
{
FramDataContext db = new FramDataContext(conn);
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
try
{
#region 需要导入以下表
//1.OP
//2.ROUTE
//3.ROUTE2OP
//4.ITEM2ROUTE
//5.ITEMROUTE2OP
//6.ICSEQPSTP
#endregion
foreach (ITEM2ROUTE2OP2TIMEawt info in list)
{
//0.验证物料
var lineInv = db.ICSINVENTORY.SingleOrDefault(a => a.INVCODE == info.ITEMCODE && a.WorkPoint == info.WorkPoint);
if (lineInv == null)
{
throw new Exception("物料不存在" + info.ITEMCODE);
}
info.ITEMID = lineInv.ID;
foreach (ROUTEawt route in info.listRoute)
{
string mgrUserCode = "";
int cr = db.ICSROUTE.Where(a => a.ROUTECODE == route.ROUTECODE && a.WorkPoint == info.WorkPoint).Count();
if (cr > 0)
{
throw new Exception("物料" + info.ITEMCODE + "工艺版本" + route.ROUTEVER + "已存在!");
}
List<Sys_User> cu = db.Sys_User.Where(a => a.UserName == route.MGR_USER && a.WorkPointCode == info.WorkPoint).ToList();
if (cu.Count() == 0)
{
throw new Exception("工艺负责人错误,未找到此人员名称" + route.MGR_USER);
}
mgrUserCode = cu[0].UserCode;
//工艺导入ICSROUTE
ICSROUTE lineR = new ICSROUTE();
lineR.ID = route.ROUTEID = AppConfig.GetGuid();
lineR.ROUTECODE = route.ROUTECODE;
lineR.ROUTEDESC = "物料" + info.ITEMCODE + "工艺版本" + route.ROUTEVER;
lineR.ROUTETYPE = route.ROUTETYPE;
lineR.ENABLED = route.ENABLED;
lineR.EFFDATE = route.EFFDATE;
lineR.IVLDATE = route.IVLDATE;
lineR.MTIME = info.MTIME;
lineR.MUSER = info.USERID;//id
lineR.MUSERName = info.USERNAME;
lineR.WorkPoint = info.WorkPoint;
db.ICSROUTE.InsertOnSubmit(lineR);
//物料工艺绑定ICSITEM2ROUTE
var linesI2R_Old = db.ICSITEM2ROUTE.Where(a => a.ITEMCODE == info.ITEMCODE && a.ISREF == "1" && a.WorkPoint == info.WorkPoint);
foreach (var I2R_Old in linesI2R_Old)
{
//取消旧绑定.默认工艺状态
I2R_Old.ISREF = "0";
}
db.SubmitChanges();
ICSITEM2ROUTE lineI2R = new ICSITEM2ROUTE();
lineI2R.ISREF = "1";
lineI2R.ITEMID = info.ITEMID;
lineI2R.ITEMCODE = info.ITEMCODE;
lineI2R.ROUTEID = route.ROUTEID;
lineI2R.ROUTECODE = route.ROUTECODE;
lineI2R.EATTRIBUTE1 = mgrUserCode;//工艺负责人
lineI2R.MTIME = info.MTIME;
lineI2R.MUSER = info.USERID;//id
lineI2R.MUSERName = info.USERNAME;
lineI2R.WorkPoint = info.WorkPoint;
db.ICSITEM2ROUTE.InsertOnSubmit(lineI2R);
foreach (OPTIMEawt op in route.listOP)
{
var lineop = db.ICSOP.SingleOrDefault(a => a.OPCODE == op.OPCODE && a.WorkPoint == info.WorkPoint);
if (lineop == null)
{
//工序导入ICSOP
lineop = new ICSOP();
lineop.ID = op.OPID = AppConfig.GetGuid();
lineop.OPCODE = op.OPCODE;
lineop.OPDESC = op.OPDESC;
lineop.OPNAME = op.OPNAME;
lineop.OpFrom = op.OpFrom;
lineop.OPCOLLECTION = op.OPCOLLECTION;
lineop.OPCONTROL = op.OPCONTROL;
lineop.CostCenter = op.CostCenter;
lineop.EATTRIBUTE1 = op.OPAttr == "自制" ? "0" : "1";
lineop.EnableFlag = op.EnableFlag;
lineop.MTIME = info.MTIME;
lineop.MUSER = info.USERID;//id
lineop.MUSERName = info.USERNAME;
lineop.WorkPoint = info.WorkPoint;
db.ICSOP.InsertOnSubmit(lineop);
}
else
{
op.OPID = lineop.ID;
}
//工艺工序绑定ICSROUTE2OP. (其他字段暂时没用)
ICSROUTE2OP lineR2O = new ICSROUTE2OP();
lineR2O.ID = AppConfig.GetGuid();
lineR2O.ROUTEID = route.ROUTEID;
lineR2O.OPID = op.OPID;
lineR2O.ROUTECODE = route.ROUTECODE;
lineR2O.OPCODE = op.OPCODE;
lineR2O.OPSEQ = op.OPSEQ;
lineR2O.OPCONTROL = op.OPCONTROL;
lineR2O.OPAttr = op.OPAttr;
lineR2O.CtrlType = op.CtrlType;
lineR2O.MTIME = info.MTIME;
lineR2O.MUSER = info.USERCODE;//code
lineR2O.MUSERName = info.USERNAME;
lineR2O.WORKPOINT = info.WorkPoint;
db.ICSROUTE2OP.InsertOnSubmit(lineR2O);
//物料工序下发ICSITEMROUTE2OP
ICSITEMROUTE2OP lineIR2O = new ICSITEMROUTE2OP();
lineIR2O.ITEMID = info.ITEMID;
lineIR2O.ROUTEID = route.ROUTEID;
lineIR2O.OPID = op.OPID;
lineIR2O.ITEMCODE = info.ITEMCODE;
lineIR2O.ROUTECODE = route.ROUTECODE;
lineIR2O.OPCODE = op.OPCODE;
lineIR2O.OPSEQ = op.OPSEQ;
lineIR2O.OPAttr = op.OPAttr;
lineIR2O.CtrlType = op.CtrlType;
lineIR2O.RouteMGR = route.MGR_USER;//工艺负责人
lineIR2O.OPCONTROL = op.OPCONTROL;
lineIR2O.OPTIONALOP = "";
lineIR2O.IDMERGETYPE = "";
lineIR2O.IDMERGERULE = 0;
lineIR2O.MTIME = info.MTIME;
lineIR2O.MUSER = info.USERID;//id
lineIR2O.MUSERName = info.USERNAME;
lineIR2O.WorkPoint = info.WorkPoint;
db.ICSITEMROUTE2OP.InsertOnSubmit(lineIR2O);
//旧的标准工时取消默认状态
var Old_lineEQSTP = db.ICSEQPSTP.Where(a => a.ITEMCODE == info.ITEMCODE && a.EATTRIBUTE1 == route.ROUTECODE && a.OPCODE == op.OPCODE && a.ISREF == "是" && a.WorkPoint == info.WorkPoint);
foreach (ICSEQPSTP item in Old_lineEQSTP)
{
item.ISREF = "否";
}
db.SubmitChanges();
//标准工时导入ICSEQPSTP
ICSEQPSTP lineEQSTP = new ICSEQPSTP();
lineEQSTP.ID = AppConfig.GetGuid();
lineEQSTP.ITEMCODE = info.ITEMCODE;
lineEQSTP.EATTRIBUTE1 = route.ROUTECODE;
lineEQSTP.OPCODE = op.OPCODE;
lineEQSTP.EQPCODE = op.EQPCODE;
lineEQSTP.ETTRCODE = "";
lineEQSTP.STIME = lineEQSTP.JiaGongTime = op.STIME;
lineEQSTP.RTIME = lineEQSTP.TiaoJiTime = op.RTIME;
lineEQSTP.JianYanTime = op.JYTime;
lineEQSTP.JiaZhuangTime = op.ZJTime;
lineEQSTP.WTIME = op.WTIME;
lineEQSTP.EQPTypeCode = op.Type;
lineEQSTP.ISREF = "是";
lineEQSTP.Status = "New";
lineEQSTP.ToolingNo = op.Memo;
lineEQSTP.cClass = op.cClass;
lineEQSTP.cHandles = op.cHandles.ToString();
lineEQSTP.cAxis = op.cAxis.ToString();
lineEQSTP.cToolMagazine = op.cToolMagazine.ToString();
lineEQSTP.cMachinableProfiles = op.cMachinableProfiles.ToString();
lineEQSTP.cAccuracy = op.cAccuracy;
lineEQSTP.OPLVL = op.OPLVL;
lineEQSTP.MTIME = info.MTIME;
lineEQSTP.MUSER = info.USERCODE;//CODE
lineEQSTP.MUSERName = info.USERNAME;
lineEQSTP.WorkPoint = info.WorkPoint;
lineEQSTP.CXBrand1 = op.CXBrand1;
lineEQSTP.CXBrand2 = op.CXBrand2;
lineEQSTP.CXBrand3 = op.CXBrand3;
lineEQSTP.CXJD = op.CXJD;
lineEQSTP.CXType = op.CXTYPE;
db.ICSEQPSTP.InsertOnSubmit(lineEQSTP);
}
}
//返工工艺
//1.对应工序标准工时
List<ICSEQPSTP_RW> listStp4rw = GetRW_EQPSTP(db, info.WorkPoint);
//2.绑定
Import4RW(db, info.ITEMCODE, info.USERCODE, info.MTIME, listStp4rw, info.WorkPoint);
}
db.SubmitChanges();
db.Transaction.Commit();
}
catch (Exception ex)
{
db.Transaction.Rollback();
throw ex;
}
finally
{
db.Connection.Close();
}
}
//public static Dictionary<string, string> GetRWTimesSetting(FramDataContext db, string WorkPoint)
//{
// Dictionary<string, string> dic = new Dictionary<string, string>();
// Sys_EnumKey rwKey = db.Sys_EnumKey.SingleOrDefault(a => a.EnumKey == "00012" && a.WorkPointCode == WorkPoint);
// if (rwKey == null)
// {
// throw new Exception("站点" + WorkPoint + "自定义档案: 返工工单工时,未维护");
// }
// List<Sys_EnumValues> rwValues = db.Sys_EnumValues.Where(a => a.EnumKey == rwKey.EnumKey && a.WorkPointCode == WorkPoint).ToList();
// if (rwValues.Count == 0)
// {
// throw new Exception("站点" + WorkPoint + "自定义档案: 返工工单工时,未维护");
// }
// foreach (Sys_EnumValues item in rwValues)
// {
// string val = item.EnumValue;
// string text = item.EnumText;
// string define1 = item.Define1.Trim();
// if (string.IsNullOrEmpty(define1))
// {
// throw new Exception("自定义档案: 返工工单工时, " + text + "不可为空");
// }
// switch (val)
// {
// case "0001":
// dic.Add("调机工时", define1);
// break;
// case "0002":
// dic.Add("加工工时", define1);
// break;
// case "0003":
// dic.Add("装夹工时", define1);
// break;
// case "0004":
// dic.Add("检验工时", define1);
// break;
// case "0005":
// dic.Add("委外工时", define1);
// break;
// case "0006":
// dic.Add("工艺负责人", define1);
// break;
// case "0007":
// dic.Add("设备代码", define1);
// break;
// default:
// continue;
// }
// }
// if (!dic.Keys.Contains("调机工时"))
// {
// throw new Exception("自定义档案: 返工工单工时维护, 调机工时 未维护0001");
// }
// if (!dic.Keys.Contains("加工工时"))
// {
// throw new Exception("自定义档案: 返工工单工时维护, 加工工时 未维护0002");
// }
// if (!dic.Keys.Contains("装夹工时"))
// {
// throw new Exception("自定义档案: 返工工单工时维护, 装夹工时 未维护0003");
// }
// if (!dic.Keys.Contains("检验工时"))
// {
// throw new Exception("自定义档案: 返工工单工时维护, 检验工时 未维护0004");
// }
// if (!dic.Keys.Contains("委外工时"))
// {
// throw new Exception("自定义档案: 返工工单工时维护, 委外工时 未维护0005");
// }
// if (!dic.Keys.Contains("工艺负责人"))
// {
// throw new Exception("自定义档案: 返工工单工时维护, 工艺负责人 未维护0006");
// }
// if (!dic.Keys.Contains("设备代码"))
// {
// throw new Exception("自定义档案: 返工工单工时维护, 设备代码 未维护0007");
// }
// return dic;
//}
////public static ICSEQPSTP4RW GetRWTimesSetting(FramDataContext db, string WorkPoint)
////{
//// ICSEQPSTP4RW info = new ICSEQPSTP4RW();
//// Sys_EnumKey rwKey = db.Sys_EnumKey.SingleOrDefault(a => a.EnumKey == "00012" && a.WorkPointCode == WorkPoint);
//// if (rwKey == null)
//// {
//// throw new Exception("站点" + WorkPoint + "自定义档案: 返工工单工时,未维护");
//// }
//// List<Sys_EnumValues> rwValues = db.Sys_EnumValues.Where(a => a.EnumKey == rwKey.EnumKey && a.WorkPointCode == WorkPoint).ToList();
//// if (rwValues.Count == 0)
//// {
//// throw new Exception("站点" + WorkPoint + "自定义档案: 返工工单工时,未维护");
//// }
//// foreach (Sys_EnumValues item in rwValues)
//// {
//// string val = item.EnumValue;
//// string text = item.EnumText;
//// string define1 = item.Define1.Trim();
//// if (string.IsNullOrEmpty(define1))
//// {
//// throw new Exception("自定义档案: 返工工单工时, " + text + "不可为空");
//// }
//// switch (val)
//// {
//// case "0001":
//// info.RTIME = Convert.ToDecimal(define1);
//// break;
//// case "0002":
//// info.STIME = Convert.ToDecimal(define1);
//// break;
//// case "0003":
//// info.ZJTIME = Convert.ToDecimal(define1);
//// break;
//// case "0004":
//// info.JYTIME = Convert.ToDecimal(define1);
//// break;
//// case "0005":
//// info.WTIME = Convert.ToDecimal(define1);
//// break;
//// case "0006":
//// info.routeMgr = define1;
//// break;
//// case "0007":
//// info.EQPCODE = define1;
//// break;
//// default:
//// continue;
//// }
//// }
//// if (info.RTIME == null)
//// {
//// throw new Exception("自定义档案: 返工工单工时维护, 调机工时 未维护0001");
//// }
//// if (info.STIME == null)
//// {
//// throw new Exception("自定义档案: 返工工单工时维护, 加工工时 未维护0002");
//// }
//// if (info.ZJTIME == null)
//// {
//// throw new Exception("自定义档案: 返工工单工时维护, 装夹工时 未维护0003");
//// }
//// if (info.JYTIME == null)
//// {
//// throw new Exception("自定义档案: 返工工单工时维护, 检验工时 未维护0004");
//// }
//// if (info.WTIME == null)
//// {
//// throw new Exception("自定义档案: 返工工单工时维护, 委外工时 未维护0005");
//// }
//// if (string.IsNullOrEmpty(info.routeMgr))
//// {
//// throw new Exception("自定义档案: 返工工单工时维护, 工艺负责人 未维护0006");
//// }
//// if (string.IsNullOrEmpty(info.EQPCODE))
//// {
//// throw new Exception("自定义档案: 返工工单工时维护, 设备代码 未维护0007");
//// }
//// return info;
////}
public static List<ICSEQPSTP_RW> GetRW_EQPSTP(FramDataContext db, string WorkPoint)
{
List<ICSEQPSTP_RW> listStp4rw = new List<ICSEQPSTP_RW>();
listStp4rw = db.ICSEQPSTP_RW.Where(a => a.WorkPoint == WorkPoint).ToList();
return listStp4rw;
}
public static void Import4RW(FramDataContext db, string ITEMCODE, string USERCODE, DateTime dtNow, List<ICSEQPSTP_RW> listStp4rw, string WorkPoint)
{
//1.ITEM2ROUTE
//2.ITEMROUTE2OP
//3.ICSEQPSTP
string ITEMID = "";
string USERID = "";
string USERNAME = "";
Sys_User USR = db.Sys_User.SingleOrDefault(a => a.UserCode == USERCODE && a.WorkPointCode == WorkPoint);
if (USR == null)
{
throw new Exception("用户不存在" + USERCODE);
}
USERID = USR.ID;
USERNAME = USR.UserName;
ICSINVENTORY inv = db.ICSINVENTORY.SingleOrDefault(a => a.INVCODE == ITEMCODE && a.WorkPoint == WorkPoint);
if (inv == null)
{
throw new Exception("物料不存在" + ITEMID);
}
ITEMID = inv.ID;
var linesRWRoute = db.ICSROUTE.Where(a => a.ROUTETYPE.ToLower() == "rework" && a.WorkPoint == WorkPoint);
foreach (ICSROUTE route in linesRWRoute)
{
ICSITEM2ROUTE i2r = db.ICSITEM2ROUTE.SingleOrDefault(a => a.ITEMCODE == ITEMCODE && a.ROUTECODE == route.ROUTECODE && a.WorkPoint == WorkPoint);
if (i2r != null)
{
continue;
}
i2r = new ICSITEM2ROUTE();
i2r.ISREF = "0";
i2r.ITEMID = ITEMID;
i2r.ITEMCODE = ITEMCODE;
i2r.ROUTEID = route.ID;
i2r.ROUTECODE = route.ROUTECODE;
i2r.EATTRIBUTE1 = "demo";//返工工艺负责人默认demo
i2r.MTIME = dtNow;
i2r.MUSER = USERID;
i2r.MUSERName = USERNAME;
i2r.WorkPoint = WorkPoint;
db.ICSITEM2ROUTE.InsertOnSubmit(i2r);
var linesR2O = db.ICSROUTE2OP.Where(a => a.ROUTECODE == route.ROUTECODE && a.WORKPOINT == WorkPoint).ToList();
foreach (ICSROUTE2OP r2o in linesR2O)
{
ICSEQPSTP_RW stp4rw = null;
foreach (ICSEQPSTP_RW item in listStp4rw)
{
if (item.OPCODE == r2o.OPCODE)
{
stp4rw = item;
break;
}
}
if (stp4rw == null)
{
throw new Exception("返工工艺" + r2o.ROUTECODE + "工序" + r2o.OPCODE + "没有预设的标准工时");
}
ICSITEMROUTE2OP lineir2o = new ICSITEMROUTE2OP();
lineir2o.ITEMID = ITEMID;
lineir2o.ROUTEID = r2o.ROUTEID;
lineir2o.OPID = r2o.OPID;
lineir2o.ITEMCODE = ITEMCODE;
lineir2o.ROUTECODE = r2o.ROUTECODE;
lineir2o.OPCODE = r2o.OPCODE;
lineir2o.OPSEQ = r2o.OPSEQ;
lineir2o.OPAttr = r2o.OPAttr;
lineir2o.CtrlType = r2o.CtrlType;
lineir2o.RouteMGR = "demo";//工艺负责人
lineir2o.OPCONTROL = r2o.OPCONTROL;
lineir2o.OPTIONALOP = "";
lineir2o.IDMERGETYPE = "";
lineir2o.IDMERGERULE = 0;
lineir2o.MTIME = dtNow;
lineir2o.MUSER = USERID;//id
lineir2o.MUSERName = USERNAME;
lineir2o.WorkPoint = WorkPoint;
db.ICSITEMROUTE2OP.InsertOnSubmit(lineir2o);
//旧的标准工时取消默认状态
var Old_lineEQSTP = db.ICSEQPSTP.Where(a => a.ITEMCODE == ITEMCODE && a.EATTRIBUTE1 == route.ROUTECODE && a.OPCODE == r2o.OPCODE && a.ISREF == "是" && a.WorkPoint == WorkPoint);
foreach (ICSEQPSTP item in Old_lineEQSTP)
{
item.ISREF = "否";
}
db.SubmitChanges();
//标准工时导入ICSEQPSTP
ICSEQPSTP lineEQSTP = new ICSEQPSTP();
lineEQSTP.ID = AppConfig.GetGuid();
lineEQSTP.ITEMCODE = ITEMCODE;
lineEQSTP.EATTRIBUTE1 = route.ROUTECODE;
lineEQSTP.OPCODE = r2o.OPCODE;
lineEQSTP.EQPCODE = stp4rw.EQPCODE;
lineEQSTP.ETTRCODE = "";
lineEQSTP.STIME = lineEQSTP.JiaGongTime = stp4rw.JiaGongTime;
lineEQSTP.RTIME = lineEQSTP.TiaoJiTime = stp4rw.TiaoJiTime;
lineEQSTP.JianYanTime = stp4rw.JianYanTime;
lineEQSTP.JiaZhuangTime = stp4rw.ZhuangJiaTime;
lineEQSTP.WTIME = stp4rw.WTIME;
lineEQSTP.EQPTypeCode = stp4rw.EQPTypeCode;
lineEQSTP.ISREF = "是";
lineEQSTP.Status = "New";
lineEQSTP.ToolingNo = "";
lineEQSTP.cClass = stp4rw.cClass;
lineEQSTP.cHandles = stp4rw.cHandles;
lineEQSTP.cAxis = stp4rw.cAxis;
lineEQSTP.cToolMagazine = stp4rw.cToolMagazine;
lineEQSTP.cMachinableProfiles = stp4rw.cMachinableProfiles;
lineEQSTP.cAccuracy = stp4rw.cAccuracy;
lineEQSTP.OPLVL = stp4rw.OPLVL;
lineEQSTP.MTIME = dtNow;
lineEQSTP.MUSER = USERCODE;//CODE
lineEQSTP.MUSERName = USERNAME;
lineEQSTP.WorkPoint = WorkPoint;
lineEQSTP.CXType = stp4rw.CXTYPE;
lineEQSTP.CXJD = stp4rw.CXJD;
lineEQSTP.CXBrand1 = stp4rw.CXBrand1;
lineEQSTP.CXBrand2 = stp4rw.CXBrand2;
db.ICSEQPSTP.InsertOnSubmit(lineEQSTP);
db.SubmitChanges();
}
}
}
}
}