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.
 
 
 
 

889 lines
43 KiB

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using NFine.Code;
using NFine.Data.Extensions;
using NFine.Domain._03_Entity.SRM;
using NFine.Domain.Entity.ProductManage;
using NFine.Domain.IRepository.ProductManage;
using NFine.Repository;
using NFine.Repository.ProductManage;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.Common;
using System.Linq;
using System.Text;
namespace NFine.Application.SRM
{
public class ASNMangeWeiWaiApp : RepositoryFactory<ICSVendor>
{
public DataTable GetGridJson(string queryJson, ref Pagination jqgridparam)
{
string ParentId = "";
DataTable dt = new DataTable();
var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
string sql = @"
SELECT distinct a.ID, a.OASNCode,a.VenCode,b.VenName AS VENDORNAME,w.WorkPointName,w.WorkPointCode,a.MUSERName,
a.MTIME,CONVERT(NVARCHAR(50),a.PlanArriveDate,23) as EXPARRIVALDATE,
CASE WHEN c.ODNCode IS NULL THEN a.Status ELSE '3' END AS STATUS,a.EATTRIBUTE1,convert(nvarchar(20),c.MTIME,120) DMTIME
FROM dbo.ICSOASN a
LEFT JOIN ICSOASNDetail d on a.OASNCode=d.OASNCode and a.WorkPoint=d.WorkPoint
left join ICSInventoryLotDetail f on d.LotNo=f.LotNo and d.WorkPoint=f.WorkPoint
left join dbo.ICSOutsourcingOrder g on f.TransCode=g.OOCode and f.TransSequence=g.Sequence and f.WorkPoint=g.WorkPoint
LEFT JOIN dbo.ICSVendor b ON a.VenCode=b.VenCode and a.WOrkPoint=b.WorkPoint
LEFT JOIN ICSODeliveryNotice c ON a.OASNCode = c.OASNCode
LEFT JOIN Sys_WorkPoint w on a.WorkPoint=w.WorkPointCode
WHERE 1=1";
if (!string.IsNullOrWhiteSpace(queryJson))
{
if (!string.IsNullOrWhiteSpace(queryParam["STNO"].ToString()))
{
sql += " and a.OASNCode like '%" + queryParam["STNO"].ToString() + "%' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
{
sql += " and a.VenCode 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 a.MTIME >= '" + queryParam["TimeFrom"].ToString() + "' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["TimeTo"].ToString()))
{
sql += " and a.MTIME <= '" + queryParam["TimeTo"].ToString() + "' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["PoCode"].ToString()))
{
sql += " and g.OOCode like '%" + queryParam["PoCode"].ToString() + "%' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
{
sql += " and g.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["ReleaseState"].ToString()))
{
string ReleaseState = queryParam["ReleaseState"].ToString();
if (ReleaseState == "0")
sql += " AND CASE WHEN c.ODNCode IS NULL THEN a.Status ELSE '3' END = '0'";
else if (ReleaseState == "1")
sql += " AND CASE WHEN c.ODNCode IS NULL THEN a.Status ELSE '3' END = '1'";
else if (ReleaseState == "2")
sql += " AND CASE WHEN c.ODNCode IS NULL THEN a.Status ELSE '3' END = '2'";
else if (ReleaseState == "3")
{
sql += " AND CASE WHEN c.ODNCode IS NULL THEN a.Status ELSE '3' END='3'";
}
else if (ReleaseState == "4")
sql += " AND CASE WHEN c.ODNCode IS NULL THEN a.Status ELSE '3' END = '4'";
}
}
//多站点
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.Contains("Vendor"))
{
sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().VenCode + "'";
}
ParentId = SqlHelper.Organize_F_ParentId(NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
if (!string.IsNullOrWhiteSpace(ParentId) && ParentId != "0" && NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "Vendor")
{
return SqlHelper.FindTablePageBySql_OtherTemp(sql.ToString(), sql, ParentId, parameter.ToArray(), ref jqgridparam);
}
else
{
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 STNO, ref Pagination jqgridparam,string WorkPoint)
{
//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.LotNo,d.InvCode,d.InvName,c.ContainerID,b.Quantity,
a.OASNCode,f.BatchCode,f.ProjectCode,m.TransCode,m.TransSequence,d.InvDesc,d.ClassName,d.InvStd,w.WorkPointName,w.WorkPointCode,x.ContainerCode as XH,y.ContainerCode as ZB
FROM dbo.ICSOASNDetail a
LEFT JOIN dbo.ICSInventoryLot b ON a.LotNo =b.LotNo AND a.WorkPoint=b.WorkPoint
left join ICSExtension f on b.ExtensionID=f.ID and b.WorkPoint=f.WorkPoint
left join ICSInventoryLotDetail m on b.LotNo=m.LotNo and b.WorkPoint=m.WorkPoint
LEFT JOIN dbo.ICSContainerLot c ON b.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
LEFT JOIN dbo.ICSInventory d ON b.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
LEFT JOIN dbo.ICSOutsourcingOrder e ON m.TransCode=e.OOCode AND m.TransSequence=e.Sequence AND a.WorkPoint=e.WorkPoint
LEFT JOIN Sys_WorkPoint w on e.WorkPoint=w.WorkPointCode
LEFT JOIN ICSContainer X ON c.ContainerID=X.ID AND c.WorkPoint=x.WorkPoint and X.ContainerType='ContainerType01'
left join ICSContainer y on X.ContainerID=y.ID and X.WorkPoint=y.WorkPoint and y.ContainerType='ContainerType04'
WHERE (b.TYPE='201' OR ISNULL(b.EATTRIBUTE7,'') ='入库前分批') AND a.OASNCode='" + STNO + "' and a.WorkPoint='" + WorkPoint + "' ";
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
/// <summary>
/// 删除送货单
/// </summary>
/// <param name="keyValue"></param>
/// <returns></returns>
public string DeleteSTNO(string keyValue, string WorkPoint, string EATTRIBUTE1)
{
// string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
string msg = "";
keyValue = keyValue.Substring(1, keyValue.Length - 2);
string sql = string.Empty;
sql = "SELECT OASNCode as STNO FROM dbo.ICSODeliveryNotice WHERE OASNCode IN (" + keyValue.TrimEnd(',') + ")";
DataTable dt = SqlHelper.GetDataTableBySql(sql);
foreach (DataRow dr in dt.Rows)
{
string STNO = dr["STNO"].ToString();
if (!string.IsNullOrEmpty(STNO))
{
msg += "送货单号:" + STNO + "已生成到货单,无法删除!";
}
}
if (string.IsNullOrEmpty(msg))
{
sql = string.Format(@" DELETE FROM dbo.ICSOASNDetail WHERE OASNCode IN ({0}) and WorkPoint in ('{1}')
DELETE FROM dbo.ICSOASN WHERE OASNCode IN ({0}) and WorkPoint in ('{1}')
UPDATE ICSASN SET EATTRIBUTE1='{2}'WHERE ASNCode IN ({0}) and WorkPoint in ('{1}')", keyValue.TrimEnd(','), WorkPoint.TrimEnd(','), EATTRIBUTE1);
SqlHelper.ExecuteNonQuery(sql);
}
return msg;
}
public string CheckIsAll(string STNO)
{
string sql = @"SELECT * FROM dbo.ICSOASNDetail WHERE OASNCode='" + STNO + "' AND ISNULL(ODNQuantity,0)<>0";
sql += " and WorkPoint in(" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
DataTable dt = SqlHelper.GetDataTableBySql(sql);
if (dt != null && dt.Rows.Count > 0)
{
return "0";
}
else
{
return "1";
}
}
public string GetSTNO(string WorkPoint)
{
string STNO = string.Empty;
string VenCode = NFine.Code.OperatorProvider.Provider.GetCurrent().VenCode;
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
if (!string.IsNullOrEmpty(VenCode))
{
string Date = DateTime.Now.ToString("yy");
string Pre = "DN" + VenCode + Date;
STNO = GetSerialCode(WorkPoint, "ICSASN", "STNO", Pre, 5);
}
if (!string.IsNullOrEmpty(STNO))
{
string sql = string.Empty;
string configSql = string.Empty;
string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
string Status = "2";
#region [获取送货单配置信息,判断状态]
configSql = @"SELECT a.F_ItemCode,a.F_ItemName FROM Sys_SRM_ItemsDetail a
LEFT JOIN Sys_SRM_Items b ON a.F_ItemId = b.F_Id
WHERE b.F_EnCode = 'DeliveryNoteConfig'";
DataTable dt = SqlHelper.GetDataTableBySql(configSql);
foreach (DataRow item in dt.Rows)
{
if (item["F_ItemName"].ToString().Equals("IsSub"))
{
Status = item["F_ItemCode"].ToString();
}
else if (item["F_ItemName"].ToString().Equals("IsEAV"))
{
if (Status == "1" && item["F_ItemCode"].ToString() == "3")
Status = "2";
}
}
#endregion
if (string.IsNullOrWhiteSpace(WorkPoint))
{
throw new Exception("站点为空!");
}
else
{
sql = @"INSERT INTO dbo.ICSOASN( ID ,MTIME,MUSER,MUSERNAME ,OASNCode ,VenCode ,WorkPoint,Status)
VALUES (NEWID(),GETDATE(),'" + VenCode + "','" + MUSERNAME + "','" + STNO + "','" + VenCode + "','" + WorkPoint + "','" + Status + "')";
try
{
SqlHelper.ExecuteNonQuery(sql);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
}
return STNO;
}
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 string GetSTNOByPerson(string VenCode, string ExpArrivalDate, string WorkPoint)
{
string STNO = string.Empty;
string Date = DateTime.Now.ToString("yy");
string Pre = "DN" + VenCode + Date;
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
STNO = GetSerialCode(WorkPoint, "ICSASN", "STNO", Pre, 5);
if (!string.IsNullOrEmpty(STNO))
{
string sql = string.Empty;
string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
if (string.IsNullOrWhiteSpace(WorkPoint))
{
throw new Exception("站点为空!");
}
else
{
sql = @" INSERT INTO dbo.ICSOASN
( ID ,OASNCode,VenCode ,
Status ,MUSER ,MUSERName ,MTIME,WorkPoint)
VALUES (NEWID(),'" + STNO + "','" + VenCode + "','2','" + MUSER + "','" + MUSERNAME + "',getdate(),'" + WorkPoint + "')";
try
{
SqlHelper.ExecuteNonQuery(sql);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
}
return STNO;
}
/// <summary>
/// 获取供应商列表
/// </summary>
/// <returns></returns>
public DataTable GetVendor()
{
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
string sql = @"select '' as F_VenCode,'' as cVenName
union all
SELECT DISTINCT a.F_VenCode,isnull(b.VenName,'') as cVenName FROM dbo.Sys_SRM_User a
LEFT JOIN dbo.ICSVendor b ON a.F_VenCode=b.VenCode and a.F_Location=b.WorkPoint
WHERE a.F_VenCode IS NOT NULL AND a.F_VenCode <>''";
string role = NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode;
if (role != "admin")
{
sql += " and b.WorkPoint in (" + WorkPoint.TrimEnd(',') + ")";
}
DataTable dt = SqlHelper.GetDataTableBySql(sql);
return dt;
}
/// <summary>
/// 获取组织号信息
/// </summary>
/// <returns></returns>
public DataTable GetVendors()
{
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
string role = NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode;
string sql = @" select '' as WorkPointCode,'' as WorkPointName
union all
SELECT distinct (b.WorkPointCode),b.WorkPointName FROM Sys_SRM_User a
LEFT JOIN Sys_WorkPoint b ON a.F_Location=b.WorkPointCode where b.WorkPointCode is not null";
DataTable dt = SqlHelper.GetDataTableBySql(sql);
return dt;
}
/// <summary>
/// 选择条码信息
/// </summary>
/// <param name="queryJson"></param>
/// <param name="jqgridparam"></param>
/// <returns></returns>
public DataTable GetSubGridJson_Add(string queryJson, ref Pagination jqgridparam)
{
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
DataTable dt = new DataTable();
var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
string sql = @"SELECT a.ID,a.ID as ZJID, a.LOTNO,d.InvCode,d.InvName,c.ContainerID,b.Quantity,
a.OASNCode,m.BatchCode,f.OOCode,f.Sequence,d.InvDesc,d.ClassName,d.InvStd,b.Amount
FROM dbo.ICSOASNDetail a
LEFT JOIN dbo.ICSInventoryLot b ON a.LotNo =b.LotNo AND a.WorkPoint=b.WorkPoint
left join ICSExtension m on b.ExtensionID=m.ID and b.WorkPoint=m.WorkPoint
LEFT JOIN dbo.ICSContainerLot c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
LEFT JOIN dbo.ICSInventory d ON b.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
left join ICSInventoryLotDetail e on b.LotNo=e.LotNo and b.WorkPoint=e.WorkPoint
LEFT JOIN dbo.ICSOutsourcingOrder f ON e.TransCode=f.OOCode AND e.TransSequence=f.Sequence
WHERE 1=1
AND a.OASNCode='" + queryParam["STNO"].ToString() + "' and a.WorkPoint='" + queryParam["WorkPoint"].ToString() + "' ";
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
/// <summary>
/// 选择条码
/// </summary>
/// <returns></returns>
public DataTable GetInfoBySelectItemCode(string queryJson, ref Pagination jqgridparam,string WorkPoint)
{
var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
string sql = @" SELECT a.ID, a.LotNO,d.InvCode,d.InvName,a.Quantity,a.TYPE,
g.ProjectCode,e.OOCode,e.Sequence,d.InvDesc,d.ClassName,d.INVSTD,g.BatchCode,a.Amount,a.WorkPoint
FROM dbo.ICSInventoryLot a
left join ICSExtension g on a.ExtensionID=g.ID and a.WorkPoint=g.WorkPoint
LEFT JOIN dbo.ICSContainerLot b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
LEFT JOIN dbo.ICSOASNDetail c ON a.LotNO=c.LotNO AND a.WorkPoint=c.WorkPoint
LEFT JOIN dbo.ICSInventory d ON a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
left join ICSInventoryLotDetail f on a.LotNo=f.LotNo and a.WorkPoint=f.WorkPoint
LEFT JOIN dbo.ICSOutsourcingOrder e ON f.TransCode=e.OOCode AND f.TransSequence=e.Sequence
WHERE c.LotNo is null and B.LotNo IS NULL and ISNULL(a.EATTRIBUTE1,'') ='' and a.Type='201' AND e.Status<>'3' ";
//AND a.TYPE='采购'";
if (!string.IsNullOrEmpty(queryJson))
{
if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
sql += " and d.InvCode like '%" + queryParam["InvCode"].ToString() + "%'";
if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
sql += " and d.InvName like '%" + queryParam["InvName"].ToString() + "%'";
if (!string.IsNullOrWhiteSpace(queryParam["OrderNo"].ToString()))
sql += " and g.ProjectCode like '%" + queryParam["OrderNo"].ToString() + "%'";
if (!string.IsNullOrWhiteSpace(queryParam["TransNo"].ToString()))
sql += " and e.OOCode like '%" + queryParam["TransNo"].ToString() + "%'";
if (!string.IsNullOrWhiteSpace(queryParam["TransLine"].ToString()))
sql += " and e.Sequence like '%" + queryParam["TransLine"].ToString() + "%'";
if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
sql += " and e.VenCode like '%" + queryParam["VenCode"].ToString() + "%'";
}
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
sql += " and a.WorkPoint='" + WorkPoint + "'";
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
public string CheckSTNO_ItemCode(string JsonData, string STNO, string WorkPoint)
{
string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
string msg = "";
string sql = string.Empty;
sql = @"
INSERT INTO dbo.ICSOASNDetail
( ID ,OASNCode ,Sequence ,MUSER ,
LotNo , Quantity ,Amount ,ODNQuantity ,ODNAmount ,MUSERName,
MTIME,WorkPoint)
SELECT NEWID(),'" + STNO + "',ROW_NUMBER()over(partition by LotNO order by mtime desc),'" + MUSER + @"',
a.LotNO,a.Quantity,a.Quantity*Amount as Amount,0,0,'" + MUSERNAME + @"',
getdate()," + WorkPoint.TrimEnd(',') + @"
FROM dbo.ICSInventoryLot a
WHERE a.ID IN (" + JsonData.TrimEnd(',') + ")";
try
{
SqlHelper.ExecuteNonQuery(sql);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
return msg;
}
/// <summary>
/// 获取箱号主表信息
/// </summary>
/// <param name="queryJson"></param>
/// <param name="jqgridparam"></param>
/// <returns></returns>
public DataTable ASNCartonGetCartonGridJson(string queryJson, ref Pagination jqgridparam, string WorkPoint)
{
string sql = string.Empty;
DataTable dt = new DataTable();
var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
if (queryParam["Type"].ToString()== "ContainerType01")
{
sql = @" SELECT DISTINCT a.ContainerCode,a.ID,
c.MUSERName, a.MTIME,Dil.F_ItemName
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 and lot.Type='201'
left join Sys_SRM_ItemsDetail Dil on F_ItemId='6230217e-4413-4427-9bec-c67ba789eca9' and F_EnabledMark='1' and a.ContainerType=Dil.F_ItemCode
WHERE
a.ID not IN
(SELECT b.ContainerID FROM dbo.ICSOASNDetail a inner JOIN dbo.ICSContainerLot b ON a.LotNO =b.LotNO AND a.WorkPoint=b.WorkPoint)
and a.EATTRIBUTE1='2' and a.ContainerID=''
";
}
else
{
sql = @" SELECT DISTINCT a.ContainerCode,a.ID,
c.MUSERName, a.MTIME,Dil.F_ItemName
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 and lot.Type='201'
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 ICSContainer xz on a.ID=xz.ContainerID and a.WorkPoint=xz.WorkPoint
WHERE
xz.ID not IN
(SELECT b.ContainerID FROM dbo.ICSOASNDetail a inner JOIN dbo.ICSContainerLot b ON a.LotNO =b.LotNO AND a.WorkPoint=b.WorkPoint)
and a.EATTRIBUTE1='2'
";
}
if (!string.IsNullOrWhiteSpace(queryJson))
{
if (!string.IsNullOrWhiteSpace(queryParam["CartonNo"].ToString()))
{
sql += " and a.ContainerID like '%" + queryParam["CartonNo"].ToString() + "%' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
{
sql += " and a.EATTRIBUTE8 = '" + queryParam["VenCode"].ToString() + "' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["Type"].ToString()))
{
sql += " and a.ContainerType = '" + queryParam["Type"].ToString() + "' ";
}
}
if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
{
sql += " and a.WorkPoint='" + WorkPoint + "'";
}
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
/// <summary>
/// 箱号子表查询
/// </summary>
/// <param name="CartonNo"></param>
/// <param name="jqgridparam"></param>
/// <returns></returns>
public DataTable GetCartonSubGridJson(string CartonNo, ref Pagination jqgridparam)
{
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
DataTable dt = new DataTable();
//var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
string sql = @"select a.LotNo,a.ID,c.InvCode,d.InvName,f.TransCode,f.TransSequence,d.InvDesc,d.InvStd
from ICSContainerLot a
left join ICSContainer b on a.ContainerID=b.ID and a.WorkPoint=b.WorkPoint
left join ICSInventoryLot c on a.LotNo=c.LotNo and a.WorkPoint=c.WorkPoint
left join ICSInventory d on c.InvCode=d.InvCode and c.WorkPoint=d.WorkPoint
left join ICSInventoryLotDetail f on c.LotNo=f.LotNo and f.WorkPoint=c.WorkPoint
left join ICSOutsourcingOrder e on f.TransCode=e.OOCode and f.TransSequence=e.Sequence and f.WorkPoint=e.WorkPoint
WHERE a.ContainerID='" + CartonNo + "' and a.WorkPoint='" + WorkPoint + "'";
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
public string CheckSTNO_CartonNo(string JsonData, string STNO, string WorkPoint)
{
string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
string msg = "";
string sql = string.Empty;
sql = @"INSERT INTO dbo.ICSOASNDetail
( ID ,OASNCode ,Sequence ,MUSER ,
LotNo , Quantity ,Amount ,ODNQuantity ,ODNAmount ,MUSERName,
MTIME,WorkPoint)
SELECT NEWID(),'" + STNO + "',row_number(),'" + MUSER + @"',
a.LotNO,b.Quantity,b.Quantity*b.Amount as Amount,0,0,'" + MUSERNAME + @"',
,getdate()," + WorkPoint.TrimEnd(',') + @"
FROM dbo.ICSContainerLot a
left JOIN dbo.ICSInventoryLot b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
LEFT JOIN dbo.ICSInventory c ON c.InvCode=b.InvCode AND a.WorkPoint=c.WorkPoint
WHERE a.ContainerID IN (" + JsonData.TrimEnd(',') + ") and a.WorkPoint='" + WorkPoint + "'";
try
{
SqlHelper.ExecuteNonQuery(sql);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
return msg;
}
/// <summary>
/// 删除送货单内的条码或者箱号
/// </summary>
/// <param name="keyValue"></param>
/// <returns></returns>
public string DeleteInfo(string keyValue,string WorkPoint)
{
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
string msg = "";
string sql = string.Format(@" DELETE FROM dbo.ICSOASNDetail
WHERE ID IN (
SELECT ID FROM dbo.ICSOASNDetail WHERE LotNo IN (
SELECT LotNo FROM dbo.ICSContainerLot WHERE ContainerID IN (
SELECT a.ContainerID
FROM dbo.ICSContainerLot a
LEFT JOIN dbo.ICSOASNDetail b ON a.LotNO=b.LotNo AND a.WorkPoint=b.WorkPoint
WHERE b.ID IN ({0}) AND a.WorkPoint='{1}')
))", keyValue.TrimEnd(','), WorkPoint);
SqlHelper.ExecuteNonQuery(sql);
sql = string.Format(@" DELETE
FROM dbo.ICSOASNDetail
WHERE ID IN ({0}) and WorkPoint ='{1}' ", keyValue.TrimEnd(','), WorkPoint);
try
{
SqlHelper.ExecuteNonQuery(sql);
}
catch (Exception ex)
{
msg = ex.Message;
}
return msg;
}
/// <summary>
/// 更新送货单
/// </summary>
/// <param name="keyValue"></param>
/// <returns></returns>
public string UpdateSTNO(string keyValue, string EATTRIBUTE1)
{
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
string msg = "";
keyValue = keyValue.Substring(1, keyValue.Length - 2);
string[] keyValues = keyValue.Split(',');
string sql = string.Empty;
sql = "UPDATE ICSOASN SET MTIME = getdate() , EATTRIBUTE1='{2}' WHERE OASNCode = {0} AND WorkPoint in ({1})";
sql = string.Format(sql, keyValues[0].TrimStart(',').TrimEnd(','), WorkPoint.Trim(','), EATTRIBUTE1);
SqlHelper.ExecuteNonQuery(sql);
return msg;
}
public int UpDateBySTNO(string keyValue, string Status, string WorkPoint)
{
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
keyValue = keyValue.Substring(1, keyValue.Length - 2);
WorkPoint = WorkPoint.Substring(1, WorkPoint.Length - 2);
string sql = string.Empty;
sql = @"UPDATE ICSOASN SET Status = '{1}' WHERE OASNCode IN ({0}) AND WorkPoint in({2})";
sql = string.Format(sql, keyValue.TrimEnd(','), Status, WorkPoint.TrimEnd(','));
return SqlHelper.ExecuteNonQuery(sql);
}
public string GetWWICSASNCode(string RoleEnCode, string WorkPoint)
{
DataTable dt = new DataTable();
string Date = DateTime.Now.ToString("yy");
string Pre = "DN" + RoleEnCode + Date;
string ASNCode = GetSerialCode(WorkPoint, "ICSASN", "STNO", Pre, 5);
return ASNCode;
}
public string SaveWWICSASNAndDetail(string ICSASN, string WorkPoint)
{
string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
string msg = "";
string sql = string.Empty;
string ID = Guid.NewGuid().ToString();
string Status;
#region [获取送货单配置信息,判断状态]
string F_ItemName = SqlHelper.GetSHDZDSHItemsDetails("ASNAudit", WorkPoint);
if (!string.IsNullOrWhiteSpace(F_ItemName))
{
Status = "2";
}
else
{
Status = "0";
}
#endregion
JArray res = (JArray)JsonConvert.DeserializeObject(ICSASN);
foreach (var item in res)
{
JObject jo = (JObject)item;
//创建送货单主表
sql += @" INSERT INTO dbo.ICSOASN
( ID ,OASNCode ,VenCode,Status,
MUSER ,MUSERName ,MTIME,WorkPoint)
VALUES ( newid(),'{0}','{1}','{2}','{3}','{4}',getdate(),'{5}')";
sql = string.Format(sql, jo["ASNCode"].ToString(), jo["VenCode"].ToString(), Status, MUSER, MUSERNAME, jo["WorkPoint"].ToString());
JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["Detail"].ToString());
foreach (var detail in resdetail)
{
//创建送货单子表
JObject det = (JObject)detail;
sql += @" INSERT INTO dbo.ICSOASNDetail
( ID ,OASNCode ,Sequence,LotNo,Quantity,Amount,ODNQuantity,ODNAmount,
MUSER ,MUSERName ,MTIME,WorkPoint)
VALUES ( newid(),'{0}','{1}','{2}','{3}','{4}',0,0,'{5}','{6}',getdate(),'{7}')";
sql = string.Format(sql, jo["ASNCode"].ToString(), det["Sequence"].ToString(), det["LotNo"].ToString(), det["Quantity"].ToString(), det["Amount"].ToString(), MUSER, MUSERNAME, jo["WorkPoint"].ToString());
}
}
try
{
if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
{
}
else
{
msg = "新增失败";
}
}
catch (Exception ex)
{
msg = ex.Message;
}
return msg;
}
public string UpdateWWICSASNAndDetail(string ICSASN)
{
string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
string msg = "";
string sql = string.Empty;
string idss = "";
string Code = "";
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)
{
Code = jo["ASNCode"].ToString();
JObject det = (JObject)detail;
if (string.IsNullOrWhiteSpace(det["ZJID"].ToString()))
{
string DetailID = Guid.NewGuid().ToString();
sql += @"INSERT INTO dbo.ICSOASNDetail
( ID ,OASNCode ,Sequence,LotNo,Quantity,Amount,ODNQuantity,ODNAmount,
MUSER ,MUSERName ,MTIME,WorkPoint)
VALUES ( '{0}','{1}','{2}','{3}','{4}','{5}',0,0,'{6}','{7}',getdate(),'{8}')";
sql = string.Format(sql, DetailID, jo["ASNCode"].ToString(), det["Sequence"].ToString(), det["LotNo"].ToString(), det["Quantity"].ToString(),
det["Amount"].ToString(), MUSER, MUSERNAME, jo["WorkPoint"].ToString());
idss += "'" + DetailID + "',";
}
else
{
idss += "'" + det["ZJID"].ToString() + "',";
}
}
}
sql += @"DELETE ICSOASNDetail where OASNCode ='{0}' and id not in ({1})";
sql = string.Format(sql, Code, idss.Substring(0, idss.Length - 1));
try
{
if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
{
}
else
{
msg = "修改失败";
}
}
catch (Exception ex)
{
msg = ex.Message;
}
return msg;
}
public DataTable GetLotByContainer(string Value, string WorkPoint)
{
Value = Value.TrimEnd(',');
string sql = @"
WITH ICSBomALL AS
(
SELECT
ContainerCode AS TContainerCode,
ContainerCode AS PContainerCode,
ContainerCode AS ContainerCode,
ID,
ContainerID,
0 AS [Level],
CAST(1 AS nvarchar(MAX)) AS SortSeq,
CAST('00001' AS nvarchar(MAX)) AS Sort
FROM ICSContainer
WHERE ContainerCode in ({0})
UNION ALL
SELECT
b.TContainerCode,
b.ContainerCode AS PContainerCode,
a.ContainerCode,
a.ID,
a.ContainerID,
b.[Level]+1 AS [Level],
CAST(b.SortSeq AS nvarchar(MAX))+'.'+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS SortSeq,
CAST(b.Sort+'.'+REPLICATE('0',5-len(row_number() over (order by a.ContainerCode)))+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS nvarchar(MAX)) AS Sort
FROM
ICSContainer a
INNER JOIN ICSBomALL b ON a.ID=b.ContainerID
)
SELECT a.ID,
con.ContainerCode,
con.ContainerName,
a.LotNo,
lotD.TransCode,
lotD.TransSequence,
a.InvCode,
inv.InvName,
inv.InvStd,
inv.InvUnit,
inv.InvDesc,
a.Quantity AS Quantity,
a.Quantity*(a.Amount/a.Quantity) AS Amount,
'' AS WHCode,
'' AS WHName,
'' AS LocationCode,
'' AS LocationName,
ext.BatchCode AS BatchCode,
inv.AmountUnit,
ext.ID AS ExtensionID,
ext.ProjectCode,
ext.Version,
--ext.BatchCode,
ext.Brand,
ext.cFree1,
ext.cFree2,
ext.cFree3,
ext.cFree4,
ext.cFree5,
ext.cFree6,
ext.cFree7,
ext.cFree8,
ext.cFree9,
ext.cFree10,
a.MUSER AS [User],
a.MTIME AS [MTime],
a.WorkPoint
FROM ICSInventoryLot a
left join dbo.ICSInventoryLotDetail lotD on a.LotNo=lotD.LotNo and a.WorkPoint=lotD.WorkPoint
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
LEFT JOIN ICSContainerLot conlot ON a.LotNo=conlot.LotNo AND a.WorkPoint=conlot.WorkPoint
LEFT JOIN ICSContainer con ON conlot.ContainerID=con.ID AND conlot.WorkPoint=con.WorkPoint
LEFT JOIN ICSBomALL bom ON bom.ID=con.ContainerID
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
WHERE bom.ContainerCode in ({0}) AND a.WorkPoint='{1}'
UNION ALL
SELECT a.ID,
con.ContainerCode,
con.ContainerName,
a.LotNo,
lotD.TransCode,
lotD.TransSequence,
a.InvCode,
inv.InvName,
inv.InvStd,
inv.InvUnit,
inv.InvDesc,
a.Quantity AS Quantity,
a.Quantity*(a.Amount/a.Quantity) AS Amount,
'' AS WHCode,
'' AS WHName,
'' AS LocationCode,
'' AS LocationName,
ext.BatchCode AS BatchCode,
inv.AmountUnit,
ext.ID AS ExtensionID,
ext.ProjectCode,
ext.Version,
--ext.BatchCode,
ext.Brand,
ext.cFree1,
ext.cFree2,
ext.cFree3,
ext.cFree4,
ext.cFree5,
ext.cFree6,
ext.cFree7,
ext.cFree8,
ext.cFree9,
ext.cFree10,
a.MUSER AS [User],
a.MTIME AS [MTime],
a.WorkPoint
FROM ICSInventoryLot a
left join dbo.ICSInventoryLotDetail lotD on a.LotNo=lotD.LotNo and a.WorkPoint=lotD.WorkPoint
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
LEFT JOIN ICSContainerLot conlot ON a.LotNo=conlot.LotNo AND a.WorkPoint=conlot.WorkPoint
LEFT JOIN ICSContainer con ON conlot.ContainerID=con.ID AND conlot.WorkPoint=con.WorkPoint
LEFT JOIN ICSBomALL bom ON bom.ID=conlot.ContainerID
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
WHERE bom.ContainerCode in ({0}) AND a.WorkPoint='{1}'
";
sql = string.Format(sql, Value, WorkPoint);
DataTable dt = SqlHelper.GetDataTableBySql(sql);
return dt;
}
}
}