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

495 lines
21 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;
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;
}
}
}