|
|
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;
namespace ICSSoft.Frame.Data.DAL { public class ICSITEMLOTDAL {
#region 新增和修改
public static void Add(ICSITEMLot tbinfo, string dsconn) { FramDataContext db = new FramDataContext(dsconn); db.Connection.Open(); db.Transaction = db.Connection.BeginTransaction(); try { bool isNew = false; var line = db.ICSITEMLot.SingleOrDefault(a => a.ID == tbinfo.ID); if (line == null) { isNew = true; line = new ICSITEMLot(); line.ID = tbinfo.ID;
} line.LotNO = tbinfo.LotNO; line.ItemCode = tbinfo.ItemCode; line.TransNO = tbinfo.TransNO; line.TransLine = tbinfo.TransLine; line.VENDORITEMCODE = tbinfo.VENDORITEMCODE; line.VENDORCODE = tbinfo.VENDORCODE; line.VenderLotNO = tbinfo.VenderLotNO; line.PRODUCTDATE = tbinfo.PRODUCTDATE; line.LOTQTY = tbinfo.LOTQTY; line.ACTIVE = tbinfo.ACTIVE; line.Exdate = tbinfo.Exdate; line.WorkPoint = tbinfo.WorkPoint; line.MUSER = tbinfo.MUSER; line.MUSERName = tbinfo.MUSERName; line.MTIME = tbinfo.MTIME; if (isNew) db.ICSITEMLot.InsertOnSubmit(line); db.SubmitChanges();
db.Transaction.Commit(); } 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.ICSITEMLot.Where(a => codeList.Contains(a.ID)); db.ICSITEMLot.DeleteAllOnSubmit(lines); db.SubmitChanges(); db.Transaction.Commit(); } catch (Exception ex) { db.Transaction.Rollback(); throw ex; }
} #endregion
//详细表 增加
public static void DetailADD(ICSITEMLotDetail tbinfo, string dsconn) { FramDataContext db = new FramDataContext(dsconn); db.Connection.Open(); db.Transaction = db.Connection.BeginTransaction(); try { bool isNew = false; var line = db.ICSITEMLotDetail.SingleOrDefault(a => a.ID == tbinfo.ID); if (line == null) { isNew = true; line = new ICSITEMLotDetail(); line.ID = tbinfo.ID;
} line.SERIALNO = tbinfo.SERIALNO; line.LotNO = tbinfo.LotNO; line.ItemCode = tbinfo.ItemCode; line.StorageCODE = tbinfo.StorageCODE; line.StackCODE = tbinfo.StackCODE; line.SerialStatus = tbinfo.SerialStatus; line.WorkPoint = tbinfo.WorkPoint; line.MUSER = tbinfo.MUSER; line.MUSERName = tbinfo.MUSERName; line.MTIME = tbinfo.MTIME;
if (isNew) db.ICSITEMLotDetail.InsertOnSubmit(line); db.SubmitChanges();
db.Transaction.Commit(); } catch (Exception ex) { db.Transaction.Rollback(); throw ex; } }
//详细表 删除
public static void DetaildeleteInfo(List<string> codeList, string dsconn) { FramDataContext db = new FramDataContext(dsconn); db.Connection.Open(); db.Transaction = db.Connection.BeginTransaction(); try { var lines = db.ICSITEMLotDetail.Where(a => codeList.Contains(a.SERIALNO)); db.ICSITEMLotDetail.DeleteAllOnSubmit(lines); db.SubmitChanges(); db.Transaction.Commit(); } catch (Exception ex) { db.Transaction.Rollback(); throw ex; }
}
public static void insert(string NO, string code, int count) { string sql = @"update ICSINVReceiptDetail set ACTQTY+='" + count + "' where ITEMCODE='" + code + "' and ReceiptNO='" + NO + "' and WorkPoint='" + AppConfig.WorkPointCode + "'"; sql = string.Format(sql); DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql); }
public static void delete(string NO, string code, int count) { string sql = @"update ICSINVReceiptDetail set ACTQTY-='" + count + "' where ITEMCODE='" + code + "' and ReceiptNO='" + NO + "' and WorkPoint='" + AppConfig.WorkPointCode + "'"; sql = string.Format(sql); DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql); } /// <summary>
/// 获取条码状态
/// </summary>
/// <param name="lotNo"></param>
/// <param name="workpointCode"></param>
/// <returns></returns>
public static DataTable CheckLotNO(string lotNo, string workpointCode, string dsconn) { string sql = @"select A.LotNO,TYPE,B.LotNO AS BarCode from ICSITEMLot A
LEFT JOIN ICSWareHouseLotInfo B ON B.LotNO=A.LotNO where A.LotNO='{0}' and A.WorkPoint='{1}'";
sql = string.Format(sql, lotNo, workpointCode); DataTable dt = DBHelper.ExecuteDataset(dsconn, CommandType.Text, sql).Tables[0]; return dt; } /// <summary>
/// 验证ASN单信息
/// </summary>
/// <param name="lotNo"></param>
/// <param name="workpointCode"></param>
/// <returns></returns>
public static DataTable CheckASNNO(string lotNo, string workpointCode, string dsconn) { string sql = @"select * from ICSPO_PoMain
where POCode='{0}' and WorkPoint='{1}'";
sql = string.Format(sql, lotNo, workpointCode); DataTable dt = DBHelper.ExecuteDataset(dsconn, CommandType.Text, sql).Tables[0]; return dt; } /// <summary>
/// 验证编码信息
/// </summary>
/// <param name="lotNo"></param>
/// <param name="workpointCode"></param>
/// <returns></returns>
public static DataTable CheckLOTNum(string INVCode, string workpointCode, string dsconn) { string sql = @"select A.INVCODE,B.WHCode,B.BinCode from ICSINVENTORY A
LEFT JOIN ICSWareHouseLotInfo B ON B.INVCode=A.INVCODE WHERE A.INVCODE='{0}' AND A.WorkPoint='{1}'";
sql = string.Format(sql, INVCode, workpointCode); DataTable dt = DBHelper.ExecuteDataset(dsconn, CommandType.Text, sql).Tables[0]; return dt; } /// <summary>
/// 获取条码信息
/// </summary>
/// <param name="barCode"></param>
/// <param name="workpointCode"></param>
/// <returns></returns>
public static DataTable GetLotData(string barCode, string workpointCode, string dsconn) { string sql = @"select A.TransNO,
A.TransLine, A.LotNO, A.ItemCode, C.INVNAME, C.INVSTD, C.INVEXPORTIMPORT, CONVERT(DECIMAL(18,2),A.LOTQTY) as LOTQTY, C.INVUOM, A.EATTRIBUTE2, D.EATTRIBUTE6, ISNULL(A.EATTRIBUTE4,0) AS EATTRIBUTE3 from ICSITEMLot A LEFT JOIN ICSINVENTORY C ON C.INVCODE=A.ItemCode LEFT JOIN ICSINVInfo D ON D.INVCODE=A.ItemCode --WHERE A.LotNO='0000000001100002' AND A.WorkPoint='6000' WHERE A.LotNO='{0}' and A.WorkPoint='{1}'";
sql = string.Format(sql, barCode, workpointCode); DataTable dt = DBHelper.ExecuteDataset(dsconn, CommandType.Text, sql).Tables[0]; return dt; } /// <summary>
/// 获取条码信息
/// </summary>
/// <param name="barCode"></param>
/// <param name="workpointCode"></param>
/// <returns></returns>
public static DataTable GetLotDataForPO(string barCode, string workpointCode, string dsconn) { string sql = @"SELECT A.TransNO, A.TransLine, A.LotNO, A.ItemCode, C.INVNAME, C.INVSTD, C.INVEXPORTIMPORT, CONVERT(DECIMAL(18,2),A.LOTQTY) AS LOTQTY,
C.INVUOM, A.EATTRIBUTE2, D.EATTRIBUTE6, ISNULL(A.EATTRIBUTE4, 0) AS EATTRIBUTE3, B.Batch, B.cWhCode FROM ICSITEMLot A INNER JOIN ICSPOArrive B ON A.TransNO = B.cCode AND A.TransLine = B.irowno LEFT JOIN ICSINVENTORY C ON C.INVCODE = A.ItemCode LEFT JOIN ICSINVInfo D ON D.INVCODE = A.ItemCode WHERE A.LotNO = '{0}' AND A.WorkPoint = '{1}' ";
sql = string.Format(sql, barCode, workpointCode); DataTable dt = DBHelper.ExecuteDataset(dsconn, CommandType.Text, sql).Tables[0]; return dt; } /// <summary>
/// 获取条码信息(半成品入库)
/// </summary>
/// <param name="barCode"></param>
/// <param name="workpointCode"></param>
/// <param name="dsconn"></param>
/// <returns></returns>
public static DataTable GetLotDataForMO(string barCode, string workpointCode, string dsconn) { string sql = @"select A.MOCODE
,A.MOSEQ ,A.ITEMCODE ,C.INVNAME ,C.INVSTD ,C.INVUOM ,B.LotQty ,B.LotNO ,B.VenderLotNO from ICSMO A LEFT JOIN ICSITEMLot B ON B.TransNO=A.MOCODE AND B.TransLine=A.MOSEQ LEFT JOIN ICSINVENTORY C ON C.INVCODE=A.ITEMCODE WHERE B.LotNO='{0}' AND A.WorkPoint='{1}'";
sql = string.Format(sql, barCode, workpointCode); DataTable dt = DBHelper.ExecuteDataset(dsconn, CommandType.Text, sql).Tables[0]; return dt; } /// <summary>
/// 获取编码信息
/// </summary>
/// <param name="INVCode"></param>
/// <param name="workpointCode"></param>
/// <returns></returns>
public static DataTable GetLotNumData(string INVCode, string workpointCode, string dsconn) { string sql = @"select A.TransNO,
A.TransLine, A.LotNO, A.ItemCode, C.INVNAME, C.INVSTD, A.LOTQTY, C.INVUOM from ICSWareHouseLotInfo D LEFT JOIN ICSITEMLot A ON A.LotNO=D.LotNO LEFT JOIN ICSPO_PoMain B ON B.POCode=A.TransNO AND B.PORow=A.TransLine LEFT JOIN ICSINVENTORY C ON C.INVCODE=A.ItemCode WHERE D.INVCode='{0}' AND A.WorkPoint='{1}'";
sql = string.Format(sql, INVCode, workpointCode); DataTable dt = DBHelper.ExecuteDataset(dsconn, CommandType.Text, sql).Tables[0]; return dt; } /// <summary>
/// 获取ASN单号信息(半成品入库)
/// </summary>
/// <param name="barCode"></param>
/// <param name="workpointCode"></param>
/// <param name="dsconn"></param>
/// <returns></returns>
public static DataTable GetASNDataForMO(string barCode, string workpointCode, string dsconn) { string sql = @"select A.MOCODE
,A.MOSEQ ,A.ITEMCODE ,C.INVNAME ,C.INVSTD ,A.MOPLANQTY ,A.MOINPUTQTY ,C.INVUOM ,B.LotQty ,B.LotNO from ICSMO A LEFT JOIN ICSITEMLot B ON B.TransNO=A.MOCODE AND B.TransLine=A.MOSEQ LEFT JOIN ICSINVENTORY C ON C.INVCODE=A.ITEMCODE LEFT JOIN ICSASNDetail E ON E.LotNO=B.LotNO WHERE E.STNO='{0}' AND A.WorkPoint='{1}'";
sql = string.Format(sql, barCode, workpointCode); DataTable dt = DBHelper.ExecuteDataset(dsconn, CommandType.Text, sql).Tables[0]; return dt; }
#region 生成到货单
public static string CreateRCV(List<FormICSRSVDataModel.RCVData> rcv, string connection, out string docno, out string createUser, out string createTime) { SqlConnection conn = new System.Data.SqlClient.SqlConnection(connection); conn.Open(); SqlTransaction sqlTran = conn.BeginTransaction(); SqlCommand cmd = new SqlCommand(); cmd.Transaction = sqlTran; cmd.Connection = conn; //DataContextDataContext data = new DataContextDataContext();
try { string rcvNo = ""; string user = ""; string time1 = "";
foreach (FormICSRSVDataModel.RCVData data in rcv) { string time = DateTime.Now.ToString("yyyyMMdd"); string sql = @"select max(ReceiptNO) from ICSINVReceipt where left(ReceiptNO,8)='{0}'"; sql = string.Format(sql, time); DataTable dt = SQlReturnData(sql, cmd); if (dt != null && dt.Rows.Count > 0 && !string.IsNullOrEmpty(dt.Rows[0][0].ToString())) { rcvNo = (decimal.Parse(dt.Rows[0][0].ToString()) + 1).ToString(); } else { rcvNo = time + "001"; } string rcvId = BitConverter.ToInt64(Guid.NewGuid().ToByteArray(), 0).ToString();
sql = @"INSERT INTO ICSINVReceipt(ID,ReceiptNO,StorageID,RECSTATUS,VENDORCODE,RECTYPE,MEMO,CreateTIME,CreateUSER,WorkPoint,MUSER,MUSERName,MTIME,EATTRIBUTE1,ISALLINSTORAGE)
Values(@ID,@ReceiptNO,'','待检','','','',@CreateTIME,@CreateUSER,'0001','',@MUSERName,@MTIME,@ASN,'N')";
cmd.Parameters.AddWithValue("@ID", rcvId); cmd.Parameters.AddWithValue("@ReceiptNO", rcvNo); cmd.Parameters.AddWithValue("@CreateTIME", data.createTime); cmd.Parameters.AddWithValue("@CreateUSER", data.userName); //cmd.Parameters.AddWithValue("@MUSER", rcvNo);
cmd.Parameters.AddWithValue("@MUSERName", data.userName); cmd.Parameters.AddWithValue("@MTIME", DateTime.Now); if (data.asnNo != null) { cmd.Parameters.AddWithValue("@ASN", data.asnNo); } else { cmd.Parameters.AddWithValue("@ASN", ""); } cmd.CommandText = sql; cmd.ExecuteNonQuery();
user = data.userName; time1 = data.createTime;
int row = 0; foreach (FormICSRSVDataModel.RCVDatas datas in data.datas) { sql = @"select ReceiptNO from dbo.ICSINVReceiptDetail WHERE VenderLotNO='{0}'"; sql = string.Format(sql, datas.lotNo); dt = SQlReturnData(sql, cmd); if (dt != null && dt.Rows.Count > 0 && !string.IsNullOrEmpty(dt.Rows[0][0].ToString())) { throw new Exception("条码:" + datas.lotNo + " 已生成到货单!"); }
row++;
string checksql = @"select EATTRIBUTE6 from ICSINVInfo
where INVCODE='{0}'";
checksql = string.Format(checksql, datas.itemCode); DataTable checkdt = SQlReturnData(sql, cmd); string rcvsId = BitConverter.ToInt64(Guid.NewGuid().ToByteArray(), 0).ToString(); if (checkdt.Rows.Count == 0) { sql = @"INSERT INTO ICSINVReceiptDetail(ID,ReceiptID,ReceiptNO,ReceiptLine,RECSTATUS,IQCStatus,MEMO,ITEMCODE,PLANQTY,VenderLotNO,WorkPoint,MUSER,MUSERName,MTIME,ISINSTORAGE,TYPE)
Values('{0}','{1}','{2}','{3}','待检','待检','','{4}','{5}','{6}','0001','','{7}','{8}','N','原材料')";
} else { if (checkdt.Rows[0]["EATTRIBUTE6"].ToString() == "免检") { sql = @"INSERT INTO ICSINVReceiptDetail(ID,ReceiptID,ReceiptNO,ReceiptLine,RECSTATUS,IQCStatus,MEMO,ITEMCODE,PLANQTY,VenderLotNO,WorkPoint,MUSER,MUSERName,MTIME,ISINSTORAGE,TYPE)
Values('{0}','{1}','{2}','{3}','免检','免检','','{4}','{5}','{6}','0001','','{7}','{8}','N','原材料')";
} else { sql = @"INSERT INTO ICSINVReceiptDetail(ID,ReceiptID,ReceiptNO,ReceiptLine,RECSTATUS,IQCStatus,MEMO,ITEMCODE,PLANQTY,VenderLotNO,WorkPoint,MUSER,MUSERName,MTIME,ISINSTORAGE,TYPE)
Values('{0}','{1}','{2}','{3}','待检','待检','','{4}','{5}','{6}','0001','','{7}','{8}','N','原材料')";
} } sql = string.Format(sql, rcvsId, rcvId, rcvNo, row, datas.itemCode, datas.qty, datas.lotNo, data.userName, DateTime.Now); cmd.CommandText = sql; cmd.ExecuteNonQuery();
#region 判断是否需要解除箱号关联
sql = @"select * from ICSPalletLotNO
where LotNO='{0}'";
string.Format(sql, datas.lotNo); dt = SQlReturnData(sql, cmd); if (dt.Rows.Count != 0) { sql = @"Delete ICSPalletLotNO where LotNO='{0}'"; string.Format(sql, datas.lotNo); cmd.CommandText = sql; cmd.ExecuteNonQuery(); } #endregion
} } sqlTran.Commit(); docno = rcvNo; createUser = user; createTime = time1;
return "OK"; } catch (Exception ex) { sqlTran.Rollback(); docno = ""; createUser = ""; createTime = ""; return ex.Message; } } #endregion
/// <summary>
/// SQL执行方法
/// </summary>
/// <param name="SQl"></param>
/// <param name="cmd"></param>
/// <returns></returns>
public static DataTable SQlReturnData(string SQl, SqlCommand cmd) { DataTable dt = new DataTable(); cmd.CommandText = SQl; SqlDataAdapter dr = new System.Data.SqlClient.SqlDataAdapter(); dr.SelectCommand = cmd; dr.Fill(dt); return dt; } }
}
|