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.
 
 
 
 

386 lines
17 KiB

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using NFine.Code;
using NFine.Data.Extensions;
using NFine.Domain._03_Entity.SRM;
using NFine.Repository;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace NFine.Application.KBSSRM
{
public class PalletplateApp : RepositoryFactory<ICSVendor>
{
public DataTable GetGridJson(string queryJson, ref Pagination jqgridparam)
{
// string sqlDelete = @" DELETE a FROM ICSContainer a
//LEFT JOIN dbo.ICSContainerLot b ON a.ContainerID=b.ContainerID
// WHERE b.ContainerID IS NULL and a.EATTRIBUTE3='SRM'";
// SqlHelper.ExecuteNonQuery(sqlDelete);
DataTable dt = new DataTable();
var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
string sql = @"SELECT a.ID,a.ContainerCode,a.MUSERName, CONVERT(NVARCHAR(50),a.MTIME,23) as MTIME,b.VenName,w.WorkPointName,w.WorkPointCode,a.EATTRIBUTE8
FROM dbo.ICSContainer a
LEFT JOIN Sys_WorkPoint w on a.WorkPoint=w.WorkPointCode
LEFT JOIN dbo.ICSVendor b ON a.EATTRIBUTE8=b.VenCode AND a.WorkPoint=b.WorkPoint
WHERE 1=1 and a.EATTRIBUTE3='SRM' and a.ContainerType='ContainerType04' ";
if (queryParam["Type"].ToString() == "2")
{
sql += "and a.EATTRIBUTE1='2' ";
}
else if (queryParam["Type"].ToString() == "1")
{
sql += "and a.EATTRIBUTE1='1' ";
}
else
{
sql += "";
}
if (!string.IsNullOrWhiteSpace(queryJson))
{
if (!string.IsNullOrWhiteSpace(queryParam["CartonNo"].ToString()))
{
sql += " and ContainerCode like '%" + queryParam["CartonNo"].ToString() + "%' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
{
sql += " and a.EATTRIBUTE8 like '%" + queryParam["VenCode"].ToString() + "%' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString()))
{
sql += " and b.VenName like '%" + queryParam["VenName"].ToString() + "%' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["TimeFrom"].ToString()))
{
sql += " and CONVERT(NVARCHAR(50),a.MTIME,23) >= '" + queryParam["TimeFrom"].ToString() + "' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["TimeTo"].ToString()))
{
sql += " and CONVERT(NVARCHAR(50),a.MTIME,23) <= '" + queryParam["TimeTo"].ToString() + "' ";
}
}
if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
{
sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
}
if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
{
sql += " and a.EATTRIBUTE8='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
}
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
/// <summary>
/// 子表查询
/// </summary>
/// <param name="queryJson"></param>
/// <param name="jqgridparam"></param>
/// <returns></returns>
public DataTable GetSubGridJson(string ContainerID, ref Pagination jqgridparam)
{
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
DataTable dt = new DataTable();
List<DbParameter> parameter = new List<DbParameter>();
string sql = @"
select a.ID, a.ContainerCode,a.ContainerName,a.Memo,a.ContainerType,a.MTIME,a.MUSER,a.MUSERName from ICSContainer a
WHERE a.ContainerType='ContainerType01' and a.EATTRIBUTE3='SRM' and a.ContainerID='" + ContainerID + "' ";
if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
{
sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
}
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
public DataTable GetSubGridJson_Add(string queryJson, ref Pagination jqgridparam)
{
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
DataTable dt = new DataTable();
var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
string sql = @" select a.ID, a.ContainerCode,a.ContainerName,a.Memo,a.ContainerType,a.MUSERName,a.MTIME from ICSContainer a
where a.ContainerType='ContainerType01' and a.EATTRIBUTE3='SRM'
and a.ContainerID='" + queryParam["CartonNo"].ToString() + "' and a.WorkPoint='" + queryParam["WorkPoint"].ToString() + "'";
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
public DataTable GetSubGridJson_AddByASN(string queryJson, ref Pagination jqgridparam)
{
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
DataTable dt = new DataTable();
var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
string sql = @" SELECT DISTINCT c.id,c.ContainerCode,c.MUSERName,c.MTIME FROM dbo.ICSASNDETAIL a
inner JOIN dbo.ICSContainerLot b ON a.LotNO =b.LotNO AND a.WorkPoint=b.WorkPoint
LEFT JOIN ICSContainer c ON b.ContainerID=c.id AND c.WorkPoint=b.WorkPoint AND c.ContainerType='ContainerType01'
LEFT JOIN ICSContainer d ON d.id=c.ContainerID AND d.WorkPoint=c.WorkPoint AND d.ContainerType='ContainerType04'
LEFT JOIN ICSInventoryLot e ON b.LotNO=e.LotNO AND b.WorkPoint=e.WorkPoint
WHERE c.id IS NOT NULL
AND d.id IS NULL
and a.ASNCode='" + queryParam["ASNCode"].ToString() + "' and a.WorkPoint='" + queryParam["WorkPoint"].ToString() + "'";
if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
{
sql += " and e.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["LotNo"].ToString()))
{
sql += " and e.LotNo like '%" + queryParam["LotNo"].ToString() + "%' ";
}
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
public string GetContainerCode(string RoleEnCode,string WorkPoint)
{
DataTable dt = new DataTable();
string Date = DateTime.Now.ToString("yyMMdd");
string Pre = "Z" + RoleEnCode + Date;
string CartonNo = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", Pre, 3);
return CartonNo;
}
public string GetSerialCode(string workPointCode, string tbName, string colName, string Pre, int numLen)
{
string sql = "EXEC Addins_GetSerialCode '{0}','{1}','{2}','{3}',{4}";
sql = string.Format(sql, new object[] { workPointCode, tbName, colName, Pre, numLen });
return DbHelper.ExecuteScalar(CommandType.Text, sql).ToString();
}
public DataTable GetContainerForBox(string invcode, string Code, string LotNo, string VenCode, string WorkPoint, string Type,ref Pagination jqgridparam)
{
/// string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
List<DbParameter> parameter = new List<DbParameter>();
DataTable table = new DataTable();
string wherestr = "";
if (!string.IsNullOrEmpty(invcode))
{
wherestr += " and c.InvCode like '%" + invcode + "%'";
}
if (!string.IsNullOrEmpty(Code))
{
wherestr += " and a.ContainerCode like '%" + Code + "%'";
}
if (!string.IsNullOrEmpty(LotNo))
{
wherestr += " and b.LotNo like '%" + LotNo + "%'";
}
string sql = @" SELECT DISTINCT a.ContainerCode,a.ID,
a.MUSERName, a.MTIME,Dil.F_ItemName,d.InvCode,d.InvName,d.InvStd
FROM ICSContainer a
LEFT JOIN dbo.ICSContainerLot c ON a.ID=c.ContainerID and a.WorkPoint=c.WorkPoint
LEFT join dbo.ICSInventoryLot lot on c.LotNo=lot.LotNo and a.WorkPoint=lot.WorkPoint
left join Sys_SRM_ItemsDetail Dil on F_ItemId='6230217e-4413-4427-9bec-c67ba789eca9' and F_EnabledMark='1' and a.ContainerType=Dil.F_ItemCode
LEFT JOIN ICSInventory d ON d.InvCode=lot.InvCode AND d.WorkPoint=lot.WorkPoint
WHERE
a.ID not IN
(SELECT b.ContainerID FROM dbo.ICSASNDETAIL a inner JOIN dbo.ICSContainerLot b ON a.LotNO =b.LotNO AND a.WorkPoint=b.WorkPoint)
and a.ContainerID='' and a.ContainerType='ContainerType01'
and a.WorkPoint = '" + WorkPoint + "' and a.EATTRIBUTE8 = '" + VenCode + "' and a.EATTRIBUTE1='"+ Type + "' " + wherestr;
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
public string SaveICSContainerForPalletplate(string ICSASN)
{
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
string msg = "";
string sql = string.Empty;
string str1 = "";
string ID = Guid.NewGuid().ToString();
JArray res = (JArray)JsonConvert.DeserializeObject(ICSASN);
foreach (var item in res)
{
JObject jo = (JObject)item;
//创建栈板
sql += @" INSERT INTO dbo.ICSContainer
( ID ,ContainerCode ,ContainerName,InventoryMixed,ProjectMixed,BatchMixed,Multiplex,
MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerType,ContainerID,EATTRIBUTE1)
VALUES ( '{0}','{1}','{1}','1','1','1','1','{2}','{3}',getdate(),'{4}','{5}','SRM','ContainerType04','','{6}')";
sql = string.Format(sql, ID, jo["ContainerCode"].ToString(),MUSER, MUSERNAME, jo["WorkPoint"].ToString(), jo["VenCode"].ToString(), jo["Type"].ToString());
JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["Detail"].ToString());
foreach (var detail in resdetail)
{
JObject det = (JObject)detail;
sql += @"update ICSContainer set ContainerID='{0}' where ContainerCode='{1}' and EATTRIBUTE3='SRM' and ContainerType='ContainerType01'";
sql = string.Format(sql, ID, det["CartonNo"].ToString());
}
}
try
{
if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
{
}
else
{
msg = "新增失败";
}
}
catch (Exception ex)
{
msg = ex.Message;
}
return msg;
}
public string SaveICSContainerForPalletplateByASN(string ICSASN)
{
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
string msg = "";
string sql = string.Empty;
string str1 = "";
string ID = Guid.NewGuid().ToString();
JArray res = (JArray)JsonConvert.DeserializeObject(ICSASN);
foreach (var item in res)
{
JObject jo = (JObject)item;
//创建栈板
sql += @" INSERT INTO dbo.ICSContainer
( ID ,ContainerCode ,ContainerName,InventoryMixed,ProjectMixed,BatchMixed,Multiplex,
MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerType,ContainerID,EATTRIBUTE1)
VALUES ( '{0}','{1}','{1}','1','1','1','1','{2}','{3}',getdate(),'{4}','{5}','SRM','ContainerType04','','{6}')";
sql = string.Format(sql, ID, jo["ContainerCode"].ToString(), MUSER, MUSERNAME, jo["WorkPoint"].ToString(), jo["VenCode"].ToString(), jo["Type"].ToString());
JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["Detail"].ToString());
foreach (var detail in resdetail)
{
JObject det = (JObject)detail;
sql += @"update ICSContainer set ContainerID='{0}' where ContainerCode='{1}' and EATTRIBUTE3='SRM' and ContainerType='ContainerType01'";
sql = string.Format(sql, ID, det["CartonNo"].ToString());
}
}
try
{
if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
{
}
else
{
msg = "新增失败";
}
}
catch (Exception ex)
{
msg = ex.Message;
}
return msg;
}
public string UpdateICSContainerForPalletplate(string ICSASN)
{
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
string msg = "";
string sql = string.Empty;
JArray res = (JArray)JsonConvert.DeserializeObject(ICSASN);
foreach (var item in res)
{
JObject jo = (JObject)item;
JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["Detail"].ToString());
foreach (var detail in resdetail)
{
JObject det = (JObject)detail;
string DetailID = Guid.NewGuid().ToString();
sql += @" update ICSContainer set ContainerID='{0}' where ContainerCode='{1}' and EATTRIBUTE3='SRM' and ContainerType='ContainerType01'";
sql = string.Format(sql, jo["ContainerID"].ToString() , det["CartonNo"].ToString());
}
}
try
{
if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
{
}
else
{
msg = "修改失败";
}
}
catch (Exception ex)
{
msg = ex.Message;
}
return msg;
}
public string DeleteInfo(string keyValue, string WorkPoint)
{
string msg = "";
string sql = string.Format(@"update ICSContainer set ContainerID='' where ContainerCode in ({0}) and EATTRIBUTE3='SRM' and ContainerType='ContainerType01' and WorkPoint='{1}'", keyValue.TrimEnd(','), WorkPoint);
try
{
SqlHelper.ExecuteNonQuery(sql);
}
catch (Exception ex)
{
msg = ex.Message;
}
return msg;
}
public string DeleteContainer(string keyValue, string WorkPoint)
{
WorkPoint = WorkPoint.Substring(1, WorkPoint.Length - 2);
string msg = "";
keyValue = keyValue.Substring(1, keyValue.Length - 2);
string sql = string.Empty;
string sqls = string.Format(@"SELECT * FROM dbo.ICSASNDETAIL
WHERE LOTNO IN (
SELECT LotNO FROM dbo.ICSContainer a
LEFT JOIN ICSContainerLot b ON a.ContainerID=b.ContainerID WHERE a.ContainerID in ({0}) and a.WorkPoint in ({1}))", keyValue.TrimEnd(','), WorkPoint.TrimEnd(','));
DataTable dt = SqlHelper.GetDataTableBySql(sqls);
if (dt == null || dt.Rows.Count <= 0)
{
sql += string.Format(@" DELETE ICSContainer
WHERE ID in ({0}) AND WorkPoint in ({1})", keyValue.TrimEnd(','), WorkPoint.TrimEnd(','));
sql += string.Format(@" update ICSContainer set ContainerID=''
WHERE ContainerID in ({0}) AND WorkPoint in ({1})", keyValue.TrimEnd(','), WorkPoint.TrimEnd(','));
SqlHelper.CmdExecuteNonQueryLi(sql);
}
else
{
msg = "所选栈板中已有加入送货单中,请先在送单号中删除!";
}
return msg;
}
}
}