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.
 
 
 
 
 

506 lines
26 KiB

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.Common;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Globalization;
namespace NFine.Application.DHAY
{
public class ICSFinishedProductShipmentApp : RepositoryFactory<ICSVendor>
{
ICSCreateItemLotApp app = new ICSCreateItemLotApp();
public DataTable GetICSSDN(string queryJson, ref Pagination jqgridparam)
{
DataTable dt = new DataTable();
var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
string UserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
string User = UserName.Substring(0, 2);
#region [SQL]
string sql = @" select
DISTINCT
a.id
,SDNCode
,a.Sequence
,a.SOCode
,a.SOSequence
,b.EATTRIBUTE3
,a.InvCode
,c.InvName
,c.EATTRIBUTE2
,b.EATTRIBUTE6
,a.EATTRIBUTE6 as Project
,a.EATTRIBUTE7
,c.InvStd
,isnull(a.Quantity,0) AS Quantity
,ISNULL(SDNQuantity, 0) AS SDNQuantity
,isnull(a.Quantity,0)-ISNULL(SDNQuantity, 0) as SYQty
,ISNULL(SDNQuantity, 0)*(1.1) AS KQty
,ISNULL(SDNQuantity, 0)*(1.1)-ISNULL(d.LotQty,0) AS SYSDNQuantity
,d.LotQty
,a.MUSER
,a.MTIME
,a.CusName
from ICSSDN a
left join ICSSO b on a.socode=b.socode and a.SOSequence=b.Sequence
left join ICSInventory c on a.InvCode=c.InvCode and a.WorkPoint=c.WorkPoint
left JOIN (SELECT SUM(ISNULL(Quantity,0))AS LotQty,TransCode,TransSequence FROM ICSFinishedProductShipment
WHERE type='1'
GROUP BY TransCode,TransSequence)d on SDNCode=d.TransCode and a.Sequence=d.TransSequence
WHERE a.Type='1' and isnull(SDNQuantity,0)<>0";
if (!string.IsNullOrWhiteSpace(queryJson))
{
if (!string.IsNullOrWhiteSpace(queryParam["SDNCode"].ToString()))
{
sql += " and a.SDNCode like '%" + queryParam["SDNCode"].ToString() + "%' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["SOCode"].ToString()))
{
sql += " and a.SOCode like '%" + queryParam["SOCode"].ToString() + "%' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
{
sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["CusName"].ToString()))
{
sql += " and a.CusName like '%" + queryParam["CusName"].ToString() + "%' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["CusInv"].ToString()))
{
sql += " and b.EATTRIBUTE3 like '%" + queryParam["CusInv"].ToString() + "%' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["TimeFrom"].ToString()))
{
sql += " and convert(nvarchar(20),a.CreateDateTime,23) >= '" + queryParam["TimeFrom"].ToString() + "' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["TimeArrive"].ToString()))
{
sql += " and convert(nvarchar(20),a.CreateDateTime,23) <= '" + queryParam["TimeArrive"].ToString() + "' ";
}
}
#endregion
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
/// <summary>
/// 获取流水号,条码信息
/// </summary>
/// <param name="queryJson"></param>
/// <param name="jqgridparam"></param>
/// <returns></returns>
public DataTable GetICSFinishedProductShipment(string queryJson, ref Pagination jqgridparam)
{
DataTable dt = new DataTable();
var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
#region [SQL]
string sql = @"SELECT
ID
,LotNO
,quantity as minPackQty
,ExtensionID
,ProductDate
,PrintTimes
,LastPrintTime
,LastPrintUser
,MUSER
,MTIME
,EATTRIBUTE1
FROM ICSFinishedProductShipment";
sql += " WHERE 1=1 and TransCode='" + queryParam["SDNCode"].ToString() + "'";
if (!string.IsNullOrWhiteSpace(queryParam["FlagVersion"].ToString()))
{
sql += " and Type= '" + queryParam["FlagVersion"].ToString() + "' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["Sequence"].ToString()))
{
sql += " and TransSequence= '" + queryParam["Sequence"].ToString() + "' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["MOCode"].ToString()))
{
sql += " and EATTRIBUTE1= '" + queryParam["MOCode"].ToString() + "' ";
}
sql = string.Format(sql, DbHelper.GetErpIp(), DbHelper.GetErpName());
#endregion
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
/// <summary>
/// 获取生成条码信息
/// </summary>
/// <param name="SDNCode"></param>
/// <param name="Sequence"></param>
/// <param name="WorkPoint"></param>
/// <param name="Type"></param>
/// <returns></returns>
public DataTable GetSubGridJsonByCreate(string SDNCode, string Sequence, string WorkPoint,string Type)
{
DataTable dt = new DataTable();
//var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
string Workpont = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
string sql = $@"SELECT a.InvCode,b.InvName,b.EATTRIBUTE5 AS OldInvCode,'' as OldInvName,a.SOCode,
ISNULL(c.UseQuantity, 0) UseQuantity ,d.EATTRIBUTE3 as CusInvCode,a.EATTRIBUTE7 as CusOrders
FROM ICSSDN a
LEFT JOIN ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
left JOIN (SELECT TransCode,TransSequence,WorkPoint,sum(Quantity) as UseQuantity FROM ICSFinishedProductShipment WHERE Type='{Type}' AND TransCode='{SDNCode}' AND TransSequence='{Sequence}' GROUP BY TransCode,TransSequence,WorkPoint )c ON a.SDNCode=c.TransCode AND a.Sequence=c.TransSequence AND a.WorkPoint=c.WorkPoint
left JOIN ICSSO d ON a.SOCode=d.SOCode AND a.SOSequence=d.Sequence and a.WorkPoint=d.WorkPoint
WHERE a.SDNCode='{SDNCode}' AND a.Sequence='{Sequence}'
AND a.WorkPoint='{Workpont}' ";
return Repository().FindTableBySql(sql.ToString());
}
/// <summary>
/// 获取生产日期
/// </summary>
/// <param name="SDNCode"></param>
/// <param name="Sequence"></param>
/// <returns></returns>
public DataTable GetProductDate(string SDNCode, string Sequence)
{
DataTable dt = new DataTable();
//var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
string Workpont = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
string sql = $@" SELECT top 1 ISNULL(ProductDate, '') ProductDate FROM ICSFinishedProductShipment WHERE TransCode='{SDNCode}' AND TransSequence='{Sequence}' and WorkPoint='{Workpont}' ORDER BY ProductDate asc
";
return Repository().FindTableBySql(sql.ToString());
}
/// <summary>
/// 批次信息
/// </summary>
/// <param name="POCode"></param>
/// <param name="PORow"></param>
/// <param name="WorkPoint"></param>
/// <returns></returns>
public DataTable GetBatchInformation(string SDNCode, string Sequence)
{
DataTable dt = new DataTable();
//var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
string Workpont = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
string sql = $@"SELECT '' as Code,'' as Name
UNION all
--非期初工单(生成条码的来源单据为工单)
SELECT DISTINCT b.TransCode as Code,b.TransCode as Name
FROM ICSWareHouseLotInfoLog a
INNER JOIN ( SELECT a.LotNo, ISnull(b.type,a.Type) Type,a.WorkPoint,a.ExtensionID,a.EATTRIBUTE5 FROM ICSInventoryLot a
left JOIN ICSInventoryLot b ON a.EATTRIBUTE1=b.LotNo AND a.WorkPoint =b.WorkPoint ) d ON a.LotNo=d.lotNo and a.workPoint=d.WorkPoint AND d.Type<>'0' AND d.Type<>'4'
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.lotNo and a.workPoint=b.WorkPoint
INNER JOIN ICSMO c ON c.MOCode=b.TransCode AND c.Sequence=b.TransSequence AND c.WorkPoint=b.WorkPoint
WHERE a.TransCode='{SDNCode}' AND a.TransSequence='{Sequence}' AND a.WorkPoint='{Workpont}' AND a.BusinessCode='19'
UNION
--非期初非工单(生成条码的来源单据并非工单,显示批次)如果是分批取分批前条码类型
SELECT DISTINCT e.BatchCode as Code,e.BatchCode as Name
FROM ICSWareHouseLotInfoLog a
INNER JOIN (SELECT a.LotNo, ISnull(b.type,a.Type) Type,a.WorkPoint,a.ExtensionID FROM ICSInventoryLot a
left JOIN ICSInventoryLot b ON a.EATTRIBUTE1=b.LotNo AND a.WorkPoint =b.WorkPoint ) b ON a.LotNo=b.lotNo and a.workPoint=b.WorkPoint AND b.Type<>'0' AND b.Type<>'4'
INNER JOIN ICSInventoryLotDetail d ON a.LotNo=d.lotNo and a.workPoint=d.WorkPoint
left JOIN ICSMO c ON c.MOCode=d.TransCode AND c.Sequence=d.TransSequence AND c.WorkPoint=d.WorkPoint
left JOIN ICSExtension e ON e.Id=b.ExtensionID
WHERE a.TransCode='{SDNCode}' AND a.TransSequence='{Sequence}' AND a.WorkPoint='{Workpont}' AND a.BusinessCode='19' AND c. MOCode is NULL
UNION
--期初
SELECT DISTINCT b.BatchCode as Code,b.BatchCode as Name
FROM ICSWareHouseLotInfoLog a
INNER JOIN ( SELECT a.LotNo, ISnull(b.type,a.Type) Type,a.WorkPoint,a.ExtensionID,a.EATTRIBUTE5 FROM ICSInventoryLot a
left JOIN ICSInventoryLot b ON a.EATTRIBUTE1=b.LotNo AND a.WorkPoint =b.WorkPoint ) c ON a.LotNo=c.lotNo and a.workPoint=c.WorkPoint AND c.Type ='0'
INNER JOIN ICSExtension b ON c.ExtensionID=b.ID and a.workPoint=b.WorkPoint
WHERE a.TransCode='{SDNCode}' AND a.TransSequence='{Sequence}' AND a.WorkPoint='{Workpont}' AND a.BusinessCode='19'
UNION
--销售退货原条码(取销售退货备注工单) 如果是分批取分批前条码类型
SELECT DISTINCT c.EATTRIBUTE5 as Code,c.EATTRIBUTE5 as Name
FROM ICSWareHouseLotInfoLog a
INNER JOIN ( SELECT a.LotNo, ISnull(b.type,a.Type) Type,a.WorkPoint,a.ExtensionID,a.EATTRIBUTE5 FROM ICSInventoryLot a
left JOIN ICSInventoryLot b ON a.EATTRIBUTE1=b.LotNo AND a.WorkPoint =b.WorkPoint ) c ON a.LotNo=c.lotNo and a.workPoint=c.WorkPoint AND c.Type ='4'
WHERE a.TransCode='{SDNCode}' AND a.TransSequence='{Sequence}' AND a.WorkPoint='{Workpont}' AND a.BusinessCode='19' ";
return Repository().FindTableBySql(sql.ToString());
}
/// <summary>
/// 获取工单信息
/// </summary>
/// <param name="SDNCode"></param>
/// <param name="Sequence"></param>
/// <returns></returns>
public DataTable GetMOCode(string SDNCode, string TransSequence, string Type)
{
DataTable dt = new DataTable();
//var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
string Workpont = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
string sql = $@"SELECT '' as Code,'' as Name
UNION all
SELECT distinct EATTRIBUTE1 AS Code,EATTRIBUTE1 AS Name From ICSFinishedProductShipment WHERE TransCode='{SDNCode}' AND TransSequence='{TransSequence}' AND Type='{Type}' AND WorkPoint='{Workpont}'
";
return Repository().FindTableBySql(sql.ToString());
}
/// <summary>
/// 获取工单信息
/// </summary>
/// <param name="SDNCode"></param>
/// <param name="Sequence"></param>
/// <returns></returns>
public string MarkPrint(string Key)
{
try
{
string Workpont = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
string UserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
Key = Key.Substring(2, Key.Length - 5);
string sql = $@"UPDATE ICSFinishedProductShipment SET PrintTimes=ISNULL(PrintTimes, 0)+1 ,LastPrintUser='{UserName}',LastPrintTime=GETDATE() WHERE ID IN({Key.TrimEnd('|')})
";
if (SqlHelper.CmdExecuteNonQuery(sql) > 0)
{
return "操作成功";
}
else
{
return "操作失败";
}
}
catch (Exception ex)
{
return ex.Message;
}
}
/// <summary>
/// 批次数量
/// </summary>
/// <param name="MOCode"></param>
/// <param name="SDNCode"></param>
/// <param name="Sequence"></param>
/// <returns></returns>
public DataTable GetBatchCodeCount(string MOCode, string SDNCode, string Sequence, string Type)
{
DataTable dt = new DataTable();
//var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
string Workpont = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
string sql = string.Empty;
// 1.工单数量 2.批次数量 3.销售退货数量
if (Type == "3")
{
sql = $@"
SELECT SUM(Quantity) as Quantity,sum(CurrentQuantity) as CurrentQuantity,aa.MOCode,aa.TransCode,d.UseQuantity from ( SELECT c.TransCode as MOCode,a.TransCode as TransCode,a.WorkPoint,sum(ISnull(a.Quantity,0)) as Quantity,sum(ISnull(a.Quantity,0)) as CurrentQuantity
from ICSWareHouseLotInfoLog a
INNER JOIN ICSWareHouseLotInfo b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
INNER JOIN ( SELECT a.LotNo, ISnull(b.type,a.Type) Type,a.WorkPoint,a.ExtensionID,a.EATTRIBUTE5
FROM (SELECT LotNo, Type, WorkPoint, ExtensionID, EATTRIBUTE5
,CASE WHEN Type='101' THEN dbo.fn_GetRootBarcode(LotNo) else EATTRIBUTE1 end EATTRIBUTE1
from ICSInventoryLot ) a
left JOIN ICSInventoryLot b ON a.EATTRIBUTE1=b.LotNo AND a.WorkPoint =b.WorkPoint
where ISnull(b.type,a.Type)='3') f ON a.LotNo=f.lotNo and a.workPoint=f.WorkPoint and f.Type <>'0'
inner JOIN ICSInventoryLotDetail c ON b.LotNo=c.LotNo AND b.WorkPoint=c.WorkPoint
WHERE a.TransCode='{SDNCode}' AND a.TransSequence='{Sequence}' AND c.TransCode='{MOCode}' and a.WorkPoint='{Workpont}' AND a.BusinessCode='19' GROUP BY
c.TransCode,a.TransCode,a.WorkPoint
UNION all
SELECT e.BatchCode as MOCode,a.TransCode as TransCode,a.WorkPoint,sum(ISnull(a.Quantity,0)) as Quantity,sum(ISnull(a.Quantity,0)) as CurrentQuantity
from ICSWareHouseLotInfoLog a
INNER JOIN ICSWareHouseLotInfo b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
INNER JOIN ( SELECT a.LotNo, ISnull(b.type,a.Type) Type,a.WorkPoint,a.ExtensionID,a.EATTRIBUTE5 FROM ICSInventoryLot a
left JOIN ICSInventoryLot b ON a.EATTRIBUTE1=b.LotNo AND a.WorkPoint =b.WorkPoint
where ISnull(b.type,a.Type)<>'4' and ISnull(b.type,a.Type)<>'3') f ON a.LotNo=f.lotNo and a.workPoint=f.WorkPoint
INNER JOIN ICSExtension e ON e.Id=f.ExtensionID and e.workPoint=f.WorkPoint
inner JOIN ICSInventoryLotDetail c ON b.LotNo=c.LotNo AND b.WorkPoint=c.WorkPoint
WHERE a.TransCode='{SDNCode}' AND a.TransSequence='{Sequence}' AND e.BatchCode='{MOCode}' and a.WorkPoint='{Workpont}' AND a.BusinessCode='19' GROUP BY
e.BatchCode,a.TransCode,a.WorkPoint
UNION all
SELECT f.EATTRIBUTE5 as MOCode,a.TransCode as TransCode,a.WorkPoint,sum(ISnull(a.Quantity,0)) as Quantity,sum(ISnull(a.Quantity,0)) as CurrentQuantity
from ICSWareHouseLotInfoLog a
INNER JOIN ICSWareHouseLotInfo b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
INNER JOIN ( SELECT a.LotNo, ISnull(b.type,a.Type) Type,a.WorkPoint,a.ExtensionID,a.EATTRIBUTE5 FROM ICSInventoryLot a
left JOIN ICSInventoryLot b ON a.EATTRIBUTE1=b.LotNo AND a.WorkPoint =b.WorkPoint where ISnull(b.type,a.Type)='4') f ON a.LotNo=f.lotNo and a.workPoint=f.WorkPoint AND f.Type ='4'
WHERE a.TransCode='{SDNCode}' AND a.TransSequence='{Sequence}' AND f.EATTRIBUTE5='{MOCode}' AND a.BusinessCode='19' GROUP BY
f.EATTRIBUTE5,a.TransCode,a.WorkPoint) aa
left join (SELECT sum(Quantity) as UseQuantity,WorkPoint,EATTRIBUTE1,TransCode FROM ICSFinishedProductShipment WHERE Type='{Type}' AND EATTRIBUTE1='{MOCode}' AND TransCode='{SDNCode}' AND TransSequence='{Sequence}' GROUP BY WorkPoint,TransCode,EATTRIBUTE1 ) d ON d.WorkPoint=aa.WorkPoint AND d.EATTRIBUTE1=aa.MOCode
GROUP BY aa.MOCode,aa.TransCode,d.UseQuantity ";
}
else
{
sql = $@"
SELECT SUM(Quantity) as Quantity,sum(CurrentQuantity) as CurrentQuantity,aa.MOCode,aa.TransCode,d.UseQuantity from ( SELECT c.TransCode as MOCode,a.TransCode as TransCode,a.WorkPoint,sum(ISnull(a.Quantity,0))*1.1 as Quantity,sum(ISnull(a.Quantity,0)) as CurrentQuantity
from ICSWareHouseLotInfoLog a
INNER JOIN ICSWareHouseLotInfo b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
INNER JOIN ( SELECT a.LotNo, ISnull(b.type,a.Type) Type,a.WorkPoint,a.ExtensionID,a.EATTRIBUTE5
FROM (SELECT LotNo, Type, WorkPoint, ExtensionID, EATTRIBUTE5
,CASE WHEN Type='101' THEN dbo.fn_GetRootBarcode(LotNo) else EATTRIBUTE1 end EATTRIBUTE1
from ICSInventoryLot ) a
left JOIN ICSInventoryLot b ON a.EATTRIBUTE1=b.LotNo AND a.WorkPoint =b.WorkPoint
where ISnull(b.type,a.Type)='3' ) f ON a.LotNo=f.lotNo and a.workPoint=f.WorkPoint and f.Type <>'0'
inner JOIN ICSInventoryLotDetail c ON b.LotNo=c.LotNo AND b.WorkPoint=c.WorkPoint
WHERE a.TransCode='{SDNCode}' AND a.TransSequence='{Sequence}' AND c.TransCode='{MOCode}' and a.WorkPoint='{Workpont}' AND a.BusinessCode='19' GROUP BY
c.TransCode,a.TransCode,a.WorkPoint
UNION all
SELECT e.BatchCode as MOCode,a.TransCode as TransCode,a.WorkPoint,sum(ISnull(a.Quantity,0))*1.1 as Quantity,sum(ISnull(a.Quantity,0)) as CurrentQuantity
from ICSWareHouseLotInfoLog a
INNER JOIN ICSWareHouseLotInfo b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
INNER JOIN ( SELECT a.LotNo, ISnull(b.type,a.Type) Type,a.WorkPoint,a.ExtensionID,a.EATTRIBUTE5 FROM ICSInventoryLot a
left JOIN ICSInventoryLot b ON a.EATTRIBUTE1=b.LotNo AND a.WorkPoint =b.WorkPoint
where ISnull(b.type,a.Type)<>'4' and ISnull(b.type,a.Type)<>'3') f ON a.LotNo=f.lotNo and a.workPoint=f.WorkPoint
INNER JOIN ICSExtension e ON e.Id=f.ExtensionID and e.workPoint=f.WorkPoint
inner JOIN ICSInventoryLotDetail c ON b.LotNo=c.LotNo AND b.WorkPoint=c.WorkPoint
WHERE a.TransCode='{SDNCode}' AND a.TransSequence='{Sequence}' AND e.BatchCode='{MOCode}' and a.WorkPoint='{Workpont}' AND a.BusinessCode='19' GROUP BY
e.BatchCode,a.TransCode,a.WorkPoint
UNION all
SELECT f.EATTRIBUTE5 as MOCode,a.TransCode as TransCode,a.WorkPoint,sum(ISnull(a.Quantity,0))*1.1 as Quantity,sum(ISnull(a.Quantity,0)) as CurrentQuantity
from ICSWareHouseLotInfoLog a
INNER JOIN ICSWareHouseLotInfo b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
INNER JOIN ( SELECT a.LotNo, ISnull(b.type,a.Type) Type,a.WorkPoint,a.ExtensionID,a.EATTRIBUTE5 FROM ICSInventoryLot a
left JOIN ICSInventoryLot b ON a.EATTRIBUTE1=b.LotNo AND a.WorkPoint =b.WorkPoint where ISnull(b.type,a.Type)='4') f ON a.LotNo=f.lotNo and a.workPoint=f.WorkPoint AND f.Type ='4'
WHERE a.TransCode='{SDNCode}' AND a.TransSequence='{Sequence}' AND f.EATTRIBUTE5='{MOCode}' and a.WorkPoint='{Workpont}' AND a.BusinessCode='19' GROUP BY
f.EATTRIBUTE5,a.TransCode,a.WorkPoint) aa
left join (SELECT sum(Quantity) as UseQuantity,WorkPoint,EATTRIBUTE1,TransCode FROM ICSFinishedProductShipment WHERE Type='{Type}' AND EATTRIBUTE1='{MOCode}' AND TransCode='{SDNCode}' AND TransSequence='{Sequence}' GROUP BY WorkPoint,TransCode,EATTRIBUTE1 ) d ON d.WorkPoint=aa.WorkPoint AND d.EATTRIBUTE1=aa.MOCode
GROUP BY aa.MOCode,aa.TransCode,d.UseQuantity ";
}
return Repository().FindTableBySql(sql.ToString());
}
/// <summary>
/// 生成条码
/// </summary>
/// <param name="SDNCode"></param>
/// <param name="Sequence"></param>
/// <param name="Type"></param>
/// <param name="keyValue"></param>
/// <param name="WorkPoint"></param>
/// <returns></returns>
public int SubmitForm(string SDNCode, string Sequence,string Type, string keyValue, string WorkPoint)
{
var queryParam = keyValue.ToJObject();
string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
decimal LOTQTY = minPackQty;
string Pre = "";
string sql = string.Empty;
//string VendorLot = queryParam["VendorLot"].ToString();
string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
string sqls = string.Empty;
int num = 0;
string LotNo=string.Empty;
string sqlCount = $@"SELECT max(CONVERT(int,Lotno)) as count from ICSFinishedProductShipment WHERE TransCode='{SDNCode}' And Type='{Type}' And EATTRIBUTE1='{queryParam["MOCode"]}' and EATTRIBUTE5='{queryParam["CusOrders"]}' ";
var numer= SqlHelper.CmdExecuteDataTable(sqlCount)?.Rows[0]["count"].ToInt();
for (int i = 0; i < createPageCount; i++)
{
if (i + 1 == createPageCount)
{
if (minPackQty * createPageCount > thisCreateQty)
{
LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
}
}
if (Type == "1")
{
if (numer.IsEmpty() && i == 0)
{
LotNo = "00001";
}
else
{
LotNo = (numer + i + 1)?.ToString("D5");
}
}
else if (Type == "2")
{
if (numer.IsEmpty() && i == 0)
{
LotNo = "0001";
}
else
{
LotNo = (numer + i + 1)?.ToString("D4");
}
}
else if (Type == "3")
{
if (numer.IsEmpty() && i == 0)
{
LotNo = "001";
}
else
{
LotNo = (numer + i + 1)?.ToString("D3");
}
}
else
{
return 0;
}
//LotNo = app.GetSerialCode(WorkPoints, "ICSFinishedProductShipment", "LotNO", Pre, num);
sql += $@"INSERT INTO [dbo].[ICSFinishedProductShipment] ([ID], [LotNo], [InvCode], [ProductDate], [ExpirationDate], [Quantity], [TransCode], [TransSequence], [ExtensionID], [Type], [PrintTimes], [LastPrintUser], [LastPrintTime], [MUSER], [MUSERName], [MTIME], [WorkPoint], [minPackQty],[EATTRIBUTE1],[EATTRIBUTE5],[EATTRIBUTE6]) VALUES (newID(), N'{LotNo}', N'{queryParam["InvCode"]}', '{queryParam["PRODUCTDATE"]}', '2099-12-31', {LOTQTY}, N'{SDNCode}', N'{Sequence}', NULL, N'{Type}', NULL, NULL, NULL, N'{MUSER}', N'{MUSERNAME}', GetDate(), N'{WorkPoints}','{minPackQty}','{queryParam["MOCode"]}','{queryParam["CusOrders"]}','{queryParam["Remark"]}');";
}
int count = SqlHelper.CmdExecuteNonQueryLi(sql);
return count;
}
/// <summary>
/// 删除送货单
/// </summary>
/// <param name="keyValue"></param>
/// <returns></returns>
public string DeleteFinishedLot(string keyValue)
{
string msg = "";
keyValue = keyValue.Substring(1, keyValue.Length - 2);
string sql = "";
try
{
sql = string.Format(@" DELETE FROM dbo.ICSFinishedProductShipment WHERE ID IN ({0})", keyValue.TrimEnd(','));
SqlHelper.ExecuteNonQuery(sql);
}catch (Exception ex)
{
msg = ex.Message;
}
return msg;
}
}
}