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

235 lines
11 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;
namespace ICSSoft.Frame.Data.DAL
{
public class FormICSBatchsQueryDAL
{
#region 新增和修改
public static void AddBatch(List<ICSInvBatch> batchInfo, string dsconn)
{
FramDataContext db = new FramDataContext(dsconn);
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
try
{
foreach (ICSInvBatch Batch in batchInfo)
{
bool isNew = false;
var line = db.ICSInvBatch.SingleOrDefault(a => a.ID == Batch.ID);
if (line == null)
{
isNew = true;
line = new ICSInvBatch();
line.ID = AppConfig.GetGuid();
}
line.MOCode = Batch.MOCode;
line.MORow = Batch.MORow;
line.InvCode = Batch.InvCode;
line.SSCODE = Batch.SSCODE;
line.Batch = Batch.Batch;
line.EATTRIBUTE1 = Batch.EATTRIBUTE1;
line.MUSER = AppConfig.UserCode;
line.MUSERName = AppConfig.UserName;
line.MTIME = AppConfig.GetSeverDateTime("yyyy-MM-dd HH:mm:ss");
line.WorkPoint = AppConfig.WorkPointCode;
db.ICSInvBatch.InsertOnSubmit(line);
db.SubmitChanges();
}
db.Transaction.Commit();
}
catch (Exception ex)
{
db.Transaction.Rollback();
throw ex;
}
}
#endregion
#region 通过代码、行号查询
public static FormICSRdrecord2LOTUIModel SearchInfo(string CODE, string RowNo, string dsconn)
{
FramDataContext db = new FramDataContext(dsconn);
db.Connection.Open();
#region
try
{
FormICSRdrecord2LOTUIModel info = new FormICSRdrecord2LOTUIModel();
info.rdrecord = db.ICSINVReceiptDetail.SingleOrDefault(a => a.ReceiptNO == CODE && a.ReceiptLine == Convert.ToInt32(RowNo) && a.WorkPoint == AppConfig.WorkPointCode);
if(info.rdrecord!=null)
info.inventory = db.ICSINVENTORY.SingleOrDefault(a => a.INVCODE == info.rdrecord.ITEMCODE && a.WorkPoint == AppConfig.WorkPointCode);
var infos = db.ICSITEMLot.Where(a => a.TransNO == CODE && a.TransLine == RowNo && a.WorkPoint == AppConfig.WorkPointCode);
info.SumQty = Convert.ToDecimal(infos.AsEnumerable().Sum(a => a.LOTQTY));
info.SumNo = infos.Count();
var infoMaxs = db.ICSITEMLot.Where(a => a.LotNO.Contains(info.rdrecord.MOCODE + info.rdrecord.MOSEQ) && a.WorkPoint == AppConfig.WorkPointCode);
if (infoMaxs.Count() == 0)
info.MaxNo = 0;
else
{
string lotno = infoMaxs.OrderByDescending(a => a.LotNO).FirstOrDefault().LotNO;
info.MaxNo =Convert.ToInt32(lotno.Substring(lotno.Length - 5));
}
if (infos != null && infos.Count() > 0)
{
var VenderLotNO = infos.Where(a => a.PRODUCTDATE == AppConfig.GetSeverDateTime("yyyy-MM-dd")).Select(a => a.VenderLotNO).Distinct();
if (VenderLotNO != null && VenderLotNO.Count()>0)
{
info.VenderLotNO = VenderLotNO.ToList()[0];
return info;
}
}
var infoTodays = db.ICSITEMLot.Where(a => a.WorkPoint == AppConfig.WorkPointCode && a.PRODUCTDATE == AppConfig.GetSeverDateTime("yyyy-MM-dd")).Select(a => a.TransNO);
info.TodayMOCount = infoTodays.Distinct().Count();
return info;
}
catch (Exception ex)
{
throw ex;
}
#endregion
}
public static FormICSRdrecord2LOTUIModelX Search_Info(string CODE, string RowNo, string dsconn)
{
FramDataContext db = new FramDataContext(dsconn);
db.Connection.Open();
#region
try
{
string Row_NO = RowNo.ToString();
FormICSRdrecord2LOTUIModelX info = new FormICSRdrecord2LOTUIModelX();
info.icsmo = db.ICSMO.SingleOrDefault(a => a.MOCODE == CODE && a.MOSEQ == Row_NO && a.WorkPoint == AppConfig.WorkPointCode);
if (info.icsmo != null)
info.inventory = db.ICSINVENTORY.SingleOrDefault(a => a.INVCODE == info.icsmo.ITEMCODE && a.WorkPoint == AppConfig.WorkPointCode);
info.icsitems = db.ICSITEMLot.Where(a => a.ItemCode == info.icsmo.ITEMCODE && a.WorkPoint == AppConfig.WorkPointCode && a.TransNO == info.icsmo.MOCODE && a.TransLine == info.icsmo.MOSEQ).FirstOrDefault();
var infos = db.ICSITEMLot.Where(a => a.ItemCode == info.icsmo.ITEMCODE && a.WorkPoint == AppConfig.WorkPointCode);
info.SumQty = Convert.ToDecimal(info.icsmo.MOPLANQTY);
//info.SumNo = infos.Count();
try
{
string sql = @"SELECT count(B.ItemCode) as num, b.ItemCode, B.LOTQTY FROM ICSMO M
LEFT JOIN ICSITEMLot B ON M.ITEMCODE = B.ItemCode AND M.WorkPoint=B.WorkPoint AND M.MOCODE = B.TransNO AND CONVERT(int, M.MOSEQ) = B.TransLine
LEFT JOIN ICSWareHouseLotInfo C ON B.LOTNO=C.LotNO AND B.WorkPoint=C.WorkPoint
WHERE M.MOCODE = '{0}'
AND M.MOSEQ = '{1}'
AND M.WorkPoint = '{2}' AND B.ItemCode = '{3}'
group by b.ItemCode, B.LOTQTY
";
sql = string.Format(sql, CODE, RowNo, AppConfig.WorkPointCode, info.icsmo.ITEMCODE);
DataTable ds = DBHelper.ExecuteDataset(dsconn, CommandType.Text, sql).Tables[0];
if (ds.Rows.Count == 0 || ds == null)
{
info.SumNo = 0;
}
else
{
info.SumNo = 0;
for (int i = 0; i < ds.Rows.Count; i++)
{
info.SumNo += Int32.Parse(ds.Rows[i]["num"].ToString());
}
}
}
catch (Exception ex)
{
throw ex;
}
var infoMaxs = db.ICSITEMLot.Where(a => a.TransNO == info.icsmo.MOCODE && a.TransLine == info.icsmo.MOSEQ && a.WorkPoint == AppConfig.WorkPointCode);
if (infoMaxs.Count() == 0)
info.MaxNo = 0;
else
{
string lotno = infoMaxs.OrderByDescending(a => a.LotNO).FirstOrDefault().LotNO;
info.MaxNo = Convert.ToInt32(lotno.Substring(lotno.Length - 5));
}
if (infos != null && infos.Count() > 0)
{
var VenderLotNO = infos.Where(a => a.PRODUCTDATE == AppConfig.GetSeverDateTime("yyyy-MM-dd")).Select(a => a.VenderLotNO).Distinct();
if (VenderLotNO != null && VenderLotNO.Count() > 0)
{
info.VenderLotNO = VenderLotNO.ToList()[0];
return info;
}
}
var infoTodays = db.ICSITEMLot.Where(a => a.WorkPoint == AppConfig.WorkPointCode && a.PRODUCTDATE == AppConfig.GetSeverDateTime("yyyy-MM-dd")).Select(a => a.TransNO);
info.TodayMOCount = infoTodays.Distinct().Count();
return info;
}
catch (Exception ex)
{
throw ex;
}
#endregion
}
#endregion
#region 通过主表行和子表
public static DataSet SearchData(string CODE, string RowNo, string dsconn)
{
try
{
string sql = @"SELECT
A.MOCODE,
A.MOSEQ,
A.MOPLANLINE,
'' as RECSTATUS,
'' as TYPE,
A.ITEMCODE,
A.MOPLANQTY,
C.INVNAME,
C.INVSTD
FROM ICSMO A
LEFT JOIN ICSINVENTORY C ON A.ITEMCODE = C.INVCODE
WHERE
A.MOCODE='{0}'
AND A.MOSEQ='{1}'
AND A.WorkPoint = '{2}'
";
// sql += @"SELECT
// CASE WHEN C.LOTNO IS NULL THEN 'Y' ELSE '' END AS isSelect,
// B.ID,
// M.MOCODE,
// M.MOSEQ,
// B.TransNO,
// B.TransLine,
// B.LOTNO,
// CAST(CASE WHEN C.LotNO IS NOT NULL THEN '1' ELSE '0' END AS BIT) AS isInput,
// B.LOTQTY,
// B.VenderLotNO,
// B.PRODUCTDATE,
// M.MUSERName,
// A.INVUOM
// FROM ICSMO M
// LEFT JOIN ICSINVENTORY A ON M.ITEMCODE = A.INVCODE
// LEFT JOIN ICSITEMLot B ON M.ITEMCODE = B.ItemCode AND M.WorkPoint=B.WorkPoint AND M.MOCODE = B.TransNO AND CONVERT(int, M.MOSEQ) = B.TransLine
// LEFT JOIN ICSWareHouseLotInfo C ON B.LOTNO=C.LotNO AND B.WorkPoint=C.WorkPoint
// WHERE M.MOCODE = '{0}'
// AND M.MOSEQ = '{1}'
// AND M.WorkPoint = '{2}'
// ORDER BY M.MOCODE
// ";
sql = string.Format(sql, CODE, RowNo, AppConfig.WorkPointCode);
DataSet ds = DBHelper.ExecuteDataset(dsconn, CommandType.Text, sql);
return ds;
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
}
}