华恒Mes鼎捷代码
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.

1387 lines
51 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ICSSoft.Frame.Data.Entity;
using ICSSoft.Base.Config.AppConfig;
using System.Data;
using ICSSoft.Base.Config.DBHelper;
using System.Data.SqlClient;
using System.Security.Cryptography;
using System.IO;
namespace ICSSoft.Frame.Data.DAL
{
public class ICSMODAL
{
#region 0822 下发
#region 下发
public static void Sends(string mocode, string seqcode, string dsconn)
{
FramDataContext db = new FramDataContext(dsconn);
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
try
{
var line = db.ICSMO.SingleOrDefault(a => a.MOCODE == mocode && a.MOSEQ == seqcode);
line.MOSTATUS = "下发";
// line.SEGCODE = segcode;
db.SubmitChanges();
db.Transaction.Commit();
}
catch (Exception ex)
{
db.Transaction.Rollback();
throw ex;
}
}
#endregion
#region 判断工单途程是否存在(ICSMO2ROUTE,ICSITEM2ROUTE)
//public static string hasROUTE(string moCode, string moseq,string itemCode, string dsconn)
//{
// //try
// //{
// // string sql = @"select * from ICSMO2ROUTE where MOCODE='" + moCode + "'";
// // sql = string.Format(sql);
// // DataTable dt = DBHelper.ExecuteDataset(dsconn, CommandType.Text, sql).Tables[0];
// // if (dt.Rows.Count > 0)
// // return "该工单" + moCode + "已经存在了工艺路线";
// // else
// // {
// // string sqlI = @"select * from ICSITEM2ROUTE where ITEMCODE='" + itemCode + "'";
// // sqlI = string.Format(sqlI);
// // DataTable dtI = DBHelper.ExecuteDataset(dsconn, CommandType.Text, sqlI).Tables[0];
// // if (dtI.Rows.Count > 0)
// // return;
// // else
// // return;
// // }
// //}
// //catch (Exception ex)
// //{
// // throw ex;
// //}
//}
#endregion
#region 判断工单 途程是否存在
public static string IshasROUTE(string MOID, string dsconn)
{
FramDataContext db = new FramDataContext(dsconn);
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
try
{
var line = db.ICSMO2ROUTE.Where(a => a.MOID == MOID);
if (line != null && line.Count() > 0)
{
return line.First().ROUTECODE;
}
}
catch (Exception ex)
{
db.Transaction.Rollback();
throw ex;
}
return "";
}
#endregion
#region 判断默认途程是否存在
public static string hasIsRefROUTE(string itemCode, string dsconn)
{
FramDataContext db = new FramDataContext(dsconn);
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
try
{
var line = db.ICSITEM2ROUTE.Where(a => a.ITEMCODE == itemCode && (a.ISREF == "是"));
if (line != null && line.Count() > 0)
{
string routecode = line.First().ROUTECODE;
var route = db.ICSROUTE.SingleOrDefault(a => a.ROUTECODE == routecode);
if (route != null)
{
return route.ROUTECODE;
}
else
{
return null;
}
}
else
{
return null;
}
}
catch (Exception ex)
{
db.Transaction.Rollback();
throw ex;
}
}
#endregion
#region 根据工单ID获取工单工艺路线信息
public static ICSMO2ROUTE selectmo2routebyid(string moid, string dsconn)
{
FramDataContext db = new FramDataContext(dsconn);
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
try
{
var line = db.ICSMO2ROUTE.SingleOrDefault(a => a.MOID == moid);
return line;
}
catch (Exception ex)
{
db.Transaction.Rollback();
throw ex;
}
}
#endregion
#region 下发
public static void Send(List<ICSMO> moinfolist, string dsconn)
{
FramDataContext db = new FramDataContext(dsconn);
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
try
{
foreach (ICSMO moinfo in moinfolist)
{
var line = db.ICSMO.SingleOrDefault(a => a.MOCODE == moinfo.MOCODE && a.MOSEQ == moinfo.MOSEQ);
line.MOSTATUS = "下发";
line.SendDATE = DateTime.Now;
db.SubmitChanges();
}
db.Transaction.Commit();
}
catch (Exception ex)
{
db.Transaction.Rollback();
throw ex;
}
}
#endregion
#endregion
#region 新增和修改
public static void Add(List<FormICSMOUIModel> moInfoList, string moroute, string dsconn)
{
int flag = 0;
string moid = "";
string mocode = "";
string itemcode = "";
string moseq = "";
FramDataContext db = new FramDataContext(dsconn);
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
try
{
foreach (FormICSMOUIModel moInfo in moInfoList)
{
bool isNew = false;
var line = db.ICSMO.SingleOrDefault(a => a.ID == moInfo.ID);
if (line == null)
{
isNew = true;
line = new ICSMO();
moid = AppConfig.GetGuid();
line.ID = moid;
//line.MOCODE = moInfo.MOCODE;
moseq = moInfo.MOSEQ;
var mo = db.ICSMO.Where(a => a.MOCODE.Contains(moInfo.MOCODE) && a.MOTYPE == "1" && a.MOSEQ == moInfo.MOSEQ).OrderByDescending(a => a.MOCODE);
if (mo != null && mo.Count() > 0)
{
string code = mo.FirstOrDefault().MOCODE;
line.MOCODE = moInfo.MOCODE + "*" + (Convert.ToInt32(code.Substring(code.IndexOf("*") + 1)) + 1).ToString();
}
else
{
line.MOCODE = moInfo.MOCODE + "*1";
}
moInfo.MOCODE = line.MOCODE;
line.MOBIOSVER = "";
line.MOPCBAVER = "";
line.CUSCODE = "";
line.CUSNAME = "";
line.CUSITEMCODE = "";
line.ORDERNO = "";
line.ORDERSEQ = 0;
line.MOVER = "";
line.ISBOMPASS = "";
line.IDMERGERULE = Convert.ToDecimal(0);
//line.MORELEASETIME = DateTime.Now;
line.MOIMPORTTIME = DateTime.Now;
line.ISCOMPARESOFT = 0;
line.RMABILLCODE = "";
line.MOSEQ = line.MOSEQ;
line.REMOCODE = "";
line.REMOITEMCODE = "";
line.REMOITEMDESC = "";
line.REMOLOTNO = "";
line.REMOENABLED = "";
line.MOOP = "";
line.ITEMDESC = "";
//line.MOPLANENDTIME = DateTime.Now;
line.MOPLANLINE = "";
line.BackflushStorage = "";
line.WarningStopLine = "";
line.MOINPUTQTY = 0;
line.MOSCRAPQTY = 0;
line.MOACTQTY = 0;
line.MOUSER = "";
line.MOACTSTARTDATE = DateTime.Now;
line.MOACTENDDATE = DateTime.Now;
line.MOTYPE = moInfo.MOTYPE;
}
#region
mocode = moInfo.MOCODE;
itemcode = moInfo.ITEMCODE;
moseq = moInfo.MOSEQ;
if (!string.IsNullOrEmpty(moInfo.ID))
moid = moInfo.ID;
line.MOMEMO = moInfo.MOMEMO;
line.MODESC = moInfo.MODESC;
line.MOPLANQTY = moInfo.MOPLANQTY;
line.MOPLANSTARTDATE = moInfo.MOPLANSTARTDATE;
line.MOPLANENDDATE = moInfo.MOPLANENDDATE;
line.FACTORY = moInfo.FACTORY;
line.CUSORDERNO = moInfo.CUSORDERNO;
line.MOUSER = moInfo.MOUSER;
line.MODOWNDATE = moInfo.MODOWNDATE;
line.MOSTATUS = moInfo.MOSTATUS;
line.ISCONINPUT = moInfo.ISCONINPUT;
line.ITEMCODE = moInfo.ITEMCODE;
line.MOPENDINGCAUSE = moInfo.MOPENDINGCAUSE;
line.OFFMOQTY = moInfo.OFFMOQTY;
line.MOBOM = moInfo.MOBOM;
line.MOSEQ = moInfo.MOSEQ;
line.MOVER = moInfo.MOVER;
line.MORemark = moInfo.MORemark;
line.WorkPoint = AppConfig.WorkPointCode;
line.MUSER = AppConfig.UserId;
line.MUSERName = AppConfig.UserName;
line.MTIME = DateTime.Now;
line.MOUSER = moInfo.MOUSER;
#endregion
if (isNew)
{
flag = 1;
db.ICSMO.InsertOnSubmit(line);
}
var line1 = db.ICSMO2ROUTE.Where(a => a.MOID == moInfo.ID);
db.ICSMO2ROUTE.DeleteAllOnSubmit(line1);
db.SubmitChanges();
}
db.Transaction.Commit();
}
catch (Exception ex)
{
db.Transaction.Rollback();
throw ex;
}
if (!string.IsNullOrEmpty(moroute))
{
AddMoRoute(moid, mocode, itemcode, moroute, dsconn, moseq);
}
}
#endregion
#region select
public static ICSMO select(String guid, String Appconstr)
{
FramDataContext db = new FramDataContext(Appconstr);
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
try
{
var line = db.ICSMO.SingleOrDefault(a => a.ID == guid);
return (ICSMO)line;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
#endregion
public static DataTable GetDetail(String code, String seq, String Appconstr)
{
try
{
string sql = @"SELECT
a.ID,
a.RouteCode,
b.ITEMCODE
FROM
ICSMO2User a
LEFT JOIN ICSMO b ON a.MOCODE=b.MOCODE AND a.MOSEQ=b.MOSEQ
where a.MOCODE='{0}' AND a.MOSEQ='{1}'
order by RouteCode";
sql = string.Format(sql, code, Convert.ToInt32(seq));
DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
return dt;
}
catch (Exception ex)
{
throw ex;
}
}
#region 新增和修改
public static void AddMoRoute(string id, string mocode, string itemcode, string routecode, string dsconn, string moseq)
{
FramDataContext db = new FramDataContext(dsconn);
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
try
{
FormICSMO2ROUTEUIModel model = new FormICSMO2ROUTEUIModel();
//string sqlone = @"select ID,MOCODE from ICSMO where MOCODE='" + mocode + "' and WorkPoint='" + AppConfig.WorkPointCode + "'";
//sqlone = string.Format(sqlone);
//DataTable dataone = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sqlone).Tables[0];
//foreach (DataRow dr in dataone.Rows)
//{
model.MOID = id;
model.MOCODE = mocode;
//}
string sqltwo = @"select ID,ROUTECODE,ROUTETYPE from ICSROUTE where ROUTECODE='" + routecode + "' and WorkPoint='" + AppConfig.WorkPointCode + "'";
sqltwo = string.Format(sqltwo);
DataTable datatwo = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sqltwo).Tables[0];
foreach (DataRow dr in datatwo.Rows)
{
model.ROUTEID = dr["ID"].ToString();
model.ROUTECODE = dr["ROUTECODE"].ToString();
model.ROUTETYPE = dr["ROUTETYPE"].ToString();
}
// string sqlthree = @"select OBCODE,OPBOMVER
// from ICSOPBOM
// where ITEMCODE='" + itemcode + "' and OBROUTE='" + routecode + "' and OPBOMVER='" + bom + "' and WorkPoint='" + AppConfig.WorkPointCode + "'";
// sqlthree = string.Format(sqlthree);
// DataTable datathree = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sqlthree).Tables[0];
// foreach (DataRow dr in datathree.Rows)
// {
//model.OPBOMCODE = dr["OBCODE"].ToString();
//model.OPBOMVER = dr["OPBOMVER"].ToString();
model.OPBOMCODE = "001";
model.OPBOMVER = "001";
//}
string sqlfour = @"select ISREF
from ICSITEM2ROUTE
where ITEMCODE='" + itemcode + "' and ROUTECODE='" + routecode + "' and WorkPoint='" + AppConfig.WorkPointCode + "'";
sqlfour = string.Format(sqlfour);
DataTable datafour = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sqlfour).Tables[0];
foreach (DataRow dr in datafour.Rows)
{
model.ISMROUTE = dr["ISREF"].ToString();
}
ICSMO2ROUTE line = new ICSMO2ROUTE();
line.MOID = model.MOID;
line.ROUTEID = model.ROUTEID;
line.MOCODE = model.MOCODE;
line.ROUTECODE = model.ROUTECODE;
line.ROUTETYPE = model.ROUTETYPE;
line.OPBOMCODE = model.OPBOMCODE;
line.OPBOMVER = model.OPBOMVER;
line.ISMROUTE = model.ISMROUTE;
line.WorkPoint = AppConfig.WorkPointCode;
line.MUSER = AppConfig.UserId;
line.MUSERName = AppConfig.UserName;
line.MTIME = DateTime.Now;
line.EATTRIBUTE1 = moseq;
db.ICSMO2ROUTE.InsertOnSubmit(line);
db.SubmitChanges();
db.Transaction.Commit();
}
catch (Exception ex)
{
db.Transaction.Rollback();
throw ex;
}
}
#endregion
#region 通过guid查询
public static List<FormICSMOUIModel> SearchMOInfoByCode(string moid, string dsconn)
{
List<FormICSMOUIModel> returnmmo = new List<FormICSMOUIModel>();
string sql = @"
select
MOCODE,
MOMEMO,
MOTYPE,
MODESC,
MOBIOSVER,
MOPCBAVER,
MOPLANQTY,
MOINPUTQTY,
MOSCRAPQTY,
MOACTQTY,
MOPLANSTARTDATE,
MOPLANENDDATE,
MOACTSTARTDATE,
MOACTENDDATE,
FACTORY,
CUSCODE,
CUSNAME,
CUSORDERNO,
CUSITEMCODE,
ORDERNO,
ORDERSEQ,
MOUSER,
MODOWNDATE,
MOSTATUS,
MOVER,
ISCONINPUT,
ISBOMPASS,
IDMERGERULE,
WorkPoint,
MUSER,
MUSERName,
EATTRIBUTE1,
ITEMCODE,
MOPENDINGCAUSE,
MOIMPORTTIME,
OFFMOQTY,
ISCOMPARESOFT,
RMABILLCODE,
MOSEQ,
REMOCODE,
REMOITEMCODE,
REMOITEMDESC,
REMOLOTNO,
REMOENABLED,
MOBOM,
MOOP,
ITEMDESC,
MOPLANLINE,
BackflushStorage,
WarningStopLine,
MORemark,
EATTRIBUTE4
from ICSMO
where ID='{0}'";
sql = string.Format(sql, moid);
DataTable dt = DBHelper.ExecuteDataset(dsconn, CommandType.Text, sql).Tables[0];
foreach (DataRow dr in dt.Rows)
{
FormICSMOUIModel returnInfo = new FormICSMOUIModel();
returnInfo.MOCODE = dr["MOCODE"].ToString();
returnInfo.MOMEMO = dr["MOMEMO"].ToString();
returnInfo.MOTYPE = dr["MOTYPE"].ToString();
returnInfo.MODESC = dr["MODESC"].ToString();
returnInfo.MOBIOSVER = dr["MOBIOSVER"].ToString();
returnInfo.MOPCBAVER = dr["MOPCBAVER"].ToString();
returnInfo.MOPLANQTY = Convert.ToDecimal(dr["MOPLANQTY"].ToString());
returnInfo.MOINPUTQTY = Convert.ToDecimal(dr["MOINPUTQTY"].ToString());
returnInfo.MOSCRAPQTY = Convert.ToDecimal(dr["MOSCRAPQTY"].ToString());
returnInfo.MOACTQTY = Convert.ToDecimal(dr["MOACTQTY"].ToString());
returnInfo.MOPLANSTARTDATE = Convert.ToDateTime(dr["MOPLANSTARTDATE"].ToString());
returnInfo.MOPLANENDDATE = Convert.ToDateTime(dr["MOPLANENDDATE"].ToString());
returnInfo.MOACTSTARTDATE = Convert.ToDateTime(dr["MOACTSTARTDATE"].ToString());
returnInfo.MOACTENDDATE = Convert.ToDateTime(dr["MOACTENDDATE"].ToString());
returnInfo.FACTORY = dr["FACTORY"].ToString();
returnInfo.CUSCODE = dr["CUSCODE"].ToString();
returnInfo.CUSNAME = dr["CUSNAME"].ToString();
returnInfo.CUSORDERNO = dr["CUSORDERNO"].ToString();
returnInfo.CUSITEMCODE = dr["CUSITEMCODE"].ToString();
returnInfo.ORDERNO = dr["ORDERNO"].ToString();
returnInfo.ORDERSEQ = Convert.ToInt32(dr["ORDERSEQ"].ToString());
returnInfo.MOUSER = dr["MOUSER"].ToString();
returnInfo.MODOWNDATE = Convert.ToDateTime(dr["MODOWNDATE"].ToString());
returnInfo.MOSTATUS = dr["MOSTATUS"].ToString();
returnInfo.MOVER = dr["MOVER"].ToString();
returnInfo.ISCONINPUT = dr["ISCONINPUT"].ToString();
returnInfo.ISBOMPASS = dr["ISBOMPASS"].ToString();
if (!string.IsNullOrWhiteSpace(dr["IDMERGERULE"].ToString()))
{
returnInfo.IDMERGERULE = Convert.ToDecimal(dr["IDMERGERULE"].ToString());
}
returnInfo.ITEMCODE = dr["ITEMCODE"].ToString();
//returnInfo.MORELEASETIME = Convert.ToDateTime(dr["MORELEASETIME"].ToString());
returnInfo.MOPENDINGCAUSE = dr["MOPENDINGCAUSE"].ToString();
if (!string.IsNullOrWhiteSpace(dr["MOIMPORTTIME"].ToString()))
{
returnInfo.MOIMPORTTIME = Convert.ToDateTime(dr["MOIMPORTTIME"].ToString());
}
returnInfo.OFFMOQTY = Convert.ToDecimal(dr["OFFMOQTY"].ToString().Equals("") ? "0" : dr["OFFMOQTY"].ToString());
returnInfo.ISCOMPARESOFT = Convert.ToInt32(dr["ISCOMPARESOFT"].ToString().Equals("") ? "0" : dr["ISCOMPARESOFT"].ToString());
returnInfo.RMABILLCODE = dr["RMABILLCODE"].ToString();
returnInfo.MOSEQ = dr["MOSEQ"].ToString().Equals("") ? "0" : dr["MOSEQ"].ToString();
returnInfo.REMOCODE = dr["REMOCODE"].ToString();
returnInfo.REMOITEMCODE = dr["REMOITEMCODE"].ToString();
returnInfo.REMOITEMDESC = dr["REMOITEMDESC"].ToString();
returnInfo.REMOLOTNO = dr["REMOLOTNO"].ToString();
returnInfo.REMOENABLED = dr["REMOENABLED"].ToString();
returnInfo.MOBOM = dr["MOBOM"].ToString();
returnInfo.MOOP = dr["MOOP"].ToString();
returnInfo.ITEMDESC = dr["ITEMDESC"].ToString();
//returnInfo.MOPLANENDTIME = Convert.ToDateTime(dr["MOPLANENDTIME"].ToString());
returnInfo.MOPLANLINE = dr["MOPLANLINE"].ToString();
returnInfo.BackflushStorage = dr["BackflushStorage"].ToString();
returnInfo.WarningStopLine = dr["WarningStopLine"].ToString();
returnInfo.MORemark = dr["MORemark"].ToString();
returnInfo.EATTRIBUTE4 = dr["EATTRIBUTE4"].ToString();
if (!returnmmo.Contains(returnInfo))
{
returnmmo.Add(returnInfo);
}
}
return returnmmo;
}
#endregion
#region 删除
public static void deleteInfo(List<string> moidList, string dsconn)
{
FramDataContext db = new FramDataContext(dsconn);
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
try
{
var lines = db.ICSMO.Where(a => moidList.Contains(a.ID));
db.ICSMO.DeleteAllOnSubmit(lines);
db.SubmitChanges();
db.Transaction.Commit();
}
catch (Exception ex)
{
db.Transaction.Rollback();
throw ex;
}
}
#endregion
#region 代码是否存在
public static bool IsIncluding(string mocode, string dsconn)
{
FramDataContext db = new FramDataContext(dsconn);
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
try
{
var line = db.ICSMO.SingleOrDefault(a => a.MOCODE == mocode);
if (line == null)
return true;
else
return false;
}
catch (Exception ex)
{
db.Transaction.Rollback();
throw ex;
}
}
#endregion
#region 查找最大的序列号
public static int SearchMaxS(string tou, string dsconn)
{
int max = 0;
string sql = @"select SUBSTRING(RCARD,LEN(RCARD)-4,5) as num from ICSMO2RCARD where MOCODE='" + tou + "' ";
sql = string.Format(sql);
DataTable dt = DBHelper.ExecuteDataset(dsconn, CommandType.Text, sql).Tables[0];
foreach (DataRow dr in dt.Rows)
{
if (Convert.ToInt32(dr["num"].ToString()) > max)
max = Convert.ToInt32(dr["num"].ToString());
}
return max;
}
#endregion
#region 生成序列号
public static void AddMO2RCARD(List<string> rcaList, string moid, string mocode, string dsconn)
{
FramDataContext db = new FramDataContext(dsconn);
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
try
{
var line = db.ICSMO2RCARD.SingleOrDefault(a => a.RCARD == rcaList[0]);
if (line == null)
{
foreach (string rca in rcaList)
{
ICSMO2RCARD mo2rca = new ICSMO2RCARD();
mo2rca.ID = AppConfig.GetGuid();
mo2rca.MOID = moid;
mo2rca.MOCODE = mocode;
mo2rca.RCARD = rca;
mo2rca.PrintTimes = 0;
mo2rca.lastPrintUSER = "";
mo2rca.lastPrintTime = DateTime.Now;
mo2rca.MUSER = AppConfig.UserId;
mo2rca.MUSERName = AppConfig.UserName;
mo2rca.MTIME = DateTime.Now;
mo2rca.WorkPoint = AppConfig.WorkPointCode;
db.ICSMO2RCARD.InsertOnSubmit(mo2rca);
}
db.SubmitChanges();
db.Transaction.Commit();
}
else
{
throw new Exception("生成失败");
}
}
catch (Exception ex)
{
db.Transaction.Rollback();
throw ex;
}
}
#endregion
#region 删除序列号
public static void deleteSerial(List<string> serialList, string dsconn)
{
FramDataContext db = new FramDataContext(dsconn);
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
try
{
var lines = db.ICSMO2RCARD.Where(a => serialList.Contains(a.RCARD));
db.ICSMO2RCARD.DeleteAllOnSubmit(lines);
db.SubmitChanges();
db.Transaction.Commit();
}
catch (Exception ex)
{
db.Transaction.Rollback();
throw ex;
}
}
#endregion
#region 判断是否在工单首检记录中
public static bool isInFirstCheck(string moCode, string dsconn)
{
try
{
string sql = @"select * from ICSFIRSTCHECKBYMO where MOCODE='" + moCode + "'";
sql = string.Format(sql);
DataTable dt = DBHelper.ExecuteDataset(dsconn, CommandType.Text, sql).Tables[0];
if (dt.Rows.Count > 0)
return true;
else
return false;
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region 最近一次检验是否合格
public static bool isQualified(string moCode, string dsconn)
{
try
{
string sql = @"select CHECKRESULT
from ICSFIRSTCHECKBYMO
where MOCODE='" + moCode + "' and MTIME in (select MAX(MTIME) from ICSFIRSTCHECKBYMO where MOCODE='" + moCode + "') ";
sql = string.Format(sql);
DataTable dt = DBHelper.ExecuteDataset(dsconn, CommandType.Text, sql).Tables[0];
if (dt.Rows[0]["CHECKRESULT"].ToString() == "Y")
return true;
else
return false;
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region 下发
public static void Send(string mocode, string moseq, string dsconn)
{
FramDataContext db = new FramDataContext(dsconn);
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
try
{
var line = db.ICSMO.SingleOrDefault(a => a.MOCODE == mocode && a.MOSEQ == moseq);
line.MOSTATUS = "下发";
db.SubmitChanges();
db.Transaction.Commit();
}
catch (Exception ex)
{
db.Transaction.Rollback();
throw ex;
}
}
#endregion
#region 取消下发
public static void cancelSend(string mocode, string moseq, string dsconn)
{
FramDataContext db = new FramDataContext(dsconn);
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
try
{
var line = db.ICSMO.SingleOrDefault(a => a.MOCODE == mocode && a.MOSEQ == moseq);
line.MOSTATUS = "初始";
line.SendDATE = null;
//取消下发删除工单绑定工艺路线 --2022/6/1
var mo2route = db.ICSMO2ROUTE.Where(a => a.MOCODE == mocode && a.EATTRIBUTE1 == moseq).FirstOrDefault();
if (mo2route != null)
{
db.ICSMO2ROUTE.DeleteOnSubmit(mo2route);
}
db.SubmitChanges();
db.Transaction.Commit();
}
catch (Exception ex)
{
db.Transaction.Rollback();
throw ex;
}
}
#endregion
#region 暂停
public static void stop(string mocode, string dsconn)
{
FramDataContext db = new FramDataContext(dsconn);
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
try
{
var line = db.ICSMO.SingleOrDefault(a => a.MOCODE == mocode);
line.MOSTATUS = "暂停";
db.SubmitChanges();
db.Transaction.Commit();
}
catch (Exception ex)
{
db.Transaction.Rollback();
throw ex;
}
}
#endregion
#region 取消暂停
public static void cancelStop(string mocode, string dsconn)
{
FramDataContext db = new FramDataContext(dsconn);
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
try
{
var line = db.ICSMO.SingleOrDefault(a => a.MOCODE == mocode);
line.MOSTATUS = "生产中";
db.SubmitChanges();
db.Transaction.Commit();
}
catch (Exception ex)
{
db.Transaction.Rollback();
throw ex;
}
}
#endregion
#region 关单
public static void closeDan(List<string> id, string dsconn)
{
FramDataContext db = new FramDataContext(dsconn);
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
try
{
foreach (string ID in id)
{
var line = db.ICSMO.SingleOrDefault(a => a.ID == ID);
line.MOSTATUS = "关单";
line.CloseDate = DateTime.Now;
db.SubmitChanges();
}
db.Transaction.Commit();
}
catch (Exception ex)
{
db.Transaction.Rollback();
throw ex;
}
}
#endregion
public static void closeDan(string ID, string dsconn)
{
FramDataContext db = new FramDataContext(dsconn);
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
try
{
var line = db.ICSMO.SingleOrDefault(a => a.ID == ID);
line.MOSTATUS = "关单";
db.SubmitChanges();
db.Transaction.Commit();
}
catch (Exception ex)
{
db.Transaction.Rollback();
throw ex;
}
}
#region 取消关单
public static void CancleCloseDan(string ID, string dsconn)
{
FramDataContext db = new FramDataContext(dsconn);
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
try
{
var line = db.ICSMO.SingleOrDefault(a => a.ID == ID);
line.MOSTATUS = "初始";
line.CloseDate = null;
db.SubmitChanges();
db.Transaction.Commit();
}
catch (Exception ex)
{
db.Transaction.Rollback();
throw ex;
}
}
#endregion
#region 子件资料信息
public static DataTable GetMOBOM(string MoSql)
{
try
{
string sql = @"select a.MOCODE,
CONVERT(int,a.SEQ) as SEQ,
a.MOBOMLINE,
a.MOBITEMQTY,
a.MOBITEMCODE,
a.MOBITEMNAME,
a.MOBITEMDESC,
b.INVSTD,
a.MOBOMITEMUOM,
b.INVMACHINETYPE,
StorageName
from ICSMOBOM a
LEFT JOIN ICSINVENTORY b ON a.ITEMCODE=b.INVCODE AND a.WorkPoint=b.WorkPoint
LEFT JOIN ICSStorage c ON b.INVMACHINETYPE=c.StorageCode
RIGHT JOIN (" + MoSql + ")d ON a.MOCODE=d.MOCODE AND a.SEQ=d.MOSEQ WHERE a.WorkPoint ='" + AppConfig.WorkPointCode + "'";
sql = string.Format(sql);
DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
return dt;
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region 删除批次信息
public static void DeleteLotno(List<ICSMO> icsmo)
{
FramDataContext frame = new FramDataContext(AppConfig.AppConnectString);
frame.Connection.Open();
frame.Transaction = frame.Connection.BeginTransaction();
try
{
foreach (ICSMO mo in icsmo)
{
var itemlot = frame.ICSITEMLot.Where(a => a.TransNO == mo.MOCODE && a.TransLine == mo.MOSEQ);
List<string> lotno = itemlot.Select(a => a.LotNO).ToList();
frame.ICSITEMLot.DeleteAllOnSubmit(itemlot);
//更改工单分批状态
var Icsmo = frame.ICSMO.Where(a => a.MOCODE == mo.MOCODE && a.MOSEQ == mo.MOSEQ).SingleOrDefault();
Icsmo.EATTRIBUTE2 = null;
//删除条码关联工艺路线
var itemroute = frame.ICSITEMROUTE2OPLot.Where(a => lotno.Contains(a.LotNo));
frame.ICSITEMROUTE2OPLot.DeleteAllOnSubmit(itemroute);
frame.SubmitChanges();
}
frame.Transaction.Commit();
}
catch (Exception ex)
{
frame.Transaction.Rollback();
throw ex;
}
}
#endregion
public static void BeginningSave(MoContext context)
{
SqlConnection conn = new SqlConnection(AppConfig.AppConnectString);
SqlCommand com = conn.CreateCommand();
SqlTransaction tran;
conn.Open();
tran = conn.BeginTransaction();
com.Transaction = tran;
try
{
string sqlStr = @"IF EXISTS(SELECT * FROM dbo.ICSMO WHERE BatchCode='" + context.BatchCode + @"')
RAISERROR('批次已经存在!!',16,0)";
com.CommandText = sqlStr;
com.ExecuteNonQuery();
string guid = AppConfig.GetGuid();
string sql = @"INSERT INTO [dbo].[ICSMO]
([Serial]
,[ItemCode]
,[ItemName]
,[ItemStd]
,[ComUnit]
,[AssComUnit]
,[CreateDate]
,[BatchCode]
,[Qty]
,[PackQuantiy]
,[Mtime]
,[Muser]
,[MoCode]
,[Free1]
,[Free2]
,[Free3]
,[Free4]
,Free5,Free6
,[AuxUnitCode]
,[ChangeRate]
,[AuxQty],MoDId,Whcode)
VALUES
(@Serial
,@ItemCode
,@ItemName
,@ItemStd
,@ComUnit
,@AssComUnit
,@CreateDate
,@BatchCode
,@Qty
,@PackQuantiy
,@Mtime
,@Muser
,@MoCode
,@Free1
,@Free2
,@Free3
,@Free4
,@Free5,@Free6
,@AuxUnitCode
,@ChangeRate
,@AuxQty,@MoDId,@Whcode)";
com.CommandText = sql;
com.Parameters.Clear();
com.Parameters.AddWithValue("@Serial", guid);
com.Parameters.AddWithValue("@ItemCode", context.cInvCode);
com.Parameters.AddWithValue("@ItemName", context.cInvName);
com.Parameters.AddWithValue("@ItemStd", context.cInvStd);
com.Parameters.AddWithValue("@ComUnit", context.cComUnitName1);
com.Parameters.AddWithValue("@AssComUnit", context.cComUnitName2);
com.Parameters.AddWithValue("@CreateDate", DateTime.Now.ToString());
com.Parameters.AddWithValue("@BatchCode", context.BatchCode);
com.Parameters.AddWithValue("@Qty", context.Qty);
com.Parameters.AddWithValue("@PackQuantiy", "0");
com.Parameters.AddWithValue("@Mtime", DateTime.Now.ToString());
com.Parameters.AddWithValue("@Muser", AppConfig.UserName);
com.Parameters.AddWithValue("@MoCode", context.MoCode);
com.Parameters.AddWithValue("@Free1", context.Free1);
com.Parameters.AddWithValue("@Free2", context.free2);
com.Parameters.AddWithValue("@Free3", context.Free3);
com.Parameters.AddWithValue("@Free4", context.Free4);
com.Parameters.AddWithValue("@Free5", context.MDeptCode);
com.Parameters.AddWithValue("@Free6", "");
com.Parameters.AddWithValue("@AuxUnitCode", context.AuxUnitCode);
com.Parameters.AddWithValue("@ChangeRate", context.ChangeRate);
com.Parameters.AddWithValue("@AuxQty", context.AuxQty);
com.Parameters.AddWithValue("@MoDId", context.MoDId);
com.Parameters.AddWithValue("@Whcode", context.Whcode);
com.ExecuteNonQuery();
com.Transaction.Commit();
}
catch (Exception ex)
{
com.Transaction.Rollback();
throw ex;
}
}
public partial class MoContext
{
public string MoCode { get; set; }
public string cInvCode { get; set; }
public string cInvName { get; set; }
public string cInvStd { get; set; }
public string AuxQty { get; set; }
public string MDeptCode { get; set; }
public string ChangeRate { get; set; }
public string AuxUnitCode { get; set; }
public string Free1 { get; set; }
public string free2 { get; set; }
public string Free3 { get; set; }
public string Free4 { get; set; }
public string Qty { get; set; }
public string cComUnitName1 { get; set; }
public string cComUnitName2 { get; set; }
public string MoDId { get; set; }
public string NowQty { get; set; }
public string BatchCode { get; set; }
public string Whcode { get; set; }
}
#region 工单接口
public static void delete(List<Tuple<string, string>> tuples, string dsconn)
{
FramDataContext db = new FramDataContext(dsconn);
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
try
{
foreach (var tuple in tuples)
{
var line = db.ICSMO.Where(a => a.MOCODE == tuple.Item1 && a.MOSEQ == tuple.Item2).FirstOrDefault();
if (line == null)
throw new Exception($"未查询到对应工单信息,MoCode:{tuple.Item1},Moseq:{tuple.Item2}");
if (line.SendDATE != null)
throw new Exception($"存在工单已下发,无法删除,MoCode:{tuple.Item1},Moseq:{tuple.Item2}");
if (db.ICSITEMLot.Where(a => a.TransNO == line.MOCODE && a.TransLine == line.MOSEQ).FirstOrDefault() != null)
throw new Exception($"存在工单已分批,无法删除,MoCode:{tuple.Item1},Moseq:{tuple.Item2}");
db.ICSMO.DeleteOnSubmit(line);
}
db.SubmitChanges();
db.Transaction.Commit();
}
catch (Exception ex)
{
db.Transaction.Rollback();
throw ex;
}
finally {
db.Connection.Close();
}
}
public static void Update(List<MoModifityData> updates, string dsconn)
{
FramDataContext db = new FramDataContext(dsconn);
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
try
{
foreach (var tuple in updates)
{
var line = db.ICSMO.Where(a => a.MOCODE == tuple.Mocode && a.MOSEQ == tuple.MOSEQ.ToString()).FirstOrDefault();
bool send = false;
if (line == null)
throw new Exception($"未查询到对应工单信息,MoCode:{tuple.Mocode},Moseq:{tuple.MOSEQ.ToString()}");
if (line.SendDATE != null)
send = true;
if (db.ICSITEMLot.Where(a => a.TransNO == line.MOCODE && a.TransLine == line.MOSEQ).FirstOrDefault() != null)
send = true;
if (tuple.MTIME != null)
line.MTIME = (DateTime)tuple.MTIME;
if (tuple.MOPLANSTARTDATE != null)
{
line.MOPLANSTARTDATE = (DateTime)tuple.MOPLANSTARTDATE;
line.MOACTSTARTDATE = (DateTime)tuple.MOPLANSTARTDATE;
}
if (tuple.MOPLANQTY != null)
{
if (send&&tuple.MOPLANQTY!=line.MOPLANQTY)
{
throw new Exception($"存在工单已下发或分批,无法更新数量,MoCode:{tuple.Mocode},Moseq:{tuple.MOSEQ}");
}
line.MOPLANQTY = (Decimal)tuple.MOPLANQTY;
}
if (tuple.MOPLANENDDATE != null)
{
line.MOPLANENDDATE = (DateTime)tuple.MOPLANENDDATE;
line.MOACTENDDATE = (DateTime)tuple.MOPLANENDDATE;
}
if (tuple.MODOWNDATE != null)
line.MODOWNDATE = (DateTime)tuple.MODOWNDATE;
if (tuple.MTIME != null)
line.MTIME = (DateTime)tuple.MTIME;
if (tuple.MOBIOSVER != null)
line.MOBIOSVER = tuple.MOBIOSVER == true ? "关闭" : "审核";
if (!String.IsNullOrEmpty(tuple.CreateUser))
{
line.MUSER = tuple.CreateUser;
line.MUSERName = tuple.CreateUser;
}
if (!string.IsNullOrEmpty(tuple.ProjectCode))
line.ORDERNO = tuple.ProjectCode;
if (!string.IsNullOrEmpty(tuple.ProjectSeq))
line.EATTRIBUTE1= tuple.ProjectSeq;
if (!String.IsNullOrEmpty(tuple.MDeptName))
line.MDeptCode = tuple.MDeptName;
if (!String.IsNullOrEmpty(tuple.MDeptCode))
line.EATTRIBUTE3 = tuple.MDeptCode;
if (!String.IsNullOrEmpty(tuple.CostCenter))
line.EATTRIBUTE4 = tuple.CostCenter;
if (!String.IsNullOrEmpty(tuple.MotherMo))
line.MODESC = tuple.MotherMo;
if (!String.IsNullOrEmpty(tuple.SuperiorMo))
line.MOMEMO = tuple.SuperiorMo;
if (!string.IsNullOrEmpty(tuple.ITEMCODE))
{
if (send&&tuple.ITEMCODE!=line.ITEMCODE)
{
throw new Exception($"存在工单已下发或分批,无法更新物料,MoCode:{tuple.Mocode},Moseq:{tuple.MOSEQ}");
}
if (db.ICSMO2ROUTE.Where(a => a.MOID == line.ID).FirstOrDefault() != null&&tuple.ITEMCODE!=line.ITEMCODE)
{
throw new Exception($"存在工单已关联途程,无法更新工单物料,MoCode:{tuple.MOSEQ},Moseq:{tuple.MOSEQ}");
}
var item = db.ICSINVENTORY.Where(a => a.INVCODE == tuple.ITEMCODE).FirstOrDefault();
if (item == null)
throw new Exception($"物料不存在!ItemCode:{tuple.ITEMCODE}");
line.ITEMCODE = tuple.ITEMCODE;
}
}
db.SubmitChanges();
db.Transaction.Commit();
}
catch (Exception ex)
{
db.Transaction.Rollback();
throw ex;
}
finally {
db.Connection.Close();
}
}
public static void Add(List<MoInsertData> updates, string dsconn)
{
FramDataContext db = new FramDataContext(dsconn);
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
try
{
string workpoint = db.Sys_User.FirstOrDefault().WorkPointCode;
foreach (var tuple in updates)
{
var line = db.ICSMO.Where(a => a.MOCODE == tuple.Mocode && a.MOSEQ == tuple.MOSEQ.ToString()).FirstOrDefault();
if (line != null)
throw new Exception($"工单已存在! MoCode:{tuple.Mocode},Moseq:{tuple.MOSEQ.ToString()}");
var item = db.ICSINVENTORY.Where(a => a.INVCODE == tuple.ITEMCODE).FirstOrDefault();
if (item == null)
throw new Exception($"物料不存在!ItemCode:{tuple.ITEMCODE}");
line = new ICSMO();
line.ID = Guid.NewGuid().ToString();
line.MOCODE = tuple.Mocode;
line.MOSEQ = tuple.MOSEQ.ToString();
line.MOTYPE = "正常";
line.MOINPUTQTY = 0;
line.MOSCRAPQTY = 0;
line.MOSCRAPQTY = 0;
line.MOACTQTY = 0;
line.ORDERSEQ = 0;
line.MOSTATUS = "初始";
line.WorkPoint = workpoint;
line.MORELEASETIME = tuple.MOPLANSTARTDATE;
line.MUSERName = tuple.CreateUser;
line.MTIME = (DateTime)tuple.CreateTime;
line.MOPLANSTARTDATE = (DateTime)tuple.MOPLANSTARTDATE;
line.MOACTSTARTDATE = (DateTime)tuple.MOPLANSTARTDATE;
line.MOPLANQTY = (Decimal)tuple.MOPLANQTY;
line.MOPLANENDDATE = (DateTime)tuple.MOPLANENDDATE;
line.MOACTENDDATE = (DateTime)tuple.MOPLANENDDATE;
line.MODOWNDATE = (DateTime)tuple.MODOWNDATE;
line.MOBIOSVER = tuple.MOBIOSVER == true ? "关闭" : "审核";
line.MUSER = tuple.CreateUser;
line.MDeptCode = tuple.MDeptName;
line.EATTRIBUTE3 = tuple.MDeptCode;
line.EATTRIBUTE1 = tuple.ProjectSeq;
line.ITEMCODE = tuple.ITEMCODE;
line.ORDERNO = tuple.ProjectCode;
line.EATTRIBUTE4 = tuple.CostCenter;
line.MOMEMO = tuple.SuperiorMo;
line.MODESC = tuple.MotherMo;
line.MOBOM = "";
db.ICSMO.InsertOnSubmit(line);
}
db.SubmitChanges();
db.Transaction.Commit();
}
catch (Exception ex)
{
db.Transaction.Rollback();
throw ex;
}
finally {
db.Connection.Close();
}
}
public static Sys_User Login(string userName, string Password, string dsconn)
{
FramDataContext db = new FramDataContext(dsconn);
db.Connection.Open();
try
{
var pas = ToMd5(Password);
var user = db.Sys_User.Where(a => a.UserCode == userName && a.UserPwd == pas).FirstOrDefault();
if (user == null)
throw new Exception("用户名或密码不正确!");
return user;
}
catch (Exception ex)
{
throw ex;
}
}
public static string ToMd5(string str)
{
return Encrypt(str, "&%#@?,:*_");
}
private static string Encrypt(string strText, string strEncrKey)
{
byte[] rgbKey = new byte[0];
byte[] rgbIV = new byte[] { 18, 52, 86, 120, 144, 171, 205, 239 };
string result;
try
{
rgbKey = Encoding.UTF8.GetBytes(strEncrKey.Substring(0, 8));
DESCryptoServiceProvider descryptoServiceProvider = new DESCryptoServiceProvider();
byte[] bytes = Encoding.UTF8.GetBytes(strText);
MemoryStream memoryStream = new MemoryStream();
CryptoStream cryptoStream = new CryptoStream(memoryStream, descryptoServiceProvider.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
cryptoStream.Write(bytes, 0, bytes.Length);
cryptoStream.FlushFinalBlock();
result = Convert.ToBase64String(memoryStream.ToArray());
}
catch (Exception ex)
{
result = ex.Message;
}
return result;
}
#endregion
}
}